模拟器Server设置
Connection -> Connect
Setup -> Slave Definition
双击00000列第二行
模拟器Client设置
Connection -> Connection Setup
Setup -> Read/Write Definition
代码实现
Test0X02.java
Request解析
0X00, 0X01, 0X00, 0X00, 0X00, 0X06, 0X01, 0X02, 0X00, 0X00, 0X00, 0X08
解析为16进制为000100000006010200000008
传输标志(2) |
协议标志(2) |
长度(2) |
单元标志(1) |
功能码(1) |
起始地址(2) |
Quantity of Inputs(2) |
0001 |
0000 |
0006 |
01 |
02 |
0000 |
0008 |
Response解析
返回字节数组解析为16进制为00010000000401020102
传输标志(2) |
协议标志(2) |
长度(2) |
单元标志(1) |
功能码(1) |
数组个数(1) |
Input Status(1) |
0001 |
0000 |
0004 |
01 |
02 |
01 |
02 |
其中数组个数01
代表长度表示其后有1个字节。线圈状态02
解析为2进制为00000010
,分别代表线圈的对应状态
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
官方文档
Request
Response
*N = Quantity of Inputs / 8 if the remainder is different of 0 N = N+1
Error
Example
State Diagram
参考资料
Modbus官方文档:《Modbus_Application_Protocol_V1_1b3》
Modbus RTU和ASCII 协议解析 : http://www.modbustools.com/modbus.html