Langsatz
Daten werden mit einem Langsatz an den M-Bus Teilnehmer gesendet. Der Langsatz setzt sich aus maximal 255 Bytes zusammen und wird mit dem Baustein FB_MBUS_General_Send an den Zähler übertragen.
Aufbau des Protokolls:
Byte | Langsatz | Beschreibung | Belegung im Baustein "FB_MBUS_General_Send" |
---|---|---|---|
1 | Startzeichen | 68hex | Wird im Baustein hinzugefügt |
2 | L-Feld | Länge der Anwenderdaten plus 3 | Wird im Baustein hinzugefügt |
3 | L-Feld | Länge der Anwenderdaten plus 3 | Wird im Baustein hinzugefügt |
4 | Startzeichen | 68hex | Wird im Baustein hinzugefügt |
5 | C-Feld | Funktionsfeld | Wird an die Inputvariable "byC_Field" übergeben |
6 | A-Feld | Primäradresse der M-Bus Teilnehmers | Wird an die Inputvariable "usiAddress" übergeben |
7 | CI-Feld | Kennungsfeld | Wird an die Inputvariable "byCI_Field" übergeben |
8..x | Anwenderdaten (0..240) | Anwenderdaten | Werden an die Inputvariable "arrData" übergeben |
x+1 | Checksumme | Checksumme | Wird im Baustein hinzugefügt |
x+2 | Stoppzeichen | 16hex | Wird im Baustein hinzugefügt |
Es müssen nur die fett markierten Bytes an den Baustein übergeben werden.
Die Anwenderdaten im Array arrData müssen als letztes Zeichen "16hex" enthalten. Es ist darauf zu achten, dass die nachfolgenden Bytes leer sind.
Beispiel: Änderung der Primäradresse auf Adresse 14, alte Adresse ist 0.
(*Übergabe der Anwenderdaten*)
fbSend.arrData[0] := 16#01; (*DIF / Datenformat 8 Bit Integer*)
fbSend.arrData[1] := 16#7A; (*VIF / Adresse ändern*)
fbSend.arrData[2] := 14; (*neue Adresse = 14*)
fbSend.arrData[3] := 16#16; (*Stoppzeichen/ Checksumme nicht übergeben, wird im Baustein errechnet*)
fbSend.byC_Field := 16#53; (*C-Feld*)
fbSend.byCI_Field := 16#51; (*CI-Feld*)
fbSend.usiAddress := 0; (*alte Adresse*)
fbSend(iComId := 1, (*Aufruf des Bausteins*)
bStart := bStart,
bInit := TRUE);
Das Senden wird mit der Variable bStart gestartet. Nach dem Senden wird bStart wieder zurückgesetzt.
Download Beispielprogramm für PC/CX Systeme: