超声波流量计串口及通讯协议1124.docx
《超声波流量计串口及通讯协议1124.docx》由会员分享,可在线阅读,更多相关《超声波流量计串口及通讯协议1124.docx(39页珍藏版)》请在冰豆网上搜索。
超声波流量计串口及通讯协议1124
串口及通讯协议
1.1概述
新一代UFT系列产品本身带有隔离的RS485接口,可以同时支持多种常用的通讯协议,包括MODBUS协议、M-BUS、FUJI扩展协议、并兼容国内其它厂家协议。
MODBUS协议是常规的工控常用协议。
MODBUS的两种格式RTU和ASCII都能支持。
M-BUS是国际上常用热表计量协议,使用该协议在M63菜单中选择“MODBUSASCII”选项。
天泽FUJI扩展协议是在日本FIJI超声波流量计协议的基础上扩展实现的,能够兼容FUJI超声波流量计协议,以及第7版超声波流量计协议。
兼容协议可以兼容水表协议以及国内其他厂家协议,为了方便用户把UFT系列产品接入用户按照国际其它厂家通讯协议而开发的数据采集系统中,目前可以支持12种兼容通讯协议。
使用兼容通讯协议,用户需要在M63中,选择:
MODBUSASCII选项后再选择协议中的任意一种即可。
UFT系列产品还能够起到简易RTU设备的作用,可使用电流环及OCT输出控制步进式或模拟式电磁阀的开度,OCT输出可控制其它设备的上下电,其1路模拟输入可用来输入压力、温度等信号。
位于M63窗口外的设置选项设置为“MODBUS-RTUONLY”时,用来支持MODBUS-RTU协议,当此选项设置为“MODBUSASCII、Meter-BUS、天泽FUJI扩展协议及汇中流量计水表兼容协议。
不同的汇中流量计水表兼容协议的选择则也使用M63进行选择,在选择了“MODBUS-RTU”、“MODBUS-
ASCII”之后进行选择。
M62菜单用于设置串口参数,能够支持的波特率有19200、14400、9600、4800、2400、1200、600、300共8种,停止位1比特或2比特、校验位也可以选择。
使用各种组态软件自带的标准MODBUS驱动,程序可以方便的把UFT连接到数据采集中。
通过使用MODBUS-PROFTBUS转换器,也可以方便的把UFT连接到PROFIBUS总线中。
使用RS485则可以接入RS-485总线,也可以使用本公司生产的GSM短信息模块板,通过短信息传输流量/热量测量数据。
该模块板可以多机组网,还可以使用普通手机(移动电话)查看流量计的工作状态和测量数据。
在网络环境中使用时,除标识地址码的编程需使用串口或并口操作键盘外,其它各个量的操作均可在上位机上进行。
数据的传输采用命令应答方式即上位机发出命令流量计作出相应的回答。
流量数据采集可以使用本公司研制开发的通用/专用流量/热量数据监控系统,该系统基于UFT流量计的特点,充分利用了流量计特色的软硬件设计,具有投资少,系统简单明快、运行可靠等特点。
为了通讯调试的方便,新版UFT设有一个模拟运行状态,在此状态下流量计不需要接入管道,即可模拟工作,用于调试,参看下一节的问答。
1.2关于通讯方面问题的问答
(1)问:
为什么我就连接不上流量计,它不做任何反应?
答:
A.检查串口参数是否匹配;位于M63窗口的协议选择是否正确
B.检查物理连线是否接好
D.位于M46窗口的地址是否设置正确
C.把流量计重新上电,应该能接收到字符“AT”,否则A和B步存在问题
D.检查命令是否正确。
在使用扩展协议时命令后面要紧跟者一个回车符号
(2)问:
为什么MODBUS读出的量值乱七八糟的,和显示值完全不一致?
答:
一般来说如果MODBUS协议能够读出数据就表明协议本身没有问题了。
乱七八糟的数据是因为存在如下错误:
A.数据格式错误,B.寄存器地址有误,导致数据发生了位移而产生错误。
比如REAL4这种实型变量(IEEE754格式的单精度浮点数),按照字和字节共有4种不同的排列方式,UFT使用的是最常规的一种,即低word和高byte在前格式。
您可以修改您的软件的数据存放格式解决这个问题。
如果使用通用的组态软件,则组态软件一般具有一个选择格式的方法。
(3)问:
我的系统要求每次1小时只发出一次命令然后要求同时收到多个变量,应该使用哪个协议?
答:
一条MODBUS命令可以一次读出很多变量。
如果MODBUS-RTU不能解决问题,可以使用使用“&”连接符号连接起来的扩展协议。
还可以使用简易兼容协议,或者Meter-BUS协议。
(4)问:
为什么通过协议读出的量值和流量计显示的不一致?
答:
A.确认变量地址是否就是您要求的那个变量?
因为流量计内部的变量太多,是否混淆了?
注意在读取数据时,REG0001在命令字符串中表示为0000,而不是0001。
0001在命令字符串中表示读出REG0002的内容。
B.对于累积量只能显示7位10进制数字,而通过MODBUS协议可以读出8位10进制数字。
这种情况下,读出来的数值的后7位是一样的。
(5)问:
我的系统不能支持长整数以及实型变量格式,应该怎么办?
答:
需要采用数值转换方式,或查找新驱动程序解决。
(6)问:
MODBUS有测试程序吗?
答:
有!
推荐使用MODSCAN这个软件,可以在网上搜到。
这个程序很是方便,有助于方便检查读出的数据,理解各种类型数据的含义。
(7)问:
流量计是否具有模拟运行状态以方便测试,怎样设置?
答:
有!
在M11窗口中输入0值即启动模拟运行状态。
模拟运行状态下总是设置流速为1.2345678m/s,瞬时流量等于0,并且显示“R”状态。
如果要求瞬时流量为设定值,则可以通过在M44窗口中输入一个负的设定值实现。
例如在M44窗口中输入-3600立方米/秒。
瞬时流量就会显示为3600立方米/秒。
这时所有累积器也会做相应的累积。
因此就得到了变化的累积量输出。
使用这个功能,能在不接传感器的条件下,特别方便与联网软件的调试以及流量计功能的测试。
(8)问:
使用C时,浮点数存放顺序是怎样的?
答:
例如3F9E0651四个字节为1.2345678的IEEE754格式单精度浮点形式,在MODBUS数据流中的顺序是06513F9E,1号地址数据流应该是01030406513F9E3B32(十六进制数字),在X86计算机中使用C语言时,按照内存从低到高存放顺序51069E3F。
再例如读取净累积寄存器REG25,REG26两个寄存器命令如下:
010300180002440C(十六进制数字)
返回数据应该为(设净累积器=802609,其4字节16进制表示为000C3F31)
0103043F31000CA7ED(十六进制数字,A7ED为校验和)
1.3MODBUS协议
MODBUS协议的两种格式都能支持。
通过在菜单窗口M63中,选择使用MODBUS-RTU还是MODBUS-ASCII格式。
默认状态下支持MODBUS-ASCII格式。
UFT型系列超声波流量计/热量计只能支持MODBUS功能代码03和06以及16三种功能代码,分别是读寄存器和写单一寄存器以及数据块写入功能。
例如在RTU方式下读取1号设备的流速,即读寄存器5,6共2个寄存器命令如下
01030000040285CA(十六进制数字)
设备号功能起始寄存器寄存器数目效验和
其中85CA是16进制数值,是按照CRC-16(BISYNCH,多项式是x16+x15+x2+1屏蔽字为0A001H)循环冗余算法得到的。
请参考MODBUS有关资料了解进一步的算法。
返回的数据应该为(设定状态为模拟运行状态,流速=1.2345678m/s):
01030406513F9E3B32(十六进制数字)
设备号功能数据字节数数据=1.234567效验和
其中3F9E0651四个字节即为1.2345678的IEEE754格式单精度浮点形式。
再举例:
读净累积流量REG25,REG26两个寄存器命令如下:
010300180002440C(十六进制数字)
返回数据应该为(设净累积器=802609,其4字节16进制表示为000C3F31)
0103043F31000CA7ED(十六进制数字,A7ED为效验和)
当净累积=0时,返回数据为01030400000000FA33(其中FA33为效验和)
请注意上面例子中数据存放的顺序,对于使用C语言解释数值时,可以使用指针直接把所需的数据放入相应的变量地址中即可。
一般常用的存放顺序为低字节在前。
例如上面的1.23456m/s例子中,3F9E0651数据的存放顺序为51069E3F.
在ASCII方式下读取1号设备的从寄存器1开始的10个寄存器的命令如下
:
000AF2(回车换行)
返回数据为:
0000000000000000000000000000000D4
其中“:
”是ASCII方式下的引导符,“F2”是双字节效验和。
求法是把除“:
”及行尾的回车换行以外的所有字符顺序进行单字节加法,不计进位,然后求补码得到的。
例如上面的命令中01h+03h+00h+00h+00h+0Ah=0Eh,其补码=0-0Eh=F2,而返回数据的效验和等于1+3+28h=2Ch,其补码=0-2Ch=D4h。
在MODBUS-RTU状态下,每次最多能够读出125个寄存器,而在MODBUS-ASCII状态下每次只能读出61个寄存器,如果多于这些数目流量计就会返回出错信息。
有关MODBUS协议细节请参考有关资料。
在调试MODBUS协议时,推荐使用一种免费调试软件MODSCAN,这个软件可以在互联网上搜索到。
当出现问题时,如果能够接受到效验和正确的数据包则说明通讯本身是不存在问题的。
在默认状态下通信的设置速率一般是9600、无效验、8数据位、1个停止位。
1.3.1MODBUS寄存器地址表
(注意与水表协议的不同之处)
寄存器
寄存器个数
变量名称
数据类型
说明
0001-0002
2
瞬时流量
REAL4
单位:
立方米/小时(32位浮点数)
0003-0004
2
瞬时热流量
REAL4
单位:
GJ/小时
0005-0006
2
流体速度
REAL4
单位:
米/秒
0007-0008
2
测量流体声速
REAL4
单位:
米/秒(32位浮点数)
0009-0010
2
正累积流量
LONG
所有使用长整数的流量累积器,其计量单位受M32(即REG1438)控制
0011-0012
2
正累积流量小数部分
REAL4
REAL4是标准IEEE-754格式单精度浮点数。
该格式数据一般也称为FLOAT格式
(32位整数)
LONG是低字在前带符号长整数
(32位整数)
0013-0014
2
负累积流量
LONG
0015-0016
2
负累积流量小数部分
REAL4
0017-0018
2
正累积热量
LONG
0019-0020
2
正累积热量小数部分
REAL4
0021-0022
2
负累积热量
LONG
0023-0024
2
负累积热量小数部分
REAL4
0025-0026
2
净累积流量
LONG
0027-0028
2
净累积流量小数部分
REAL4
0029-0030
2
净累积热量
LONG
0031-0032
2
净累积热量小数部分
REAL4
0033-0034
2
温度1/进水温度
REAL4
单位:
℃(32位浮点数)
0035-0036
2
温度2/回水温度
REAL4
单位:
℃(32位浮点数)
0037-0038
2
模拟输入AI3量
REAL4
转换后无量钢数据
0039-0040
2
模拟输入AI4量
REAL4
转换后无量钢数据
0041-0042
2
模拟输入AI5量
REAL4
转换后无量钢数据
0043-0044
2
模拟输入AI3电流值
REAL4
单位:
毫安
0045-0046
2
模拟输入AI4电流值
REAL4
单位:
毫安
0047-0048
2
模拟输入AI5电流值
REAL4
单位:
毫安
0049-0050
2
系统设置密码
BCD
可写。
00H表示取消密码设置
0051
1
硬件设置密码
BCD
可写。
“A55Ah”表示打开
0053-0055
3
仪表日期时间
BCD
可写。
6字节BCD数分别表示秒分时日月年,低位在前
0056
1
自动储存数据日小时
BCD
可写。
2个字节表示定时储存数据开始的时间和天,例如0312H表示每月3日12时储存数据。
0012H表示每日12时储存数据。
0059
1
输入键值(可模拟键盘)
INTEGER
可写。
参看说明书键值表
0060
1
使显示器显示x号菜单
INTEGER
可写。
0061
1
输入背光点亮时间
INTEGER
可写。
单位秒
0062
1
蜂鸣器剩余鸣响次数
INTEGER
可写。
最大255次
0062
1
OCT剩余脉冲数目
INTEGER
可写。
最大65536
0072
1
仪表工作错误代码
BIT
16比特位分别表示含义见备注4
0077-0078
2
进水电阻数
REAL4
单位欧姆
0079-0080
2
回水电阻数
REAL4
单位欧姆
0081-0082
2
超声波总传播时间
REAL4
单位微秒
0083-0084
2
超声波传播时间时差
REAL4
单位纳秒
0085-0086
2
超声波上游传播时间
REAL4
单位微秒
0087-0088
2
超声波下游传播时间
REAL4
单位微秒
0089-0090
2
当前电流环输出电流值
REAL4
单位毫安
0092
1
工作步骤和信号质量
INTEGER
高字节表示信号调整步骤
底字节表示信号质量,数值范围0-9,数值大表示信号好
(16位有符号数)
0093
1
上游信号强度
INTEGER
数值范围0-4095(16位有符号数)
0094
1
下游信号强度
INTEGER
数值范围0-4095(16位有符号数)
0096
1
操作界面语言类型
INTEGER
0表示中文,1表示英文
0097-0098
2
超声波信号传输比
REAL4
正常范围100+-3%(32位浮点数)
0099-0100
2
当前雷诺数
REAL4
0101-0102
2
当前雷诺修正系数
REAL4
0103-0104
2
工作定时器时间
LONG
无符号,单位秒
0105-0106
2
总工作时间
LONG
无符号,单位秒
0107-0108
2
总上电次数
LONG
无符号(32位整数)
0113-0114
2
净累积流量(浮点形式)
REAL4
单位为立方米,7位有效数字
0115-0116
2
正累积流量(浮点形式)
REAL4
单位为立方米,7位有效数字
0117-0118
2
负累积流量(浮点形式)
REAL4
单位为立方米,7位有效数字
0119-0120
2
净累积热量(浮点形式)
REAL4
单位为GJ,7位有效数字
0121-0122
2
正累积热量(浮点形式)
REAL4
单位为GJ,7位有效数字
0123-0124
2
负累积热量(浮点形式)
REAL4
单位为GJ,7位有效数字
0125-0126
2
今天累积流量(浮点形式)
REAL4
单位为立方米,7位有效数字
0127-0128
2
本月累积流量(浮点形式)
REAL4
单位为立方米,7位有效数字
0129-0130
2
手动累积器流量
LONG
0131-0132
2
手动累积器小数部分
REAL4
0133-0134
2
批量控制器累积流量
LONG
0135-0136
2
批量控制器小数部分
REAL4
0137-0138
2
今天累积流量
LONG
(32位整数)
0139-0140
2
今天累积流量小数部分
REAL4
0141-0142
2
本月累积流量
LONG
(32位整数)
0143-0144
2
本月累积流量小数部分
REAL4
0145-0146
2
今年累积流量
LONG
(32位整数)
0147-0148
2
今年累积流量小数部分
REAL4
0158
1
当前显示所在菜单
INTEGER
0165-0166
2
故障运行时间
LONG
单位:
秒
0173-0174
2
当前频率输出值
REAL4
单位:
Hz
0175-0176
2
当前电流环输出值
REAL4
单位:
mA
0181-0182
2
当前温差
REAL4
单位:
℃
0183-0184
2
本次上电所补加的流量
REAL4
单位:
立方米
0185-0186
2
频率系数
REAL4
应该小于0.1
0187-0188
2
自动储存总时间
LONG
储存时间由寄存器0056确定
0189-0190
2
自动储存正累积流量
REAL4
储存时间由寄存器0056确定
0191-0192
2
自动储存瞬时流量
REAL4
储存时间由寄存器0056确定
0221-0222
2
管道内经
REAL4
单位毫米(32位浮点数)
0229-0230
2
上游传播延迟
REAL4
单位微秒
0231-0232
2
下游传播延迟
REAL4
单位微秒
0233-0234
2
估算总传播时间
REAL4
单位微秒
0257-0288
32
显示器缓冲区
BCD
可读出
0289
1
显示器缓冲区存储指针
INTEGER
0311
2
今天已工作时间
LONG
无符号,单位秒
0313
2
本月已工作时间
LONG
无符号,单位秒
0315
2
今天最大瞬时流量
INTEGER
单位:
m3/h
0317
2
当月最大瞬时流量
INTEGER
单位:
m3/h
1437
1
当前瞬时流量计量单位
INTEGER
取值0-31见注5
1438
1
当前累积热量计量单位
INTEGER
取值0-7见注1
1439
1
当前累积流量倍乘因子
INTEGER
n取值0-7,见注解1
1440
1
当前累积热量倍乘因子
INTEGER
n取值0-10,见注解1
1441
1
当前热量计量单位
INTEGER
取值0~3。
0=GJ,1=Kcal
2=KWh,3=BTU
1442
1
仪表通讯地址号码
INTEGER
16位有符号数
1491
1
仪表类型
INTEGER
BIT0=0表示是流量计
BIT0=1表示是热能表
BIT3=1表示热能表装在进水口
BIT3=0表示热能表装在出水口
1451
2
用户标尺因子
REAL4
1521
2
厂家标尺因子
REAL4
不可改写
1529
2
设备电子序列号码
BCD
本设备电子序列号码
请注意高位在前
注:
(1)内部累积量使用了长整数和小数组合的方式。
一般使用时,只读整数部分即可,小数部分可以忽略。
累积量的大小和累积单位及倍乘因子有关系,它们之间的确切关系是,设累积整数部分N(对正累积而言是寄存器0009,0010中数值,32比特带符号长整数),累积的小数部分为Nf(对正累积而言是寄存器0011、0012中内容,4字节浮点数),而累积流量倍乘因子为n(寄存器1439)
则正累积流量=(N+Nf)×10n-3(单位在累积流量单位1438寄存器中确定)。
寄存器1438中取值0-7含义如下
0立方米(m3)
1公升(L)
2美制加仑(GAL)
3英制加仑(IGL)
4美制兆加仑(MGL)
5立方英尺(CF)
6美制石油桶[42](OB)
7英制石油桶(IB)
累积热量=(N+Nf)×10n-4
其中:
对于净热量,N值在寄存器0029,0030中
对于净热量,Nf值在寄存器0031,0032中
n值在寄存器1440中确定,
累积热量单位在寄存器1441中确定。
(2)其他变量不再给出,如果您有需求可咨询我公司
(3)请注意上表格中的很多数据对于非热量计来说是无效的,在单独使用流量计时,可以忽略无关项。
这些无关项主要是为了使我们的产品的通讯协议统一,便于用户使用。
(4)错误代码是16比特位其含义如下
Bit0没有收到信号错误
Bit1信号太低错误
Bit2信号差错误
Bit3管道空错误
Bit4电路硬件错误
Bit5正在调整电路增益
Bit6频率输出超量程错误
Bit7电流环输出电流过量程错误(一般情形下需要设置最大量程)
Bit8内部数据寄存器效验错误
Bit9主振频率或者时钟频率存在错误
Bit10参数区存在效验和错误
Bit11程序存储器数据效验和错误
Bit12温度测量电路可能存在错误
Bit13保留?
?
Bit14内部计时器溢出错误
Bit15模拟输入电路存在错误
注意如果对于流量计,使用此代码时请先注意屏蔽掉那些与热量测量有关的位,因为那些位的状态不是确定的。
(5)瞬时流量单位代码如下
0
立方米/秒
1
立方米/分
2
立方米/小时
3
立方米/天
4
公升/秒
5
公升/分
6
公升/小时
7
公升/天
8
美制加仑/秒
9
美制加仑/分
10
美制加仑/小时
11
美制加仑/天
12
英制加仑/秒
13
英制加仑/分
14
英制加仑/小时
15
英制加仑/天
16
美制兆加仑/秒
17
美制兆加仑/分
18
美制兆加仑/小时
19
美制兆加仑/天
20
立方英尺/秒
21
立方英尺/分
22
立方英尺/小时
23
立方英尺/天
24
美制石油桶/秒
25
美制石油桶/分
26
美制石油桶/小时
27
美制石油桶/天
28
英制石油桶/秒
29
英制石油桶/分
30
英制石油桶/小时
31
英制石油桶/天
1.3.2年月日累积数据MODBUS地址表
(1)日累积数据
每日累积数据采用32个字节大小的数据块循环队储存,共有512个数据块,当前的数据块指针地址在寄存器0162中,其数值范围为0~511。
当前指针指向“昨天”的数据,当前指针减1则指向“前天”的数据。
数据指针等于0时再减1则指向数据块511。
设0162中数为1,则昨天的累积数据在寄存器10257-10272中,前天的数据在10241-10256中,大前天的数据在18417-18432中。
注意:
在组态软件中,对于浮点数据等变量的读出在前面需要添加“4”,这样可能在这类软件中填写寄存器地址时,10241这个寄存器应该写成“410241”。
地址表如下
数据
块号
寄存器地址
寄存器
个数
变量名称
数据类型
说明
n/a