首页 >> 动态 >

modbus和485的区别(modbus)

2023-10-17 09:01:25 来源: 用户: 

你们好,最近小时发现有诸多的小伙伴们对于modbus和485的区别,modbus这个问题都颇为感兴趣的,今天小活为大家梳理了下,一起往下看看吧。

1、 MODBUS串行通信协议的基本规则:每个MODBUS数据包由以下五部分组成:

2、 (1)从站的地址;(2)要执行的功能代码;(3)寄存器地址(变量地址);(4)数据;(5)CRC校验;

3、 14Modbus通信测试方法

4、 (1)从地址:地址长度为1字节,有效从地址范围为1-247。如果从站接收到地址信息与其自身地址一致的数据包,它将执行该号码。

5、 根据包中包含的命令。

6、 (2)功能码:MODBUS数据包中功能码的长度为一个字节,用来通知从站应该进行什么操作。从站响应数据包应包含与主站请求的操作相同的功能码字节。

7、 相关功能代码请参考下表:

8、 (3)寄存器地址:从机执行有效命令时,数据区存储的位置。不同的变量占用不同的寄存器,有的地址变量占用两个寄存器,4字节数据,有的变量占用一个寄存器,2字节数据。请根据实际情况使用。一些占用更多寄存器,

9、 根据实际数据。(4)数据区:数据区包含终端执行特定功能所需的数据或终端响应查询而收集的数据。这些数据的内容可以是数值、参考地址或设定值;例如,功能代码告诉终端读取寄存器,

10、 数据区需要指示从哪个寄存器开始,读取多少数据,嵌入的地址和数据根据类型不同,从机之间内容不同;发送寄存器值的顺序是:高字节在前,低字节在后。

11、 (5)CRC校验:MODBUS-RTU模式采用16位CRC校验。发送设备应为数据包中的每个数据计算CRC16,最终结果应存储在检查字段中。

12、 接收设备还应为数据包中的每个数据(除了校验字段)计算CRC16,并比较结果字段的校验字段;只能接受相同的包。

13、 通信异常处理

14、 如果主站发送非法数据包或主站请求无效数据寄存器,将出现异常数据响应。该异常数据响应由从机地址、功能代码、故障代码和校验字段组成。

15、 根据MODBUS通讯要求,异常响应功能码=请求功能码0x80;回答异常时,将功能号的最高位设置为1。例如,如果主机请求的函数号是0x04,则从机返回的函数号是0x84。

16、 例如:

17、 1.读取多个寄存器

18、 示例:假设测量的A相电压为220.0V,主机读取仪器的测量值UA(A相电压).

19、 UA的地址码是0x4000(十六进制),因为UA是长整数数据(4字节),占用2个数据寄存器,220.0V电压转换对应的十六进制数据是0x00000898(2200)。

20、 主机发送命令的格式是:

21、 01 03 40 00 00 02 D1 CB

22、 从机返回命令的格式是:

23、 01 03 04 00 00 08 98 FC 59

24、 例如:

25、 示例2:写单个寄存器

26、 假设温控器的温度值SV改为150(写入设定值SV),SV的地址码为0x2000(十六进制),因为SV为整数(2字节),占用一个数据寄存器。将十进制整数150转换为十六进制数0x0096。

27、 主机发送命令的格式是:

28、 01 06 20 00 00 96 02 64

29、 从机返回命令的格式是:

30、 01 06 20 00 00 96 02 64

以上就是modbus这篇文章的一些介绍,希望对大家有所帮助。

  免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!

 
分享:
最新文章