实际需求:现场电力仪表通过八串口Modbus协议转换网关将Modbus RTU转成Modbus TCP由PLC1500或1200进行采集数据。每个485口下面计划带10台设备,总共计划可带80台设备。
PLC程序编写:PLC采用MODBUS TCP指令中的MB_CLIENT进行编写。
实际问题:在编程的过程中,由于需要改变MB_Unit_ID对485设备进行轮询通讯,发现MB_CLIENT接收的数据中没有485设备返回数值中最初始的地址码,功能码及数据长度的信息,只有485设备的数据值。通过串口调试工具发送错误指令,发现MB_CLIENT接收的数据DONE和STATUS都是成功的,并没有一个错误的筛选。那么就会产生一个严重的问题,比如我当前要查询的是07的地址,刚好是地址是06的数据返回了,那么就会将06的数据吴认为是07的数据了。
想问一下各位大神有没有做过类似的Modbus TCP轮询程序,是用MB_CLIENT进行编写的吗?在实际应用中是否可能存在错误?