电池供电电磁流量计
MODBUS通讯协议
(版本号:W803C-M V1.1)
2015年07月07日
目录
电池供电电磁流量计........................................................................................................ 1
一、 主机系统通讯部件要求..................................................................................... 3
二、 协议结构.......................................................................................................... 3
三、 电池供电803C物理结构.................................................................................... 3
四、 Modbus协议RTU消息帧定义.............................................................................. 3
五、 Modbus协议命令编码定义................................................................................. 4
六、 电磁流量计变量寄存器地址定义....................................................................... 5
七、 参数寄存器地址................................................................................................ 6
八、 月总量数值寄存器地址..................................................................................... 7
九、 时总量数值寄存器地址..................................................................................... 8
附录1:针对PLC的寄存器使用说明........................................................................ 10
本通讯协议针对(电池供电803C)电磁流量计工业应用设计,版本: W803C-M V1.0,该版本主要用于实时数据采集、流量测量、流量累计控制及部分参数的修改。
一、主机系统通讯部件要求
国际标准RS-485通讯接口部件或国际标准RS-232通讯接口部件,不小于8 Bytes 的通信缓冲区(FIFO),仅支持9600通讯波特率,支持半双工通讯模式。通讯程序应允许FIFO,从机要求主机FIFO不小于8Bytes。
二、协议结构
W803C-M V1.0协议遵从基本开放系统互连(OSI)参考模型,基本开放系统互连参照模型提供通讯系统基本结构和要素,但W803C-M V1.0协议使用简化的OSI参照模型,仅采用1、2和7层。
基本开放系统互连参考模型
层号 | 层名 | 功能 | W803-M V1.1 |
7 | 应用层 | W803C-M V1.0 命令 | |
6 | 表示层 | ||
5 | 会话层 | ||
4 | 传输层 | ||
3 | 网络层 | ||
2 | 链路层 | 数据链路连接 | W803C-M V1.0 CP Link |
1 | 物理层 | 设备连接 | RS-485、RS-232 |
表1
三、电池供电803C物理结构
电池供电803C电磁流量计的RS-485通讯接口在物理结构上采用电气隔离方式,隔离电压1500伏。通讯数据传输接口为半双工方式,标准通讯速率大于250khz,通讯方向转换时间3.5uS。通讯接口电气标准遵从RS-485国际标准。
803C可用于星型式网络结构和总线式网络结构。标准通讯连接介质为屏蔽双绞线。
四、Modbus协议RTU消息帧定义
数据通讯由主机发起,主机首先发送RTU消息帧,消息帧发送至少要以3.5个字符时间的停顿间隔开始(如下图的T1-T2-T3-T4所示)。传输的个字节是设备地址。可以使用的传输字符是十六进制的0...9,A...F。所有的从设备不断侦测网络总线,包括停顿间隔时间内。当个地址字节接收到,每个设备都进行解码以判断是否发往自己的。在一个传输字符之后,一个至少3.5个字符时间的停顿标定了消息的结束。一个新的消息可在此停顿后开始。
整个消息帧必须作为一连续的流转输。如果在帧完成之前有超过1.5个字符时间的停顿时间,接收设备将刷新不完整的消息并假定下一字节是一个新消息的地址域。同样地,如果一个新消息在小于3.5个字符时间内接着前个消息开始,接收的设备将认为它是前一消息的延续。这将导致一个错误,因为在的CRC域的值不可能是正确的。
主机消息帧定义如下所示:
起始位 | 设备地址 | 功能代码 | 寄存器地址 | 寄存器长度 | CRC校验 | 结束符 |
T1-T2-T3-T4 | 8Bit | 8Bit | 16Bit | 16Bit | 16Bit | T1-T2-T3-T4 |
表2主机 RTU消息帧
从机消息帧定义如下所示:
起始位 | 设备地址 | 功能代码 | 数据 | CRC校验 | 结束符 |
T1-T2-T3-T4 | 8Bit | 8Bit | n个8Bit | 16Bit | T1-T2-T3-T4 |
表3从机RTU消息帧
五、Modbus协议命令编码定义
W803C-M V1.0协议遵从Modbus协议,但W803C-M V1.0协议使用简化的Modbus协议,仅采用03、04和06功能码。
功能码 | 名称 | 作用 |
01 | 读取线圈状态 | 保留 |
02 | 读取输入状态 | 保留 |
03 | 读取保持寄存器 | 读803C参数 |
04 | 读取输入寄存器 | 读803C变量 |
05 | 强置单线圈 | 保留 |
06 | 预置单寄存器 | 写803C参数 |
07 | 读取异常状态 | 保留 |
08 | 回送诊断校验 | 保留 |
09 | 编程(只用于484) | 保留 |
10 | 控询(只用于484) | 保留 |
11 | 读取事件计数 | 保留 |
12 | 读取通信事件记录 | 保留 |
13 | 编程(184/384 484 584) | 保留 |
14 | 探询(184/384 484 584) | 保留 |
15 | 强置多线圈 | 保留 |
16 | 预置多寄存器 | 保留 |
17 | 从机标识 | 保留 |
18 | (884和MICRO 84) | 保留 |
19 | 重置通信链路 | 保留 |
20 | 读取通用参数(584L) | 保留 |
21 | 写入通用参数(584L) | 保留 |
22~64 | 保留作扩展功能备用 | 保留 |
65~72 | 保留以备用户功能所用 | 保留 |
73~119 | 非法功能 | 保留 |
120~127 | 保留 | 保留 |
128~255 | 保留 | 保留 |
表4
六、电磁流量计变量寄存器地址定义
通讯时可使用03或04号命令读取流量计变量数据,如流量,流速等。具体寄存器地址如下。
(针对PLC组态软件的专用寄存器)
PLC Addresses(Base 1) | Protocol Addresses (Base 0) | 数据格式 | 寄存器定义 |
0x1011(4113) | 0x1010(4112) | Float Inverse | 瞬时流量浮点表示 |
0x1013(4115) | 0x1012(4114) | Float Inverse | 瞬时流速浮点表示 |
0x1015(4117) | 0x1014(4116) | Float Inverse | 流量百分比浮点表示 |
0x1017(4119) | 0x1016(4118) | Float Inverse | 流体电导比浮点表示 |
0x1019(4121) | 0x1018(4120) | Long Inverse | 正向累积数值整数部分 |
0x101B(4123) | 0x101A(4122) | Float Inverse | 正向累积数值小数部分 |
0x101D(4125) | 0x101C(4124) | Long Inverse | 反向累积数值整数部分 |
0x101F(4127) | 0x101E(4126) | Float Inverse | 反向累积数值小数部分 |
0x1021(4129) | 0x1020(4128) | Unsigned | 瞬时流量单位 |
0x1022(4130) | 0x1021(4129) | Unsigned | 累积总量单位 |
0x1023(4131) | 0x1022(4130) | Unsigned | 保留 |
0x1024(4132) | 0x1023(4131) | Unsigned | 保留 |
0x1025(4133) | 0x1024(4132) | Unsigned | 空管报警 |
0x1026(4134) | 0x1025(4133) | Unsigned | 系统报警 |
0x1027(4135) | 0x1026(4134) | Unsigned | 小信号报警 |
0x1028(4136) | 0x1027(4135) | Unsigned | 电池报警 |
0x1029(4137) | 0x1028(4136) | Unsigned | 压力报警 |
0x102A(4138) | 0x1029(4137) | Unsigned | 电池电量 |
0x102B(4139) | 0x102A(4138) | Float Inverse | 压力 |
0x102D(4141) | 0x102C(4140) | Unsigned | 压力单位 |
表5
部分数据解析:
流量单位:
0------------------------“L/s”
1------------------------“L/m”
2------------------------“L/h”
3------------------------“M3/s”
4------------------------“M3/m”
5------------------------“M3/h”
6------------------------“UKG/s”
7------------------------“UKG/m”
8------------------------“UKG/h”
9------------------------“USG/s”
10-----------------------“USG/m”
11-----------------------“USG/h”
总量单位:
0------------------------“L”
1------------------------“M3”
2------------------------“UKG”
3------------------------“USG”
压力单位:
0------------------------“KPa”
1------------------------“MPa”
报警:
0------------------------“不报警”
1------------------------“报警”
七、参数寄存器地址
使用03号命令读取参数。
参数代码 | 参数名称 | 参数代码 | 参数名称 |
0 | 语言 | 36 | 流量修正值7 |
1 | 仪表通讯地址 | 37 | 流量修正点8 |
2 | 通讯时间间隔 | 38 | 流量修正值8 |
3 | 测量管道口径 | 39 | 流量修正点9 |
4 | 流量计算单位 | 40 | 压力零点修正 |
5 | 流量量程设置 | 41 | 压力满度修正 |
6 | 流量方向择项 | 42 | 压力计算单位 |
7 | 流量零点修正 | 43 | 压力增益设置 |
8 | 小信号切除点 | 44 | 保留 |
9 | 测量阻尼时间 | 45 | 测量间隔时间 |
10 | 流量积算单位 | 46 | 流量频测阈值 |
11 | 反向流量测量 | 47 | 出厂标定系数 |
12 | 保留 | 48 | 出厂修正系数 |
13 | 输出脉冲单位 | 49 | 仪表休眠密码 |
14 | 输出脉冲当量 | 50 | 保留 |
15 | 保留 | 51 | 保留 |
16 | 空管报警阈值 | 52 | 仪表出厂编码 |
17 | 空管零点修正 | 53 | 保留 |
18 | 空管满度修正 | 54 | 压力测量允许 |
19 | 传感器系数值 | 55 | 脉冲输出允许 |
20 | 励磁方式选择 | 56 | 保留 |
21 | 传感器编码值 | 57 | 保留 |
22 | 流量修正允许 | 58 | 保留 |
23 | 流量修正点1 | 59 | 保留 |
24 | 流量修正值1 | 60 | 保留 |
25 | 流量修正点2 | 61 | 保留 |
26 | 流量修正值2 | 62 | 保留 |
27 | 流量修正点3 | 63 | 保留 |
28 | 流量修正值3 | 64 | 保留 |
29 | 流量修正点4 | 65 | 年时间设置 |
30 | 流量修正值4 | 66 | 月时间设置 |
31 | 流量修正点5 | 67 | 日时间设置 |
32 | 流量修正值5 | 68 | 时时间设置 |
33 | 流量修正点6 | 69 | 分时间设置 |
34 | 流量修正值6 | 70 | 秒时间设置 |
35 | 流量修正点7 |
表6
八、月总量数值寄存器地址
电池供电803C流量计共存储32条月总量数据。通讯时可使用03或04号命令读取。具体寄存器地址如下。
序号 | 地址 | 序号 | 地址 |
第01条月总量 | 0x0800-0x0805 | 第17条月总量 | 0x0860-0x0865 |
第02条月总量 | 0x0806-0x080B | 第18条月总量 | 0x0866-0x086B |
第03条月总量 | 0x080C-0x0811 | 第19条月总量 | 0x086C-0x0871 |
第04条月总量 | 0x0812-0x0817 | 第20条月总量 | 0x0872-0x0877 |
第05条月总量 | 0x0818-0x081D | 第21条月总量 | 0x0878-0x087D |
第06条月总量 | 0x081E-0x0823 | 第22条月总量 | 0x087E-0x0883 |
第07条月总量 | 0x0824-0x0829 | 第23条月总量 | 0x0884-0x0889 |
第08条月总量 | 0x082A-0x082F | 第24条月总量 | 0x088A-0x088F |
第09条月总量 | 0x0830-0x0835 | 第25条月总量 | 0x0890-0x0895 |
第10条月总量 | 0x0836-0x083B | 第26条月总量 | 0x0896-0x089B |
第11条月总量 | 0x083C-0x0841 | 第27条月总量 | 0x089C-0x08A1 |
第12条月总量 | 0x0842-0x0847 | 第28条月总量 | 0x08A2-0x08A7 |
第13条月总量 | 0x0848-0x084D | 第29条月总量 | 0x08A8-0x08AD |
第14条月总量 | 0x084E-0x0853 | 第30条月总量 | 0x08AE-0x08B3 |
第15条月总量 | 0x0854-0x0859 | 第31条月总量 | 0x08B4-0x08B9 |
第16条月总量 | 0x085A-0x085F | 第32条月总量 | 0x08BA-0x08BF |
表7
具体每条月总量数据内容定义如下:
字节1 | 字节2 | 字节3 | 字节4 | 字节5 | 字节6 | 字节7 | 字节8 |
时间(年) | 时间(月) | 保留 | 保留 | 正向累积(HH) | 正向累积(HL) | 正向累积(LH) | 正向累积(LL) |
字节9 | 字节10 | 字节11 | 字节12 | ||||
反向累积(HH) | 反向累积(HL) | 反向累积(LH) | 反向累积(LL) |
表8
九、时总量数值寄存器地址
电池供电803C流量计共存储32条时总量数据。通讯时可使用03或04号命令读取。具体寄存器地址如下。
序号 | 地址 | 序号 | 地址 |
第01条时总量 | 0x0600-0x0605 | 第17条时总量 | 0x0660-0x0665 |
第02条时总量 | 0x0606-0x060B | 第18条时总量 | 0x0666-0x066B |
第03条时总量 | 0x060C-0x0611 | 第19条时总量 | 0x066C-0x0671 |
第04条时总量 | 0x0612-0x0617 | 第20条时总量 | 0x0672-0x0677 |
第05条时总量 | 0x0618-0x061D | 第21条时总量 | 0x0678-0x067D |
第06条时总量 | 0x061E-0x0623 | 第22条时总量 | 0x067E-0x0683 |
第07条时总量 | 0x0624-0x0629 | 第23条时总量 | 0x0684-0x0689 |
第08条时总量 | 0x062A-0x062F | 第24条时总量 | 0x068A-0x068F |
第09条时总量 | 0x0630-0x0635 | 第25条时总量 | 0x0690-0x0695 |
第10条时总量 | 0x0636-0x063B | 第26条时总量 | 0x0696-0x069B |
第11条时总量 | 0x063C-0x0641 | 第27条时总量 | 0x069C-0x06A1 |
第12条时总量 | 0x0642-0x0647 | 第28条时总量 | 0x06A2-0x06A7 |
第13条时总量 | 0x0648-0x064D | 第29条时总量 | 0x06A8-0x06AD |
第14条时总量 | 0x064E-0x0653 | 第30条时总量 | 0x06AE-0x06B3 |
第15条时总量 | 0x0654-0x0659 | 第31条时总量 | 0x06B4-0x06B9 |
第16条时总量 | 0x065A-0x065F | 第32条时总量 | 0x06BA-0x06BF |
表9
具体每条时总量数据内容定义如下:
字节1 | 字节2 | 字节3 | 字节4 | 字节5 | 字节6 | 字节7 | 字节8 |
时间(年) | 时间(月) | 时间(日) | 时间(时) | 正向累积(HH) | 正向累积(HL) | 正向累积(LH) | 正向累积(LL) |
字节9 | 字节10 | 字节11 | 字节12 | ||||
反向累积(HH) | 反向累积(HL) | 反向累积(LH) | 反向累积(LL) |
表10
附录1:针对PLC的寄存器使用说明
使用PLC地址采集数据。假设从机地址为1,波特率9600,想要采集瞬时流量。以modbus调试软件 modbus poll 为例:
图1.1设置数据显示格式
图1.2设置采集命令
图1.3设置串口数据
以modbus调试软件modscan32为例,使用protocol为例采集数据:
图1.4:串口参数设置
图1.5:设置采集命令
图1.6:设置数据显示方式
以组态王6.53为例说明使用方法:
步:创建组态王工程。
图1.7
第二步:添加标准modbus设备,组态王设备列表里的-PLC-莫迪康-modbus(RTU)。
图1.8
第三步:设置设备地址,举例为1。
图1.9
第四步:设置串口参数,举例为“9600,n,8,1”。
图1.10
第五步:添加变量举例瞬时流量寄存器为84113格式为浮点数(float),同时添加流速,百分比,空管比,正反向累积值。
变量名 | 寄存器值 | 数据格式 |
瞬时流量 | 84113 | Float |
瞬时流速 | 84115 | Float |
流量百分比 | 84117 | Float |
流体电导比 | 84119 | Float |
正向累积值整数部分 | 84121 | Long |
正向累积值小数部分 | 84123 | Float |
反向累积值整数部分 | 84125 | Long |
反向累积值小数部分 | 84127 | Float |
图1.11
寄存器值为8XXXX而不是3XXXX,原因详见组态王驱动说明。
图1.12
图1.13
第六步:创建窗口界面并连接变量。
图1.14
第七步:保存更改并运行工程。
图1.15
以力控6.1为例,说明使用方法:
步:创建一个工程。
图1.16
第二步:IO口设备组态选择IO设备-modbus-标准modbus-modbus(RTU串口)。
图1.17
图1.18:选择串口
图1.19:设置显示数据格式
第三步:数据库组态。
图1.20
图1.21:设置数据格式及地址偏移
图1.22:数据举例
第四步:创建窗口并连接变量。
图1.23
第五步:运行工程。
图:1.24