12. Anhang
12.2.4 Kommunikationsdatenstruktur
Der ST500 unterstützt das MODBUS-Protokoll im RTU-Modus (Remote Terminal Unit).
Datenformat im RTU-Modus
Nachrichtenframes werden mit einem „stillen" Abstand von mindestens 3,5 Zeichen gesendet.
Daher beginnt ein Nachrichtenframe mit 4 Zeichen Pause. Das erste Datenfeld enthält die Gerä-
teadresse. Die angeschlossenen Geräte überwachen ständig den Bus und prüfen, ob das erste
übertragene Datenfeld nach einer 3,5 Zeichen langen Pause ihre eigene oder die Broadcastad-
resse enthält. Das gesamte Nachrichtenframe muss als kontinuierlicher Datenstrom ohne Unter-
brechung gesendet werden. Tritt eine Unterbrechung mit einer Länge von mehr als 1,5 Zeichen
auf, so kann die Implementation das Datenpaket verwerfen und das nächste Datenbyte als Ge-
räteadressfeld interpretieren, und umgekehrt kann bei einer Pause von weniger als 3,5 Zeichen
zwischen zwei Nachrichten das empfangende Gerät dies als Weiterführung des vorangegange-
nen Nachrichtenframes interpretieren, da das Verhalten bei einer Pause zwischen 1,5 und 3,5
Zeichen Länge nicht definiert ist. Beides führt zu einem Fehler, da die letzten beiden Bytes der
Übertragung als CRC-Prüfsumme interpretiert werden und diese nicht mehr mit dem Paketinhalt
übereinstimmt.
Die 16-bit-CRC-Prüfsumme wird als einziges Datenwort mit dem unteren Byte zuerst übertragen
(entsprechend der Bitreihenfolge der seriellen Übertragung, die mit dem niedrigstwertigen Bit
beginnt), alle anderen Datenworte mit dem höherwertigen Byte zuerst.
Zur Generierung der CRC wird das Generatorpolynom 1+x
licherweise mit der reversen Berechnungsmethode mit dem niedrigstwertigen Bit voran, daher
notiert als A001
(1010 0000 0000 0001[1], die höchstwertige 1 wird nicht notiert). CRC-Funkti-
hex
onen sind in den üblichen I/O-Bibliotheken bereits enthalten, von der Darstellung einer Beispiel-
implementation wird hier daher abgesehen.
Slave-Geräteadresse
Datenlänge
Nur in Ant wort
vom Slave vor-
handen
CRC-Prüfsumme, unteres Byte
CRC-Prüfsumme, oberes Byte
202
Nachrichtenframe
START
ADDR
Befehlscode
CMD
oberes Byte
unteres Byte
Datenfeld
DATA(N-1)
...
DATA(0)
Nachrichtenframe
END
+x
2
15
Adresse 0 bis 247 , 0 ist die Broadcastadresse
06
In Antwort vom Slave: +80
Nur wenn F9.05=0 (Nicht-Standard-Protokoll):
Oberes Byte der Anzahl der folgenden Datenbytes
Anzahl der folgenden Datenbytes
N Datenworte, entsprechend 2×N Datenbytes:
Der eigentliche Inhalt der Kommunikation
+x
(IBM-CRC-16) verwendet, üb-
16
>3,5 Zeichen Pause
03
: Parameter auslesen
hex
bzw. 07
: Parameter setzen
hex
hex
falls Fehler aufgetreten
hex
16bit-CRC-Prüfsumme
>3,5 Zeichen Pause