这个是一条正确的发送指令指令 : 22 A3 00 00 00 06 FE 05 00 1F FF 00
说明
22 A3 :为此次通信事务处理标识符,一般每次通信之后将被要求加1以区别不同的通信数据报文,可以理解为id;
00 00 :表示该条指令遵循ModbusTCP协议;
00 06 :表示后面数据的长度,可以自己数一下是否是6个Bit
FE : 设备地址,这个可以用于局域网里面的具体的地址,如果目标机器有固定ip,这个就不起作用,直接上写成 00;
05 :功能码,这个可以参考:http://blog.csdn.net/m0_37549050/article/details/71794192 这个是线圈,
00 1f : 操作 线圈的位置;
FF 00 :开启线圈
查询指令和返回结果
指令:0000 0000 0006 fe 01 0000 0004
最后面4个Bit的意思是:0000 表示从第0个线圈开始;0004表示读取四个
结果:0000 0000 0004 fe 01 0100
0000 ;是通信事务处理标识符
0000; 是协议标识,标识用的是modbustcp
0004;标识后面有4Bit数据 fe是设备地址
01:表示的功能码
0100:表示结果,这个表示第0,1,3位置的线圈是关闭的,第2位置的是开着的。
如果想了解更多的,可以参考《基于Modbus协议的工业自动化网络规范 第1部分:Modbus应用协议》;
http://download.csdn.net/detail/m0_37549050/9841423
如果你没有积分,请联系本人,免费发邮箱。