Modbus
TH900 温湿度双回路控制器通信协议
(V2.3.0)
Modbus
1、协议概述
1.1、协议类型 Modbus RTU 协议
本协议适用于 PAN-GLOBE TH900 系列通讯仪表。本协议规定仪表和上位机的数据交换模式。
采用异步主从半双工方式通讯,上位机做主站,仪表做从站,由上位机发询问信息,仪表做相应应答。
1.2、物理层
传输接口:RS485
通讯地址:1~247(一个网络上最多挂 128 个站)xx率:9600 、19200
通讯介质:屏蔽双绞线
1.3、数据链路层
采用 8 位二进制,每个代码由两个十六进制字符表示。帧格式是:1 个起始位,8 个数据位,2 个停止位。
一个数据包的格式是:(表:1)
地址 | 功能码 | 数据码 | CRC 校验码 |
8bits | 8bits | n*8bits | 16bits |
功能码定义:(表:2)
代码 | 功能定义 |
03H | 读取一个或多个寄存器的数值 |
10H | 写多个寄存器的数值 |
06H | 写一个寄存器的数值 |
注:1 个寄存器占 2 个字节
1.4、CRC 校验算法
生成一个 CRC 的流程是:
先将一个 16 位寄存器(CRC 寄存器)置为 0FFFFH。
数据包中的第一个 8 位字节与 CRC 中的低位字节进行异或运算,结果存回
CRC 寄存器。
将 CRC 向右移一位,最高位填’0’,最低位移出并检测。如果移出位为’0’,重复第 3 步。
如果移出位为’1’,将 CRC 寄存器与一个预设的固定值(0A001H)进行异或运算。
重复步骤 3 和步骤 4,直到 8 次移位结束,这样就处理好了一个完整的 8 位字节。
重复步骤 2 到步骤 5 处理下一个 8 位字节,直到所有字节全部处理结束。
最终 CRC 寄存器的值就是 CRC 值。
2、应用层功能祥解
应用层功能祥解的目的是定义特定有效命令的通用格式。
地址 | 功能码 | 地 址 高 字节 | 地址低字 节 | 数据高字 节 | 数据低字 节 | CRC 低 字节 | CRC 高 字节 |
01 | 03 | 00 | 10 | 00 | 02 | C5 | CE |
软件程序员可以使用下述方法,以便通过协议正确的建立特定的应用程序。通讯协议使用下述的格式(表:3)
2.1、PC 读数据(功能码 03)
此功能允许主站读取从站采集到的或记录的数据及仪表的系统参数。主站查询时的数据包格式如下范例。
PC 读数据范例:地址为 01H,SV 地址为 00H(表:4)
地址 | 功能码 | 地 址 高 字节 | 地址低字 节 | 数据高字 节 | 数据低字 节 | CRC 低 字节 | CRC 高 字节 |
01 | 03 | 00 | 00 | 00 | 02 | C4 | 0B |
从站响应:(表:5)
地址 | 功能码 | 变 量总字节 数 | 变 量 植 高字节 | 变 量 值 低字节 | 变 量 值 高字节 | 变量值低字节 | CRC 低 字节 | CRC 高 字节 |
01 | 03 | 04 | 02 | BC | 00 | 00 | 3A | 6F |
2.2、预置多寄存器(功能码 10H)
此功能允许主站改写从站 3 字节变量值。(已转换为 2 字节定点数,负数为 4
字节补码形式)
PC 写数据范例:写 SV(表:6)
地址 | 功能码 | 地址高字节 | 地址低字节 | 变量个数高字 节 | 变量个数低字 节 | 变量总字节数 | 变量值高字节 | 变量值低字节 | 变量值高字节 | 变量值低字节 | CRC 低字节 | CRC 高字节 |
01 | 10 | 00 | 00 | 00 | 02 | 04 | 03 | E8 | 00 | 00 | 73 | DF |
从机返回:(表:7)
地址 | 功能码 | 地址高字 节 | 地址低字 节 | 变量个数 高字节 | 变量个数 低字节 | CRC 低 字节 | CRC 高 字节 |
01 | 10 | 00 | 00 | 00 | 02 | 41 | C8 |
2.3、预置单寄存器(功能码 06H)
此功能允许主站改写从站单字节变量值。由于每次发送按双字节寄存器发送,所以,高位补 0。
PC 写数据范例,写 CYT(表:8)
地址 | 功能码 | 地址高字节 | 地址低字节 | 变量值高字节 | 变量值低字节 | CRC 低字节 | CRC 高字节 |
01 | 06 | 00 | 23 | 00 | 09 | B8 | 06 |
从机返回:(表:9)
地址 | 功能码 | 地址高 字节 | 地址低 字节 | 变量值 高字节 | 变量值 低字节 | CRC 低 字节 | CRC 高 字节 |
01 | 06 | 00 | 23 | 00 | 09 | B8 | 06 |
3、参数地址分配
参数 | 地址 | 长度(BYTE) | 读写性质 | 格式 |
SV | 00H | 3 | R/W | /10 |
SV1 | 03H | 3 | R/W | /10 |
LOP | 06H | 1 | R/W | *1 |
AT | 07H | 1 | R/W | *1 |
AL1 | 08H | 3 | R/W | /10 |
AL2 | 0CH | 3 | R/W | *1 |
P | 20H | 3 | R/W | /10 |
I | 24H | 3 | R/W | /10 |
D | 28H | 3 | R/W | /10 |
OUD | 2BH | 1 | R/W | *1 |
HYS | 2CH | 3 | R/W | /10 |
CYT | 2FH | 1 | R/W | *1 |
OUTL | 30H | 3 | R/W | /10 |
OUTH | 34H | 3 | R/W | /10 |
P1 | 38H | 3 | R/W | /10 |
I1 | 3CH | 3 | R/W | /10 |
D1 | 40H | 3 | R/W | /10 |
OUD1 | 43H | 1 | R/W | *1 |
HYS1 | 44H | 3 | R/W | /10 |
CYT1 | 47H | 1 | R/W | *1 |
OUTL1 | 48H | 3 | R/W | /10 |
OUTH1 | 4CH | 3 | R/W | /10 |
HY1 | 50H | 3 | R/W | /10 |
AD1 | 53H | 1 | R/W | *1 |
HY2 | 54H | 3 | R/W | /10 |
AD2 | 57H | 1 | R/W | *1 |
LOPT | 58H | 1 | R/W | *1 |
LOCK | 59H | 1 | R/W | *1 |
INP | 5AH | 1 | R/W | *1 |
LSP | 5CH | 3 | R/W | /10 |
USP | 60H | 3 | R/W | /10 |
CFA | 6BH | 1 | R/W | *1 |
SFT | 6CH | 1 | R/W | *1 |
DP | 6FH | 1 | R/W | *1 |
BAUD | 70H | 1 | R/W | *1 |
ADD | 74H | 1 | R/W | *1 |
PVOS | 78H | 3 | R/W | /10 |
TOP | 80H | 3 | R/W | /10 |
U0 | 84H | 3 | R/W | /10 |
INP2 | 8AH | 1 | R/W | *1 |
LSP2 | 8CH | 3 | R/W | /10 |
USP2 | 90H | 3 | R/W | /10 |
PVS2 | 9CH | 3 | R/W | /10 |
TOP1 | A4H | 3 | R/W | /10 |
U01 | A8H | 3 | R/W | /10 |
CR | B9H | 1 | R/W | *1 |
PV | F0H | 3 | R | /10 |
PV2 | F1H | 3 | R | /10 |
RH | F2H | 3 | R | /10 |
MV | F3H | 3 | R/W | /10 |
MV1 | F4H | 3 | R/W | /10 |
M/A | F5H | 1 | R/W | *1 |
M/A1 | F6H | 1 | R/W | *1 |
注:
①、写 MV 前请先写 00H 到 M/A,使系统转为手动控制状态写 40H 到 M/A 可使系统转为自动控制状态
②、写 MV1 前请先写 00H 到 M/A1,使系统转为手动控制状态写 40H 到 M/A1 可使系统转为自动控制状态