从站地址:- 地址必须在1到247之间。
- 每个地址在网络设备环境中必须唯一。
数据 : 以二进制代码传输。
CRC16 : 循环冗余校验参数。
当间隔时间长于或等于3.5字符时,即作为检测到帧结束。
通讯方式 异步串行通讯接口,如RS-485,RS-232,RS-422等
波特率 2400、4800、9600、19200bps(可由设定仪表参数相互更改,默认9600)
. 一位起始位
. 八位数据位
. 一位停止位
. 无校验
1 |
* |
* |
* |
* |
* |
* |
* |
* |
1 |
1位起始位 8位数据位 1位停止位
二、仪表通讯帧格式
(1)名词定义
● 从站编号:
本机仪表地址,地址必须在1到247之间,且同一总线上各仪表地址不可重复。地址为0时用于广播功能,且此时只有写功能有效,从站无应答。单字节。
● 功能代码:
“读”和“写”功能是从主站角度定义的。单字节。
功能代码 |
Modbus名 |
功能名 |
广播 |
一次连续的N的最大值 |
3 (0x03) |
Read Holding Registers |
读N个寄存器值 |
NO |
24 |
16 (0x10) |
Write Multiple Registers |
写N个寄存器值 |
YES |
24 |
● 首寄存器地址:
要读取的第一个内部寄存器的地址。双字节,高字节在前。
● 寄存器数:
要连续读取或修改的内部寄存器个数。双字节,高字节在前。
● 字节数:
被读取或写入的所以寄存器的数据的字节总数。单字节。
● CRC16:
循环冗余校验参数。双字节,低字节在前。
(2)读和写操作
1) 读N个输出字:功能码3(0x03)
注意: 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个单元In(地址0003H,见附表),其中:
· In(第一通道信号输入类型) = 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个单元SP1和SP2(寄存器地址0009H至000AH,见附表),即:
· SP1(上限报警值) = 1000(0x3E8)
· SP2(下限报警值) = 200 (0xC8)
主站请求
从站编号 |
请求代码 |
首寄存器 地址 |
寄存器数 |
字节数目 |
首寄存器 数据 |
第二寄存器 数据 |
CRC16 |
|||||
0x01 |
0x10 |
0x00 |
0x09 |
0x00 |
0x02 |
0x04 |
0x03 |
0xE8 |
0x00 |
0xC8 |
0xB2 |
0x23 |
从站响应
从站编号 |
响应代码 |
首寄存器地址 |
寄存器数 |
CRC16 |
|||
0x01 |
0x10 |
0x00 |
0x09 |
0x00 |
0x02 |
0x91 |
0xCA |
3) 异常响应
当从站不能执行发送给它的请求时,它将返回一个异常响应。
异常响应的格式:
从站编号 |
响应代码 |
错误代码 |
CRC16 |
|
Lo |
Hi |
1字节 1字节 1字节 2 字节
响应代码:请求的功能代码 + 0x80(最高位被置为1)。
错误代码:
1 = 请求中需访问寄存器地址不在寄存器地址范围内。
2 = 请求中一次需访问寄存器的数量超过可连续访问寄存器数量的的最大值(24)。
3 = 从站写保护(详见说明书中波特率菜单设置)。
编号 |
参数符号 |
参 数 名 称 |
寄存器地 址 (十六进制) |
数据格式 (十六进制) |
属性 |
数 值 范 围 (十进制) |
备 注 |
1 |
无 |
仪表类型(单回路数显仪表) |
0000 |
双字节 无符号 |
只读 |
00 |
注[1]: 无小数点 |
2 |
UAd |
仪表地址 |
0001 |
读/写 |
1~247 |
||
3 |
Ucr |
仪表通讯波特率 |
0002 |
读/写 |
0~3 |
||
4 |
In |
输入类型 |
0003 |
双字节 无符号 |
读/写 |
0~99 |
|
5 |
--- |
抗干扰设置 |
0004 |
0~99 |
|||
6 |
dip |
小数点位置 |
0005 |
0~3 |
|||
7 |
--- |
显示迁移值 |
0006 |
双字节 有符号 |
读/写 |
-1999~9999 |
注[2]: 小数点为第6编号项的数值 |
8 |
Ldo |
显示量程下限 |
0007 |
-1999~9999 |
|||
9 |
Lup |
显示量程上限 |
0008 |
-1999~9999 |
|||
10 |
SP1 |
第一报警值 |
0009 |
-1999~9999 |
|||
11 |
SP2 |
第二报警值 |
000A |
-1999~9999 |
|||
12 |
SP3 |
第三报警值 |
000B |
-1999~9999 |
|||
13 |
SP4 |
第四报警值 |
000C |
-1999~9999 |
|||
14 |
P1h |
第一报警回差值 |
000D |
-1999~9999 |
|||
15 |
P2h |
第二报警回差值 |
000E |
-1999~9999 |
|||
16 |
P3h |
第一报警回差值 |
000F |
-1999~9999 |
|||
17 |
P4h |
第二报警回差值 |
0010 |
-1999~9999 |
|||
18 |
P1c |
第一报警方式 |
0011 |
双字节 无符号 |
读/写 |
0~9999 |
同 注[1] |
19 |
P2c |
第二报警方式 |
0012 |
0~9999 |
|||
20 |
P3c |
第一报警方式 |
0013 |
0~9999 |
|||
21 |
P4c |
第二报警方式 |
0014 |
0~9999 |
|||
22 |
odo |
变送量程下限 |
0015 |
双字节有符号 |
读/写 |
-1999~9999 |
同 注[2] |
23 |
oup |
变送量程上限 |
0016 |
-1999~9999 |
|||
24 |
SLn |
继电器消音设置 |
双字节无符号 |
读/写 |
0~9999 |
同 注[1] |
|
25 |
out |
模拟变送输出类型 |
0018 |
0~9999 |
|||
26 |
无 |
无意义(预留) |
0019 |
(预留) |
|
||
27 |
无 |
测量显示值 |
001A |
双字节有符号 |
只读 |
-1999~9999 |
同 注[2] |
28 |
无 |
报警状态 |
双字节无符号 |
只读 |
见下表A |
同 注[1] |
四、双回路数字显示控制仪表内部参数对应地址表(范围:0—0023,只适用双通道数显表)
编号 |
参数符号 |
参 数 名 称 |
寄存器地 址(十六进制) |
数据格式 (十六进制) |
属性 |
数 值 范 围 (十进制) |
备 注 |
1 |
无 |
仪表类型(双回路数显仪表) |
0000 |
双字节 无符号 |
只读 |
01 |
注[1]: 无小数点 |
2 |
UAd |
仪表地址 |
0001 |
读/写 |
1~247 |
||
3 |
Ucr |
仪表通讯波特率 |
0002 |
读/写 |
0~3 |
||
4 |
In1 |
第一回路 输入类型 |
0003 |
双字节 无符号 |
读/写 |
0~99 |
|
5 |
--- |
第一、二回路 抗干扰设置 |
0004 |
读/写 |
0~99 |
||
6 |
dip1 |
第一、二回路 小数点位置 |
0005 |
读/写 |
0~33 个位代表第一回路 十位代表第二回路 |
||
dip2 |
|||||||
7 |
--- |
第一回路 显示迁移值 |
0006 |
双字节 有符号 |
读/写 |
-1999~9999 |
注[2]: 小数点为第6编号项数值的个位 |
8 |
Ldo |
第一回路 线性量程下限 |
0007 |
读/写 |
-1999~9999 |
||
9 |
Lup |
第一回路 线性量程上限 |
0008 |
读/写 |
-1999~9999 |
||
10 |
SP1 |
第一回路 第一报警值 |
0009 |
读/写 |
-1999~9999 |
||
11 |
SP2 |
第一回路 第二报警值 |
000A |
读/写 |
-1999~9999 |
||
12 |
P1h |
第一回路 第一报警回差值 |
000B |
读/写 |
-1999~9999 |
||
13 |
P2h |
第一回路 第二报警回差值 |
000C |
读/写 |
-1999~9999 |
||
14 |
P1c |
第一回路 第一报警方式 |
000D |
双字节 无符号 |
读/写 |
0~9999 |
同 注[1] |
15 |
P2c |
第一回路 第二报警方式 |
000E |
读/写 |
0~9999 |
||
16 |
odo |
第一回路 变送量程下限 |
000F |
双字节 有符号 |
读/写 |
-1999~9999 |
同 注[2] |
17 |
oup |
第一回路 变送量程上限 |
0010 |
读/写 |
-1999~9999 |
||
18 |
In2 |
第二回路 输入类型 |
0011 |
双字节 无符号 |
读/写 |
0~99 |
同 注[1] |
19 |
无 |
无意义(预留) |
|
|
(预留) |
||
20 |
---2 |
第二回路 显示迁移值 |
双字节 有符号 |
读/写 |
-1999~9999 |
注[3]: 小数点为第6编号项数值的十位 |
|
21 |
Ldo2 |
第二回路 线性量程下限 |
读/写 |
-1999~9999 |
|||
22 |
Lup2 |
第二回路 线性量程上限 |
0015 |
读/写 |
-1999~9999 |
||
23 |
SP3 |
第二回路 第一报警值 |
0016 |
读/写 |
-1999~9999 |
||
24 |
SP4 |
第二回路 第二报警值 |
0017 |
读/写 |
-1999~9999 |
||
25 |
P3h |
第二回路 第一报警回差值 |
0018 |
读/写 |
-1999~9999 |
||
26 |
P4h |
第二回路 第二报警回差值 |
0019 |
读/写 |
-1999~9999 |
||
27 |
P3c |
第二回路 第一报警方式 |
001A |
双字节 无符号 |
读/写 |
0~9999 |
同 注[1] |
28 |
P4c |
第二回路 第二报警方式 |
001B |
读/写 |
0~9999 |
||
29 |
odo2 |
第二回路 变送量程下限 |
001C |
双字节 有符号 |
读/写 |
-1999~9999 |
同 注[3] |
30 |
oup2 |
第二回路 变送量程上限 |
001D |
读/写 |
-1999~9999 |
||
31 |
Sln |
继电器消音设置 |
001E |
双字节 无符号 |
读/写 |
0~9999 |
同 注[1] |
32 |
out |
模拟变送输出类型设置 |
001F |
|
读/写 |
0~9999 |
|
33 |
无 |
无意义(预留) |
0020 |
|
|
(预留) |
|
34 |
无 |
第一通道显示值 |
0021 |
双字节 有符号 |
只读 |
-1999~9999 |
同 注[2] |
35 |
无 |
第二通道显示值 |
0022 |
只读 |
-1999~9999 |
同 注[3] |
|
36 |
无 |
报警状态 |
0023 |
双字节 无符号 |
只读 |
见下表A |
|
|
|
|
|
|
|
|