电磁流量计网络通讯协议:
通讯协议针对电磁流量计工业应用设计,版本:电磁流量计 V4.2,该版本主要用于实时数据采集、流量测量及流量累计控制。
一、主机系统通讯部件要求
国际标准RS-485通讯接口部件,不小于10 Bytes 的通信缓冲区(FIFO),支持600、1200、2400、4800、9600、14400通讯波特率,支持半双工通讯模式。通讯程序应允许FIFO,从机要求主机FIFO不小于10Bytes。
二、协议结构
电磁流量计 V4.2协议遵从基本开放系统互连(OSI)参考模型,基本开放系统互连参照模型提供通讯系统基本结构和要素,但电磁流量计 V4.2协议使用简化的OSI参照模型,仅采用1、2和7层。
基本开放系统互连参考模型
层号 层名 功能 电磁流量计V4.2
7 应用层 电磁流量计命令
6 表示层
5 会话层
4 传输层
3 网络层
2 链路层 数据链路连接 电磁流量计 Link
1 物理层 设备连接 RS-485
三、电磁流量计V4.2物理结构
电磁流量计的网络通讯接口为半双工方式,标准通讯速率大于250khz,通讯方向转换时间3.5uS。通讯接口电气标准遵从RS232/RS485国际标准。
电磁流量计 V4.2协议可用于星型式网络结构和总线式网络结构。标准通讯连接介质为屏蔽双绞线。
四、电磁流量计V4.2主机信息结构
电磁流量计V4.2协议为主从扫描式通讯协议,每次通讯过程均由主机发起,然后从机进行响应,回传规定的信息,完成一次通讯过程。
主机至从机信息结构
起始码(0x2A) 地址码 功能码 结束码(0x2E)
主机发送至从机的信息由四字节组成,第一字节是起始码(0x2A),第二字节为从机地址,其编码:0---127(最高二进制位另有定义),第三字节为数据分类命令(下表定义),第四字节是结束码(0x2E)。从机通讯缓冲区(FIFO)为一字节,因此,主机发送至从机的四个字节必须留时间间隔。
主机应使用10位串行数据格式,并且不使用奇偶校验。
数据分类命令
命令编码 命令定义 命令编码 命令定义
00 瞬时流量 05 反向总量
01 瞬时流速 06 报警状态
02 流量百分比 07 管道直径
03 流体电阻值
04 正向总量 14 切换到参数设置
数据分类命令指示从机回送的数据类型,数据分类命令编码:0---127,电磁流量计V4.2 仅使用0—7和14号编码,其他编码暂时保留。
五、电磁流量计V4.2从机信息结构
从机接受到主机命令信息后,按命令要求回传测量数据。
从机响应信息数据结构
从机地址 命令 D0 D1 D2 D3 D4 D5 校验和 结束标志
从机响应主机命令,回送10个字节数据,分为命令段、数据段、校验和、结束标志四部分。
1、 命令段
命令段由两字节组成:从机地址和数据分类命令,该段是将主机发来的信息直接返回,用于主机校验从机对主机传送信息中地址和命令响应的正确性。
2、 数据段
由于流量计各测量数据长度、单位、符号等信息各不相同,因此,从机回传的数据段按各命令具体定义。
3、 校验和
校验和 = D0 xor D1 xor D2 xor D3 xor D4 xor D5;
xor --- 逻辑异或。
4、结束标志
结束标志 = 0AAH; (十进制170)
0)流量定义
数据段的D2、D1、D0三个字节组成十位流量计测量数据,每字节表示两位十进制数的压缩BCD码格式。D2、D1、D0需要先规格化为十进制格式,具体算法如下:
D0 = ( D0 >> 4) *10 + (D0 & 0x0F)
D1 = ( D1 >> 4) *10 + (D1 & 0x0F)
D2 = ( D2 >> 4) *10 + (D2 & 0x0F)
流量值 = 10000 * D2 + 100 * D1 + D0;
其中 符号 >> 为C语言中的逻辑右移操作。
D3字节:流量值的指数(10的幂)
幂值 = D3 – 5, 幂值范围: -5 – +5
D4字节:流量单位
D4 0 1 2 3 4 5 6 7
单位 m3/s m3/min m3/h m3/d L/s L/min L/h L/d
D4 8 9 10 11 12 13 14 15
单位 t/s t/min t/h t/d kg/s kg/min kg/h kg/d
D5字节:流体流动方向:
位 B6…….B1 B0
定义 保留 0---正向; 1---反向
1) 流速定义
D2、D1、D0需要先规格化为十进制格式,具体如下:
D0 = ( D0 >> 4) *10 + (D0 & 0x0F)
D1 = ( D1 >> 4) *10 + (D1 & 0x0F)
D2 = ( D2 >> 4) *10 + (D2 & 0x0F)
其中 符号 >> 为C语言中的逻辑右移操作。
流速值 = 10000 * D2 + 100 * D1 + D0;
值范围 = 00.000 ~ 99.999
流速单位:固定为 m/s
D3字节:小信号切除标志;0 --- 允许; 1 --- 禁止。
D4字节:流量值显示精度(保留小数点后位数)(固定值3)
D5字节:流动方向;0 --- 正向、1 --- 反向;
2) 流量百分比定义
D1、D0需要先规格化为十进制格式,具体如下:
D0 = ( D0 >> 4) *10 + (D0 & 0x0F)
D1 = ( D1 >> 4) *10 + (D1 & 0x0F)
其中 符号 >> 为C语言中的逻辑右移操作。
百分比 = 100 * D1 + D0;
值范围 = 000.0 ~ 999.9 %
D2字节:量程比
0 - 1:1
1 - 1:2
2 - 1:4
3 - 1:8
D3字节:上限报警允许
0 - 允许
1 - 禁止
D4字节:下限报警允许
0 - 允许
1 - 禁止
D5字节:流动方向;0 --- 正向、1 --- 反向;
3) 流体电阻
D1、D0需要先规格化为十进制格式,具体如下:
D0 = ( D0 >> 4) *10 + (D0 & 0x0F)
D1 = ( D1 >> 4) *10 + (D1 & 0x0F)
其中 符号 >> 为C语言中的逻辑右移操作。
电阻 = 100 * D1 + D0;
值范围 = 0000 ~ 999.9 K
D2字节:保留
D3字节:保留
D4字节:空管报警允许
0 - 允许
1 - 禁止
D5字节:流动方向;0 --- 正向、1 --- 反向;
4)正向总量定义
D4、D3、D2、D1、D0需要先将压缩BCD码规格化为十进制格式,具体如下:
D4 = ( D4 >> 4) *10 + (D4 & 0x0F)
D3 = ( D3 >> 4) *10 + (D3 & 0x0F)
D2 = ( D2 >> 4) *10 + (D2 & 0x0F)
D1 = ( D1 >> 4) *10 + (D1 & 0x0F)
D0 = ( D0 >> 4) *10 + (D0 & 0x0F)
其中 符号 >> 为C语言中的逻辑右移操作。
总量 = 100000000 * D4 + 1000000 * D3 + 10000 * D2 + 100 * D1 + D0;
D5字节:
D5 0 1 2 3 4 5 6 7
单位 0.001L 0.01L 0.1L 1L 0.001m3 0.01m3 0.1m3 1m3
D5 8 9 10 11 12 13 14 15
单位 0.001kg 0.01kg 0.1kg 1kg 0.001t 0.01t 0.1t 1t
5)反向总量定义
D4、D3、D2、D1、D0需要先将压缩BCD码规格化为十进制格式,具体如下:
D4 = ( D4 >> 4) *10 + (D4 & 0x0F)
D3 = ( D3 >> 4) *10 + (D3 & 0x0F)
D2 = ( D2 >> 4) *10 + (D2 & 0x0F)
D1 = ( D1 >> 4) *10 + (D1 & 0x0F)
D0 = ( D0 >> 4) *10 + (D0 & 0x0F)
其中 符号 >> 为C语言中的逻辑右移操作。
总量 = 100000000 * D4 + 1000000 * D3 + 10000 * D2 + 100 * D1 + D0;
D5字节:
D5 0 1 2 3 4 5 6 7
单位 0.001L 0.01L 0.1L 1L 0.001m3 0.01m3 0.1m3 1m3
D5 8 9 10 11 12 13 14 15
单位 0.001kg 0.01kg 0.1kg 1kg 0.001t 0.01t 0.1t 1t
6) 报警状态定义
D0字节:
位定义:Bx = 0 无警状态;Bx = 1 报警状态;
ALAM位 B0 B1 B2 B3 B4
报警定义 保留 励磁报警 电极报警 空管报警 上限报警
ALAM位 B5 B6 B7 B8 B9
报警定义 下限报警 保留 保留 保留 保留
7)流量计管径定义
D0字节定义管径 (单位mm)
D0数值 代表管径 D0数值 代表管径 D0数值 代表管径
00 3 15 200 30 1400
01 6 16 250 31 1600
02 8 17 300 32 1800
03 10 18 350 33 2000
04 15 19 400 34 2200
05 20 20 450 35 2400
06 25 21 500 36 2600
07 32 22 600 37 2800
08 40 23 700 38 3000
09 50 24 800
10 65 25 900
11 80 26 1000
12 100 27 1100
13 125 28 1200
14 150 29 1300
14)禁止总量累积
从机接到连续6个该命令后,立即进入参数设置状态。
六、 电磁流量计 V4.2通讯过程时序
通讯过程时序指编制通讯软件时应遵从的时间间隔、延时、等待时间等。
1. 主机发送时序
主机发送的两个信息字节间的时间间隔最小为0,最大时间间隔为20毫秒,大于20毫秒,从机认为发送超时。
2. 从机回传时序
从机最小回传响应时间为1毫秒,最大为10毫秒 + 11位传送时间。
从机每个回传字节时间间隔最大为10毫秒 + 11位传送时间。
(11位传送时间根据选用波特率计算出)
3. 从机允许的通讯频度
从机允许的通讯频度为10次/每秒,大于该值,可能影响从机其他功能。
七、 电磁流量计 V4.2通讯波特率
电磁流量计 V4.2支持的通讯波特率为:600、1200、2400、4800、9600、14400。
八、 电磁流量计 V4.2通讯数据块侦错信息
1. 从机地址和数据分类命令回传,主机可用于校对从机是否正确响应;
2. 从机回传字节异或和校验,主机可用于校对是否有数据位错误;
3. 从机回传字节中B7 = 0为数据字节,B7 = 1为命令字节;
4. 从机回传字节中的数据字节值不大于153(十六进制数99);
5. 从机回传字节数长度固定,共十字节长度,主机可做长度检验;
6. 从机回传结束标志,主机可用于长度检验和数据字节定位。