通信采用MODBUS RTU协议,一帧数据格式为1位起始位 + 8位数据 + 1位停止位
通信采用Modbus通信协议功能代码
03H —— 读单个或连续多个寄存器
06H —— 写单个寄存器
10H —— 写连续多个寄存器
RTU命令格式及示例
03H ——读单个或连续多个寄存器
下传命令:
BYTE
EXAMPLE
设备地址
1
01H
功能号
2
03H
地址High Byte
3
01H
地址Low Byte
4
02H
字数NHigh Byte
5
00H
字数NLow Byte
6
02H
CRC High Byte
7
CRCH
CRC Low Byte
8
CRCL
注:从地址为01H的模块中读取起始地址为0102H的连续2 WORDS的内容;
反馈:
BYTE
EXAMPLE
设备地址
1
01H
功能号
2
03H
字节数2N
3
04H
数据1High
4
00H
数据1Low
5
01H
数据2High
6
00H
数据2Low
7
01H
CRC High Byte
8
CRCH
CRC Low Byte
9
CRCL
注:从地址为01H的模块中返回起始地址为0102H的连续2 WORD的内容阴影部分;
  06H ——写单个寄存器
下传命令:
BYTE
EXAMPLE
设备地址
1
01H
功能号
2
06H
地址High Byte
3
01H
地址Low Byte
4
02H
数据High Byte
5
00H
数据Low Byte
6
01H
CRCHigh Byte
7
CRCH
CRCLow Byte
8
CRCL
注:向地址为01H的模块中起始地址为0102H的寄存器中写入1 WORD数据阴影部分;
反馈:
BYTE
EXAMPLE
设备地址
1
01H
功能号
2
06H
地址High Byte
3
01H
地址Low Byte
4
02H
数据High Byte
5
00H
数据Low Byte
6
01H
CRCHigh Byte
7
CRCH
CRCLow Byte
8
CRCL
注:返回和发送同样的内容;
    10H ——写连续多个寄存器
下传命令:
BYTE
EXAMPLE
设备地址
1
01H
功能号
2
10H
地址High Byte
3
01H
地址Low Byte
4
02H
字数NHigh Byte
5
00H
字数NLow Byte
6
02H
字节数2N
7
04H
数据1High Byte
8
00H
数据1Low Byte
9
01H
数据2High Byte
10
00H
数据2Low Byte
11
01H
CRC High Byte
12
CRCH
CRC Low Byte
13
CRCL
注:向地址为01H的模块中起始地址为0102H的连续两个寄存器中写入2 WORD数据内容阴影部分;
反馈:
python怎么读取串口数据
BYTE
EXAMPLE
设备地址
1
01H
功能号
2
10H
地址High Byte
3
01H
地址Low Byte
4
01H
字数High Byte
5
00H
字数Low Byte
6
02H
CRC High Byte
7
CRCH
CRC Low Byte
8
CRCL
用COMMIX串口调试软件读取数据:
在使用前,需先将效验方式选择为“CRC16ModbusRTU,如图1所示;其余设置参见图2;
                        图1
读取电机实时状态,比如读取全部96台电机的状态,则可发送命令“01 03 20 00 00 0c
01:设备地址再起动控制柜地址
03:功能号读单个或连续多个寄存器
2000:实时电机状态1~8号电机寄存器地址
000c:从起始地址为2000H的寄存器读取连续12 WORD的内容;
如图2所示:
                          图2
发送之后,反馈如图3:运行的电机为9~16号电机,其余电机没有运行
                          图3