请问串口通信时,如何使用modbus协议?如何定义它的数据帧的格式?怎么没人回答呀,真的很难吗,希望用JAVA实现,只要通过JAVA实现两台PC机之间的通信就OK了.回答出来了,
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/15 23:03:20
请问串口通信时,如何使用modbus协议?如何定义它的数据帧的格式?怎么没人回答呀,真的很难吗,希望用JAVA实现,只要通过JAVA实现两台PC机之间的通信就OK了.回答出来了,
请问串口通信时,如何使用modbus协议?如何定义它的数据帧的格式?
怎么没人回答呀,真的很难吗,希望用JAVA实现,只要通过JAVA实现两台PC机之间的通信就OK了.回答出来了,
请问串口通信时,如何使用modbus协议?如何定义它的数据帧的格式?怎么没人回答呀,真的很难吗,希望用JAVA实现,只要通过JAVA实现两台PC机之间的通信就OK了.回答出来了,
ModBus 可分为两种传输模式: ASCII 模式和 RTU 模式.使用何种模式由用户自行选
择,包括串口通信参数(波特率、校验方式等).在配置每个控制器的时候,同一个 Mod B
us 网络上的所有设备都必须选择相同的传输模式和串口参数.
1 ASCII 模式
当控制器设为在 ModBus 网络上以 ASCII 模式通信,在消息中的每个 8Bit 字节都作 为
两个 ASCII 字符发送.这种方式的主要优点是字符发送的时间间隔可达到 1 秒而不产生错
误.
表 1 ASCII 模式的消息帧
如表 1 所示,使用 ASCII 模式,消息以冒号(:)字符( ASCII 码 3AH )作为起始位 ,
以回车换行符( ASCII 码 0DH, 0AH )作为结束符.传输过程中,网络上的设备不断侦测 “ : ”
字符,当有一个冒号接收到时,每个设备就解码下个位的地址域,来判断是否发给自己的.
与地址域一致的设备继续接受其它域,直至接受到回车换行符.除起始位和结束符外,其 他
域可以使用的传输字符是十六进制的 0 … 9 , A … F ,当然也要用 ASCII 码表示字符.当选用 A
SCII 模式时,消息帧使用 LRC (纵向冗长检测)进行错误检测.
2RTU 模式
当控制器设为 RTU 模式时,消息帧中的每个 8Bit 字节包含两个 4Bit 的十六进制字符 .
表 2 RTU 模式的消息帧
该模式下消息发送至少要以 3.5 个字符时间的停顿间隔开始.传输过程中,网络设备 不
断侦测网络总线,包括停顿间隔时间内.当第一个域(地址域)接收到,相应的设备就对 接
下来的传输字符进行解码,一旦有至少 3. 5 个字符时间的停顿就表示该消息的结束.
在 RTU 模式中整个消息帧必须作为一连续的流转输,如果在帧完成之前有超过 1.5 个
字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址
域.同样地,如果一个新消息在小于 3. 5 个字符时间内接着前个消息开始,接收的设备将
认为它是前一消息的延续.如果在传输过程中有以上两种情况发生的话,必然会导致 CRC
校验产生一个错误消息,反馈给发送方设备.
当控制器设为 RTU (远程终端单元)模式通信时,消息中的每个 8Bit 字节包含两个 4 B
it 的十六进制字符.这种模式与 ASCII 模式相比在同样的波特率下,可比 ASCII 模式传送 更多的数据.
关键的两张图只能传上来一张,我看就用ASCII码模式,简单