先看下图,使用的06功能码,但其实在汇川的功能码选项内选择的是16,汇川的软件内根本没有06功能码,它会在你使用16功能码的时候去判断如果写寄存器的个数是1个就默认切换到06功能码,这就非常难受了,因为对接设备只解析16功能码,且只解析一个寄存器长度,超过1个寄存器长度会直接丢弃掉数据帧,其实从这件事来看是对接设备的问题,使用了16功能码,却只解析一个寄存器。但类似这样小的设备上类似的事情还有很多,它们只用到的modbus 协议里的部分功能码,甚至就那几个寄存器,超出的一律视为错误帧或直接丢弃。这样子PLC直接帮用户做决定就很难受了,就像你拿着手术刀有一块地方却无法下刀,同样的设备对接西门子,松下,三菱就没有出现过类似的问题。
这张图是写了2个寄存器,汇川又自动给切换到16功能码