菜鸟:
请教各位大侠,当使用1200的modbus指令时,是不是DATA_LEN=2,就只能接收2个字长度的信息;DATA_LEN=1,就只能接收1个字长度的信息呢?当设置DATA_LEN=2时,从站发回一个字的信息是不是1200PLC就收不到数据了呢?谢谢了啊
大虾:
DATA_LEN参数是指你需要读取从站的数据长度,比如DATA_LEN=1时,读取指定寄存器地址开始,读取1个字的数据,然后存储到指定的位置。当DATA_LEN=2时,读取指定寄存器地址开始,读取2个字的数据。正常来说,从站会事先规定可以读取的寄存器区域,读取的长度也是有一定的限制。如果是可以读取的区域,长度在允许范围内都是可以的,另外,1200存储的区域长度一定要大于或等于所读取的长度。
菜鸟:
谢谢,我感觉也是这样,但还是不确定,没用过这个指令,谢谢啊。要是从站发送的数据不是PLC要求的,是不是PLC就不能识别了呢?
大虾:
会报错的,查询错误状态字就能知道是什么错误。
菜鸟:
modbus是标准协议,所有支持modbus的设备都遵循这个协议的,主站既然发读取两个字的指令,从站就不可能只发回一个数据,除非这个从站就没有真正支持modbus协议
大虾:
DATA_LEN=2,不是说只能接收2个字长度的信息,而是我要读取2个字长度的信息(不含报头报尾),下位设备正常的话,要读你2个字节,不会只返回一个字节,读了MB不存在的寄存器的话,就返回错误信息