关于modbus通讯,从站设备的寄存器地址在00001 至 0xxxx 读操作本来是03变成01如何解决?

调用 Modbus RTU 主站读写子程序MBUS_MSG:
 读写从站的数据地址:  及数据类型
  00001 至 0xxxx - 开关量输出
  10001 至 1xxxx - 开关量输入
        30001 至 3xxxx - 模拟量输入
        40001 至 4xxxx - 保持寄存器
现在有个设备寄存器地址是在00001 至 0xxxx,例如0630这样的地址,本来读寄存器应该发送03指令的,现在因为地址在00001 至 0xxxx区间,默认为读开关量输出了,读指令会发01而不是03,请问可以如何解决?是不是只能使用自由口自己一个个读和写了?

问题补充:
补充第三方设备寄存器手册,说明,地址就是0630或者0400之类的,而不是40630或者是40400,这类定义的寄存器的地址是不是就不能使用modbus官方库通讯了?

图片说明:

关于modbus通讯,从站设备的寄存器地址在00001 至 0xxxx 读操作本来是03变成01如何解决?    关于modbus通讯,从站设备的寄存器地址在00001 至 0xxxx 读操作本来是03变成01如何解决?    关于modbus通讯,从站设备的寄存器地址在00001 至 0xxxx 读操作本来是03变成01如何解决?   

最佳答案

设备寄存器地址是在 00001 至 0xxxx,这部分地址在设备说明书中如果指定的是 03 功能码,则指的是保持寄存器。
MBUS_MSG 指令调用时,可以将你读的地址的最前面加上 4。
例如0630这样的地址,与成 40630。
S7-200 Modbus通信常见问题
http://www.ad.siemens.com.cn/productportal/Prods/s7-200-portal/MicroPower2013/Smart%20SMS/019.html

提问者对于答案的评价:
字节转换成10进制后在最前面加4

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

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

相关推荐

发表回复

登录后才能评论