通讯协议(V1.0)新
通讯协议(V1.0)新
一、 概述
x通讯协议采用标准Modbus协议,所用的传输模式为RTU模式。Modbus协议是一种主-从式协议。
任何时刻只有一个设备能够在线路上进行发送。由主站管理信息交换,且只有它能发起。它会相继对从站进行轮询。除非被主站批准,否则任何从站都不能发送消息。从站之间不能进行直接通信。
协议帧中不包含任何消息报头字节或消息字节结束符。 它的定义如下:
从站地址 | 请求代码 | 数据 | CRC16 |
从站地址:- 地址必须在1到247之间。
- 每个地址在网络设备环境中必须唯一。数据 : 以二进制代码传输。
CRC16 : 循环冗余校验参数。
当间隔时间长于或等于3.5字符时,即作为检测到帧结束。
1、通讯口设置
通讯方式 异步串行通讯接口,如 RS-485,RS-232,RS-422 等
xx率 2400、4800、9600、19200bps(可由设定仪表参数相互更改,默认 9600) 2、字节数据格式
. 一位起始位
. 八位数据位
. 一位停止位
. 无校验
1 | * | * | * | * | * | * | * | * | 1 |
1 位起始位 8 位数据位 1 位停止位
3、仪表通讯帧格式
下表给出由本公司数显仪工作在从机模式时的的Modbus功能,并规定其限值。
从站编号:本机仪表地址,地址必须在1到247之间,且同一总线上各仪表地址不可重复。 地址为0时用于广播功能,且此时只有写功能有效。单字节。
功能代码:“读”和“写”功能是从主站角度定义的。单字节。
功能代码 | Modbus名 | 功能名 | 广播 | 一次连续的N 的最大值 |
3 (0x03) | Read Holding Registers | 读N个寄存器值 | NO | 24 |
16 (0x10) | Write Multiple Registers | 写N个寄存器值 | YES | 24 |
首寄存器地址:要读取的第一个内部寄存器的地址。双字节。每个内部寄存器的值数据为双字节。
寄存器数:要读取或修改的内部寄存器个数。双字节。
读取的字节数:被读取的内部寄存器的数据的字节总数。单字节。
CRC16:循环冗余校验参数。
1) 读N个输出字:功能3
注意: Hi = 高位字节,Lo = 低位字节。 此功能可被用于读取参数,而无论类型如何。
主站请求
从站编号 | 0x03 | 首寄存器地址 | 寄存器数 | CRC16 | |||
Hi | Lo | Hi | Lo | Lo | Hi |
1 字节 1 字节 2 字节 2 字节 2 字节
从站响应
从站编号 | 0x03 | 读取的字节数 | 首寄存器数值 | …… | 末寄存器数值 | CRC16 | |||
Hi | Lo |
| Hi | Lo | Lo | Hi |
1字节 1字节 1字节 2 字节 2 字节 2 字节
例1:使用功能3读取从站1上的1个字Sn01(地址0003H,见附表),其中:
· Sn01(第一通道信号输入类型) = 17(0x11) 主站请求
0x01 | 0x03 | 0x00 | 0x03 | 0x00 | 0x01 | 0x74 | 0x0A |
1 字节 1 字节 2 字节 2 字节 2 字节
从站响应
0x01 | 0x03 | 0x02 | 0x00 | 0x11 | 0x78 | 0x48 |
1字节 1字节 1字节 2字节 2字节
2) 写N个输出字:功能16(0x10)
主站请求
从站编号 | 0x10 | 首寄存器地址 | 寄存器数 | 字节数 | 首字数据 | …… | CRC16 | ||||
Hi | Lo | Hi | Lo | Hi | Lo | Lo | Hi |
1字节 1字节 2 字节 2 字节 1字节 2字节 2字节
从站响应
从站编号 | 0x10 | 首寄存器地址 | 寄存器数 | CRC16 | |||
Hi | Lo | Hi | Lo | Lo | Hi |
1字节 1字节 2 字节 2 字节 2 字节
例2:使用功能16将1000、200写入从站1中的2个单元AL1和AL2(寄存器地址0009H至000AH,见附表),即:
· AL1(上限报警值) = 1000(0x3E8)
· AL2(下限报警值) = 200 (0xC8)
主站请求
从站编号 | 请求代码 | 首寄存器 地址 | 寄存器数 | 字节数目 | 首寄存器 数据 | 第二寄存器 数据 | CRC16 | |||||
0x01 | 0x10 | 0x00 | 0x09 | 0x00 | 0x02 | 0x04 | 0x03 | 0xE8 | 0x00 | 0xC8 | 0xBD | 0x67 |
从站 编号 | 响应 代码 | 首寄存器地址 | 寄存器数 | CRC16 | |||
0x01 | 0x10 | 0x00 | 0x09 | 0x00 | 0x02 | 0x91 | 0xF9 |
从站响应
3) 异常响应
当从站不能执行发送给它的请求时,它将返回一个异常响应。 异常响应的格式:
从站编号 | 响应代码 | 错误代码 | CRC16 | |
Lo | Hi |
1字节 1字节 1字节 2 字节
响应代码:请求的功能代码 + 0x80(最高位被置为1)。 错误代码:
1 = 请求中需访问寄存器地址不在寄存器地址范围内。
2 = 请求中一次需访问寄存器的数量超过可连续访问寄存器数量的的最大值(24)。
3 = 从站写保护。
6、巡检仪内部参数对应地址表(范围:0--161):
编 号 | 参数 符号 | 参 数 名 称 | 寄存器 地 址 | 数据格式 | 类型 | 数 值 范 围 | 备 注 |
1 | 无 | 仪表类型(巡检仪) | 0000 | 双字节 无符号 | 只读 | 03 | 定点数 |
2 | Addr | 仪表地址 | 0001 | 读/写 | 1~247 | ||
3 | bAud | 仪表通讯xx率 | 0002 | 读/写 | 0~99 | ||
4 | CHn | 巡检点数 | 0003 | 读/写 | 0~16 | ||
5 | CHt | 通道显示时间间隔 | 0004 | 读/写 | 0~999 | ||
6 | oFS | 显示位移值 | 0005 | 双字节 有符号 | 读/写 | -1999~9999 | |
7 | LoS | 线性量程下限 | 0006 | 读/写 | -1999~9999 | ||
8 | HiS | 线性量程上限 | 0007 | 读/写 | -1999~9999 | ||
9 | AL_C | AL1-AL4 报警允许 | 0008 | 读/写 | -1999~9999 | ||
10 | AL1 | 上限报警值 | 0009 | 读/写 | -1999~9999 | ||
11 | AL2 | 下限报警值 | 0010 | 读/写 | -1999~9999 | ||
12 | AL3 | 上限报警值 | 0011 | 读/写 | -1999~9999 | ||
13 | AL4 | 下限报警值 | 0012 | 读/写 | -1999~9999 | ||
14 | A1c | 上限报警方式 | 0013 | 双字节 无符号 | 读/写 | 0~99 | |
15 | A2c | 下限报警方式 | 0014 | 读/写 | 0~99 | ||
16 | A3c | 上限报警方式 | 0015 | 读/写 | 0~99 | ||
17 | A4c | 下限报警方式 | 0016 | 读/写 | 0~99 | ||
18 | A1h | 上限报警回差值 | 0017 | 双字节 有符号 | 读/写 | -1999~9999 | |
19 | A2h | 下限报警回差值 | 0018 | 读/写 | -1999~9999 | ||
20 | A3h | 上限报警回差值 | 0019 | 读/写 | -1999~9999 | ||
21 | A4h | 下限报警回差值 | 0020 | 读/写 | -1999~9999 | ||
22 | Loo | 变送量程下限 | 0021 | 双字节 有符号 | 读/写 | -1999~9999 | |
23 | Hio | 变送量程上限 | 0022 | 读/写 | -1999~9999 | ||
24 | out | 模拟变送输出类型 | 0023 | 读/写 | -1999~9999 | ||
25 | Lo01 | 第 1 通道显示量程下限 | 0024 | 双字节 有符号 | 读/写 | -1999~9999 | |
26 | Lo02 | 第 2 通道显示量程下限 | 0025 | 读/写 | -1999~9999 | ||
27 | Lo03 | 第 3 通道显示量程下限 | 0026 | 读/写 | -1999~9999 | ||
28 | Lo04 | 第 4 通道显示量程下限 | 0027 | 读/写 | -1999~9999 | ||
29 | Lo05 | 第 5 通道显示量程下限 | 0028 | 读/写 | -1999~9999 | ||
30 | Lo06 | 第 6 通道显示量程下限 | 0029 | 读/写 | -1999~9999 | ||
31 | Lo07 | 第 7 通道显示量程下限 | 0030 | 读/写 | -1999~9999 | ||
32 | Lo08 | 第 8 通道显示量程下限 | 0031 | 读/写 | -1999~9999 | ||
33 | Lo09 | 第 9 通道显示量程下限 | 0032 | 读/写 | -1999~9999 | ||
34 | Lo10 | 第 10 通道显示量程下限 | 0033 | 读/写 | -1999~9999 | ||
35 | Lo11 | 第 11 通道显示量程下限 | 0034 | 读/写 | -1999~9999 | ||
36 | Lo12 | 第 12 通道显示量程下限 | 0035 | 读/写 | -1999~9999 | ||
37 | Lo13 | 第 13 通道显示量程下限 | 0036 | 读/写 | -1999~9999 | ||
38 | Lo14 | 第 14 通道显示量程下限 | 0037 | 读/写 | -1999~9999 | ||
39 | Lo15 | 第 15 通道显示量程下限 | 0038 | 读/写 | -1999~9999 | ||
40 | Lo16 | 第 16 通道显示量程下限 | 0039 | 读/写 | -1999~9999 | ||
41 | Hi01 | 第 1 通道显示量程下限 | 0040 | 双字节 有符号 | 读/写 | -1999~9999 | |
42 | Hi02 | 第 2 通道显示量程下限 | 0041 | 读/写 | -1999~9999 | ||
43 | Hi03 | 第 3 通道显示量程下限 | 0042 | 读/写 | -1999~9999 | ||
44 | Hi04 | 第 4 通道显示量程下限 | 0043 | 读/写 | -1999~9999 | ||
45 | Hi05 | 第 5 通道显示量程下限 | 0044 | 双字节 有符号 | 读/写 | -1999~9999 |
|
编 号 | 参数 符号 | 参 数 名 称 | 寄存器 地 址 | 数据格式 | 类型 | 数 值 范 围 | 备 注 |
46 | Hi06 | 第 6 通道显示量程下限 | 0045 | 双字节 有符号 | 读/写 | -1999~9999 | 定点数 |
47 | Hi07 | 第 7 通道显示量程下限 | 0046 | 读/写 | -1999~9999 | ||
48 | Hi08 | 第 8 通道显示量程下限 | 0047 | 读/写 | -1999~9999 | ||
49 | Hi09 | 第 9 通道显示量程下限 | 0048 | 读/写 | -1999~9999 | ||
50 | Hi10 | 第 10 通道显示量程下限 | 0049 | 读/写 | -1999~9999 | ||
51 | Hi11 | 第 11 通道显示量程下限 | 0050 | 读/写 | -1999~9999 | ||
52 | Hi12 | 第 12 通道显示量程下限 | 0051 | 读/写 | -1999~9999 | ||
53 | Hi13 | 第 13 通道显示量程下限 | 0052 | 读/写 | -1999~9999 | ||
54 | Hi14 | 第 14 通道显示量程下限 | 0053 | 读/写 | -1999~9999 | ||
55 | Hi15 | 第 15 通道显示量程下限 | 0054 | 读/写 | -1999~9999 | ||
56 | Hi16 | 第 16 通道显示量程下限 | 0055 | 双字节 有符号 | 读/写 | -1999~9999 | |
57 | oS01 | 第 1 通道显示位移量 | 0056 | 读/写 | -1999~9999 | ||
58 | oS02 | 第 2 通道显示位移量 | 0057 | 读/写 | -1999~9999 | ||
59 | oS03 | 第 3 通道显示位移量 | 0058 | 读/写 | -1999~9999 | ||
60 | oS04 | 第 4 通道显示位移量 | 0059 | 读/写 | -1999~9999 | ||
61 | oS05 | 第 5 通道显示位移量 | 0060 | 读/写 | -1999~9999 | ||
62 | oS06 | 第 6 通道显示位移量 | 0061 | 读/写 | -1999~9999 | ||
63 | oS07 | 第 7 通道显示位移量 | 0062 | 读/写 | -1999~9999 | ||
64 | oS08 | 第 8 通道显示位移量 | 0063 | 读/写 | -1999~9999 | ||
65 | oS09 | 第 9 通道显示位移量 | 0064 | 读/写 | -1999~9999 | ||
66 | oS10 | 第 10 通道显示位移量 | 0065 | 读/写 | -1999~9999 | ||
67 | oS11 | 第 11 通道显示位移量 | 0066 | 读/写 | -1999~9999 | ||
68 | oS12 | 第 12 通道显示位移量 | 0067 | 读/写 | -1999~9999 | ||
69 | oS13 | 第 13 通道显示位移量 | 0068 | 读/写 | -1999~9999 | ||
70 | oS14 | 第 14 通道显示位移量 | 0069 | 读/写 | -1999~9999 | ||
71 | oS15 | 第 15 通道显示位移量 | 0070 | 读/写 | -1999~9999 | ||
72 | oS16 | 第 16 通道显示位移量 | 0071 | 双字节 有符号 | 读/写 | -1999~9999 | |
73 | AH01 | 第 1 通道上限报警设定值 | 0072 | 读/写 | -1999~9999 | ||
74 | AH02 | 第 2 通道上限报警设定值 | 0073 | 读/写 | -1999~9999 | ||
75 | AH03 | 第 3 通道上限报警设定值 | 0074 | 读/写 | -1999~9999 | ||
76 | AH04 | 第 4 通道上限报警设定值 | 0075 | 读/写 | -1999~9999 | ||
77 | AH05 | 第 5 通道上限报警设定值 | 0076 | 读/写 | -1999~9999 | ||
78 | AH06 | 第 6 通道上限报警设定值 | 0077 | 读/写 | -1999~9999 | ||
79 | AH07 | 第 7 通道上限报警设定值 | 0078 | 读/写 | -1999~9999 | ||
80 | AH08 | 第 8 通道上限报警设定值 | 0079 | 读/写 | -1999~9999 | ||
81 | AH09 | 第 9 通道上限报警设定值 | 0080 | 读/写 | -1999~9999 | ||
82 | AH10 | 第 10 通道上限报警设定值 | 0081 | 读/写 | -1999~9999 | ||
83 | AH11 | 第 11 通道上限报警设定值 | 0082 | 读/写 | -1999~9999 | ||
84 | AH12 | 第 12 通道上限报警设定值 | 0083 | 读/写 | -1999~9999 | ||
85 | AH13 | 第 13 通道上限报警设定值 | 0084 | 读/写 | -1999~9999 | ||
86 | AH14 | 第 14 通道上限报警设定值 | 0085 | 读/写 | -1999~9999 | ||
87 | AH15 | 第 15 通道上限报警设定值 | 0086 | 读/写 | -1999~9999 | ||
88 | AH16 | 第 16 通道上限报警设定值 | 0087 | 双字节 有符号 | 读/写 | -1999~9999 | |
89 | AL01 | 第 1 通道下限报警设定值 | 0088 | 读/写 | -1999~9999 | ||
90 | AL02 | 第 2 通道下限报警设定值 | 0089 | 读/写 | -1999~9999 | ||
|
|
|
|
|
|
|
|
编 号 | 参数 符号 | 参 数 名 称 | 寄存器 地 址 | 数据格式 | 类型 | 数 值 范 围 | 备 注 |
91 | AL03 | 第 3 通道下限报警设定值 | 0090 | 双字节 有符号 | 读/写 | -1999~9999 | 定点数 |
92 | AL04 | 第 4 通道下限报警设定值 | 0091 | 读/写 | -1999~9999 | ||
93 | AL05 | 第 5 通道下限报警设定值 | 0092 | 读/写 | -1999~9999 | ||
94 | AL06 | 第 6 通道下限报警设定值 | 0093 | 读/写 | -1999~9999 | ||
95 | AL07 | 第 7 通道下限报警设定值 | 0094 | 读/写 | -1999~9999 | ||
96 | AL08 | 第 8 通道下限报警设定值 | 0095 | 读/写 | -1999~9999 | ||
97 | AL09 | 第 9 通道下限报警设定值 | 0096 | 读/写 | -1999~9999 | ||
98 | AL10 | 第 10 通道下限报警设定值 | 0097 | 读/写 | -1999~9999 | ||
99 | AL11 | 第 11 通道下限报警设定值 | 0098 | 读/写 | -1999~9999 | ||
100 | AL12 | 第 12 通道下限报警设定值 | 0099 | 读/写 | -1999~9999 | ||
101 | AL13 | 第 13 通道下限报警设定值 | 0100 | 读/写 | -1999~9999 | ||
102 | AL14 | 第 14 通道下限报警设定值 | 0101 | 读/写 | -1999~9999 | ||
103 | AL15 | 第 15 通道下限报警设定值 | 0102 | 读/写 | -1999~9999 | ||
104 | AL16 | 第 16 通道下限报警设定值 | 0103 | 双字节 有符号 | 读/写 | -1999~9999 | |
105 | A01h | 第 1 通道报警回差设定值 | 0104 | 读/写 | -1999~9999 | ||
106 | A02h | 第 2 通道报警回差设定值 | 0105 | 读/写 | -1999~9999 | ||
107 | A03h | 第 3 通道报警回差设定值 | 0106 | 读/写 | -1999~9999 | ||
108 | A04h | 第 4 通道报警回差设定值 | 0107 | 读/写 | -1999~9999 | ||
109 | A05h | 第 5 通道报警回差设定值 | 0108 | 读/写 | -1999~9999 | ||
110 | A06h | 第 6 通道报警回差设定值 | 0109 | 读/写 | -1999~9999 | ||
111 | A07h | 第 7 通道报警回差设定值 | 0110 | 读/写 | -1999~9999 | ||
112 | A08h | 第 8 通道报警回差设定值 | 0111 | 读/写 | -1999~9999 | ||
113 | A09h | 第 9 通道报警回差设定值 | 0112 | 读/写 | -1999~9999 | ||
114 | A10h | 第 10 通道报警回差设定值 | 0113 | 读/写 | -1999~9999 | ||
115 | A11h | 第 11 通道报警回差设定值 | 0114 | 读/写 | -1999~9999 | ||
116 | A12h | 第 12 通道报警回差设定值 | 0115 | 读/写 | -1999~9999 | ||
117 | A13h | 第 13 通道报警回差设定值 | 0116 | 读/写 | -1999~9999 | ||
118 | A14h | 第 14 通道报警回差设定值 | 0117 | 读/写 | -1999~9999 | ||
119 | A15h | 第 15 通道报警回差设定值 | 0118 | 读/写 | -1999~9999 | ||
120 | A16h | 第 16 通道报警回差设定值 | 0119 | 双字节 无符号 | 读/写 | 0~16 | |
121 | oFS_ | 显示通道偏移量 | 0120 | 双字节 无符号 | 读/写 | 0~27 | |
122 | Sn01 | 第 1 通道输入信号类型 | 0121 | 读/写 | 0~27 | ||
123 | Sn02 | 第 2 通道输入信号类型 | 0122 | 读/写 | 0~27 | ||
124 | Sn03 | 第 3 通道输入信号类型 | 0123 | 读/写 | 0~27 | ||
125 | Sn04 | 第 4 通道输入信号类型 | 0124 | 读/写 | 0~27 | ||
126 | Sn05 | 第 5 通道输入信号类型 | 0125 | 读/写 | 0~27 | ||
127 | Sn06 | 第 6 通道输入信号类型 | 0126 | 读/写 | 0~27 | ||
128 | Sn07 | 第 7 通道输入信号类型 | 0127 | 读/写 | 0~27 | ||
129 | Sn08 | 第 8 通道输入信号类型 | 0128 | 读/写 | 0~27 | ||
130 | Sn09 | 第 9 通道输入信号类型 | 0129 | 读/写 | 0~27 | ||
131 | Sn10 | 第 10 通道输入信号类型 | 0130 | 读/写 | 0~27 | ||
132 | Sn11 | 第 11 通道输入信号类型 | 0131 | 读/写 | 0~27 | ||
133 | Sn12 | 第 12 通道输入信号类型 | 0132 | 读/写 | 0~27 | ||
134 | Sn13 | 第 13 通道输入信号类型 | 0133 | 读/写 | 0~27 | ||
135 | Sn14 | 第 14 通道输入信号类型 | 0134 | 双字节 无符号 | 读/写 | 0~27 |
|
编 号 | 参数 符号 | 参 数 名 称 | 寄存器 地 址 | 数据格式 | 类型 | 数 值 范 围 | 备 注 |
136 | Sn15 | 第 15 通道输入信号类型 | 0135 | 双字节 无符号 | 读/写 | 0~27 | 定点数 |
137 | Sn16 | 第 16 通道输入信号类型 | 0136 | 读/写 | 0~27 | ||
138 | Sn | 统一输入信号类型 | 0137 | 读/写 | 0~3 | ||
139 | dPS | 小数点位置 | 0138 | 读/写 | 0~9999 | ||
140 | CH-1 | 1-4 通道测量控制 | 0139 | 读/写 | 0~9999 | ||
141 | CH-5 | 5-8 通道测量控制 | 0140 | 读/写 | 0~9999 | ||
142 | CH-9 | 9-12 通道测量控制 | 0141 | 读/写 | 0~9999 | ||
143 | CH-C | 13-16 通道测量控制 | 0142 | 双字节 有符号 | 只读 | -1999~9999 | |
144 | 无 | 第 1 通道显示值 | 0143 | 只读 | -1999~9999 | ||
145 | 无 | 第 2 通道显示值 | 0144 | 只读 | -1999~9999 | ||
146 | 无 | 第 3 通道显示值 | 0145 | 只读 | -1999~9999 | ||
147 | 无 | 第 4 通道显示值 | 0146 | 只读 | -1999~9999 | ||
148 | 无 | 第 5 通道显示值 | 0147 | 只读 | -1999~9999 | ||
149 | 无 | 第 6 通道显示值 | 0148 | 只读 | -1999~9999 | ||
150 | 无 | 第 7 通道显示值 | 0149 | 只读 | -1999~9999 | ||
151 | 无 | 第 8 通道显示值 | 0150 | 只读 | -1999~9999 | ||
152 | 无 | 第 9 通道显示值 | 0151 | 只读 | -1999~9999 | ||
153 | 无 | 第 10 通道显示值 | 0152 | 只读 | -1999~9999 | ||
154 | 无 | 第 11 通道显示值 | 0153 | 只读 | -1999~9999 | ||
155 | 无 | 第 12 通道显示值 | 0154 | 只读 | -1999~9999 | ||
156 | 无 | 第 13 通道显示值 | 0155 | 只读 | -1999~9999 | ||
157 | 无 | 第 14 通道显示值 | 0156 | 只读 | -1999~9999 | ||
158 | 无 | 第 15 通道显示值 | 0157 | 只读 | -1999~9999 | ||
159 | 无 | 第 16 通道显示值 | 0158 | 双字节 无符号 | 只读 | -1999~9999 | |
160 | 无 | 1-16 通道上限报警状态 (见表 A) | 0159 | 只读 | -1999~9999 | ||
161 | 无 | 1-16 通道下限报警状态 (见表 A) | 0160 | 只读 | -1999~9999 | ||
162 | 无 | 1-16 通道上上限报警状态 (见表 A) | 0161 | 只读 | -1999~9999 | ||
163 | 无 | 1-16 通道下下限报警状态 (见表 A) | 0162 | 只读 | -1999~9999 | ||
|
|
|
|
|
|
|
|
表 A:1-16 通道(Ch1-Ch16)报警状态。报警:1;无报警:0
报警 状态字 | Bit15 | Bit14 | Bit13 | Bit12 | Bit11 | Bit10 | Bit9 | Bit8 | Bit7 | Bit6 | Bit5 | Bit4 | Bit3 | Bit2 | Bit1 | Bit0 |
Ch16 | Ch15 | Ch14 | Ch13 | Ch12 | Ch11 | Ch10 | Ch9 | Ch8 | Ch7 | Ch6 | Ch5 | Ch4 | Ch3 | Ch2 | Ch1 |