
-
新乡市天科测控仪表有限公司
全国统一服务热线:18637357823
电 话:0373-2695792
0373-2695798
0373-2695799
传 真:0373-2695791
邮 箱:xxtkyb@126.com
地 址:河南省新乡牧野区北环路西段小里工业区
气体涡轮LWQ-D2头 MODBUS-RTU协议
MODBUS-RTU协议
1.数据格式说明
1、1通讯模式
本仪表采用MODBUSRTU格式。
协议用于主从查询模式,进行数据通讯。通讯流程如下图。
在RTU模式下,数据格式说明如下。
数据格式为n,8,1(1个起始位、8个数据位、无校验、1个停止位)
波特率可选五种,1200、2400、4800、9600、19200
1、3地址
协议中规定仪表的地址为“01-99”,“0”地址用于广播,本协议不支持广播,其余地址保留。
2.命令说明
2.1本仪表使用了MODBUS协议中3条指令:
命令03(HEX) | 读单个或多个寄存器 |
|
命令06(HEX) | 写单个寄存器 | 此命令包含在“命令10”中 |
命令10(HEX) | 写多个寄存器 | 此命令包含“命令6” |
2.2数据格式
协议中的数据包括:16进制数、整数、BCD码、浮点数
寄存器地址下列表中的属性指数据的读写属性,R-只读;W-写;R/W-既可读,也可写入。
单精度浮点数SINGLE格式为IEEE754,数据由低到高。
32位浮点数共计32位,折合4字节。
由高到低位分别是第31、30、29、……、0位。
31 | 30-23 | 22-0 |
S | 阶码 | 尾数 |
31位是符号位(S),1表示该数为负,0反之;
30-23位,一共8位是阶码;
22-0位,一共23位是尾数。
BCD码格式有两种:
格式1:4字节BCD编码,数据低→高,如数据20100617,表示为4字节
2 | 0 | 1 | 0 | 0 | 6 | 1 | 7 |
地址低 |
| 地址高 |
格式2:(内部应用)6字节BCD编码,表示固定小数点的数据,数据低→高,如12345.678表示为6字节
0 | 0 | 0 | 0 | 1 | 2 | 3 | 4 | 5· | 6 | 7 | 8 |
地址低 |
| 地址高 |
小数点默认为第9位数的后面。
无符号整数Uint为0-65536。
各指令的格式及示例见下面的说明。
命令3格式如下(读寄存器命令):
MODBUS请求
仪表地址 | 1 BYTE | 01-99 |
功能码 | 1 BYTE | 03 |
起始地址 | 2 BYTE | 0-FFFF |
读取数量 | 2 BYTE | 1-7D |
CRC低位 | 1 BYTE |
|
CRC高位 | 1 BYTE |
|
MODBUS 响应
仪表地址 | 1 BYTE | 01-99 |
功能码 | 1 BYTE | 03(06、10) |
字节计数 | 1 BYTE | N |
输入状态 | N*2 BYTE |
|
CRC低位 | 1 BYTE |
|
CRC高位 | 1 BYTE |
|
错误 响应
仪表地址 | 1 BYTE | 01-99 |
功能码 | 1 BYTE | 03(06、10)+ 80 |
错误代码 | 1 BYTE | 01、02、03 |
CRC低位 | 1 BYTE |
|
CRC高位 | 1 BYTE |
|
举例
请求 | 响应 | ||
域名称 | 数据(hex) | 域名称 | 数据(hex) |
仪表地址码 | 01 | 仪表地址码 | 01 |
功能码 | 03 | 功能码 | 03 |
起始地址高(字节) | 00 | 字节计数 | 06 |
起始地址低(字节) | 6B | 寄存器高(108) | 02 |
读取数量高(字节) | 00 | 寄存器低(108) | 2B |
读取数量低(字节) | 03 | 寄存器高(109) | 00 |
| 寄存器低(109) | 00 | |
寄存器高(110) | 00 | ||
寄存器低(110) | 64 | ||
CRC校验 | 校验码 | CRC校验 | 校验码 |
命令6格式如下(写单个字节):
MODBUS 请求
仪表地址 | 1 BYTE | 01-99 |
功能码 | 1 BYTE | 10 |
寄存器地址 | 2 BYTE | 0-XFFFF |
寄存器内容 | 2 BYTE |
|
CRC低位 | 1 BYTE |
|
CRC高位 | 1 BYTE |
|
MODBUS 响应
仪表地址 | 1 BYTE | 01-99 |
功能码 | 1 BYTE | 03(06、10) |
寄存器地址 | 2 BYTE | 0-FFFF |
寄存器内容 | 2 BYTE |
|
CRC低位 | 1 BYTE |
|
CRC高位 | 1 BYTE |
|
错误 响应
仪表地址 | 1 BYTE | 01-99 |
功能码 | 1 BYTE | 03(06、10)+ 80 |
错误代码 | 1 BYTE | 01、02、03 |
CRC低位 | 1 BYTE |
|
CRC高位 | 1 BYTE |
|
举例
请求 | 响应 | ||
域名称 | 数据(hex) | 域名称 | 数据(hex) |
仪表地址码 | 01 | 仪表地址码 | 01 |
功能码 | 06 | 功能码 | 06 |
寄存器地址高 | 00 | 起始地址高(字节) | 00 |
寄存器地址低 | 6B | 起始地址低(字节) | 6B |
高位寄存器值 | 00 | 高位寄存器值 | 00 |
低位寄存器值 | 低位寄存器值 | ||
CRC校验 | 校验码 | CRC校验 | 校验码 |
命令10格式如下(写多个字节):
MODBUS 请求
仪表地址 | 1 BYTE | 01-99 |
功能码 | 1 BYTE | 10 |
寄存器起始地址 | 2 BYTE | 0-FFFF |
寄存器数量 | 2 BYTE | 1-7D |
字节计数 | 1 BYTE | N |
设置内容 | N*2 BYTE |
|
CRC低位 | 1 BYTE |
|
CRC高位 | 1 BYTE |
|
MODBUS 响应
仪表地址 | 1 BYTE | 01-99 |
功能码 | 1 BYTE | 03(06、10) |
寄存器起始地址 | 1 BYTE | 0-FFFF |
寄存器数量 | 2 BYTE |
|
CRC低位 | 1 BYTE |
|
CRC高位 | 1 BYTE |
|
错误 响应
仪表地址 | 1 BYTE | 01-99 |
功能码 | 1 BYTE | 03(06、10)+ 80 |
错误代码 | 1 BYTE | 01、02、03 |
CRC低位 | 1 BYTE |
|
CRC高位 | 1 BYTE |
|
举例
请求 | 响应 | ||
域名称 | 数据(hex) | 域名称 | 数据(hex) |
仪表地址码 | 01 | 仪表地址码 | 01 |
功能码 | 10 | 功能码 | 10 |
起始地址高 | 00 | 起始地址高(字节) | 00 |
起始地址低 | 6B | 起始地址低(字节) | 6B |
设置数量高 | 00 | 设置数量高(字节) | 00 |
设置数量低 | 02 | 设置数量低(字节) | 02 |
字节数 | 4 |
|
|
设置寄存器高 | 00 |
|
|
设置寄存器低 |
|
| |
设置寄存器高 | 06 |
|
|
设置寄存器低 | 08 |
|
|
CRC校验 | 校验码 | CRC校验 | 校验码 |
3.数据项定义
记录信息表
属性 | 地址 (hex/word) | 寄存器长度(word) | 数据类型 | 描述 | 说明 | 备注 (举例) |
采集数据信息 | ||||||
R | 0001 | 2 | SINGLE | M3/h | 瞬时流量 |
|
R | 0003 | 2 | SINGLE | M3/h | 累积流量 |
|
R | 0005 | 2 | SINGLE | V | CPU电压 |
|
流量信息 | ||||||
R/W | 0007 | 2 | SINGLE | M3/h | 满量程 | 备用 |
R/W | 0009 | 2 | SINGLE | M3/h | 小流量切除 | 备用 |
修正信息 | ||||||
R/W | 0010 | 2 | SINGLE | K | 仪表平均系数 | 备用 |
R/W | 0012 | 2 | SINGLE | F1 | 频率1点 | 备用 |
R/W | 0014 | 2 | SINGLE | K1 | 系数补偿1点 | 备用 |
R/W | 0016 | 2 | SINGLE | F2 | 频率2点 | 备用 |
R/W | 0018 | 2 | SINGLE | 系数补偿2点 | 备用 | |
R/W | 2 | SINGLE | F3 | 频率3点 | 备用 | |
R/W | 2 | SINGLE | K3 | 系数补偿3点 | 备用 | |
R/W | 001E | 2 | SINGLE | F4 | 频率4点 | 备用 |
R/W | 0020 | 2 | SINGLE | K4 | 系数补偿4点 | 备用 |
R/W | 0022 | 2 | SINGLE | F5 | 频率5点 | 备用 |
R/W | 0024 | 2 | SINGLE | K5 | 系数补偿5点 | 备用 |
R/W | 0026 | 1 | UINT | T | 阻尼时间 | 备用 |
R/W | 0027 | 1 | UINT | FH | 频率上限 | 备用 |
| ||||||
输出信息(备用) | ||||||
R/W | 0030 | 1 | Uint | POUT | 脉冲输出选择 | 1:L/PULSE 2: 3: |
R/W | 0031 | 2 | SINGLE | ZERO | 4mA电流调整 | 零点流量M3/h |
R/W | 0033 | 2 | SINGLE | FULL | 20mA电流调整 | 满度流量M3/h |
通讯信息(备用) | ||||||
R/W | 0040 | 1 | Uint | BAUD | 波特率 | 1:1200 2:2400 3:4800 4:9600 5:19200 |
R/W | 0041 | 1 | Uint | ADR | 通信地址 | 01-99 |
辅助信息(备用) | ||||||
R/W | 0050 | 1 | BCD-1 | SERNO | 仪表序列号 | 20100617 |
R/W | 0052 | 1 | BCD-1 | TIME | 仪表出厂日期 | 20100617 |
R/W | 0054 | 1 | BCD-1 | VER | 版本号 | 10 |
4. 版本
版本号 | 日期 | 描述 | 作者 |
V1.0 | 创建 |
|
5.参考
Modicon-ModbusProtocolReferenceGuide(PI-MBUS-300);REVJ;June,1996
6.自定义RS485通讯协议
通讯线路:采用RS485数据通讯线路,半双工通讯
通讯协议:(120024004800960019200),NONE/0DD/EVEN,8位数据,1停止位
读瞬时流量、累积流量
1.主机命令格式
0 | 1 | 2 |
指令包包头 | 设备地址高位(ASCII) | 设备地址低位(ASCII) |
5a | 30~39 | 30~39 |
2.设备回应格式
0 | 1 | 2 | 3~9 | 10~20 | 21 | 22 | 23 |
返回包包头 | 设备地址高位(ASCII) | 设备地址低位(ASCII) | 瞬时流量(ASCII) | 累积流量(ASCII) | 累加和高位 | 累加和低位 | 结束符 |
3d | 30~39 | 30~39 | xxxxxxx | xxxxxxxxxxx | xx | xx | ff |
注:流量计返回数据格式定义:
瞬时流量: xxxxxxx 7字节
累积流量: xxxxxxxxxxx 11字节
读流量数据举例(以下数据均为十六进制):
指令包: 5a 包头
32 34 流量计485地址
返回包: 3d 包头
32 34 流量计485地址
31 32 33 2e 34 35 36 瞬时流量=123.456 m3/h
20 20 20 20 20 31 32 33 34 2e 35 累积流量=1234.5 m3
03 d3 累加和高位、累加和低位
ff 结束符