Cangnan Instrument Flow Meter MODBUS Communication Protocol

freeFree Technical Resource

This content is free to read, suitable for basic learning and search traffic.

Cangnan Instrument Flow Meter MODBUS Communication Protocol缩略图

Protocol Overview

1.1 MODBUSminite(BCD),sec(BCD), bkflag(byte),0, CRCGB/Z L, Represented by F (Float): FloatData=± 0. MH-MM-ML * 2P标准 。                            

1.2该协议适用于本厂的LWQZ气体智能涡轮流量计、 LLQZ智能罗茨流量计、 LUXZ智能旋进漩涡流量

计、 EVC体积修正仪等产品。

1.3主要特点

设备属性:流量计为MODBUS通信总线上的从站

通信模式: RTU

通信媒介: RS485

通信地址: 1-247

波特率:  1200 、2400 、4800 、9600 、19200 bps

数据位:  8位

校验位:  无校验(2个停止位)、偶校验(1个停止位)、奇校验(1个停止位)

1.4 特殊性

本协议针对流量计而开发,支持多字节二进制数、 ASCII字符串、 BCD码等类型变量的数据通信; 通信选用MODBUS的03H 、07H功能码,并增设用户自定义的66H功能码。

支持的MODBUS功能码

功能码,数据帧格式如下:

2.1 功能码03:读取起始地址在start_addrN个字的数据。见表1

主站发送: addr, 03, start_addr_hi ,start_addr_low, N_hi,N_low, CRC

从站响应: addr, 03, num, data(0),… .,data(num- 1), CRC

异常响应: addr, 83H, error_code, CRC

表1

寄存器地址变量名称寄存器数目N类型单位
0000H工况累积量4BINCangnan Instrument Flow Meter MODBUS Communication Protocol插图3
0004H标况累积量4BINNm3
0008H工况流量2BINm3/h
000AH标况流量2BINNm3/h
000CH温度2BIN
000EH压力2BINkPa

其中:

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1  起始地址:由start_addr_hi 、start_addr_low

2个字节组成,依次为起始地址的高字节、低字节;起始地址必须为表1第1列中的数值,否则流 量计回复地址出错(error_code =2);由N_hi 、N_low 2个字节组成,表示读取N个字(1个字由2个字节组成)的数据;

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1     num :表示数据的个数, data(i) ,i=0,…,num, num=2N。

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1     error_code代码参见表4。

示例1  (出厂默认: Cod01 ,Cdr23 ,bps9600)

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1   主站发送:   17      03        00 04         00 04          073E  

地址 功能码  起始地址 寄存器数目 CRC校验码

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1  从站响应: 17       03       08       00000039412524E1    9D25

地址 功能码 字节数   标况累积量   校验码

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1  变量数据为8字节二进制数表示的标准累积流量,高位在先,其中前6个字节为整数部分,后两

个为小数部分,解包得数据3752229. 144Nm3/h。

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1  附数据解包说明:

1) 整数部分十六进制数00 00 00 39 41 25等于十进制的3752229。

2) 小数部分十六进制数(24 E1) 16 = (9441)10 / 65536= 0. 14405(十进制小数)。

3) 结果为3752229.14,单位: Nm3/h

示例2读寄存器数据(此例中将当前积算仪显示的数据读出)

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1  主站发送:   17       03         00 00         00 10          46F0   

地址 功能码  起始地址 寄存器数目  CRC校验码

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1  从站响应: 17       03         20          00 00 00 37 12 05 A0 43     00 00 00 37 12 05 A0 43

地址 功能码  接收字节数   工况累积量        标况累积量

00 01 CB 6B     00 01 CB 89      00 00 14 00    00 00 65 53    BA 18 

工况流量   标况流量    温度    压力   校验码

备注:当主机发送的数据帧出错,从机不应答响应error_code代码,此时拒绝主机继续发送命令。

2.2 功能码07,读取流量计的1个字节的状态数据。见表2

主站发送: addr, 07, CRC

从站响应: addr, 07,status, CRC

表2

 BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0
1有硬件故障工况流量低报警工况流量高报警电池欠压1报警电池欠压2报警瞬时流量 偏低正在按键 操作有外电源
0无硬件故障工况流量大于报警低限工况流量小于报警高限电池电压大于报警限1电池电压大于报警限2瞬时流量 正常 无按键无外电源

2.3功能码66H,用户自定义的功能码,用于读取流量计内部历史数据。见表3

表3

寄存器地址变量名称寄存器数目N类型说明
0063H记录起始时间1BCD注1
0064H当前时间3BCD注2
0067H仪表生产信息18ASCII注3
0079H实时记录17BCD/BIN注4
008AH月记录5BCD/BIN注5
008FH启停记录8BCD/BIN注6
0097H防剪断记录4BCD/BIN注7

2.3.1读最近第M个实时记录(1条记录)

主站发送: addr, 66H, 00, 64H, 02H,M_hi, M_low, CRC

从站响应: addr,66H ,22H,psum(BIN),sum(BIN),q0(BIN),t(BIN),p(BIN),year(BCD),month(BCD), day(BCD),hour(BCD),minite(BCD),sec(BCD), CRC

2.3.2读最近第M个月记录(1条记录)

主站发送: addr, 66H, 00, 65H, 02H, M_hi,M_low, CRC

从站响应: addr,66H, 0AH, sum(BIN), year(BCD), month(BCD), CRC

2.3.3读最近第M个启/停记录(EVC无启停记录,1条记录)

主站发送: addr, 66H, 00, 66H, 02H,M_hi, M_low, CRC

从站响应: addr,66H,10H,sum(BIN),year(BCD),month(BCD),day(BCD),hour(BCD),

minite(BCD),sec(BCD), ssflag(byte),0, CRC

2.3.4读最近第M个传感器被剪断或接上时的记录(1条记录,仅配接机械计数器的智能积算仪适用) 主站发送: addr, 66H, 00, 67H, 02H,M_hi, M_low, CRC

从站响应: addr,66H,08H ,year(BCD),month(BCD),day(BCD),hour(BCD),

minite(BCD),sec(BCD), bkflag(byte),0, CRC

备注:

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1     M为字,用2个字节表示, M_hi为高字节, M_low为低字节,读最近的一条记录时, M=1,

当M=0或大于流量计内部保存的记录数时,流量计返回数值为0的一个序列。

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1     psum(BIN),sum(BIN):用8字节8位二进制数表示的累积量,高位在先,其中前6个字节为整数,后2个

字节为小数,单位: m3。

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1     q0(BIN):用4字节8位二进制数表示的标况瞬时流量,高位在先,其中前3个字节为整数,后1个字节

为小数;单位: Nm3/h。

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1     t(BIN):用4字节8位二进制数表示的温度,高位在先,其中前3个字节为整数,后1个字节为小数;单

位: ℃。

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1     p(BIN):用4字节8位二进制数表示的压力,高位在先,其中前3个字节为整数,后1个字节为小数;单

位: KPa。

year,month,day,hour,minite,sec

为单字节BCD码,分别表示年(以2000年为起点, 20不显示)、月、日、时、分、秒。

ssflag为启/停标记,当ssflag=55H时,表示该记录为启动记录;当ssflag=0EEH时,表示该记录为停 止记录。

bkflag为正常/剪断标记,当bkflag=55H时,表示该记录为传感器连线恢复正常时的记录;当bkflag=

0EEH时,表示该记录为传感器连线被剪断时的记录。

注1:记录起始时间:用于指定实时记录的起始时间,2个字节,小时-分钟;秒时间默认为0;

注2:当前时间:年月日时分秒,6个字节,BCD码,其中年为1个字节(以2000年为起点,20不显示): 注3:仪表生产信息:36个字节,ASCII码;其中厂家代码10字,产品型号12个字节,产品序号8个字节,

软件版本3个字节,生产日期3个字节(年月日);

注4:实时记录

:一条实时数据记录共34个字节,包括工况累积量8个字节(8位二进制数,单位:m3 )、标况累积 量8个字节(8位二进制数,单位:m3 )、瞬时流量4个字节(8位二进制数,单位:m3/h)、温度4 个字节(8位二进制数,单位:℃)、压力4个字节(8位二进制数,单位:kPa)、时间6个字节( BCD码,年月日时分秒)

注5:月记录;

一条月记录共10个字节,标况累积量8字节(8位二进制数,单位:m3 )、时间2个字节(BCD码,年

月)

注6:启停记录:一条启停记录共15个字节,标况累积量8个字节(8位二进制数,单位:m3 )、时间6个字 节(BCD码,年月日时分秒)、启停标记1个字节(55H表示流量从无到有,EEH表示流量从有到无) 、0(保留字节);

注7:防剪断记录:一条防剪断记录共8个字节,时间6个字节(BCD码,年月日时分秒)、防剪断标记1  个字节(55H表示传感器线束被接通,为正常情况;EEH表示传感器线束被剪断,为异常情况;记录 时间为接通或被剪断的时间)、 0(保留字节)。

2.4  流量计在收到一个通讯帧后没有响应的几种情况:

2.4.1收到数据帧的通讯地址字节与本机地址不同时;

2.4.2收到数据帧的通讯地址字节(等于0)是广播地址时;

2.4.3收受到数据帧的CRC校验出错时;

2.5.4收受到数据帧的命令码出错时。

2.5 异常响应

当从机接受到一个发给本机的数据帧、 CRC校验正确,并检测到异常时,

从站响应为: addr, function_code+128,error_code,CRC

备注: function_code:为主机命令帧中的功能码(第二个字节), function_code+128即功能码

字节的最高位置1,表示异常;

表4

数值故障含义
02变量地址无效
03数值无效

数据类型

在表格中的数据有3种类型:     BIN 、BCD码和ASCII码:

3.1 、BIN :二进制数,高字节在前,低字节在后;分别有4种情形:

1字节(无小数,无符号);

2字节(无小数,无符号);

4字节(最后1个字节表示小数,第一个字节最高位代表符号位, 1表示负数, 0表示正数)。        8字节(最后2个字节表示小数,无符号位;实时记录显示的工况累积量和标况累积量小数位后一个字

节默认为00,小数位按一个字节计算)。

3.2 、BCD码: 1个字节表示2位数值,数值范围为0-9。

3.3 、ASCII码 :字符, 8位,一个字节ASCII码,表示1个英文字母或数字。

特殊说明

为了兼容原自定义的流量计通讯协议,增加一条特殊的指令格式:

4.1、数据位为8位,无奇偶校验。即将通信模式Cod设定为10。

4.2、流量计的地址(ADDR)出厂默认值为023,即十六进制的17。

4.3 、02命令读测量参数

4.3.1 、上位机向流量计发送:

55H, 55H, ADDR, 02 ,00, ChkSum

4.3.2、流量计向上位机应答的数据帧:

55H, 55H, ADDR, 02, 18, DevStatus, DevErr, Qm, Qo, t, p, sum, ChkSum

备注:

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1     55H ,55H为数据帧的引导字符,表示数据帧的开始;

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1     ADDR 为流量计的通信地址, 1个字节,取值范围1—247。

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1     02 为通信命令号, 1个字节,读测量参数。

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1     18为数据长度, 1个字节,表示它后面有18H个字节的数据。

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1     Qm(工况流量) ,Qo(标况流量) ,t(温度) ,p(压力) ,sum(累积量)。

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1     ChkSum  为校验和, 1个字节,其数值是从Address起到ChkSum前的全部数据之和的低8位数据; Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1     DevStatus :为状态码, 1个字节,其各位的含义见表5:

表5

 BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0
1命令不 响应Qo报警睡眠有外电源压缩因 子补偿有按键电池欠压流量偏小
0命令响应Qo   不报警不睡眠无外电源不补偿无按键电池正常流量正常

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1     DevErr:为故障代码 ,1个字节,其各位的含义见表6:

表6

 BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0
1频率电路故障温度传感器异常压力传感器异常A/D转换电路异常RAM故障EEPROM故障串行口 通信 故障时钟电路故障
0频率电路正常温度传感器正常压力传感器正常A/D转换电路正常RAM正常EEPROM正常串行口 通信 正常时钟电路正常

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1  工况流量、标况流量、温度、压力采用4个字节(单精度)的浮点数表示,依次为P ,SMH ,MM ,M

L,用F  (Float)表示: FloatData = ±0.MH-MM-ML*2P

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1  累积量采用6个字节的浮点数表示,依次为P ,SMH ,MM ,ML ,ML1 ,ML2,用F  (Float)表示:

FloatData = ±0.MH-MM-ML-ML1-ML2*2P

其中: P :   阶码, 1个字节,以十六进制补码的形式表示。

SMH :尾数的高字节, 1个字节,最高位(第7位)为符号位S ,S=1 表示数据为负, S=0 则数据为正;其余7位为浮点数尾数的高7位,第0到6位。

MM  :尾数的中间字节, 1个字节,第7到14位。

ML  :  尾数的低字节, 1个字节,第15到23位。

ML1 :  尾数的低字节, 1个字节,第24到31位。

ML2 :  尾数的低字节, 1个字节,第32到39位。

示例3

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1  上位机向流量计发送的数据帧:

55     55     17      02    00       19   

55H  55H   ADDR   CMD  Len1   ChkSum

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1  流量计向上位机应答的数据帧:

55    55     17      02    18      15         00      00 00 00 00     00 00 00 00      05 50 00 00      07 65 4C CC

55H  55H  ADDR  02   18   DevStatus   DevErr     Qm          Qo          t             p

16 72 82 4A 49 25     E1

sum       ChkSum

Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1  以阶码的十进制数值为界线把尾数分成整数和小数部分,再进行二进制至十进制转换计算。 Cangnan Instrument Flow Meter MODBUS Communication Protocol插图1  

附数据包说明:

55 55 17 02 18          ---

15

00

00 00 00 00 00 00 00 00 05 50 00 00

07 65 4C CC

---状态码

---故障码

---工况瞬时流量=0

---标况瞬时流量=0

---温度=0.10100  000000000000000000×2∧0101=20

---压力=0.1100101  0100110011001100×2∧0111=101.29998779

16 72 82 4A 49 25      ---累计量=0.1110010100000100100101  00100100100100101×2∧10110 =3752229. 1428604125

E1                       ---校验和

4.3.3  自定义的流量计通讯协议浮点数解析

下面详细讲解如何解析4个字节浮点数和6个字节的浮点数。

温度:  05 50 00 00 根据数据类型的定义,  P=(05)H=(0101) 2   = 5

SMH=(50)H=(01010000) 2      MM=00  ML=00

。因为SMH最高位为0,故尾数是正的。而阶码P转为十进制数为5,故在尾数转为二进制后,前5位为整数 部分,其余为小数部分。

FloatData =   0       10100       0000000000 00000000       转为十进制数

正     整数部分          小数部分

FloatData = 1×24   + 1×22   = 20

压力:  07 65 4C CC 其中 P=(07)H =(0111) 2  =7 SMH=(65)H=(01100101) 2 MM=(4C)H=(01001100) 2 ML=(CC)H=(11001100) 2

因为SMH中最高位为0,故尾数是正的,而阶码P转为十进制数为7,故在尾数转为二进制后,有7位是整数 部分,其余为小数部分。

FloatData = 0    1100101    01001100 11001100    转为十进制数

正   整数部分       小数部分

FloatData= 1×26   + 1×25   + 1×22   + 1×20   + 1×2-2   + 1×2-5   + 1×2-6

+ 1×2-9   + 1×2- 10   + 1×2- 13   + 1×2- 14   = 101.29998779

累积量:16 72 82 4A 49 25其中 P=(16)H=(00010110) 2  = 22 SMH=(72)H=(01110010) 2                              MM=(82)H=(10000010) 2 ML=(4A)H=(01001010) 2 ML1=(49)H=(01001001) 2  ML2=(25)H=(00100101) 2 ,SMH中最高位为0,故尾数为正,而阶码P转为十进制数为22,故在尾数为二进制时,有22位是整数部分 ,其余为小数部分。

FloatData = 0   1110010 10000010 0100101 0 01001001 00100101   转为十进制数

正         整数部分               小数部分

FloatData =1×221   + 1×220   + 1×219   + 1×216   + 1×214   + 1×28   + 1×25   + 1×22   + 1×20+ 1×2-3   + 1×2-6   + 1×2-9   + 1×2- 12   +1×2- 15   + 1×2- 17   = 3752229.1428604125

Put this resource to use in a real project?

Go to the Tool Center for message parsing, CRC verification and device debugging, or submit your requirements for selection and integration advice.

Engineer Membership

Turn this article into actionable debugging resources

After activation, you can use advanced message parsing, resource pack downloads, code examples, engineering cases and priority technical support, suitable for real project delivery.

Unlimited Advanced Tools
Resource & Code Packs
Complete Engineering Case Library
Priority Technical Support

Leave a Reply

Your email address will not be published. Required fields are marked *.