模拟器Server设置
Connection -> Connect
Setup -> Slave Definition
双击00000列第一行
模拟器Client设置
Connection -> Connection Setup
Setup -> Read/Write Definition
代码实现
Test0X03.java
Request解析
0X00, 0X01, 0X00, 0X00, 0X00, 0X06, 0X01, 0X03, 0X00, 0X00, 0X00, 0X02
解析为16进制为000100000006010300000002
传输标志(2) |
协议标志(2) |
长度(2) |
单元标志(1) |
功能码(1) |
起始地址(2) |
寄存器个数(2) |
0001 |
0000 |
0006 |
01 |
03 |
0000 |
0002 |
Response解析
返回字节数组解析为16进制为00010000000701030400320000
传输标志(2) |
协议标志(2) |
长度(2) |
单元标志(1) |
功能码(1) |
数组个数(1) |
寄存器值(4) |
0001 |
0000 |
0007 |
01 |
03 |
04 |
00320000 |
其中数组个数04
代表长度表示其后有4个字节。寄存器的值默认为short类型,即占用2个byte,所以取回2个寄存器值分别是0032
,0000
,由16进制转换为10进制为50
,0
官方文档
Request
Response
*N = Quantity of Registers
Error
Example
State Diagram
参考资料
Modbus官方文档:《Modbus_Application_Protocol_V1_1b3》
Modbus RTU和ASCII 协议解析 : http://www.modbustools.com/modbus.html