M-BUS Telegramme
Begriffserklärung:Slave - Endgerät, Gerät oder Zähler mit einer M-Bus Schnittstelle.
Master - ein PC-Programm plus M-Bus Pegelwandler oder ein M-Bus Pegelwandler mit eingebauten Prozessor ("intelligenter" Pegelwandler).
Inhaltsverzeichnis
1.Einzelnzeichen2.Kurzsatz
3.Steuersatz
4.Langsatz
5.C-Feld (control field)
6.A-Feld (address field)
7.CI-Feld (control information field)
8.Telegramm-Analyse mit Lorus
|
|
|
|
1.Einzelnzeichen
Das Einzelnzeichen (E5h) dient als Bestätigung korrekt empfangenen Telegramme (OSI-Schicht 2). Es ist keine Bestätigung für ein eventuelles Steuerkomando (OSI-Schicht 7). Es heisst lediglich, dass das Gerät das Telegramm empfangen hat, und dass seine Syntax und Checksumme korrekt seien.2.Kurzsatz
Der Kurzsatz besteht immer aus fünf Zeichen. Fr M-Bus sind das Telegramme von Master (PC-Programm, "intelligenter" Pegelwandler etc.) zu Slave (Endgerät, Zähler).Beispiele:
SND_NKE - Zähler initialisieren.
REQ_UD2 - Daten Klasse 2 anfordern (Zählerdaten).
REQ_UD1 - Daten der Klasse 1 anfordern (Alarmprotokolle).
3.Steuersatz
Der Steuersatz besteht immer aus neun Zeichen. Der Master sendet mit diesen Rahmen M-Bus Steuerbefehle.Beispiele:
Baudrate von Slave setzen.
Reset auf Anwendungs-Ebene des Slaves durchführen.
Anmerkung: Bei der M-Bus Implementierung verwischt der Unterschied zwischen dem Steuersatz und dem Langsatz. Der Steuersatz wird als ein Langsatz ohne Anwenderdaten behandelt.
4.Langsatz
Der Langsatz beinhaltet die Anwenderdaten und hat somit eine variable Länge. Die Anwenderdaten können in beide Richtungen gesendet werden.Beispiele:
Anwenderdaten an den Slave senden.
Einen Slave über sekundäre Adresse selektieren.
Die Uhrzeit und das Datum des Slaves setzen.
Datenrecords zur Auslesung selektieren.
Fehlermeldung an den Master senden (General application error).
Bedeutung der Felder
5.C-Feld (Control field)
Name | C-Feld binär | C-Feld hex | Telegramm | Beschreibung |
---|---|---|---|---|
SND_NKE | 0100 0000 | 40 | Kurzsatz | Initialisierung der Slaves (Endgeräte) |
SND_UD | 01F1 0011 | 53/73 | Lang-/Steuersatz | Anwenderdaten zu dem Slave senden |
REQ_UD2 | 01F1 1011 | 5B/7B | Kurzsatz | Anfrage von Daten der Klasse 2 (z.B.: Zählerstände) |
REQ_UD1 | 01F1 1010 | 5A/7A | Kurzsatz | Anfrage von Daten der Klasse 1 (z.B.: Alarmprotokolle) |
RSP_UD | 00AD 1000 | 08/18/28/38 | Lang-/Steuersatz | Datenübertragung nach Anfrage (Antwort des Slaves) |
F: FCB-Bit, A: ACD-Bit, D: DFC-Bit
Das C-Feld dient dazu, die Funktion des Telegramms zu bestimmen. Es ermöglicht auch, auf Verbindungsebene die Aufruf- und Antwortrichtung zu unterscheiden. Die ersten vier Funktionen der obigen Tabelle können nur in Aufrufrichtung genutzt werden und besitzen folgende Bedeutung:
1) Ein SND_NKE bewirkt bei erfolgreichem Empfang eine Initialisierung des Endgerätes auf Verbindungsebene, was einem Löschen des FCB Bits entspricht, und die Quittierung durch das Einzelzeichen E5h.
2) Ein SND_UD wird dazu verwendet, dem Endgerät Anwendungsdaten zu senden.
3) Ein REQ_UD2 fordert das Endgerät auf, mit Daten der Klasse 2 zu antworten. Besitzt das Endgerät solche Daten nicht, antwortet er mit einem Einzelzeichen. Anderenfalls schickt dieser ein RSP_UD. Bei einer fehlerhafter übertragung bleibt eine Antwort aus.
4) Ein REQ_UD1 fordert das Endgerät auf, mit Daten der Klasse 1 (Alarmprotokolle) zu antworten. Besitzt das Endgerät solche Daten nicht, antwortet er mit einem Einzelzeichen. Anderenfalls schickt dieser ein RSP_UD. Bei einer fehlerhafter übertragung bleibt eine Antwort aus.
5) RSP_UD - Datenübertragung vom Endgerät nach Abfrage.
Das FCB Bit alterniert bei erfolgreicher Kommunikation. Ein gleichbleibendes FCB fordert das Endgerät auf, nochmals das zuletzt gesendete Telegramm zu wiederholen. Das Ausbleiben einer Antwort des Endgerätes wird nach 330 Bitzeiten zuzüglich 50 ms angenommen. Der Master geht zunächst davon aus, dass ein Fehler in der Verbindungsschicht aufgetreten ist. Es wiederholt die übertragung des gleichen Telegramms bis zu zweimal. Liegt die Antwort des Endgerätes bis dahin immer noch nicht vor, so wird eine Pause von 33 Bitzeiten auf dem Bus eingelegt. Genauso wird verfahren, wenn der Master ein fehlerhafte Antwort des Endgerätes empfängt.
Baudrate | 1x | 11x | 33x | 330x |
---|---|---|---|---|
300 | 3,3 | 36,7 | 110 | 1100 |
2400 | 0,4 | 4,6 | 13,8 | 137,5 |
9600 | 0,1 | 1,1 | 3,4 | 34,4 |
6.A-Feld (Adressfeld)
Für die Adressierung der Endgeräte stehen die Werte 1 bis 250 zur Verfügung. Unkonfigurierte (neue) Endgeräte besitzen die Primäradresse Null. Die Adressen 254 und 255 werden eingesetzt, um alle angeschlossenen Endgeräte anzusprechen. Die Adresse 255 verlangt, dass keiner der Endgeräte, die Adresse 254 hingegen, dass alle Endgeräte antworten. Dieses führt bei zwei oder mehr angeschlossenen Endgeräten unweigerlich zur Kollision und ist daher nur für Testzwecke vorgesehen. Besitzt das A-Feld den Wert 253 (FDh), so handelt es sich um eine Sekundäradressierung.7.CI-Feld (control information field)
Das CI-Feld gehört zur Anwendungs-Ebene (OSI-Schicht 7).Das CI-Feld bestimmt den Zweck des gesendeten Telegramms und den Modus mit dem die Datenfelder gesendet werden. Der Modus 1 legt fest, dass der niederwertigste Byte zuerst gesendet wird (LSB first). Der Modus 2 legt dagegen fest, dass der höchstwertigste Byte zuerst gesendet wird (LSB first). Modus 2 soll in den neueren Entwicklungen nicht mehr verwendet werden.
Modus 1 | Modus 2 | Anwendung | Definiert in |
---|---|---|---|
Richtung Master > Slave | |||
51h | 55h | Daten senden | EN1434-3 |
52h | 56h | Slave selektieren | Usergroup July 93 |
50h | Reset auf Anwendungsebene | Usergroup March 94 | |
54h | Slave synchronisieren | suggestion | |
B8h | Baudrate 300 setzen | Usergroup July 93 | |
B9h | Baudrate 600 setzen | Usergroup July 93 | |
BAh | Baudrate 1200 setzen | Usergroup July 93 | |
BBh | Baudrate 2400 setzen | Usergroup July 93 | |
BCh | Baudrate 4800 setzen | Usergroup July 93 | |
BDh | Baudrate 9600 setzen | Usergroup July 93 | |
BEh | Baudrate 19200 setzen | suggestion | |
BFh | Baudrate 38400 setzen | suggestion | |
B1h | RAM Inhalt ausgeben | Techem suggestion | |
B2h | RAM Inhalt schreiben | Techem suggestion | |
B3h | Starte den Kalibrationstest-Modus | Usergroup July 93 | |
B4h | EEPROM lesen | Techem suggestion | |
B6h | Softwaretest starten | Techem suggestion | |
90h bis 97h | Codes für Hash-Verfahren | veraltet, nicht mehr empfohlen | |
Richtung Slave > Master | |||
70h | Senden eines Fehlerzustandes | Usergroup March 94 | |
71h | Senden eines Alarmzustandes | Usergroup March 94 | |
72h | 76h | Antwort mit variablen Datenstruktur | EN1434-3 |
73h | 77h | Antwort mit fester Datenstruktur | EN1434-3 |