macro_command main()
bool stin[4]
bool stout[4]
GetData(stin[0], "MODBUS", 1x_single_Bit, 2#32, 4)
GetData(stout[0], "MODBUS", 0x_single_Bit, 2#0, 4)
SetData(stin[0], "HMI", LB, 332, 4)
SetData(stout[0], "HMI", LB, 300, 4)
end macro_command
通过串口抓包获得的数据是:
02 02 00 20 00 01 B8 33
为什么只读取一位?
正常发送的数据应该是
02 02 00 20 00 04 78 30才对呀!
如果MODBUS地址使用 1x,那么发送的数据包是
02 02 00 20 00 10 78 3F
10就是16位,为什么使用1x就要一次读取16位的装填?从站最多才4位,获取超过4位就返回81错误提示
这是威纶通的通病吗?
有人用过MODBUS的IO模块吗?你们都是怎么解决这个问题的?
|