8.1.3.2 Funktionscode
Das zweite Zeichen der Nachricht identifiziert die Funktion, die in der vom Master übertragenen Nachricht ausgeführt werden
muss, auf die der Slave seinerseits mit dem gleichen Code antwortet, um anzugeben, dass die Funktion ausgeführt wurde.
Implementiert ist eine Teilmenge der MODBUS-Funktionen, die Folgendes umfasst:
•
01
Read Coil Status
•
02
Read Input Status
•
03
Read Holding Registers
•
04
Read Input registers
•
05
Force Single Coil
•
06
Preset Single register
•
07
Read Status
•
15
Force multiple Coils
•
16
Preset Multiple Registers
Die Funktionen 01 und 02 sind vom operativen Standpunkt aus identisch und austauschbar, ebenso wie die Funktionen 03
und 04. Für eine komplette und detaillierte Funktionsbeschreibung siehe Kapitel 3.
8.1.3.3 Der CRC16
Die letzten zwei Zeichen der Nachricht enthalten den zyklischen Redundanzcode (Cyclic Redundancy Check), der nach
dem Algorithmus CRC16 berechnet wird. Für die Berechnung dieser zwei Zeichen (Adresse, Funktionscode und Daten unter
Aussonderung der Start- und Stoppbits und der eventuellen Parität) wird die Nachricht als eine einzige fortlaufende binäre
Zahl betrachtet, deren höchstwertigstes Bit (MSB) als erstes übertragen wird. Die Nachricht wird als erstes mit x16 multip-
liziert (indem sie um 16 Bit nach links verschoben wird) und dann durch x
(1100000000000101). Der ganze Quotient wird dann ausgesondert und der 16 Bit-Rest (der bei FFFFh zu Beginn initialisiert
wird, um eine Nachricht mit nur Nullen zu vermeiden) wird in der Folge zur übertragenen Nachricht dazugegeben. Bei der so
erhaltenen Nachricht muss sich als Rest null ergeben, wenn sie vom Empfängerslave durch das gleiche Polynom
(x
+x
+x2+1) dividiert wird, falls keine Fehler aufgetreten sind (der Slave berechnet den CRC neu).
16
15
Da die Vorrichtung, die die zu übertragenden Daten serialisiert (UART), zuerst das niedrigstwertige Bit (LSB) überträgt
anstatt des MSB, wie dies für die CRC-Berechnung der Fall sein sollte, erfolgt dies über die Umkehrung des Polynoms. Da
das MSB des Polynoms außerdem nur den Quotienten beeinflusst und nicht den Rest, wird es eliminiert und es wird somit
zu 1010000000000001.
Schritt-für-Schritt Verfahren zur CRC16-Berechnung:
1) Ein 16 Bit-Register mit FFFFh laden (alle Bits zu 1).
2) Die exklusive OR-Verknüpfung des ersten Zeichens mit dem höheren Registerbyte durchführen, das Ergebnis ins Register geben.
3) Das Register um ein Bit nach rechts verschieben.
4) Wenn das rechts aus dem Register (flag) ausgetretene Bit eine 1 ist, die exklusive OR-Verknüpfung des Erzeugerpolynoms
1010000000000001 mit dem Register durchführen.
5) Die Schritte 3 und 4 8 Mal wiederholen.
6) Die exklusive OR-Verknüpfung des nächsten Zeichens mit dem höheren Registerbyte durchführen, das Ergebnis ins Register geben.
7) Die Schritte von 3 bis 6 für alle Zeichen der Nachricht wiederholen.
8) Der Inhalt des 16 Bit-Registers ist der Redundanzcode CRC, der zur Nachricht hinzuzufügen ist.
8.1.3.4 Nachrichtensynchronisierung
Die Nachrichtensynchronisierung zwischen Sender und Empfänger wird durch das Einfügen einer Pause zwischen den
Nachrichten erzielt, die mindestens 3,5 Mal der Zeit eines Zeichens entspricht. Wenn der Empfänger für eine Zeit von 4
Zeichen nichts empfängt, sieht er die vorhergehende Nachricht als vollständig an und betrachtet das folgende Byte als das
erste einer neuen Nachricht und somit als eine Adresse.
8.1.3.5 Einstellung Serielle Leitung
Die Kommunikation sieht folgende Einstellungen vor:
•
1 Startbit
•
8 Datenbits (RTU protocol)
•
1 Stoppbit
•
no parity
Die Baudraten können unter folgenden Werten ausgewählt werden:
198 • Kapitel 8 – Serielles Protokoll
(Nicht verwendet für die Antriebe AGy)
(Nicht verwendet für die Antriebe AGy)
(Nicht verwendet für die Antriebe AGy)
(Nicht verwendet für die Antriebe AGy)
+x
+x2+1 dividiert, ausgedrückt als binäre Zahl
16
15
Benutzerhandbuch ARTDriveG