A电磁流量计标准MODBUS通讯协议(版本号: LMAGMODRTUV77)安均 yes

更新时间:2024-01-19 01:01:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

L-mag电磁流量计转换器通讯协议

L-MAG电磁流量计转换器

通讯协议

版本号: LMAGMODRTUV77

2012-10-12

- 0 -

L-mag电磁流量计转换器通讯协议

目录

一、概述 ...........................................................................................................- 2 - 二、L-mag网络结构及接线 ..............................................................................- 2 - 三、Modbus协议RTU帧格式 ..........................................................................- 2 - 四、Modbus协议命令编码定义 .......................................................................- 4 - 五、L-mag电磁流量计MODBUS寄存器定义 ..................................................- 5 - 1. L-mag电磁流量计MODBUS寄存器地址定义 ...............................................- 5 - 2.PLC地址设置说明 ..........................................................................................- 5 - 3.组态王地址设置说明 .....................................................................................- 6 - 4.数据含义说明 ..............................................................................................- 6 -

六、通讯数据解析 ............................................................................................- 7 - 1读瞬时流量 ....................................................................................................- 7 - 2.读瞬时流速: .................................................................................................- 8 - 3读累积流量 ....................................................................................................- 8 - 5.读总量流量单位 ........................................................................................... - 10 - 6.读报警状态 .................................................................................................. - 10 -

七、应用举例 ................................................................................................. - 11 - 1.C语言MODBUS 示例程序 ........................................................................... - 11 - 2.modbus调试软件 modbus poll通讯实例 .................................................... - 13 - 3.modbus调试软件modscan32通讯实例....................................................... - 15 - 4.组态王6.53通讯实例 .................................................................................. - 17 - 5.力控6.1通讯实例 ........................................................................................ - 21 - 6.MCGS通讯实例 ............................................................................................ - 24 -

注:本协议应用举例中例程只提供参考,例程中部分参数与MODBUS寄存

器地址定义不符,请以MODBUS寄存器地址定义为准。

- 1 -

L-mag电磁流量计转换器通讯协议

一、概述

L-mag电磁流量计具有标准的MODBUS通讯接口,支持波特率1200,2400,4800,9600,19200。通过MODBUS通讯网络,主站可以采集瞬时流量,瞬时流速,累积流量等参数。

L-mag电磁流量计采用的串口参数: 1位起始位 8位数据位 1位停止位,无校验。

L-mag电磁流量计的MODBUS通讯接口在物理结构上采用电气隔离方式,隔离电压1500伏,并具有ESD保护,能够克服工业现场的各种干扰,保证通讯网络的可靠运行。

二、L-mag网络结构及接线

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

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

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

三、Modbus协议RTU帧格式

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

L-mag电磁流量计采用MODBUS RTU格式(十六进制格式),其帧结构如图-2所示。

1.主站命令帧结构

帧起始 设备地址 功能代码 8Bit 寄存器地址 16Bit 寄存器长度 CRC校验 16Bit 16Bit 帧结束 T1-T2-T3-T4 T1-T2-T3-T4 8Bit - 2 -

L-mag电磁流量计转换器通讯协议

图-2 主站 RTU消息帧

2.从站响应帧结构 帧起始 设备地址 功能代码 8Bit 数据 n个8Bit CRC校验 16Bit 帧结束 T1-T2-T3-T4 T1-T2-T3-T4 8Bit 图3 从站RTU消息帧

说明:

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

图-4 MODBUS 帧间隔

(2)设备地址:电磁流量计的通讯地址,在一个网络中不能有两个相同的地址。

(3)功能码:MODBUS 协议规定的功能码,L-mag电磁流量计采用功能码4读输入寄存器来实现采集数据的。

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

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

(5)从站响应数据

从站响应数据是:字节数和N个数字节数据。 详见MODBUS 协议。

- 3 -

L-mag电磁流量计转换器通讯协议

四、Modbus协议命令编码定义

MODBUS功能码定义如表-1所示,L-mag-电磁流量计仅采用04功能码。

表 -1

功能码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 名称 读取线圈状态 读取输入状态 读取保持寄存器 读取输入寄存器 强置单线圈 预置单寄存器 读取异常状态 回送诊断校验 编程(只用于484) 控询(只用于484) 读取事件计数 读取通信事件记录 编程(184/384 484 584) 探询(184/384 484 584) 强置多线圈 作用 保留 保留 保留 读电磁流量计实时信息 保留 保留 保留 保留 保留 保留 保留 保留 保留 保留 保留

- 4 -

L-mag电磁流量计转换器通讯协议

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

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

Protocol Addresses (Decimal) 4112 4114 4116 4118 4120 4122 4124 4126 4128 4129 4130 4131 4132 4133 Protocol Addresses (HEX) 0x1010 0x1012 0x1014 0x1016 0x1018 0x101A 0x101C 0x101E 0x1020 0x1021 0x1022 0x1023 0x1024 0x1025 数据格式 Float Inverse Float Inverse Float Inverse Float Inverse Long Inverse Float Inverse Long Inverse Float Inverse Unsigned short Unsigned short Unsigned short Unsigned short Unsigned short Unsigned short 寄存器定义 瞬时流量浮点表示 瞬时流速浮点表示 流量百分比浮点表示(电池供电表保留) 流体电导比浮点表示 正向累积数值整数部分 正向累积数值小数部分 反向累积数值整数部分 反向累积数值小数部分 瞬时流量单位(表3) 累积总量单位(表4/表5) 上限报警 下限报警 空管报警 系统报警 2.PLC地址设置说明

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

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

- 5 -

L-mag电磁流量计转换器通讯协议

例:

L-mag电磁流量计MODBUS寄存器地址为4112(0x1010),MODBUS功能码为4时,PLC寄存器地址为34113。 详细设置见应用举例章节2.

3.组态王地址设置说明

组态王设置时没有功能码设置项,不同的驱动设置方法不同。

以PLC-莫迪康-modbus(RTU)驱动为例,使用功能04应在寄存器地址前面加8。另组态王寄存器地址的基址是从1开始,所以组态王设置寄存器地址时应在原地址上加1.

L-mag电磁流量计MODBUS寄存器地址为4112(0x1010),MODBUS功能码为4时,组态王寄存器地址为84113。 详细设置见应用举例章节4. 4.数据含义说明

(1)浮点格式:

L-mag电磁流量计 MODBUS 采用 IEEE754 32位浮点数格式,其结构如

下:(以瞬时流量为例)

0X1010(34113) BYTE1 S EEEEEEE BYTE2 E MMMMMMM 0x1011(34114) BYTE3 MMMMMMMM BYTE4 MMMMMMMM S-尾数的符号;1=负数,0 = 正数; E-指数;与十进制数127的差值表示。 M-尾数;低23位,小数部分。

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

V?(?1)S2(E?127)(1?M)(2)瞬时流量单位 代码 0 1 2

瞬时单位 L/S L/M L/H 表 3 代码 瞬时单位 代码 瞬时单位 3 M3/S 6 T/S 4 M3/M 7 T/M 5 M3/H 8 T/H - 6 -

代码 9 10 11 瞬时单位 GPS GPM GPH L-mag电磁流量计转换器通讯协议

(3)累积总量单位

表 4(适用于B型及511型电磁流量计转换器) 代码 0 1 2 累积单位 L M3 T 表 5(适用于C型电磁流量计转换器) 代码 0 1 2 3 4 累积单位 L L L M3 M3 代码 6 7 8 9 10 累积单位 T T T USG USG (4)报警

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

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

3 USG 5 M3 11 USG 六、通讯数据解析

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

主站发送命令(十六进制) 01 设备 地址 04 功能码 10 寄存器 地址高位 10 寄存器 地址高位 00 寄存器 长度高位 02 寄存器 长度低位 74 CRC 高位 CE CRC 低位 主站接收到数据: 01 设备 地址 04 功能码 04 数据 长度 C4 1C 60 00 2F CRC 高位 72 CRC 低位 4个字节浮点数 (瞬时流量) 浮点数 C4 1C 60 00 1100 0100 0001 1100 0110 0000 0000 0000 浮点数字节1 浮点数字节2 浮点数字节3 浮点数字节4 S=1: 尾数符号为1表示是负数。

E = 10001000: 指数为 136

- 7 -

L-mag电磁流量计转换器通讯协议

M= 001 1100 0110 0000 0000 0000,尾数为

V?(?1)21(136?127)(1?11111????)816325121024

= -625.5

2.读瞬时流速: 主站发送命令: 01 设备 地址 04 功能码 10 寄存器 地址高位 12 寄存器 地址高位 00 寄存器 长度高位 02 寄存器 长度低位 D5 CRC 高位 0E CRC 低位 主站接收数据: 01 设备 地址 04 功能码 04 数据 长度 C1 B0 80 00 A6 CRC 高位 5F CRC 低位 4个字节浮点数 (瞬时流速) 浮点数为: C1 B0 80 00

1100 0001 1011 0000 1111 1000 0000 0000

S = 1 E = 10000011

M = 011 0000 1111 1000 0000 0000

V?(?1)2 = - 22.0625 3读累积流量

1(131?127)(1?111??) 48256 为了能够完全表达电磁流量计的9位累积值,所以把累积流量的整数和小数部分分别表达。整数部分用长整型变量,小数部分使用浮点数。 累积流量为1587m3

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

- 8 -

L-mag电磁流量计转换器通讯协议

01 设备 地址 04 功能码 10 寄存器 地址高位 18 寄存器 地址高位 00 寄存器 长度高位 02 寄存器 长度低位 F5 CRC 高位 0C CRC 低位 主站接收到数据: 01 设备 地址 04 功能码 04 数据 长度 00 00 70 71 1E CRC 高位 60 CRC 低位 4个字节长整形 (累积量整数部分) 累积流量的整数部分为 = 28785 主站发送采集累积流量小数值命令 01 设备 地址 04 功能码 10 寄存器 地址高位 1A 寄存器 地址高位 00 寄存器 长度高位 02 寄存器 长度低位 54 CRC 高位 CC CRC 低位 主站接收到数据: 01 设备 地址 04 功能码 04 数据 长度 3F 00 00 00 3B CRC 高位 90 CRC 低位 4个字节浮点数 (累积量小数部分) 浮点数为: 3F 00 00 00

0011 1111 0000 0000 0000 0000 0000 0000

S = 0

E = 0111111 126

M = 000 0000 0000 0000 0000 0000

V?(?1)2 = 0.5 4读瞬时流量单位

1(126?127)

主站发送读瞬时流量单位8个字节命令: 01 设备 地址 04 功能码 10 寄存器 地址高位 20 寄存器 地址高位 00 寄存器 长度高位 01 寄存器 长度低位 34 CRC 高位 C0 CRC 低位 - 9 -

L-mag电磁流量计转换器通讯协议

主站接收到从站回传7个字节数据: 01 设备 地址 04 功能码 02 数据 长度 00 05 79 CRC 高位 33 CRC 低位 2个字节整型 (瞬时流量单位) 根据表3查得:流量单位为M3/H 5.读总量流量单位

主站发送读瞬时流量单位8个字节命令: 01 设备 地址 04 功能码 10 寄存器 地址高位 21 寄存器 地址高位 00 寄存器 长度高位 01 寄存器 长度低位 65 CRC 高位 00 CRC 低位 主站接收到从站回传7个字节数据: 01 设备 地址 04 功能码 02 数据 长度 00 01 78 CRC 高位 F0 CRC 低位 2个字节整型 (累积量单位) B型及511型根据表4查得:流量单位为M3 C型 根据表5查得:流量单位为L 6.读报警状态

主站发送读报警8个字节命令: 01 设备 地址 04 功能码 10 寄存器 地址高位 24 寄存器 地址高位 00 寄存器 长度高位 01 寄存器 长度低位 75 CRC 高位 01 CRC 低位 主站接收到从站回传7个字节数据: 01 设备 地址

04 功能码 02 数据 长度 00 01 78 CRC 高位 F0 CRC 低位 2个字节整型 (报警) 状态为1 表示空管是报警状态。 其他报警依次类推。

- 10 -

L-mag电磁流量计转换器通讯协议

七、应用举例

1.C语言MODBUS 示例程序

(1).CRC16算法:

INT16U CRC16(INT8U *puchMsg, INT16U usDataLen) {

INT8U uchCRCHi = 0xFF; /* 高CRC字节初始化 */ INT8U uchCRCLo = 0xFF; /* 低CRC 字节初始化 */ INT8U uIndex; /* CRC循环中的索引 */ while (usDataLen--) /* 传输消息缓冲区 */ {

uIndex = uchCRCHi ^ *puchMsg++; /* 计算CRC */ uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex]; uchCRCLo = auchCRCLo[uIndex]; }

return (uchCRCHi << 8 | uchCRCLo); }

(2)发送命令程序

本例程以Mag64为核心CPU

void Read_InPut(INT8U Addr,INT16U Start,INT16U Len) {

INT16U CRC;

SendBuffer_485[0]=Addr; //设备地址 SendBuffer_485[1]=0x04; //modbus功能码 SendBuffer_485[2]=Start/256; //Start为寄存器地址 SendBuffer_485[3]=Start%6;

SendBuffer_485[4]=Len/256; //Len为读取寄存器长度 SendBuffer_485[5]=Len%6; CRC=CRC16(SendBuffer_485,6);

SendBuffer_485[6]=CRC/256; //CRC校验高位 SendBuffer_485[7]=CRC%6; //CRC校验低位 R485_OUT; //使能RS485发送 SendLen_485=8; SendNum_485=0;

CloseINT0(); //关闭串口接受中断 UCSR0B |= BIT(UDRIE0); //打开串口发送中断 }

- 11 -

L-mag电磁流量计转换器通讯协议

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

数据接收使用串口中断,ReceivedBuffer_485为接收数据组,ReceivedNum_485为接收到数据

长度,ReceivedFlag_485接收到数据标志。函数float Datasum(INT8U BYTE1, INT8U BYTE2, INT8U BYTE3, INT8U BYTE4)把浮点数的4个字节转换为1个浮点数。

float Datasum(INT8U FloatByte1, INT8U FloatByte2, INT8U FloatByte3, INT8U FloatByte4) { float aa; union IntTOFP {

FP32 F32; INT8U T8[4]; };

union IntTOFP aa;

aa.T8[0] = FloatByte1; aa.T8[1] = FloatByte2; aa.T8[2] = FloatByte3; aa.T8[3] = FloatByte4; return aa; }

void Read_Lmag(INT8U Ad) {

INT8U i,j;

INT8U Num1[10],BIT; INT16U CRC1,CRC2;

FP32 Flow; //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]);

}

}

}

- 12 -

L-mag电磁流量计转换器通讯协议

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

以从站地址为1,波特率9600,读取所有实时数据为例设置方法如下: 按照表2所示:起始寄存器地址4113 寄存器个数为22 1. 设置采集命令包括设备地址(1)、MODBUS功能码(04)、寄存器地址(4113)、寄存器长度(2)、采集间隔(1000)。

2.设置串口数据

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

3.设置数据显示格式

- 13 -

L-mag电磁流量计转换器通讯协议

4.通讯成功界面

- 14 -

L-mag电磁流量计转换器通讯协议

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

以从站地址为1,波特率9600,读取所有实时数据为例设置方法如下: 按照表2所示:起始寄存器地址4113 寄存器个数为22 1. 设置采集命令包括设备地址(1)、MODBUS功能码(04)、寄存器地址(4113)、寄存器长度(2)、采集间隔(1000)。

2.设置串口数据

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

3.设置数据显示方式

- 15 -

L-mag电磁流量计转换器通讯协议

4.通讯成功界面

- 16 -

L-mag电磁流量计转换器通讯协议

4.组态王6.53通讯实例

第一步:

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

第二步:打开新建的工程,选择设备栏在COM口下新建标准modbus设备。 组态王设备列表中找到-PLC-莫迪康-modbus(RTU)(L-mag电磁流量计借助莫迪康PLCmodbus(RTU)驱动)。

按照电磁流量计中的地址设置设备地址。下图以地址1为例:

第三步:双击设备中的COM设置串口参数

- 17 -

L-mag电磁流量计转换器通讯协议

L-mag电磁流量计串口参数:波特率与电磁流量计中设置相同、1位起始位、 8位数据位、 1位停止位、无校验。下图以波特率9600为例:

第四步:点击数据词典添加L-mag数据变量

根据组态王驱动说明莫迪康-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 只写 - 18 -

L-mag电磁流量计转换器通讯协议

注意:因电磁流量计数据存储格式的原因,在组态王添加变量时必须添加数据转换寄存器,否则通讯数据显示不正常。

第五步:创建窗口界面并建立数据链接。

- 19 -

L-mag电磁流量计转换器通讯协议

第六步:保存工程并运行工程

- 20 -

L-mag电磁流量计转换器通讯协议

5.力控6.1通讯实例

说明使用方法 第一步:

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

第二步:添加设备

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

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

- 21 -

L-mag电磁流量计转换器通讯协议

设置数据显示格式

第三步:数据库组态

设置数据格式及地址偏移

- 22 -

L-mag电磁流量计转换器通讯协议

数据举例

第四步:

创建窗口并连接变量

第五步: 运行工程

- 23 -

L-mag电磁流量计转换器通讯协议

6.MCGS通讯实例

说明使用方法 第一步:

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

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

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

- 24 -

L-mag电磁流量计转换器通讯协议

设备地址为1,32位浮点数解码顺序0-1234,校验方式0-LH[低字节,高字节]。选择设置内部属性。

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

寄存器地址 4113 4115 4117 4119 4121 4123 4125 4127 数据类型 32位浮点数 32位浮点数 32位浮点数 32位浮点数 32位无符号二进制 32位浮点数 32位无符号二进制 32位浮点数 通道数量 1 1 1 1 1 1 1 1 寄存器定义 瞬时流量 瞬时流速 流量百分比 流量电导比 正向累积整数 正向累积小数 反向累积整数 反向累积小数

- 25 -

L-mag电磁流量计转换器通讯协议

选择通道连接

选择设备调试

- 26 -

本文来源:https://www.bwwdw.com/article/bmxo.html

Top