电磁流量计MODBUS寄存器地址定义表Word格式文档下载.docx
- 文档编号:17502252
- 上传时间:2022-12-06
- 格式:DOCX
- 页数:31
- 大小:772.32KB
电磁流量计MODBUS寄存器地址定义表Word格式文档下载.docx
《电磁流量计MODBUS寄存器地址定义表Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《电磁流量计MODBUS寄存器地址定义表Word格式文档下载.docx(31页珍藏版)》请在冰豆网上搜索。
MODBUS功能码定义如表-1所示,L-mag-电磁流量计仅采用04功能码。
表-1
功能码
名称
作用
01
读取线圈状态
保留
02
读取输入状态
03
读取保持寄存器
04
读取输入寄存器
读电磁流量计实时信息
05
强置单线圈
06
预置单寄存器
07
读取异常状态
08
回送诊断校验
09
编程(只用于484)
10
控询(只用于484)
11
读取事件计数
12
读取通信事件记录
13
编程(184/384484584)
14
探询(184/384484584)
15
强置多线圈
五、L-mag电磁流量计MODBUS寄存器定义
1.L-mag电磁流量计MODBUS寄存器地址定义表-2
ProtocolAddresses
(Decimal)
(HEX)
数据格式
寄存器定义
4112
0x1010
FloatInverse
瞬时流量浮点表示
4114
0x1012
瞬时流速浮点表示
4116
0x1014
流量百分比浮点表示(电池供电表保留)
4118
0x1016
流体电导比浮点表示
4120
0x1018
LongInverse
正向累积数值整数部分
4122
0x101A
正向累积数值小数部分
4124
0x101C
反向累积数值整数部分
4126
0x101E
反向累积数值小数部分
4128
0x1020
Unsignedshort
瞬时流量单位(表3)
4129
0x1021
累积总量单位(表4/表5)
4130
0x1022
上限报警
4131
0x1023
下限报警
4132
0x1024
空管报警
4133
0x1025
系统报警
2.PLC地址设置说明
PLC设置时如果没有功能码设置项时,使用功能04应在寄存器地址前面加3。
另PLC寄存器地址的基址是从1开始,所以PLC设置寄存器地址时应在原地址上加1.
例:
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采用IEEE75432位浮点数格式,其结构如下:
(以瞬时流量为例)
0X1010(34113)
0x1011(34114)
BYTE1
BYTE2
BYTE3
BYTE4
SEEEEEEE
EMMMMMMM
MMMMMMMM
S-尾数的符号;
1=负数,0=正数;
E-指数;
与十进制数127的差值表示。
M-尾数;
低23位,小数部分。
当E不全”0”时,且不全”1时浮点数与十进制数转换公式:
(2)瞬时流量单位
表3
代码
瞬时单位
L/S
3
M3/S
6
T/S
9
GPS
1
L/M
4
M3/M
7
T/M
GPM
2
L/H
5
M3/H
8
T/H
GPH
(3)累积总量单位
表4(适用于B型及511型电磁流量计转换器)
累积单位
L
M3
T
USG
表5(适用于C型电磁流量计转换器)
(4)报警
上限报警,下限报警,空管报警,系统报警表示:
0-----不报警;
1----报警
六、通讯数据解析
瞬时流量,瞬时流速,流量百分比,流体电导比,正反向累积量小数部分以浮点数的格式传输。
正反向累积量的整数部分以长整型数传输。
1读瞬时流量
主站发送命令(十六进制)
00
74
CE
设备
地址
寄存器
地址高位
长度高位
长度低位
CRC
高位
低位
主站接收到数据:
C4
1C
60
2F
72
长度
4个字节浮点数
(瞬时流量)
浮点数C41C6000
11000100000111000110000000000000
浮点数字节1浮点数字节2浮点数字节3浮点数字节4
S=1:
尾数符号为1表示是负数。
E=10001000:
指数为136
M=00111000110000000000000,尾数为
=-625.5
2.读瞬时流速:
主站发送命令:
D5
0E
主站接收数据:
C1
B0
80
A6
5F
(瞬时流速)
浮点数为:
C1B08000
11000001101100001111100000000000
S=1
E=10000011
M=01100001111100000000000
=-22.0625
3读累积流量
为了能够完全表达电磁流量计的9位累积值,所以把累积流量的整数和小数部分分别表达。
整数部分用长整型变量,小数部分使用浮点数。
累积流量为1587m3
主站发送采集累积流量整数值命令:
18
F5
0C
70
71
1E
4个字节长整形
(累积量整数部分)
累积流量的整数部分为=28785
主站发送采集累积流量小数值命令
1A
54
CC
3F
3B
90
(累积量小数部分)
浮点数为:
3F000000
00111111000000000000000000000000
S=0
E=0111111126
M=00000000000000000000000
=0.5
4读瞬时流量单位
主站发送读瞬时流量单位8个字节命令:
20
34
C0
主站接收到从站回传7个字节数据:
79
33
2个字节整型
(瞬时流量单位)
根据表3查得:
流量单位为M3/H
5.读总量流量单位
21
65
78
F0
(累积量单位)
B型及511型根据表4查得:
流量单位为M3
C型根据表5查得:
流量单位为L
6.读报警状态
主站发送读报警8个字节命令:
24
75
(报警)
状态为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.设置串口数据
根据L-mag电磁流量计串口格式(1位起始位8位数据位1位停止位,无校验)设置如下图:
3.设置数据显示格式
4.通讯成功界面
3.modbus调试软件modscan32通讯实例
3.设置数据显示方式
4.组态王6.53通讯实例
第一步:
创建组态王工程,点击新建弹出如下界面,输入工程路径及工程名称。
第二步:
打开新建的工程,选择设备栏在COM口下新建标准modbus设备。
组态王设备列表中找到-PLC-莫迪康-modbus(RTU)(L-mag电磁流量计借助莫迪康PLCmodbus(RTU)驱动)。
按照电磁流量计中的地址设置设备地址。
下图以地址1为例:
第三步:
双击设备中的COM设置串口参数
L-mag电磁流量计串口参数:
波特率与电磁流量计中设置相同、1位起始位、8位数据位、1位停止位、无校验。
下图以波特率9600为例:
第四步:
点击数据词典添加L-mag数据变量
根据组态王驱动说明莫迪康-modbus(RTU)变量名称、寄存器地址和数据格式见下表:
变量名
寄存器值
采用频率
读写属性
瞬时流量
34113
Float
500
只读
瞬时流速
34115
流量百分比
34117
流体电导比
34119
正向累积值整数部分
34121
Long
正向累积值小数部分
34123
反向累积值整数部分
34125
反向累积值小数部分
34127
数据转换寄存器
SwapL0
Byte
只写
注意:
因电磁流量计数据存储格式的原因,在组态王添加变量时必须添加数据转换寄存器,否则通讯数据显示不正常。
第五步:
创建窗口界面并建立数据链接。
第六步:
保存工程并运行工程
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位浮点数
4115
4117
4119
流量电导比
4121
32位无符号二进制
正向累积整数
4123
正向累积小数
4125
反向累积整数
4127
反向累积小数
选择通道连接
选择设备调试
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电磁流量计 MODBUS 寄存器 地址 定义