- 1. Vereinbarung概述
- 2. 支持的MODBUSFunktionscode
- 3. Datentyp
- 4. 特殊说明
Vereinbarung概述
1.1 MODBUSVereinbarung内容符合GB/Z 19582.1/2/3-2004(IEC60870-5)标准 。
1.2该Vereinbarung适用于本厂的LWQZ气体智能涡轮流Quantität计、 LLQZ智能罗茨流Quantität计、 LUXZ智能旋进漩涡流Quantität
计、 EVC体积修正仪等产品。
1.3主要特点
Ausrüstung属性:流Quantität计为MODBUSKommunikation总线上的Von der Station
Kommunikation模式: RTU
Kommunikation媒介: RS485
KommunikationAdresse: 1-247
Porter Rate: 1200 、2400 、4800 、9600 、19200 bps
Datenplatz: 8位
Prüfstand.: 无Prüfungen(2个Stoppen Sie Platz)、Zufällige Prüfungen(1个Stoppen Sie Platz)、Seltsame Tests(1个Stoppen Sie Platz)
1.4 特殊性
本Vereinbarung针对流Quantität计而开发,支持多BytesBinärsystem数、 ASCIICharaktere串、 BCD码等Typus变Quantität的DatenKommunikation; Kommunikation选用MODBUS的03H 、07HFunktionscode,并增设用户Custom definiert的66HFunktionscode。
支持的MODBUSFunktionscode
Funktionscode,Daten帧Das Format如下:
2.1 Funktionscode03:LesenAusgang Adresse在start_addr起N个字的Daten。见表1。
HauptstationSenden Sie: addr, 03, start_addr_hi ,start_addr_low, N_hi,N_low, CRC
Von der StationAntwort: addr, 03, num, data(0),… .,data(num- 1), CRC
Ungewöhnliche Reaktion: addr, 83H, error_code, CRC
表1
| Register-Adresse | 变QuantitätName | Register.数目N | Typus | 单位 |
| 0000H | 工况累积Quantität | 4 | BIN | |
| 0004H | 标况累积Quantität | 4 | BIN | Nm3 |
| 0008H | 工况流Quantität | 2 | BIN | m3/h |
| 000AH | 标况流Quantität | 2 | BIN | Nm3/h |
| 000CH | Temperatur | 2 | BIN | ℃ |
| 000EH | 压力 | 2 | BIN | kPa |
Von denen:
Ausgang Adresse:由start_addr_hi 、start_addr_low
2个Bytes组成,依次为Ausgang Adresse的hohe Bytes、低Bytes;Ausgang Adresse必须为表1Die1列中的Zahlenwert,否则流 Quantität计回复Adresse出错(error_code =2);由N_hi 、N_low 2个Bytes组成,表示LesenN个字(1个字由2个Bytes组成)的Daten;
num :表示Daten的个数, data(i) ,i=0,…,num, num=2N。
error_code代码参见表4。
Beispiel1 (出厂默认: Cod为01 ,Cdr为23 ,bps为9600)
HauptstationSenden Sie: 17 03 00 04 00 04 073E
Adresse Funktionscode Ausgang Adresse Register.数目 CRC-Test码
Von der StationAntwort: 17 03 08 00000039412524E1 9D25
Adresse Funktionscode Anzahl der Bytes 标况累积Quantität Prüfcode
变QuantitätDaten为8BytesBinärsystem数表示的标准累积流Quantität,高位在先,Von denen前6个Bytes为整数部Unterteilung,后两
个为小数部Unterteilung,解包得Daten3752229. 144Nm3/h。
附Daten解包说明:
1) 整数部Unterteilung16. System数00 00 00 39 41 25gleich istDas Dekimalsystem的3752229。
2) 小数部Unterteilung16. System数(24 E1) 16 = (9441)10 / 65536= 0. 14405(Das Dekimalsystem小数)。
3) Ergebnis为3752229.14,单位: Nm3/h
Beispiel2读Registerdaten(此例中将gegenwärtig积算仪显示的Daten读出)
HauptstationSenden Sie: 17 03 00 00 00 10 46F0
Adresse Funktionscode Ausgang Adresse Register.数目 CRC-Test码
Von der StationAntwort: 17 03 20 00 00 00 37 12 05 A0 43 00 00 00 37 12 05 A0 43
Adresse Funktionscode Empfangen von Bytes数 工况累积Quantität 标况累积Quantität
00 01 CB 6B 00 01 CB 89 00 00 14 00 00 00 65 53 BA 18
工况流Quantität 标况流Quantität Temperatur 压力 Prüfcode
备注:当主机Senden Sie的Daten帧出错,从机不应答Antworterror_code代码,此时拒绝主机继续Befehle senden。
2.2 Funktionscode07,Lesen流Quantität计的1个Bytes的StatusDaten。见表2。
HauptstationSenden Sie: addr, 07, CRC
Von der StationAntwort: addr, 07,status, CRC
表2
| BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 | |
| 1 | 有硬件故障 | 工况流Quantität低报警 | 工况流Quantität高报警 | 电池欠压1报警 | 电池欠压2报警 | 瞬时流Quantität 偏低 | 正在按键 Operationen | 有外电源 |
| 0 | 无硬件故障 | 工况流Quantitätgrößer als报警低限 | 工况流Quantitätkleiner als报警高限 | 电池电压größer als报警限1 | 电池电压größer als报警限2 | 瞬时流Quantität 正常 | 无按键 | 无外电源 |
2.3Funktionscode66H,用户Custom definiert的Funktionscode,用于Lesen流Quantität计内部历史Daten。见表3。
表3
| Register-Adresse | 变QuantitätName | Register.数目N | Typus | 说明 |
| 0063H | 记录AnfangZeit | 1 | BCD | 注1 |
| 0064H | gegenwärtigZeit | 3 | BCD | 注2 |
| 0067H | 仪表生产信息 | 18 | ASCII | 注3 |
| 0079H | 实时记录 | 17 | BCD/BIN | 注4 |
| 008AH | 月记录 | 5 | BCD/BIN | 注5 |
| 008FH | 启停记录 | 8 | BCD/BIN | 注6 |
| 0097H | 防剪断记录 | 4 | BCD/BIN | 注7 |
2.3.1读最近DieM个实时记录(1条记录)
HauptstationSenden Sie: addr, 66H, 00, 64H, 02H,M_hi, M_low, CRC
Von der StationAntwort: 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读最近DieM个月记录(1条记录)
HauptstationSenden Sie: addr, 66H, 00, 65H, 02H, M_hi,M_low, CRC
Von der StationAntwort: addr,66H, 0AH, sum(BIN), year(BCD), month(BCD), CRC
2.3.3读最近DieM个启/停记录(EVC无启停记录,1条记录)
HauptstationSenden Sie: addr, 66H, 00, 66H, 02H,M_hi, M_low, CRC
Von der StationAntwort: addr,66H,10H,sum(BIN),year(BCD),month(BCD),day(BCD),hour(BCD),
minite(BCD),sec(BCD), ssflag(byte),0, CRC
2.3.4读最近DieM个Der Sensor被剪断或接上时的记录(1条记录,仅配接机械计数器的智能积算仪适用) HauptstationSenden Sie: addr, 66H, 00, 67H, 02H,M_hi, M_low, CRC
Von der StationAntwort: addr,66H,08H ,year(BCD),month(BCD),day(BCD),hour(BCD),
minite(BCD),sec(BCD), bkflag(byte),0, CRC
备注:
M为字,用2个Bytes表示, M_hi为hohe Bytes, M_low为低Bytes,读最近的一条记录时, M=1,
当M=0或größer als流Quantität计内部保存的记录数时,流Quantität计返回Zahlenwert为0的一个Sequenz。
psum(BIN),sum(BIN):用8Bytes8位Binärsystem数表示的累积Quantität,高位在先,Von denen前6个Bytes为整数,后2个
Bytes为小数,单位: m3。
q0(BIN):用4Bytes8位Binärsystem数表示的标况瞬时流Quantität,高位在先,Von denen前3个Bytes为整数,后1个Bytes
为小数;单位: Nm3/h。
t(BIN):用4Bytes8位Binärsystem数表示的Temperatur,高位在先,Von denen前3个Bytes为整数,后1个Bytes为小数;单
位: ℃。
p(BIN):用4Bytes8位Binärsystem数表示的压力,高位在先,Von denen前3个Bytes为整数,后1个Bytes为小数;单
位: KPa。
year,month,day,hour,minite,sec
为单BytesBCD码,Unterteilung别表示Jahr(以2000Jahr为起点, 20不显示)、月、日、时、Unterteilung、秒。
ssflag为启/停标记,当ssflag=55H时,表示该记录为启动记录;当ssflag=0EEH时,表示该记录为停 止记录。
bkflag为正常/剪断标记,当bkflag=55H时,表示该记录为Der Sensor连线恢复正常时的记录;当bkflag=
0EEH时,表示该记录为Der Sensor连线被剪断时的记录。
注1:记录AnfangZeit:用于指定实时记录的AnfangZeit,2个Bytes,小时-Unterteilung钟;秒Zeit默认为0;
注2:gegenwärtigZeit:Jahr月日时Unterteilung秒,6个Bytes,BCD码,Von denenJahr为1个Bytes(以2000Jahr为起点,20不显示): 注3:仪表生产信息:36个Bytes,ASCII码;Von denen厂家代码10字,产品型Nr.12个Bytes,产品Seriennummer.8个Bytes,
软件版本3个Bytes,生产日期3个Bytes(Jahr月日);
注4:实时记录
:一条实时Daten aufzeichnen共34个Bytes,包括工况累积Quantität8个Bytes(8位Binärsystem数,单位:m3 )、标况累积 Quantität8个Bytes(8位Binärsystem数,单位:m3 )、瞬时流Quantität4个Bytes(8位Binärsystem数,单位:m3/h)、Temperatur4 个Bytes(8位Binärsystem数,单位:℃)、压力4个Bytes(8位Binärsystem数,单位:kPa)、Zeit6个Bytes( BCD码,Jahr月日时Unterteilung秒)
注5:月记录;
一条月记录共10个Bytes,标况累积Quantität8Bytes(8位Binärsystem数,单位:m3 )、Zeit2个Bytes(BCD码,Jahr
月)
注6:启停记录:一条启停记录共15个Bytes,标况累积Quantität8个Bytes(8位Binärsystem数,单位:m3 )、Zeit6个字 节(BCD码,Jahr月日时Unterteilung秒)、启停标记1个Bytes(55H表示流Quantität从无zu有,EEH表示流Quantität从有zu无) 、0(保留Bytes);
注7:防剪断记录:一条防剪断记录共8个Bytes,Zeit6个Bytes(BCD码,Jahr月日时Unterteilung秒)、防剪断标记1 个Bytes(55H表示Der Sensor线束被接通,为正常情况;EEH表示Der Sensor线束被剪断,为异常情况;记录 Zeit为接通或被剪断的Zeit)、 0(保留Bytes)。
2.4 流Quantität计在收zu一个通讯帧后没有Antwort的几种情况:
2.4.1收zuDaten帧的通讯AdresseBytes与本机Adresse不同时;
2.4.2收zuDaten帧的通讯AdresseBytes(gleich ist0)是RundfunkAdresse时;
2.4.3收受zuDaten帧的CRC-Test出错时;
2.5.4收受zuDaten帧的Befehl码出错时。
2.5 Ungewöhnliche Reaktion
当从机接受zu一个发给本机的Daten帧、 CRC-TestRichtig.,并检测zu异常时,
Von der StationAntwort为: addr, function_code+128,error_code,CRC
备注: function_code:为主机Befehl帧中的Funktionscode(Die二个Bytes), function_code+128即Funktionscode
Bytes的最高位置1,表示异常;
表4
| Zahlenwert | 故障含义 |
| 02 | 变QuantitätAdresseUnwirksam |
| 03 | ZahlenwertUnwirksam |
Datentyp
在表格中的Daten有3种Typus: BIN 、BCD码和ASCII码:
3.1 、BIN :Binärsystem数,hohe Bytes在前,低Bytes在后;Unterteilung别有4种情形:
1Bytes(无小数,无符Nr.);
2Bytes(无小数,无符Nr.);
4Bytes(最后1个Bytes表示小数,Die一个Bytes最高位代表符Nr.位, 1表示负数, 0表示正数)。 8Bytes(最后2个Bytes表示小数,无符Nr.位;实时记录显示的工况累积Quantität和标况累积Quantität小数位后一个字
节默认为00,小数位按一个BytesBerechnung)。
3.2 、BCD码: 1个Bytes表示2位Zahlenwert,Zahlenwert范围为0-9。
3.3 、ASCII码 :Charaktere, 8位,一个BytesASCII码,表示1个英文字母或数字。
特殊说明
为了兼容原Custom definiert的流Quantität计通讯Vereinbarung,增加一条特殊的指令Das Format:
4.1、Datenplatz为8位,无奇Zufällige Prüfungen。即将Kommunikation模式Cod设定为10。
4.2、流Quantität计的Adresse(ADDR)出厂默认值为023,即16. System的17。
4.3 、02Befehl读测QuantitätParameter
4.3.1 、上位机向流Quantität计Senden Sie:
55H, 55H, ADDR, 02 ,00, ChkSum
4.3.2、流Quantität计向上位机应答的DatenFrame:
55H, 55H, ADDR, 02, 18, DevStatus, DevErr, Qm, Qo, t, p, sum, ChkSum
备注:
55H ,55H为Daten帧的引导Charaktere,表示Daten帧的开始;
ADDR 为流Quantität计的KommunikationAdresse, 1个Bytes,取值范围1—247。
02 为KommunikationBefehlNr., 1个Bytes,读测QuantitätParameter。
18为DatenLänge, 1个Bytes,表示它后面有18H个Bytes的Daten。
Qm(工况流Quantität) ,Qo(标况流Quantität) ,t(Temperatur) ,p(压力) ,sum(累积Quantität)。
ChkSum 为Prüfungen und, 1个Bytes,其Zahlenwert是从Address起zuChkSum前的AllesDaten之和的低8位Daten;
DevStatus :为Status码, 1个Bytes,其各位的含义见表5:
表5
| BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 | |
| 1 | Befehl不 Antwort | Qo报警 | 睡眠 | 有外电源 | 压缩因 子补偿 | 有按键 | 电池欠压 | 流Quantität偏小 |
| 0 | BefehlAntwort | Qo 不报警 | 不睡眠 | 无外电源 | 不补偿 | 无按键 | 电池正常 | 流Quantität正常 |
DevErr:为故障代码 ,1个Bytes,其各位的含义见表6:
表6
| BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 | |
| 1 | 频率电路故障 | Temperatur-Sensor异常 | 压力Der Sensor异常 | A/D转换电路异常 | RAM故障 | EEPROM故障 | 串行口 Kommunikation 故障 | 时钟电路故障 |
| 0 | 频率电路正常 | Temperatur-Sensor正常 | 压力Der Sensor正常 | A/D转换电路正常 | RAM正常 | EEPROM正常 | 串行口 Kommunikation 正常 | 时钟电路正常 |
工况流Quantität、标况流Quantität、Temperatur、压力采用4个Bytes(单精度)的浮点数表示,依次为P ,SMH ,MM ,M
L,用F (Float)表示: FloatData = ±0.MH-MM-ML*2P
累积Quantität采用6个Bytes的浮点数表示,依次为P ,SMH ,MM ,ML ,ML1 ,ML2,用F (Float)表示:
FloatData = ±0.MH-MM-ML-ML1-ML2*2P
Von denen: P : 阶码, 1个Bytes,以16. System补码的形式表示。
SMH :尾数的hohe Bytes, 1个Bytes,最高位(Die7位)为符Nr.位S ,S=1 表示Daten为负, S=0 则Daten为正;其余7位为浮点数尾数的高7位,Die0zu6位。
MM :尾数的中间Bytes, 1个Bytes,Die7zu14位。
ML : 尾数的低Bytes, 1个Bytes,Die15zu23位。
ML1 : 尾数的低Bytes, 1个Bytes,Die24zu31位。
ML2 : 尾数的低Bytes, 1个Bytes,Die32zu39位。
Beispiel3:
上位机向流Quantität计Senden Sie的DatenFrame:
55 55 17 02 00 19
55H 55H ADDR CMD Len1 ChkSum
流Quantität计向上位机应答的DatenFrame:
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
以阶码的Das DekimalsystemZahlenwert为界线把尾数Unterteilung成整数和小数部Unterteilung,再进行Binärsystem至Das Dekimalsystem转换Berechnung。
附Daten包说明:
55 55 17 02 18 ---
15
00
00 00 00 00 00 00 00 00 05 50 00 00
07 65 4C CC
---Status码
---故障码
---工况瞬时流Quantität=0
---标况瞬时流Quantität=0
---Temperatur=0.10100 000000000000000000×2∧0101=20
---压力=0.1100101 0100110011001100×2∧0111=101.29998779
16 72 82 4A 49 25 ---累计Quantität=0.1110010100000100100101 00100100100100101×2∧10110 =3752229. 1428604125
E1 ---Prüfungen und
4.3.3 Custom definiert的流Quantität计通讯Vereinbarung浮点数Analyse
下面详细讲解如何Analyse4个Bytes浮点数和6个Bytes的浮点数。
Temperatur: 05 50 00 00 根据Datentyp的定义, P=(05)H=(0101) 2 = 5
SMH=(50)H=(01010000) 2 MM=00 ML=00
。因为SMH最高位为0,故尾数是正的。而阶码P转为Das Dekimalsystem数为5,故在尾数转为Binärsystem后,前5位为整数 部Unterteilung,其余为小数部Unterteilung。
FloatData = 0 10100 0000000000 00000000 转为Das Dekimalsystem数
正 整数部Unterteilung 小数部Unterteilung
FloatData = 1×24 + 1×22 = 20
压力: 07 65 4C CC Von denen P=(07)H =(0111) 2 =7 SMH=(65)H=(01100101) 2 MM=(4C)H=(01001100) 2 ML=(CC)H=(11001100) 2
因为SMH中最高位为0,故尾数是正的,而阶码P转为Das Dekimalsystem数为7,故在尾数转为Binärsystem后,有7位是整数 部Unterteilung,其余为小数部Unterteilung。
FloatData = 0 1100101 01001100 11001100 转为Das Dekimalsystem数
正 整数部Unterteilung 小数部Unterteilung
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
累积Quantität:16 72 82 4A 49 25Von denen 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转为Das Dekimalsystem数为22,故在尾数为Binärsystem时,有22位是整数部Unterteilung ,其余为小数部Unterteilung。
FloatData = 0 1110010 10000010 0100101 0 01001001 00100101 转为Das Dekimalsystem数
正 整数部Unterteilung 小数部Unterteilung
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
Antwort veröffentlichen