zoukankan      html  css  js  c++  java
  • 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。

  • 相关阅读:
    OpenCV__Canny边缘检测和缩放(译)
    OpenCV_avi读入视频
    Canny边缘检测源码与图像结果(OpenCV2.0)
    OpenCV_累加一个三通道矩阵中的所有元素
    tomcat下出现 java.lang.OutOfMemoryError: Java heap space
    清空和截断数据库日志并收缩数据库
    java.lang.OutOfMemoryError: Java heap space 的解决
    java.lang.OutOfMemoryError: Java heap space 解决方法
    通达OA 2008 工作流数据库表的大致结构
    java获取本月的第一天和最后一天
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/11875368.html
Copyright © 2011-2022 走看看