技术文章您的位置:网站首页 >技术文章>电磁流量计串口通讯协议解读示例
电磁流量计串口通讯协议解读示例
更新时间:2019-07-11   点击次数:1571次

今天以电磁流量计的一种自定义串口协议具体介绍一下串口通讯在电磁流量计上面的应用。

通讯协议针对电磁流量计工业应用设计,版本:MBmagCP V4.2,该版本主要用于实

时数据采集、流量测量及流量累计控制。

一、主机系统通讯部件要求

标准RS-485通讯接口部件,不小于10 Bytes 的通信缓冲区(FIFO),支持600、1200、2400、4800、9600、14400通讯波特率,支持半双工通讯模式。通讯程序应允许FIFO,从机要求主机FIFO不小于10Bytes。 

二、协议结构

MBmagCP V4.2协议遵从基本开放系统互连(OSI)参考模型,基本开放系统互连参照模型提供通讯系统基本结构和要素,但MBmagCP V4.2协议使用简化的OSI参照模型,仅采用1、2和7层。

基本开放系统互连参考模型

层号

层名

功能

MBmagCP V4.2

7

应用层

 

MBmagCP 命令

6

表示层

  

5

会话层

  

4

传输层

  

3

网络层

  

2

链路层

数据链路连接

MBmagCP Link

1

物理层

设备连接

RS-485

三、MBmagCP V4.2物理结构

MBmag 电磁流量计的网络通讯接口为半双工方式,标准通讯速率大于250khz,通讯方向转换时间3.5uS。通讯接口电气标准遵从RS232/RS485标准。

MBmagCP V4.2协议可用于星型式网络结构和总线式网络结构。标准通讯连接介质为屏蔽双绞线。

四、MBmagCP V4.2主机信息结构

     MBmagCP V4.2协议为主从扫描式通讯协议,每次通讯过程均由主机发起,然后从机进行响应,回传规定的信息,完成一次通讯过程。

主机至从机信息结构

起始码(0x2A)

地址码

功能码

结束码(0x2E)

 

主机发送至从机的信息由四字节组成,字节是起始码(0x2A),第二字节为从机地址,其编码:0---127(高二进制位另有定义),第三字节为数据分类命令(下表定义),第四字节是结束码(0x2E)。从机通讯缓冲区(FIFO)为一字节,因此,主机发送至从机的四个字节必须留时间间隔。

主机应使用10位串行数据格式,并且不使用奇偶校验。

 

数据分类命令

命令编码

命令定义

命令编码

命令定义

00

瞬时流量

05

反向总量

01

瞬时流速

06

报警状态

02

流量百分比

07

管道直径

03

流体电阻值

  

04

正向总量

14

切换到参数设置

 

     数据分类命令指示从机回送的数据类型,数据分类命令编码:0---127,MBmagCPV4.2仅使用0—7和14号编码,其他编码暂时保留。

 

五、     MBmagCP V4.2从机信息结构

从机接受到主机命令信息后,按命令要求回传测量数据。

从机响应信息数据结构

从机地址

命令

D0

D1

D2

D3

D4

D5

校验和

结束标志

 

从机响应主机命令,回送10个字节数据,分为命令段、数据段、校验和、结束标志四部分。

1、  命令段

命令段由两字节组成:从机地址和数据分类命令,该段是将主机发来的信息直接返回,用于主机校验从机对主机传送信息中地址和命令响应的正确性。

2、  数据段

由于流量计各测量数据长度、单位、符号等信息各不相同,因此,从机回传的数据段按各命令具体定义。

3、  校验和

校验和 = D0 xorD1 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 KW

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个该命令后,立即进入参数设置状态。

六、     MBmagCP V4.2通讯过程时序

通讯过程时序指编制通讯软件时应遵从的时间间隔、延时、等待时间等。

1.  主机发送时序

主机发送的两个信息字节间的时间间隔小为0,大时间间隔为20毫秒,大于20毫秒,从机认为发送超时。

2.  从机回传时序

从机小回传响应时间为1毫秒,大为10毫秒 + 11位传送时间。

从机每个回传字节时间间隔大为10毫秒 + 11位传送时间。

(11位传送时间根据选用波特率计算出)

3.  从机允许的通讯频度

从机允许的通讯频度为10次/每秒,大于该值,可能影响从机其他功能。

七、     MBmagCP V4.2通讯波特率

MBmagCP V4.2支持的通讯波特率为:600、1200、2400、4800、9600、14400。

 

八、  MBmagCP V4.2通讯数据块侦错信息

1.从机地址和数据分类命令回传,主机可用于校对从机是否正确响应;

2.从机回传字节异或和校验,主机可用于校对是否有数据位错误;

3.从机回传字节中B7 = 0为数据字节,B7 = 1为命令字节;

4.从机回传字节中的数据字节值不大于153(十六进制数99);

5.从机回传字节数长度固定,共十字节长度,主机可做长度检验;

6.从机回传结束标志,主机可用于长度检验和数据字节定位。

 

网站首页 关于我们 新闻中心 产品中心 联系我们
备案号:   GoogleSitemap   技术支持:化工仪器网 管理登陆
© 2019 金湖辛德瑞自动化设备有限公司(www.xdrautomation.com) 版权所有 总访问量:202555
本公司是专业仪器仪表,自动化设备,通讯产品,电子产品生产厂家,欢迎来电咨询