作为0.5级超声波流量计支持三种通信协议:FUJI协议、MODBUS-C协议、MODBUS-I协议。
超声流量计使用的通信协议格式是一套扩展的HL FLV系列流量计协议。主机设备通过发送一个“命令”请求流量计来应答。异步通信的波特率(主站:计算机系统;次站:超声流量计)一般为9600BPS。单个字节数据格式(10位):一个开始位,一个停止位和8个数据位。校验位:没有。
一个数据字符字符串用于表示基本命令,而一个回车(ENTER)用于表示命令的结束。其特点是数据的字符串是灵活的。该指令适用于RS232和RS485。常用的命令如下:
通信命令
命令 | 描述 | 数据格式 |
RFR(cr)(lf) | 返回瞬时流量 | ±d.ddddddE±dd(cr) 注1 |
RVV(cr)(lf) | 返回瞬时流速 | ±d.ddddddE±dd(cr) |
RT+(cr)(lf) | 返回正累积量 | ±ddddddd.dE±d(cr) 注2 |
RT-(cr)(lf) | 返回负累积量 | ±ddddddd.d±d(cr) |
RTN(cr)(lf) | 返回净累积量 | ±ddddddd.d±d(cr) |
RTH(cr)(lf) | 返回累计量(热) | ±ddddddd.d±d(cr) |
RT-(cr)(lf) | 返回累计能量(冷) | ±ddddddd.d±d(cr) |
RER(cr)(lf) | 返回能量瞬时量 | ±d.ddddddE±dd(cr) |
RA1(cr)(lf) | 返回模拟输入AI1的值(温度、压力等) | ±d.ddddddE±dd(cr) |
RA2(cr)(lf) | 返回模拟输入AI2的值(温度、压力等) | ±d.ddddddE±dd(cr) |
RID(cr)(lf) | 返回仪器地址码 | ddddd(cr) 5位长度 |
RSS(cr)(lf) | 返回信号状态 | UP:dd.d,DN:dd.d,Q=dd(cr) |
REC(cr)(lf) | 返回当前错误代码 | *R/*D/*E 注3 |
RRS(cr)(lf) | 返回继电器状态 | ON/OFF(cr) |
RDT(cr)(lf) | 当前日期和时间 | yy-mm-dd, hh:mm:ss(cr) |
RSN(cr)(lf) | 返回序列号 | dddddddt(cr) 注4 |
OCTdddd.d(cr)(lf) | OCT 设置 | dddd.d(cr) 设置成功返回“OK” |
SRS(cr)(lf) | 开始定量控制 | OK(cr) 设置成功返回“OK” |
P | 带校验回传命令前缀 | 注5 |
W | 数字串地址组网命令前缀 | 注6 |
注释:
1.(cr)表示回车,其ASCII码值为0DH。(lf)表示换行,其ASCII码值为0AH。
2.“d”表示0~9数字,0值表示为+0.000000E+00。
3.“d”表示0~9数字,“E”前面整数部分其中无小数点。
4.dddddddd八位表示机器的电子序列号码,t 表示机器类型。
5.字符P可以加在每一个基本命令前,表示回传的数据带有CRC校验。校验和的求法是二进制加法得到的,是累计和二进制,最低取8位二进制数据。
例如:返回信息RT(cr)(lf)是:+1234567E+0m3(cr)(lf)(相应二进制数据为2BH,31H,32H,33H,34H,35H,36H,37H,45H,2BH,30H,6DH,33H,20H,0DH,0AH)返回数据总和=2BH+31H+32H+33H+34H+35H+ 36H+37H+45H+2BH+30H+6DH+33H+20H=2F7,最低8位二进制是F7。
因此,指令PRT(cr)(lf)的数据被称为+1234567E+0m3!F7(cr)(lf),“!”对于分隔符,前面是求和的字符,后面是一个1字节的检查码。
6.W 前缀的用法:W+数字串地址码+基本命令,数字串取值范围0~255,除去13(0DH 回车),10(0AH换行)。如访问第123 号流量计的瞬时流速,可发命令W123DV(cr)(lf),对应二进制码为57H,31H,32H,33H,44H,56H,0DH,0AH,只有相同网络地址和命令的仪表才会有数据返回。
7.W和P命令可以结合使用,例如W123PRT+,这意味着读取的网络地址是123号流量计的累计值,其返回数据有8个累计和校验和。"s"表示或ON,OFF或UD 。例如,“TR:ON,RL:ON”表示OCT和继电器处于启动状态;“TR:UD,RL:UD”表示OCT和继电器不动作。
MODBUS-I协议使用RTU传输模式,它的校验码采用CRC-16-IBM(多项式为X16+X15+X2+1,屏蔽字为0xA001)循环冗余算法得到。
MODBUS-I RTU模式使用十六进制传输数据。
1.MODBUS-I协议功能码与格式
本流量计协议支持MODBUS协议的以下两种功能码:
功能码 | 表示的功能数据 |
0x03 | 读取寄存器 |
0x06 | 写单一寄存器 |
2.MODBUS协议功能码0x03使用
主机发出读取寄存器信息帧格式:
从机地址 | 操作功能码 | 寄存器首地址 | 寄存器数量 | 校验码 |
1字节 | 1字节 | 2字节 | 2字节 | 2字节 |
0x01 ~ 0xF7 | 0x03 | 0x0000 ~ 0xFFFF | 0x0000 ~ 0x7D | CRC校验码 |
从机返回数据帧格式:
从机地址 | 读操作功能码 | 数据的字节数 | 数据 | 校验码 |
1字节 | 1字节 | 1字节 | N*x2 字节 | 2字节 |
0x01 ~ 0xF7 | 0x03 | 2xN* | N*x2 数据 | CRC校验码 |
N*=数据的寄存器数量。
3、MODBUS协议功能码0x06使用
主机发出写入单一寄存器的信息帧格式(功能码0x06):
从机地址 | 操作功能码 | 寄存器地址 | 寄存器数据 | 校验码 |
1字节 | 1字节 | 2字节 | 2字节 | 2字节 |
0x01 ~ 0xF7 | 0x06 | 0x0000 ~ 0xFFFF | 0x0000 ~ 0xFFFF | CRC校验码 |
从机返回数据帧格式(功能码0x06):
从机地址 | 操作功能码 | 寄存器地址 | 寄存器数据 | 校验码 |
1字节 | 1字节 | 2字节 | 2字节 | 2字节 |
0x01 ~ 0xF7 | 0x06 | 0x0000 ~ 0xFFFF | 0x0000 ~ 0xFFFF | CRC校验码 |
流量计的地址取值范围为1~247(十六进制:0x01~0xF7)之间,地址可以在Menu 46中可以查看,如Menu 46中显示的十进制数为11,那么此仪表在MODBUS协议中的地址为:0x0B。
本仪表CRC校验码采用CRC-16-IBM(多项式为X16+X15+X2+1,屏蔽字为0xA001)循环冗余算法得到,校验码的低字节在前,高字节在后。
例如在RTU模式下读取地址为1(0x01)的仪表以小时为单位的瞬时流量(m3/h),即读取寄存器40005、
40006 两个寄存器的数据,读取命令如下:
0x010x030x00 0x040x00 0x020x85 0xCA
流量计地址功能码首地址寄存器寄存器数量CRC校验码
流量计返回的数据为(假设当前流量=1.234567m3/h):
0x010x030x040x06 0x51 0x3F 0x9E0x3B 0x32
流量计地址功能码数据字节数数据CRC校验码
其中3F 9E 06 51 四个字节即为1.2345678的IEEE754 格式单精度浮点形式。
请注意上面例子中数据存放的顺序。对于使用C语言解释数值时,可以使用指针直接把所需的数据放入相应的变量地址中即可,一般常用的存放顺序为低字节在前,例如上面的1.2345678m/s例子中,3F 9E 06 51 数据的存放顺序为51 06 9E 3F。
例如在RTU 模式下把地址为1(0x01)的仪表的地址更改为2(0x02),即把流量计44100 寄存器的数据写入0x02,写入命令如下:
0x010x060x10 0x030x00 0x020xFC 0xCB
流量计地址功能码寄存器地址寄存器数量CRC校验码
流量计返回的数据为:
0x010x060x10 0x030x00 0x020xFC 0xCB
流量计地址功能码寄存器地址寄存器数量CRC校验码
4.错误处理
本仪表只返回一种错误代码0x02,表示数据首地址错误。
例如在RTU模式下只读取地址为1(0x01)的仪表的40002 寄存器数据,仪表认为破坏了数据的完整性,发送的命令为:
0x010x030x00 0x010x00 0x010xD5 0xCA
流量计地址功能码寄存器地址寄存器数量CRC校验码
流量计返回错误代码为:
0x010x830x02 0xC0 0xF1
流量计地址错误代码错误扩展码CRC校验码
5.MODBUS寄存器地址列表
本仪表的MODBUS寄存器包含只读寄存器和单一写入寄存器。
a)只读寄存器地址列表(用0x03功能码读取)
寄存器 | 数据读取 | 数据写入 | 寄存器数 | 说明 | |
$0000 | 40001 | 瞬时流量/秒-低字节 | 32 bits real | 2 | |
$0001 | 40002 | 瞬时流量/秒-高字节 | |||
$0002 | 40003 | 瞬时流量/分钟-低字节 | 32 bits real | 2 | |
$0003 | 40004 | 瞬时流量/分钟-高字节 | |||
$0004 | 40005 | 瞬时流量/小时-低字节 | 32 bits real | 2 | |
$0005 | 40006 | 瞬时流量/小时-高字节 | |||
$0006 | 40007 | 流速-低字节 | 32 bits real | 2 | |
$0007 | 40008 | 流速-高字节 | |||
$0008 | 40009 | 正累积量-低字节 | 32 bits int. | 2 | |
$0009 | 40010 | 正累积量-高字节 | |||
$000A | 40011 | 正累积量-指数 | 16 bits int. | 1 | |
$000B | 40012 | 负累积量-低字节 | 32 bits int. | 2 | |
$000C | 40013 | 负累积量-高字节 | |||
$000D | 40014 | 负累积量-指数 | 16 bits int. | 1 | |
$000E | 40015 | 净累积量-低字节 | 32 bits int. | 2 | |
$000F | 40016 |
最新动态
上一篇超声波流量计与超声波热量计的原则 |