LOGO

Peter Gasperowicz
Ingenieurbüro

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.Einzelnzeichen
2.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


Telegramme nach IEC 870-5 class FT 1.2
Einzelnzeichen
 E5h
Kurzsatz
 Start 10h
C-Feld
A-Feld
 Checksumme
 Endzeichen 16h
Steuersatz
 Start 68h
 L-Feld 03h
 L-Feld 03h
 Start 68h
C-Feld
A-Feld
CI-Feld
 Checksumme
 Endzeichen 16h
Langsatz
 Start 68h
 L-Feld
 L-Feld
 Start 68h
C-Feld
A-Feld
CI-Feld
Anwenderdaten 0-234 Bytes
 Checksumme
 Endzeichen 16h
- über diese Zeichen werden die Checksumme und das L-Feld berechnet. Die Checksumme wird durch Addition ohne übertrag gebildet. Das L-Feld (Längenfeld) ist die Anzahl der mit markierten Zeichen.

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)

C-Feld (Funktionsfeld, Control field)
NameC-Feld binärC-Feld hexTelegrammBeschreibung
 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.
Bitzeiten in ms
Baudrate1x11x33x330x
3003,336,71101100
24000,44,613,8137,5
96000,11,13,434,4
  Bitzeit in ms = 1000 / Baudrate

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.
CI-Feld
Modus 1Modus 2AnwendungDefiniert in
Richtung Master —> Slave
51h55hDaten sendenEN1434-3
52h56hSlave selektierenUsergroup July 93
50h Reset auf AnwendungsebeneUsergroup March 94
54h Slave synchronisierensuggestion
B8h Baudrate   300 setzenUsergroup July 93
B9h Baudrate   600 setzenUsergroup July 93
BAh Baudrate  1200 setzenUsergroup July 93
BBh Baudrate  2400 setzenUsergroup July 93
BCh Baudrate  4800 setzenUsergroup July 93
BDh Baudrate  9600 setzenUsergroup July 93
BEh Baudrate 19200 setzensuggestion
BFh Baudrate 38400 setzensuggestion
B1h RAM Inhalt ausgebenTechem suggestion
B2h RAM Inhalt schreibenTechem suggestion
B3h Starte den Kalibrationstest-ModusUsergroup July 93
B4h EEPROM lesenTechem suggestion
B6h Softwaretest startenTechem suggestion
90h
bis
97h
 Codes für Hash-Verfahrenveraltet, nicht mehr empfohlen
Richtung Slave —> Master
70h Senden eines FehlerzustandesUsergroup March 94
71h Senden eines AlarmzustandesUsergroup March 94
72h76hAntwort mit variablen DatenstrukturEN1434-3
73h77hAntwort mit fester DatenstrukturEN1434-3
Direkter Zugriff auf Speicheradressen des Slaves.