电磁流量计标准通讯协议模板.docx

上传人:b****7 文档编号:8701216 上传时间:2023-02-01 格式:DOCX 页数:31 大小:778.04KB
下载 相关 举报
电磁流量计标准通讯协议模板.docx_第1页
第1页 / 共31页
电磁流量计标准通讯协议模板.docx_第2页
第2页 / 共31页
电磁流量计标准通讯协议模板.docx_第3页
第3页 / 共31页
电磁流量计标准通讯协议模板.docx_第4页
第4页 / 共31页
电磁流量计标准通讯协议模板.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

电磁流量计标准通讯协议模板.docx

《电磁流量计标准通讯协议模板.docx》由会员分享,可在线阅读,更多相关《电磁流量计标准通讯协议模板.docx(31页珍藏版)》请在冰豆网上搜索。

电磁流量计标准通讯协议模板.docx

电磁流量计标准通讯协议模板

 

电磁流量计转换器

通讯协议

 

-10-12

 

注:

本协议应用举例中例程只提供参考,例程中部分参数与MODBUS寄存器地址定义不符,请以MODBUS寄存器地址定义为准。

一、概述

电磁流量计含有标准MODBUS通讯接口,支持波特率1200,2400,4800,9600,19200。

经过MODBUS通讯网络,主站能够采集瞬时流量,瞬时流速,累积流量等参数。

电磁流量计采取串口参数:

1位起始位8位数据位1位停止位,无校验。

电磁流量计MODBUS通讯接口在物理结构上采取电气隔离方法,隔离电压1500伏,并含有ESD保护,能够克服工业现场多种干扰,确保通讯网络可靠运行。

二、网络结构及接线

电磁流量计标准MODBUS通讯网络是总线型网络结构,支持1到99个电磁流量计组网,在网络最远电磁流量计通常要在通讯线两端并联一个120欧姆终端匹配电阻,标准通讯连接介质为屏蔽双绞线。

图-1电磁流量计网络结构

电磁流量计通讯接线详见电磁流量计使用说明书。

三、Modbus协议RTU帧格式

MODBUS协议是主从通讯方法,每次通讯由主站提议,从站响应主站命令回传数据。

电磁流量计采取MODBUSRTU格式(十六进制格式),其帧结构如图-2所表示。

1.主站命令帧结构

帧起始

设备地址

功效代码

寄存器地址

寄存器长度

CRC校验

帧结束

T1-T2-T3-T4

8Bit

8Bit

16Bit

16Bit

16Bit

T1-T2-T3-T4

图-2主站RTU消息帧

2.从站响应帧结构

帧起始

设备地址

功效代码

数据

CRC校验

帧结束

T1-T2-T3-T4

8Bit

8Bit

n个8Bit

16Bit

T1-T2-T3-T4

图3从站RTU消息帧

说明:

(1)T1-T2-T3-T4为帧起始或帧结束,MODBUS协议要求帧起始或帧结束是在帧与帧间延时3.5char字符时间实现,如图-4所表示。

图-4MODBUS帧间隔

(2)设备地址:

电磁流量计通讯地址,在一个网络中不能有两个相同地址。

(3)功效码:

MODBUS协议要求功效码,电磁流量计采取功效码4读输入寄存器来实现采集数据。

(4)寄存器地址和寄存器数

主站命令中参数是从寄存器地址开始寄存,读寄存器长度N个寄存器。

(5)从站响应数据

从站响应数据是:

字节数和N个数字节数据。

详见MODBUS协议。

 

四、Modbus协议命令编码定义

MODBUS功效码定义如表-1所表示,电磁流量计仅采取04功效码。

表-1

功效码

名称

作用

01

读取线圈状态

保留

02

读取输入状态

保留

03

读取保持寄存器

保留

04

读取输入寄存器

读电磁流量计实时信息

05

强置单线圈

保留

06

预置单寄存器

保留

07

读取异常状态

保留

08

回送诊疗校验

保留

09

编程(只用于484)

保留

10

控询(只用于484)

保留

11

读取事件计数

保留

12

读取通信事件统计

保留

13

编程(184/384484584)

保留

14

探询(184/384484584)

保留

15

强置多线圈

保留

五、电磁流量计MODBUS寄存器定义

1.电磁流量计MODBUS寄存器地址定义表-2

ProtocolAddresses

(Decimal)

ProtocolAddresses

(HEX)

数据格式

寄存器定义

4112

0x1010

FloatInverse

瞬时流量浮点表示

4114

0x1012

FloatInverse

瞬时流速浮点表示

4116

0x1014

FloatInverse

流量百分比浮点表示(电池供电表保留)

4118

0x1016

FloatInverse

流体电导比浮点表示

4120

0x1018

LongInverse

正向累积数值整数部分

4122

0x101A

FloatInverse

正向累积数值小数部分

4124

0x101C

LongInverse

反向累积数值整数部分

4126

0x101E

FloatInverse

反向累积数值小数部分

4128

0x1020

Unsignedshort

瞬时流量单位(表3)

4129

0x1021

Unsignedshort

累积总量单位(表4/表5)

4130

0x1022

Unsignedshort

上限报警

4131

0x1023

Unsignedshort

下限报警

4132

0x1024

Unsignedshort

空管报警

4133

0x1025

Unsignedshort

系统报警

2.PLC地址设置说明

PLC设置时假如没有功效码设置项时,使用功效04应在寄存器地址前面加3。

另PLC寄存器地址基址是从1开始,所以PLC设置寄存器地址时应在原地址上加1.

例:

电磁流量计MODBUS寄存器地址为4112(0x1010),MODBUS功效码为4时,PLC寄存器地址为34113。

具体设置见应用举例章节2.

3.组态王地址设置说明

组态王设置时没有功效码设置项,不一样驱动设置方法不一样。

以PLC-莫迪康-modbus(RTU)驱动为例,使用功效04应在寄存器地址前面加8。

另组态王寄存器地址基址是从1开始,所以组态王设置寄存器地址时应在原地址上加1.

电磁流量计MODBUS寄存器地址为4112(0x1010),MODBUS功效码为4时,组态王寄存器地址为84113。

具体设置见应用举例章节4.

4.数据含义说明

(1)浮点格式:

电磁流量计MODBUS采取IEEE75432位浮点数格式,其结构以下:

(以瞬时流量为例)

0X1010(34113)

0x1011(34114)

BYTE1

BYTE2

BYTE3

BYTE4

SEEEEEEE

EMMMMMMM

MMMMMMMM

MMMMMMMM

S-尾数符号;1=负数,0=正数;

E-指数;与十进制数127差值表示。

M-尾数;低23位,小数部分。

当E不全”0”时,且不全”1时浮点数与十进制数转换公式:

(2)瞬时流量单位

表3

代码

瞬时单位

代码

瞬时单位

代码

瞬时单位

代码

瞬时单位

0

L/S

3

M3/S

6

T/S

9

GPS

1

L/M

4

M3/M

7

T/M

10

GPM

2

L/H

5

M3/H

8

T/H

11

GPH

(3)累积总量单位

表4(适适用于B型及511型电磁流量计转换器)

代码

0

1

2

3

累积单位

L

M3

T

USG

表5(适适用于C型电磁流量计转换器)

代码

0

1

2

3

4

5

累积单位

L

L

L

M3

M3

M3

代码

6

7

8

9

10

11

累积单位

T

T

T

USG

USG

USG

(4)报警

上限报警,下限报警,空管报警,系统报警表示:

0-----不报警;1----报警

六、通讯数据解析

瞬时流量,瞬时流速,流量百分比,流体电导比,正反向累积量小数部分以浮点数格式传输。

正反向累积量整数部分以长整型数传输。

1读瞬时流量

主站发送命令(十六进制)

01

04

10

10

00

02

74

CE

设备

地址

功效码

寄存器

地址高位

寄存器

地址高位

寄存器

长度高位

寄存器

长度低位

CRC

高位

CRC

低位

主站接收到数据:

01

04

04

C4

1C

60

00

2F

72

设备

地址

功效码

数据

长度

4个字节浮点数

(瞬时流量)

CRC

高位

CRC

低位

浮点数C41C6000

11000100000111000110000000000000

浮点数字节1浮点数字节2浮点数字节3浮点数字节4

S=1:

尾数符号为1表示是负数。

E=10001000:

指数为136

M=00111000110000000000000,尾数为

=-625.5

2.读瞬时流速:

主站发送命令:

01

04

10

12

00

02

D5

0E

设备

地址

功效码

寄存器

地址高位

寄存器

地址高位

寄存器

长度高位

寄存器

长度低位

CRC

高位

CRC

低位

主站接收数据:

01

04

04

C1

B0

80

00

A6

5F

设备

地址

功效码

数据

长度

4个字节浮点数

(瞬时流速)

CRC

高位

CRC

低位

浮点数为:

C1B08000

11000001101100001111100000000000

S=1

E=10000011

M=01100001111100000000000

=-22.0625

3读累积流量

为了能够完全表示电磁流量计9位累积值,所以把累积流量整数和小数部分分别表示。

整数部分用长整型变量,小数部分使用浮点数。

累积流量为1587m3

主站发送采集累积流量整数值命令:

01

04

10

18

00

02

F5

0C

设备

地址

功效码

寄存器

地址高位

寄存器

地址高位

寄存器

长度高位

寄存器

长度低位

CRC

高位

CRC

低位

主站接收到数据:

01

04

04

00

00

70

71

1E

60

设备

地址

功效码

数据

长度

4个字节长整形

(累积量整数部分)

CRC

高位

CRC

低位

累积流量整数部分为=28785

主站发送采集累积流量小数值命令

01

04

10

1A

00

02

54

CC

设备

地址

功效码

寄存器

地址高位

寄存器

地址高位

寄存器

长度高位

寄存器

长度低位

CRC

高位

CRC

低位

主站接收到数据:

01

04

04

3F

00

00

00

3B

90

设备

地址

功效码

数据

长度

4个字节浮点数

(累积量小数部分)

CRC

高位

CRC

低位

浮点数为:

3F000000

00111111000000000000000000000000

S=0

E=0111111126

M=00000000000000000000000

=0.5

4读瞬时流量单位

主站发送读瞬时流量单位8个字节命令:

01

04

10

20

00

01

34

C0

设备

地址

功效码

寄存器

地址高位

寄存器

地址高位

寄存器

长度高位

寄存器

长度低位

CRC

高位

CRC

低位

主站接收到从站回传7个字节数据:

01

04

02

00

05

79

33

设备

地址

功效码

数据

长度

2个字节整型

(瞬时流量单位)

CRC

高位

CRC

低位

依据表3查得:

流量单位为M3/H

5.读总量流量单位

主站发送读瞬时流量单位8个字节命令:

01

04

10

21

00

01

65

00

设备

地址

功效码

寄存器

地址高位

寄存器

地址高位

寄存器

长度高位

寄存器

长度低位

CRC

高位

CRC

低位

主站接收到从站回传7个字节数据:

01

04

02

00

01

78

F0

设备

地址

功效码

数据

长度

2个字节整型

(累积量单位)

CRC

高位

CRC

低位

B型及511型依据表4查得:

流量单位为M3

C型依据表5查得:

流量单位为L

6.读报警状态

主站发送读报警8个字节命令:

01

04

10

24

00

01

75

01

设备

地址

功效码

寄存器

地址高位

寄存器

地址高位

寄存器

长度高位

寄存器

长度低位

CRC

高位

CRC

低位

主站接收到从站回传7个字节数据:

01

04

02

00

01

78

F0

设备

地址

功效码

数据

长度

2个字节整型

(报警)

CRC

高位

CRC

低位

状态为1表示空管是报警状态。

其她报警依次类推。

 

七、应用举例

1.C语言MODBUS示例程序

(1).CRC16算法:

INT16UCRC16(INT8U*puchMsg,INT16UusDataLen)

{

INT8UuchCRCHi=0xFF;/*高CRC字节初始化*/

INT8UuchCRCLo=0xFF;/*低CRC字节初始化*/

INT8UuIndex;/*CRC循环中索引*/

while(usDataLen--)/*传输消息缓冲区*/

{

uIndex=uchCRCHi^*puchMsg++;/*计算CRC*/

uchCRCHi=uchCRCLo^auchCRCHi[uIndex];

uchCRCLo=auchCRCLo[uIndex];

}

return(uchCRCHi<<8|uchCRCLo);

}

(2)发送命令程序

本例程以Mag64为关键CPU

voidRead_InPut(INT8UAddr,INT16UStart,INT16ULen)

{

INT16UCRC;

SendBuffer_485[0]=Addr;//设备地址

SendBuffer_485[1]=0x04;//modbus功效码

SendBuffer_485[2]=Start/256;//Start为寄存器地址

SendBuffer_485[3]=Start%256;

SendBuffer_485[4]=Len/256;//Len为读取寄存器长度

SendBuffer_485[5]=Len%256;

CRC=CRC16(SendBuffer_485,6);

SendBuffer_485[6]=CRC/256;//CRC校验高位

SendBuffer_485[7]=CRC%256;//CRC校验低位

R485_OUT;//使能RS485发送

SendLen_485=8;

SendNum_485=0;

CloseINT0();//关闭串口接收中止

UCSR0B|=BIT(UDRIE0);//打开串口发送中止

}

(3)返回数据解析(只以瞬时流量为例)

数据接收使用串口中止,ReceivedBuffer_485为接收数据组,ReceivedNum_485为接收到数据长度,ReceivedFlag_485接收到数据标志。

函数floatDatasum(INT8UBYTE1,INT8UBYTE2,INT8UBYTE3,INT8UBYTE4)把浮点数4个字节转换为1个浮点数。

floatDatasum(INT8UFloatByte1,INT8UFloatByte2,INT8UFloatByte3,INT8UFloatByte4)

{

floataa;

unionIntTOFP

{

FP32F32;

INT8UT8[4];

};

unionIntTOFPaa;

aa.T8[0]=FloatByte1;

aa.T8[1]=FloatByte2;

aa.T8[2]=FloatByte3;

aa.T8[3]=FloatByte4;

returnaa;

}

voidRead_Lmag(INT8UAd)

{

INT8Ui,j;

INT8UNum1[10],BIT;

INT16UCRC1,CRC2;

FP32Flow;//aaa为瞬时流量数值

ReceivedFlag_485=1;

Open_Time1_Ms5(20);

Read_InPut(Ad,0x1010,2);//发送设备地址、寄存器地址、寄存器长度

while(ReceivedFlag_485);//等候接收结束

if((ReceivedNum_485==9)&&(ReceivedBuffer_485[0]==Ad))//判定数据是否正确

{

CRC1=CRC16(ReceivedBuffer_485,7);

CRC2=ReceivedBuffer_485[7]*256+ReceivedBuffer_485[8];

if(CRC1==CRC2)

{//转换数据为浮点数

Flow=Datasum(ReceivedBuffer_485[6],ReceivedBuffer_485[5],ReceivedBuffer_485[4],ReceivedBuffer_485[3]);

}

}

}

 

2.modbus调试软件modbuspoll通讯实例

以从站地址为1,波特率9600,读取全部实时数据为例设置方法以下:

根据表2所表示:

起始寄存器地址4113寄存器个数为22

1.设置采集命令包含设备地址

(1)、MODBUS功效码(04)、寄存器地址(4113)、寄存器长度

(2)、采集间隔(1000)。

2.设置串口数据

依据电磁流量计串口格式(1位起始位8位数据位1位停止位,无校验)设置以下图:

 

3.设置数据显示格式

4.通讯成功界面

 

3.modbus调试软件modscan32通讯实例

以从站地址为1,波特率9600,读取全部实时数据为例设置方法以下:

根据表2所表示:

起始寄存器地址4113寄存器个数为22

1.设置采集命令包含设备地址

(1)、MODBUS功效码(04)、寄存器地址(4113)、寄存器长度

(2)、采集间隔(1000)。

2.设置串口数据

依据电磁流量计串口格式(1位起始位8位数据位1位停止位,无校验)设置以下图:

3.设置数据显示方法

4.通讯成功界面

 

4.组态王6.53通讯实例

第一步:

创建组态王工程,点击新建弹出以下界面,输入工程路径及工程名称。

第二步:

打开新建工程,选择设备栏在COM口下新建标准modbus设备。

组态王设备列表中找到-PLC-莫迪康-modbus(RTU)(电磁流量计借助莫迪康PLCmodbus(RTU)驱动)。

根据电磁流量计中地址设置设备地址。

下图以地址1为例:

第三步:

双击设备中COM设置串口参数

电磁流量计串口参数:

波特率与电磁流量计中设置相同、1位起始位、8位数据位、1位停止位、无校验。

下图以波特率9600为例:

第四步:

点击数据词典添加数据变量

依据组态王驱动说明莫迪康-modbus(RTU)变量名称、寄存器地址和数据格式见下表:

变量名

寄存器值

数据格式

采取频率

读写属性

瞬时流量

34113

Float

500

只读

瞬时流速

34115

Float

500

只读

流量百分比

34117

Float

500

只读

流体电导比

34119

Float

500

只读

正向累积值整数部分

34121

Long

500

只读

正向累积值小数部分

34123

Float

500

只读

反向累积值整数部分

34125

Long

500

只读

反向累积值小数部分

34127

Float

500

只读

数据转换寄存器

SwapL0

Byte

0

只写

注意:

因电磁流量计数据存放格式原因,在组态王添加变量时必需添加数据转换寄存器,不然通讯数据显示不正常。

第五步:

创建窗口界面并建立数据链接。

第六步:

保留工程并运行工程

 

5.力控6.1通讯实例

说明使用方法

第一步:

创建一个工程输入工程名称及工程路径。

第二步:

添加设备

IO口设备组态选择IO设备-modbus-标准modbus-modbus(RTU串口)

点击高级选项选择串口并设置串口参数(9600,8为数据位、1位停止位、无校验)

设置数据显示格式

第三步:

数据库组态

设置数据格式及地址偏移

数据举例

第四步:

创建窗口并连接变量

第五步:

运行工程

6.MCGS通讯实例

说明使用方法

第一步:

创建一个工程,出现以下界面,选择设备窗口,双击。

选择设备工具箱,点击设备管理,把通用串口父设备和标准MODBUSRTU设备添加到工程。

选择通用串口父设备0属性和设备0属性,进行以下设置。

设备地址为1,32位浮点数解码次序0-1234,校验方法0-LH[低字节,高字节]。

选择设置内部属性。

点击添加通道,出现以下界面。

寄存器地址

数据类型

通道数量

寄存器定义

4113

32位浮点数

1

瞬时流量

4115

32位浮点数

1

瞬时流速

4117

32位浮点数

1

流量百分比

4119

32位浮点数

1

流量电导比

4121

32位无符号二进制

1

正向累积整数

4123

32位浮点数

1

正向累积小数

4125

32位无符号二进制

1

反向累积整数

4127

32位浮点数

1

反向累积小数

选择通道连接

选择设备调试

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工程科技 > 电子电路

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1