Modbus RTU通信协议详解以及与Modbus TCP通信协议

Modbus RTU通信协议详解以及与Modbus TCP通信协议,第1张

ModBus协议是应用层报文传输协议(OSI模型第7层),它定义了一个与通信层无关的协议数据单元(PDU),即PDU=功能码+数据域。ModBus协议能够应用在不同类型的总线或网络。对应不同的总线或网络,Modbus协议引入一些附加域映射成应用数据单元(ADU),即ADU=附加域+PDU。目前,Modbus有下列三种通信方式:1.以太网,对应的通信模式是MODBUSTCP。2.异步串行传输(各种介质如有线RS-232-/422/485/;光纤、无线等),对应的通信模式是MODBUSRTU或MODBUSASCII。3.高速令牌传递网络,对应的通信模式是ModbusPLUS。

ModBus常用功能码 (功能码为10进制) 01 READ COIL STATUS 读线圈寄存器 02 READ INPUT STATUS 读状态寄存器03 READ HOLDING REGISTER 读保持寄存器04 READ INPUT REGISTER 读输入寄存器 05 WRITE SINGLE COIL 写单线圈寄存器 06 WRITE SINGLE REGISTER 写单保持寄存器15 WRITE MULTIPLE COIL 写多线圈寄存器16 WRITE MULTIPLE REGISTER 写多保持寄存器

第一个发送的数据

0x01(从机的站号,也就是你这个仪表的站号)0x03(功能码)0x00 0x00(读取的地址,是4区的0001,也就是40001,地址编号串1位)0x00 0x01(读取的个数,1个)0x84 0x0A(CRC校验码)

因此这串数据的意思就是只读取40001这一个数据

反馈的数据

0x01(从机的站号)0x03(功能码)0x02(反馈的数据个数,因为40001时一个16位的数据,而传送的数据一个数时8位的,因此反馈一个数据就需要2个8位的)0x00 0x2A(反馈的数据)0x39 0x3B(CRC校验码)

因此这串数据的意思就是反馈40001的数据为2A(转成十进制就是42),根据表格的内容,就是读取毛重为42。

第二个发送的数据

0x01(从机的站号)0x06(功能码)0x00 0x60(写入的地址,是4区的0097,也就是40097)0x00 0x02(写入的数据)0x08(CRC校验码)0x15

因此这串数据的意思就是,将2写入到40097中,根据根据表格写的内容,意思就是40097的第1位为ON,就是去皮

反馈的数据,因为这个不是读取数据,因此没有数据需要反馈回来,因此就将接收的写入的的数据,直接作为反馈的数据反馈回来了。

所以这个只是读取了40001为42,没有读取40011。

望采纳。。。。。。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12027542.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存