Vereinbarung Zusammenfassung
1.1 MODBUSentspricht demGB/Z 19582.1 / 2 / 3 - 2004 (IEC60870 - 5)Standards.
1.2Diese Vereinbarung gilt für die Fabrik.LWQZGas-Intelligenten - Turbinen-Durchflussmesser,LLQZSmart Roots-Durchflussmesser undLUXZSmart Vortex-Durchflussmesser unserer Anlage.
zählen, EVCProdukte wie Größenkorrekturgeräte.
1.3Hauptmerkmale
Geräteattribute: Durchflussmesser als Slave-Station auf dem MODBUS-Kommunikationsbus
Kommunikationsmodus: RTU
Kommunikationsmedium: RS485
Kommunikationsadresse: 1 - 247
Baudrate: 1200, 2400, 4800, 9600, 19200 bps
Daten: 8
Check-Bit: Keine Überprüfung (2 Stopp-Bit), Par-Check (1 Stopp-Bit), Ungerade-Check (1 Stopp-Bit)
1.4Besonderheiten
Dieses Protokoll wurde für den Durchflussmesser entwickelt, unterstützt die Datenkommunikation von Multi-Byte - Binärzahlen, ASCII-Zeichenfolgen, BCD-Codes und anderen Variablen; Kommunikation wählt den MODBUS 03H, 07H-Funktionscode und fügt den benutzerdefinierten 66H-Funktionscode hinzu.
unterstützt.MODBUSFunktionscodes
Funktionscodes, Datenframeformate wie folgt:
2.1Funktionscodes:03: Lesen Sie Daten, deren Startadresse instart _ addr起Nliegt.见表1。
主站发送: addr, 03, start_addr_hi ,start_addr_low, N_hi,N_low, CRC
从站响应: addr, 03, num, data(0),… ., data (num - 1), CRC
Ausnahmeantwort: addr, 83H, error_code, CRC
Tabelle 1
| Registeradresse | Variable Namen | Registeranzahl N | Typ | Einheit |
| 0000H | Zustand kumulativ | 4 | BIN | |
| 0004H | Zustand kumulativ | 4 | BIN | Nm3 |
| 0008H | Durchfluss im Betriebszustand | 2 | BIN | m3 / h |
| 000AH | Standardstrom | 2 | BIN | Nm3 / h |
| 000CH | Temperatur | 2 | BIN | ℃ |
| 000EH | Druck | 2 | BIN | kPa |
wobei
: Ausgang Adresse: Bestehend aus start_addr_hi, start_addr_low
2 Byte, die auf der anderen Seite die hohe Byte, niedrige Byte der Startadresse; Die Startadresse muss der Wert in der Tabelle 1 Spalte 1 sein, andernfalls wird der Durchflussmesser die Antwort-Adresse Fehler (error_code = 2); bestehend aus N_hi, N_low 2 Byte, die N-Wörter (ein Wort besteht aus 2 Bytes) Daten lesen;
num: Die Anzahl der Daten, data(i), i = 0,..., num, num = 2N.
Der error _ code-Code wird in Tabelle 4 angegeben.
(Fabrikstandard:1 (Fabrikverständlich: Cod为01,Cdr为23undbps为9600)
Hauptbahnhof übertragen: 17 03 0000 04 0000 04 073E
Adresse Funktionscode Startadresse Registeranzahl CRC-Prüfcode
Reaktionen von der Station: 17 03 08 000000039412524E1 9D25
Anzahl der Bytes des Adressfunktionscodes Akkumulationsvolumen Prüfcode
Variable Daten sind 8 Byte binäre Zahlen dargestellt Standard kumulativen Verkehr, die höchste Position zuerst, von denen die ersten 6 Byte sind Ganzzahl-Teil, die letzten zwei
Das ist ein Dezimalteil und entpackt die Daten3752229. 144Nm3 / h.
Beschreibung der Datenverpackung:
1) Ganzzahlteil hexadezimaler Zahlen 00 00 39 41 25 entspricht der Dezimalzahl 3752229.
2) Hexadezimalzahl (24E1) 16 = (9441) 10 / 65536 = 0. 14405 (Dezimalzahlen).
3) Das Ergebnis ist 3752229.14, Einheit: Nm3 / h
Beispiel2Lesen von Registerdaten (in diesem Fall werden die Daten aus dem aktuellen Akkumulat ausgelesen)
Hauptbahnhof übertragen: 17 03 00 00 00 10 46f0
Adresse Funktionscode Startadresse Registeranzahl CRC-Prüfcode
Reaktionen von der Station: 17 03 20 0 0 0 00 00 00 00 37 12 05 A0 43
Adresse Funktionscode Anzahl der empfangenen Bytes Akkumulationsbetrag Arbeitsbedingungen Akkumulationsmenge
0001CB6B 00 01 CB89 00 Uhr 14 Uhr 0 0 BA18
Arbeitszustand Durchfluss Bezeichnung Fluss Temperatur Druck auf Check-Code
Hinweis: Wenn der Host einen Fehler beim Senden eines Datenframes hat, antwortet der Slave nicht mit einem error _ code-Code und verweigert der Host, den Befehl fortzusenden.
2.2 Funktionscode07Lesen Sie den Fluss.1Bytes des Durchflussmessers. Siehe Tabelle2。
Master-Station Senden: addr, 07, CRC
Slave-Station Antwort: addr, 07, status, CRC
Tabelle 2
| BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 | |
| 1 | Hardwarefehler | Alarm für niedrigen Betriebsdatenverkehr | Alarm für hohen Betriebsdatenverkehr | Batterieunterspannung1 Alarm | Batterieunterspannung2 Alarm | Augenblicklicher niedriger Durchfluss | Tastenbetrieb wird | Externe Stromversorgung |
| 0 | Kein Hardwarefehler | Betriebsstatus Durchfluss größer als Alarm niedriger Grenze | Betriebsstatus Durchfluss kleiner als Alarm oberer Grenze | Batteriespannung größer als Alarmgrenze1 | Batteriespannung größer als Alarmgrenze2 | Augenblicklicher Durchfluss normal | Keine Taste | Keine externe Stromversorgung |
2.3Funktionscode66HBenutzerdefinierter Funktionscode, der verwendet wird, um die internen Daten des Durchflussmessers zu lesen. Siehe Tabelle3。
Tabelle 3
| Registeradresse | Variablename | Registeranzahl N | Typ | Beschreibung |
| 0063H | Datensatzbeginnzeit | 1 | BCD | Hinweis 1 |
| 0064H | Aktuelle Uhrzeit | 3 | BCD | Hinweis 2 |
| 0067H | Produktionsinformationen zum Gerät | 18 | ASCII | Hinweis 3 |
| 0079H | Echtzeit-Aufzeichnung | 17 | BCD/BIN | Anmerkung 4 |
| 008AH | Monatsprotokolle | 5 | BCD/BIN | Anmerkung 5 |
| 008FH | Start-Stopping - Protokolle | 8 | BCD/BIN | Anmerkung 6 |
| 0097H | Anti-Cut - Record | 4 | BCD/BIN | Anmerkung7 |
2.3.1 Lesen Sie den letzten M-Echtzeit - Record (1 Record)
Master send: addr, 66H, 00, 64H, 02H, M_hi, M_low, CRC
Slave response: addr, 66H, 22H, psum (BIN), sum (BIN), q0 (BIN), t (BIN), p (BIN), year (BCD), month (BCD), day (BCD), hour (BCD), minute (BCD), sec (BCD), CRC
2.3.2 Lesen Sie den letzten M-Monats - Datensatz (1 Datensatz)
Addr: 66H, 00, 65H, 02H, M_hi, M_low, CRC
Slave-Station - Antwort: addr, 66H, 0AH, sum (BIN), year (BCD), month (BCD), CRC
2.3.3 Lesen Sie den letzten M-Start - / Stop-Record (EVC ohne Start-Stopp - Datensatz, 1 Datensatz)
Master-Station send: addr, 66H, 00, 66H, 02H, M_hi, M_low, CRC
Slave-Station Antwort: addr, 66H, 10H, sum (BIN), year (BCD), month (BCD), day (BCD), hour (BCD),
minite (BCD), sec (BCD), ssflag (byte), 0, CRC
2.3.4 Lesen Sie die Aufzeichnungen, wenn der M-ste Sensor abgeschnitten oder angeschlossen wurde Master Station sendet: addr, 66H, 00, 67H, 02H, M_hi, M_low, CRC
Slave Station Antwort: addr, 66H, 08H, year (BCD), month (BCD), day (BCD), hour (BCD),
minite (BCD), sec (BCD), bkflag (byte), 0, CRC.
M ist ein Wort, in 2 Byte dargestellt, M_hi ist ein hohes Byte, M_low ist ein niedriges Byte, M = 1,
M ist ein Wort, das in 2 Bytes dargestellt wird, M_hi ist ein hohes Byte, M_low ist ein niedriges Byte, wenn der letzte Datensatz gelesen wird, M = 1,
Wenn M = 0 oder größer ist als die Anzahl der Aufzeichnungen, die im Durchflussmesser gespeichert sind, gibt das Durchflussmesser eine Sequenz mit einem Wert von 0 zurück.
psum (BIN), sum (BIN): Die kumulative Menge, die in 8 - Byte-Binarenzahlen ausgedrückt wird, wobei die ersten 6 Bytes ganze Zahlen sind und die letzten 2
Die Bytes sind Dezimalzahlen, Einheit: m3.
q0 (BIN): In einer 4 - Byte - 8 - Bit-Binärzahl dargestellten augenblicklichen Datenverkehr, wobei die ersten 3 Byte Ganzzahl sind, das letzte 1 Byte
Dezimalzahl; Einheit: Nm3 / h.
t (BIN): Temperatur in einer 4 - Byte - 8 - Bit-Binärzahl dargestellt, wobei die ersten 3 Byte ganze Zahlen und das letzte 1 Byte Dezimalzahl sind; einzig
位: ℃。
p (BIN): Druck in einer 4 - Byte - 8 - Bit-Binärzahl dargestellt, wobei die ersten 3 Byte ganze Zahlen und das letzte 1 Byte Dezimalzahl sind; einzig
Bit: KPa.
year,month,day,hour,minite,sec
ist ein BCD-Code mit einem einzigen Byte, der das Jahr (von 2000 anfängt, 20 wird nicht angezeigt), den Monat, den Tag, die Stunde, die Minute und die Sekunde darstellt.
ssflag ist ein Start / Stopp-Tag, wenn ssflag = 55H, bedeutet dies, dass der Datensatz ein Start-Datensatz ist; wenn ssflag = 0EEH, bedeutet dies, dass der Datensatz ein Stopp-Datensatz ist.
bkflag ist ein normaler / abgeschnittener Marker, wenn bkflag = 55H, zeigt an, dass der Datensatz ist, wenn die Sensorverbindung wieder normal ist; wenn bkflag =
0EEH, zeigt an, dass der Datensatz ist, wenn die Sensorverbindung abgeschnitten ist.
Hinweis 1: Datensatzbeginnzeit: Geben Sie die Startzeit für die Echtzeit-Aufzeichnung an, 2 Byte, Stunden-Minuten; die Sekundenzeit ist standardmäßig 0;
Hinweis 2: Aktuelle Zeit: Jahr, Monat, Minute, Sekunde, 6 Byte, BCD-Code, wobei das Jahr 1 Byte ist (auf dem Jahr 2000 als Ausgangspunkt, 20 nicht angezeigt): Hinweis 3: Produktionsinformationen des Geräts: 36 Byte, ASCII-Code; 10 Wörter Herstellercode, 12 Byte Produktmodell, 8 Byte Produktserienummer,
Softwareversion 3 Bytes, Produktionsdatum 3 Bytes (Monat);
Anmerkung 4: Echtzeit-Aufzeichnung
: Ein Echtzeit-Datenprotokoll hat insgesamt 34 Byte, einschließlich 8 Bytes der Akkumulationsmenge.(8 - Bit-Binärzahl, Einheit: m3), Akkumulationsvolumen 8 Byte (8 - Bit-Binärzahl, Einheit: m3), sofortiger Datenverkehr 4 Byte (8 - Bit-Binärzahl, Einheit: m3 / h), Temperatur 4 Byte (8 - stellige Binärzahlen, Einheit: °C), Druck 4 Byte (8 - Bit-Binärzahl, Einheit: kPa), Zeit 6 Byte (BCD-Code, Jahr, Monat, Uhr, Sekunde)
Hinweis 5: Monatsdatensatz;
Ein Monatsdatensatz insgesamt 10 Byte, Akkumulationsvolumen von Zustand 8 Byte (8 - Bit-Binärzahlen, Einheit: m3), Zeit 2 Byte (BCD-Code, Jahr
Monat)
Anmerkung 6: Start-Stopp - Aufzeichnungen: Ein Start-Stopp - Aufzeichnungen insgesamt 15 Bytes, Zustand kumulative Menge 8 Bytes (8 - Bit Binärzahl, Einheit: m3), Zeit 6 Bytes (BCD-Code, Jahr, Monat, Tag, Minute, Sekunde), Start-Stopp - Marker 1 Bytes (55H bedeutet Verkehr von nichts zu haben, EEH bedeutet Verkehr von nichts zu haben), 0 (reservierte Bytes);
Anmerkung 7: Schnitt-Schutz - Aufzeichnungen: Ein Schnitt-Schutz - Aufzeichnungen insgesamt 8 Byte, Zeit 6 Byte (BCD-Code, Jahr, Monat, Minute, Sekunde), Schnitt-Schutz - Markierung 1 Byte (55H bedeutet, dass der Sensor-Kabelband eingeschaltet ist, für den normalen Zustand; EEH bedeutet, dass der Sensor-Kabelband abgeschnitten ist, für den ungewöhnlichen Zustand; Aufzeichnungszeit ist die Zeit, die anschaltet oder abgeschnitten wird), 0 (reservierte Byte).
2.4 Es gibt mehrere Situationen, in denen das Durchflussmesser nach Erhalt eines Kommunikationsrahmens nicht reagiert:
2.4.1 Das Kommunikationsadress-Byte des empfangenen Datenrahmens ist nicht gleichzeitig mit der lokalen Adresse;
2.4.2 Wenn das Kommunikationsadress-Byte des empfangenen Datenrahmens (gleich 0) eine Broadcast-Adresse ist;
2.4.3 Wenn die CRC-Prüfungsfehler des empfangenen Datenrahmens fehlen;
2.5.4 Fehler beim Empfang des Befehlscodes für ein Datenframe.
2.5Ausnahme-Antwort
Wenn der Slave einen Datenrahmen empfängt, der an den Domestic gesendet wird, die CRC-Prüfung korrekt ist und eine Ausnahme erkannt wird,
Slave-Antwort: addr, function_code +128, error_code, CRC
Anmerkung: function_code: Der Funktionscode (zweites Byte) im Host-Befehl - Frame, function_code +128 ist die höchste Position des Funktionscode
- Bytes 1, die Ausnahme anzeigt;
Tabelle 4
| Zahlenwert | Ausfall Bedeutungen |
| 02 | Variablenadresse ungültig |
| 03 | Zahlenwert ungültig |
Datentyp
Es gibt drei Arten von Daten in einer Tabelle: BIN -, BCD - und ASCII-Codes:
3.1, BIN: Binäre Zahl, das hohe Byte vor, das niedrige Byte nach; Es gibt vier Szenarien:
1 Byte (ohne Dezimalzahl, ohne Zeichen);
2 Byte (ohne Dezimalzahl, ohne Zeichen);
4 Byte (letztes 1 Byte für Dezimalzahl, das erste Byte für das höchste Zeichen, 1 für negative, 0 für positive Zahl). 8 Byte (die letzten 2 Byte stellen Dezimalstellen dar, ohne Zeichen; Echtzeit-Dokumentation zeigt die Akkumulationsmenge und die Akkumulationsmenge nach der Dezimalstelle ein Wort
Abschnitt Standardmäßig ist 00, die Dezimalstelle pro Bytes berechnet).
3.2, BCD-Code: 1 Byte stellt einen 2 - stelligen Wert dar, der im Bereich von 0 bis 9 liegt.
3.3 ASCII-Code: Zeichen, 8 - Bit, ein Byte-ASCII - Code, der einen englischen Buchstaben oder eine Zahl darstellt.
Besondere Erläuterung
Um mit dem ursprünglich benutzerdefinierten Durchflussmesser-Kommunikationsprotokoll kompatibel zu sein, wurde ein spezielles Befehlformat hinzugefügt:
4.1 Die Daten sind 8 - Bit, ohne Parität. Setzen Sie den Kommunikationsmodus Code auf 10.
4.2 Die Adresse des Durchflussmessers (ADDR) ist der Werkstandardwert 023, also 17 in Hexadezimal.
4.3,02 Befehl Messparameter lesen
4.3.1, Überarbeiter senden an den Durchflussmesser:
55H, 55H, ADDR, 02,00, ChkSum
4.3.2 Die Daten, die der Rechner antwortet:
55H, 55H, ADDR, 02, 18, DevStatus, DevErr, Qm, Qo, t, p, sum, ChkSum
Hinweis:
55H, 55H ist das Startzeichen des Datenframes, das den Beginn des Datenframes anzeigt;
ADDR ist die Kommunikationsadresse des Durchflussmessers, 1 Byte, Wertebereich 1 - 247.
02 ist die Kommunikationsbefehlsnummer, 1 Byte, Messparameter lesen.
18 ist die Datenlänge, 1 Byte, was bedeutet, dass es 18H-Bytes von Daten folgt.
Qm (Betriebsstrom), Qo (Standardstrom), t (Temperatur), p (Druck), Summe (kumulative Menge).
ChkSum ist eine Prüfsumme, 1 Byte, deren Wert die Summe aller Daten von Adresse bis zu ChkSum in den unteren 8 - Bit-Daten ist;
DevStatus ist ein Statuscode mit 1 Byte, die Bedeutung der einzelnen Bits in Tabelle 5:
Tabelle 5
| BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 | |
| 1 | Befehl reagiert nicht | Qo-Alarm | Schlaf | Externe Stromversorgung | Kompressionsfaktorkompensation | Es gibt Schlüssel. | Unterspannung der Batterie | Weniger Stromfluss |
| 0 | Befehlantwort | Kein Alarm | Kein Schlaf | Kein externes Stromversorgung | Keine Kompensation | Keine Taste | Batterie normal | Fluss normal |
DevErr: Ein Fehlercode mit 1 Byte, die Bedeutung der einzelnen Bits in Tabelle 6:
Tabelle 6
| BIT7 | BIT6 | BIT5 | BIT4 | BIT3 | BIT2 | BIT1 | BIT0 | |
| 1 | Ausfall der Frequenzschaltung | Temperatursensor abnormal | Drucksensor abnormal | A / D-Umwandlungsschaltung Ausfall | RAM-Fehler | EEPROM-Fehler | Serial-Port - Kommunikationsfehler | Taktschaltung Ausfall |
| 0 | Frequenzschaltung normal | Temperatursensor normal | Drucksensor normal | A / D-Umwandlungsschaltung normal | RAM normal | EEPROM normal | Serielle Anschlusskommunikation normal | Taktschaltung normal |
Der Durchfluss, der Durchfluss, die Temperatur und der Druck werden durch 4 Byte (Einheitspräzision) ausgedrückt, die P, SMH, MM, M
L, mit F (Float) dargestellt werden: FloatData = ± 0.MH-MM - ML * 2P
Die kumulative Menge wird durch eine Fließkommazahl von 6 Bytes angegeben, die in der Folge P, SMH, MM, ML, ML1, ML2 und F (Float) angegeben wird:
FloatData = ± 0.MH-MM - ML-ML1 - ML2*2P
wo: P: Der Stufencode, 1 Byte, wird in Form eines hexadezialen Ergänzungscodes dargestellt.
SMH: Das höchste Byte der Mantissa, 1 Byte, der höchste Bit (sieben Bit) ist das Symbol-Bit S, S = 1 bedeutet, dass die Daten negativ sind, S = 0 sind die Daten positiv; die restlichen 7 Bits sind die oberen 7 Bits der Gleitkomma-Tastissa, 0 bis 6.
MM: Das mittlere Byte der Mantissa, 1 Byte, 7 bis 14 Bit.
ML: Das niedrigste Byte der Mantissa, 1 Byte, 15 bis 23 Bits.
ML1: Das niedrigste Byte der Mantissa, 1 Byte, die Bits 24 bis 31.
ML2: Das niedrigste Byte der Mantissa, 1 Byte, 32 bis 39 Bit.
Beispiel3:
Datenframe, die vom Obergerät an den Durchflussmesser gesendet werden:
55 55 17 02 00 19
55h 55h Addr. CMD Len1 ChkSum
Datenframe, das vom Durchflussmesser an den Host beantwortet wurde:
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 Der DevStatus DevErr Qm Qo t p
16 72 82 4A 49 25 E1
Summe ChkSum
Der Dezimalwert des Code-Kodees wird als Grenze in Ganzzahl und Dezimalteil unterteilt und dann binär in Dezimal Umwandlung berechnet.
Paketbeschreibung mit:
55 55 17 02 18
15
00
0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0
- - Statuscode
- Fehlercode
-
-
Temperatur = 0,10100 00000000000000 × 2 ∀ 0101 = 20
- - - Druck = 0,1100101 010011001100 × 2 ∀ 0111 = 101,29998779
16 72 82 4A 49 25 = = = = 1428604125
E1 - - - Checksumsumme
4.3.3 Benutzerdefinierte Durchflussmesser-Kommunikationsprotokoll - Gleitkomma-Analyse
Im Folgenden wird ausführlich erläutert, wie man 4 - Byte - und 6 - Byte - Gleitkomma-Anzahlungen analysiert.
Temperatur: 05 50 00 00 Je nach Definition des Datentypes, P = (05) H = (0101) 2 = 5
SMH=(50)H=(01010000) 2 MM = 00 ML = 00
。Da der höchste Wert von SMH 0 ist, ist die Zahl positiv. Und der Stufencode P wird in die Dezimalzahl 5 umgewandelt, so dass nach der Umwandlung der Mantissa in das Binärsystem die ersten 5 Stellen sind Ganzzahlteil, der Rest ist Dezimalteil.
FloatData = 0 10100 000000000000000 Umwandlung in Dezimalzahl
Ganze Teilen Dezimalteil
FloatData = 1 × 24 + 1 × 22 = 20
Druck: 07 65 4C CC, wobei P = (07) H = (0111) 2 = 7 SMH = (65) H =(01100101) 2 MM = (4C) H = (01001100) 2 ML = (CC) H = (11001100) 2
Da die höchste Position in SMH 0 ist, ist die Mantissa positiv, und der Code P wird in die Dezimalzahl 7 umgewandelt, so dass nach der Mantissa in die Binäre umgewandelt wird, sind sieben Bits Ganzzahlteil und der Rest ist Dezimalteil.
FloatData = 0 1100101 01001100 11001100 Umwandlung in Dezimalzahl
Ganze Teilen Dezimalteil
FloatData = 1 × 26 + 1 × 25 + 1 × 22 + 1 × 20 + 1 × 2 - 2 + 1x2 - 5 + 1 × 2 - 6
+ 1 × 2 - 9 + 1x2 - 10 + 1x2 - 13 + 1 × 2 - 14 = 101,29998779
kumulative Menge: 16 72 82 4A 49 25 wobei P = (16) H = (00010110) 2 = 22 SMH = (72) H = (01110010) 2 Die Zahl der Zahlen ist die Zahl der Zahlen, die die Zahl der Zahlen ist, die die Zahl der Zahlen ist, die Zahl der Zahlen ist, die Zahl der Zahlen ist.
FloatData = 0 0 0 Umwandlung in Dezimalzahl
Ganze Teilen Dezimalteil
FloatData = 1 × 221 + 1x220 + 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