modbus-poll和modbus-slave工具的学习使用——modbus协议功能码2的解析
Posted codeworkerliming
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了modbus-poll和modbus-slave工具的学习使用——modbus协议功能码2的解析相关的知识,希望对你有一定的参考价值。
功能码2的功能是:读从机离散量输入信号的 ON/OFF 状态。可读取1~2000个连续的离散量输入状态,如果离散输入的数量个数不是8的整数倍,则用0填充最后数据字节的剩余位,功能码2的查询信息规定了要读的输入起始地址,以及输入信号的数量。
功能码2只能读取,不能写入,通常是拨码开关等离散信号。
下面通过modbus-poll和modbus-slave工具的进行演示
1、poll端设置:具体解释就不说了,可以详见功能码1的分析篇
2、slave端设置:具体解释就不说了,可以详见功能码1的分析篇
简要说明一下,从机地址是1,功能码设置为2,读取10个数量。主机每隔1s读取一次。
3、点击ok后,就可以通信了,如下图所示。
4、可以在slave端进行数据更新,poll端就会接受到新的数据。如下动画所示:
5、但是注意,poll端不允许设置的:modbus会提示非法操作。
6、点击查询communication之后看到真实的hex通信数据,如下:
Tx:012-01 02 00 00 00 0A F8 0D
Rx:013-01 02 02 68 01 57 B8
Tx:014-01 02 00 00 00 0A F8 0D
Rx:015-01 02 02 68 01 57 B8
Tx:016-01 02 00 00 00 0A F8 0D
Rx:017-01 02 02 68 01 57 B8
Tx:018-01 02 00 00 00 0A F8 0D
Rx:019-01 02 02 68 01 57 B8
tx端的发送数据:
01(从机地址) 02(功能码02) 00(起始地址高位) 00(起始地址低位) 00(寄存器数高位) 0A(寄存器数低位) F8(crc校验低位) 0D (crc校验高位)
rx的发送数据:
01 (从机地址)02(功能码02) 02(寄存器数为2个) 68(0110 1000) 01(0000 0001) 57(crc校验低位) B8 (crc校验高位)
字节数分析如下:
总结:功能码2只能读取,不能写入,数据是根据位来保存的,因此通信效率比较高的。
ps:sreentogif在win7上面不能运行,因此使用了gifcam,但是鼠标没有录制进去,不是很完美。
win10可以用sreentogif。
以上是关于modbus-poll和modbus-slave工具的学习使用——modbus协议功能码2的解析的主要内容,如果未能解决你的问题,请参考以下文章