modbus RTU 通讯的问题

//命令 03 收发的报文格式: (读)
*pc-->mcu: 从机地址(1Byte)+ 功能码(1Byte)+ 起始地址(2By t e)+ 数据度(2By t e)+  CRC 码(2Byte) 
*mcu-->pc:从机地址(1Byte)+功能码(1Byte)+字节数(1By t e)+寄存器数据 1(2By te)+…..+  寄存器数据 n(2Byte)+ CRC 码(2By t e)
1、读取温度值带两位小数的情况
//命令 03H:实现读取“供水温度”数值
发送:01 03 40 20 00 01 90 00 
接收:01 03 02 89 D8 DF 8E 
解析:
供水温度 = 25.20℃ = 0x89D8&0x7FF;
0x89D8&0x8000=0x1000,最高位为1表示两位小数,即数值扩大100倍。
//命令 03H:实现读取“回水温度”数值
发送:01 03 40 21 00 01 C1 C0 
接收:01 03 02 89 EF 9E 58 
解析:
回水温度 = 25.43℃= 0x89EF&0x7FF;
0x89EF&0x8000=0x1000,最高位为1表示两位小数,即数值扩大100倍。
问题一: 89D8是怎么转换成25.20 89EF怎么转换成25.43的?
问题二:功能码和寄存器有没有对应表,例如功能码03H对应寄存器地址40000或者40001开始

最佳答案

参考:
modbus RTU 通讯的寄存器地址,与报文发送地址关系 - 已解决问题
http://www.ad.siemens.com.cn/service/answer/solution.aspx?Q_ID=122296&cid=1028

至于温度的转换,看看在表的通讯协议里面应该有说明吧,试了一下不是直接的浮点数和整数的格式

提问者对于答案的评价:
谢谢

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc368384.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2021年7月5日 下午3:08
下一篇 2021年7月5日 下午3:08

相关推荐

发表回复

登录后才能评论