本文主要是介绍杭州金田电磁转换器MODBUS通讯协议,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
杭州金田电磁转换器MODBUS通讯协议
通讯协议采用标准MODBUS RTU通讯协议。仪表为从机。
- RTU消息帧定义
数据通讯由主机发起,主机首先发送RTU消息帧,消息帧发送至少要以3.5个字符时间的停顿间隔开始。传输的第一个字节是设备地址。可以使用的传输字符是十六进制的0...9,A...F。所有的从设备不断侦测网络总线,包括停顿间隔时间内。当第一个地址字节接收到,每个设备都进行解码以判断是否发往自己的。在最后一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后开始。
整个消息帧必须作为一连续的流转输。如果在帧完成之前有超过1.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。这将导致一个错误,因为在最后的CRC域的值不可能是正确的。消息帧定义如下所示:
RTU消息帧基本定义
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
设备地址 | 功能编码 | 地址1 | 地址0 | 数据1 | 数据0 | CRC | CRC |
8位字节 | 8位字节 | 8位字节 | 8位字节 | 8位字节 | 8位字节 | 8位字节 | 8位字节 |
- 参数读出命令
- 主机命令格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
设备地址 | 功能代码 | 地址1 | 地址0 | 数据1 | 数据0 | CRC | CRC |
1~99 | 03 | 0 | 00--35 | 0 | 1 | XX | XX |
-
- 从机回应格式
0 | 1 | 2 | 3 | 4 | 5 | 6 |
设备地址 | 功能代码 | 长度 | 数据1 | 数据0 | CRC | CRC |
1~99 | 03 | 2 | 高字节 | 低字节 | XX | XX |
数据 = 数据1 数据0;
注意:读出时,参数编号加1(MODBUS协议规定),如主机命令中参数编号为08,读出的参数编号为09。
- 改写参数命令
- 主机命令格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
设备地址 | 功能代码 | 地址1 | 地址0 | 数据1 | 数据0 | CRC | CRC |
1~99 | 06 | 0 | 00—35 | 高字节 | 低字节 | XX | XX |
-
- 从机回应格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
设备地址 | 功能代码 | 地址1 | 地址0 | 数据1 | 数据0 | CRC | CRC |
1~99 | 06 | 0 | 00—35 | 高字节 | 低字节 | XX | XX |
从机将接收到的数据原样传回,主机可用于校验。注意:该数据不是写后数据。从机写参数需要50毫秒,即50毫秒后才能正确读出该参数。
注意:改写时,被改写得参数编号加1(MODBUS协议规定),如主机命令中参数编号为08,改写的参数编号为09。
- 读出瞬时流量、流速、百分比、空管比、报警
- 主机命令格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
设备地址 | 功能代码 | 地址1 | 地址0 | 数据1 | 数据0 | CRC | CRC |
1~99 | 04 | 0 | 0 | 0 | 5 | XX | XX |
-
- 从机回应格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
设备地址 | 功能代码 | 字节数量 | 流量高位 | 流量低位 | 单位数点 | 流速高位 | 流速低位 | 百分比高 | 百分比低 | 空管比高 | 空管比低 | 报警状态 | crc | crc |
1-99 | 04 | 10 |
|
|
|
|
|
|
|
|
|
|
|
|
单位数点字节的B7是正负符号位,B7 = 0 流量为正向;B7 = 1 流量为反向;
单位数点字节的B6B5B4是小数点位置:
B6B5B4 = 0 .00000 B6B5B4 = 1 0.0000 B6B5B4 = 2 00.000
B6B5B4 = 3 000.00 B6B5B4 = 4 0000.0 B6B5B4 = 5 00000.
单位数点字节的B2B1B0是流量单位:
B2B1B0 = 0 LTR / s B2B1B0 = 1 LTR / m B2B1B0 = 2 LTR / h
B2B1B0 = 3 M3 / s B2B1B0 = 4 M3 / m B2B1B0 = 5 M3 / h
B2B1B0 = 6 UGK B2B1B0 = 7 USK
流速固定显示为: XX.XXX m / s;
百分比固定显示为: XXX.XX %;
空管比固定显示为: XXXXX %;
报警状态字节:
B0 = 1 上限报警、 B1 = 1 下限报警、B2 = 1 空管报警、B3 = 1 系统报警;
- 读出累计总量
- 主机命令格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
设备地址 | 功能代码 | 地址1 | 地址0 | 数据1 | 数据0 | CRC | CRC |
1~99 | 04 | 0 | 5 | 0 | 5 | XX | XX |
-
- 从机回应格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
设备地址 | 功能代码 | 字节数量 | 正向总量3 | 正向总量2 | 正向总量1 | 正向总量0 | 反向总量3 | 反向总量2 | 反向总量1 | 反向总量0 | 总量单位 | 保留 | Crc | Crc |
1-99 | 04 | 10 |
|
|
|
|
|
|
|
|
| 0 |
|
|
总量值 = 字节3 字节2 字节1 字节0
总量单位 = 00 000000.000 Ltr 总量单位 = 01 0000000.00 Ltr
总量单位 = 02 00000000.0 Ltr 总量单位 = 03 000000000. Ltr
总量单位 = 04 000000.000 M3 总量单位 = 05 0000000.00 M3
总量单位 = 06 00000000.0 M3 总量单位 = 07 000000000. M3
总量单位 = 08 000000.000 UKG 总量单位 = 09 0000000.00 UKG
总量单位 = 10 00000000.0 UKG 总量单位 = 11 000000000. UKG
总量单位 = 12 000000.000 USG 总量单位 = 13 0000000.00 USG
总量单位 = 14 00000000.0 USG 总量单位 = 15 000000000. USG
- 读出瞬时流量、正向总量
- 主机命令格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
设备地址 | 功能代码 | 地址1 | 地址0 | 数据1 | 数据0 | CRC | CRC |
1~99 | 04 | 0 | 10 | 0 | 4 | XX | XX |
-
- 从机回应格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
设备地址 | 功能代码 | 字节数量 | 瞬时流量 | 瞬时流量 | 数点单位 | 正向总量 | 正向总量 | 正向总量 | 正向总量 | 总量单位 | Crc | Crc |
1-99 | 04 | 8 |
|
|
|
|
|
|
|
|
|
|
- 读出瞬时流量、反向总量
- 主机命令格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
设备地址 | 功能代码 | 地址1 | 地址0 | 数据1 | 数据0 | CRC | CRC |
1~99 | 04 | 0 | 14 | 0 | 4 | XX | XX |
-
- 从机回应格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
设备地址 | 功能代码 | 字节数量 | 瞬时流量 | 瞬时流量 | 数点单位 | 反向总量 | 反向总量 | 反向总量 | 反向总量 | 总量单位 | crc | Crc |
1-99 | 04 | 8 |
|
|
|
|
|
|
|
|
|
|
- 写操作密码
- 主机命令格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
设备地址 | 功能代码 | 地址1 | 地址0 | 数据1 | 数据0 | CRC | CRC |
1~99 | 06 | 0 | 63 | 密码高位 | 密码低位 | XX | XX |
-
- 从机回应格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
设备地址 | 功能代码 | 地址1 | 地址0 | 数据1 | 数据0 | CRC | CRC |
1~99 | 06 | 0 | 63 | 密码高位 | 密码低位 | XX | XX |
注意:改写时,被改写得参数编号加1(MODBUS协议规定),如主机命令中参数编号为63,改写的参数编号为64。
参数编号: 64:写操作密码
九、读出电子时钟
-
- 主机命令格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
设备地址 | 功能代码 | 地址1 | 地址0 | 数据1 | 数据0 | CRC | CRC |
1~99 | 03 | 0 | 64—69 | 0 | 1 | XX | XX |
-
- 从机回应格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
设备地址 | 功能代码 | 地址1 | 地址0 | 数据1 | 数据0 | CRC | CRC |
1~99 | 03 | 0 | 64—69 |
| 日期时间 | XX | XX |
注意:读出时,参数编号加1(MODBUS协议规定),如主机命令中参数编号为68,读出的参数编号为69(即为分)。
参数编号: 65:年、66:月、67:日、68:时、69:分、70:秒
- 写电子时钟
- 主机命令格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
设备地址 | 功能代码 | 地址1 | 地址0 | 数据1 | 数据0 | CRC | CRC |
1~99 | 06 | 0 | 64—69 | 0 | 日期时间 | XX | XX |
-
- 从机回应格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
设备地址 | 功能代码 | 地址1 | 地址0 | 数据1 | 数据0 | CRC | CRC |
1~99 | 06 | 0 | 64—69 |
| 日期时间 | XX | XX |
注意:改写时,被改写得参数编号加1(MODBUS协议规定),如主机命令中参数编号为68,改写的参数编号为69(即为分)。
参数编号: 65:年、66:月、67:日、68:时、69:分、70:秒
- 读总量控制(仪表带总量控制功能)
- 主机命令格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
设备地址 | 功能代码 | 地址1 | 地址0 | 数据1 | 数据0 | CRC | CRC |
1~99 | 04 | 0 | 26 | 0 | 4 | XX | XX |
b) 从机回应格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
设备地址 | 功能代码 | 字节数量 | 总量控制时间 | 总量控制时间 | 总量控制时间 | 总量控制时间 | 总量控制数值 | 总量控制数值 | 总量控制数值 | 总量控制数值 | crc | Crc |
1-99 | 04 | 8 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 |
|
|
注意:时间的单位为0.1s
例:总量控制时间=D1*256*256*256+D2*256*256+D3*256+D4
- 读掉电总数据(仪表带掉电功能)
- 主机命令格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
设备地址 | 功能代码 | 地址1 | 地址0 | 数据1 | 数据0 | CRC | CRC |
1~99 | 04 | 0 | 18 | 0 | 4 | XX | XX |
b) 从机回应格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
设备地址 | 功能代码 | 字节数量 | 掉电指针 | 掉电指针 | 掉电次数 | 掉电次数 | 掉电时间总计 | 掉电时间总计 | 掉电时间总计 | 掉电时间总计 | crc | Crc |
1-99 | 04 | 8 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 |
|
|
注意:时间的单位为1。
- 读掉电总数据(仪表带掉电功能)
- 主机命令格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
设备地址 | 功能代码 | 地址1 | 地址0 | 数据1 | 数据0 | CRC | CRC |
1~99 | 04 | A0 | A1 | 0 | 4 | XX | XX |
b) 从机回应格式
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
设备地址 | 功能代码 | 字节数量 | 掉电数据 | 掉电数据 | 掉电数据 | 掉电数据 | 掉电数据 | 掉电数据 | 掉电数据 | 掉电数据 | crc | Crc |
1-99 | 04 | 8 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | D8 |
|
|
地址为0x2000+偏移量
D1:秒
D2:分
D3:时
D4:日
D5:月
D6:年
例:读取掉电指针为2,想要读取最新的掉电数据,则掉电时间地址为x2000+8*2,上电时间地址为0x2000+8*2+4。
附录一 参数定义表
参数编号 | 参数定义 | 参数取值范围 | 权限 |
01 | 语言 | 0、 1 |
|
02 | 仪表通讯地址 | 0~99 |
|
03 | 仪表通讯速度 | 0~6 |
|
04 | 测量管道口径 | 0~36 |
|
05 | 流量方向择项 | 0、1 |
|
06 | 仪表量程范围 | 00000~99999 |
|
07 | 流量单位 | 0~7 |
|
08 | 测量阻尼时间 | 0~9 |
|
09 | 小信号切除点 | 00.000~199.99 |
|
10 | 允许切除显示 | 0、1 |
|
11 | 流量累积单位 | 0~15 |
|
12 | 反向输出允许 | 0、1 |
|
13 | 电流输出类型 | 0、1 |
|
14 | 电流零点修正 | 0.0000~1.9999 |
|
15 | 电流满度修正 | 0.0000~1.9999 |
|
16 | 脉冲输出方式 | 0、1 |
|
17 | 脉冲单位当量 | 0~15 |
|
18 | 脉冲宽度时间 | 0~9 |
|
19 | 频率输出范围 | 0000~5000 |
|
20 | 上限报警允许 | 0、1 |
|
21 | 上限报警数值 | 000.00~100.00 |
|
22 | 下限报警允许 | 0、1 |
|
23 | 下限报警数值 | 00000~100.00 |
|
24 | 空管报警允许 | 0、1 |
|
25 | 空管报警阈值 | 00000~19999 |
|
26 | 空管量程修正 | 00000~3.9999 |
|
27 | 励磁方式选择 | 0~2 |
|
28 | 流量零点校正 | ±0000~9999 |
|
29 | 传感器系数值 | 0.0000~3.9999 |
|
30 | 仪表计算系数 | 0.0000~3.9999 |
|
31 | 保留 | 保留 |
|
32 | 出厂标定系数 | 0.0000~3.9999 |
|
33 | 尖峰抑制系数 | 0~9 |
|
34 | 尖峰抑制时间 | 0~9 |
|
35 | 尖峰抑制允许 | 0、1 |
|
36 | 传感器常数值 | 00~99 |
|
附录二 仪表通讯速度
编号 | 通讯速度 | 编号 | 通讯速度 | 编号 | 通讯速度 |
0 | 300 | 1 | 600 | 2 | 1200 |
3 | 2400 | 4 | 4800 | 5 | 9600 |
6 | 19200 |
|
|
|
|
附录三 管道口径表(mm)
编号 | 口径值 | 编号 | 口径值 | 编号 | 口径值 |
0 | 3 | 12 | 125 | 24 | 900 |
1 | 6 | 13 | 150 | 25 | 1000 |
2 | 10 | 14 | 200 | 26 | 1200 |
3 | 15 | 15 | 250 | 27 | 1400 |
4 | 20 | 16 | 300 | 28 | 1600 |
5 | 25 | 17 | 350 | 29 | 1800 |
6 | 32 | 18 | 400 | 30 | 2000 |
7 | 40 | 19 | 450 | 31 | 2200 |
8 | 50 | 20 | 500 | 32 | 2400 |
9 | 65 | 21 | 600 | 33 | 2500 |
10 | 80 | 22 | 700 | 34 | 2600 |
11 | 100 | 23 | 800 | 35 | 2800 |
36 | 3000 |
|
|
|
|
附录四 阻尼时间(ms)
编号 | 时间 | 编号 | 时间 | 编号 | 时间 | 编号 | 时间 | 编号 | 时间 |
0 | 1 | 1 | 2 | 2 | 3 | 3 | 4 | 4 | 6 |
5 | 8 | 6 | 10 | 7 | 15 | 8 | 30 | 9 | 50 |
附录五 脉冲单位当量
编号 | 当量值 | 编号 | 当量值 | 编号 | 当量值 | 编号 | 当量值 |
0 | 0.001L | 1 | 0.01L | 2 | 0.1L | 3 | 1L |
4 | 0.001m3 | 5 | 0.01m3 | 6 | 0.1m3 | 7 | 1m3 |
8 | 0.001UKG | 9 | 0.01UKG | 10 | 0.1UKG | 11 | 1UKG |
12 | 0.001USG | 13 | 0.01USG | 14 | 0.1USG | 15 | 1USG |
附录六 脉冲宽度时间(ms)
编号 | 宽度 时间 | 编号 | 宽度 时间 | 编号 | 宽度 时间 | 编号 | 宽度 时间 | 编号 | 宽度 时间 |
0 | 4 | 1 | 8 | 2 | 20 | 3 | 30 | 4 | 40 |
5 | 80 | 6 | 100 | 7 | 150 | 8 | 200 | 9 | 400 |
附录七 尖峰抑制系数(m/s)
编号 | 抑制 系数 | 编号 | 抑制 系数 | 编号 | 抑制 系数 | 编号 | 抑制 系数 | 编号 | 抑制 系数 |
0 | 0.800 | 1 | 0.500 | 2 | 0.300 | 3 | 0.200 | 4 | 0.100 |
5 | 0.080 | 6 | 0.050 | 7 | 0.030 | 8 | 0.020 | 9 | 0.010 |
附录八 尖峰抑制时间(ms)
编号 | 抑制 时间 | 编号 | 抑制 时间 | 编号 | 抑制 时间 | 编号 | 抑制 时间 | 编号 | 抑制 时间 |
0 | 400 | 1 | 500 | 2 | 600 | 3 | 700 | 4 | 800 |
5 | 900 | 6 | 1000 | 7 | 1500 | 8 | 2000 | 9 | 2500 |
这篇关于杭州金田电磁转换器MODBUS通讯协议的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!