电池供电电磁流量计

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