调用 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官方库通讯了?
图片说明:
最佳答案
设备寄存器地址是在 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