Instructions

Table Of Contents
Kommunikationsprozessor und Modbus-TCP
13.9 Modbus RTU-Kommunikation in älteren Systemen (nur CM/CB 1241)
S7-1200 Automatisierungssystem
1336 Systemhandbuch, V4.2.3, 08/2018, A5E02486681-AL
Regeln für die Kommunikation des Modbus-Masters
MB_COMM_LOAD muss ausgeführt werden, um einen Port zu konfigurieren, damit die
Anweisung MB_MASTER mit diesem Port kommunizieren kann.
Wenn ein Port zum Initiieren von Modbus-Masteranforderungen verwendet werden soll,
darf dieser Port nicht von MB_SLAVE verwendet werden. Eine oder mehrere Instanzen
von MB_MASTER können mit diesem Port verwendet werden. Doch alle Ausführungen
von MB_MASTER müssen den gleichen Instanz-DB MB_MASTER für den Port
verwenden.
Die Modbus-Anweisungen nutzen keine Kommunikations-Alarmereignisse zum Steuern
des Kommunikationsprozesses. Ihr Programm muss die Anweisung MB_MASTER auf
abgeschlossene Sende- und Empfangsvorgänge abfragen.
Es wird empfohlen, alle Ausführungen von MB_MASTER für einen bestimmten Port aus
einem Programmzyklus-OB aufzurufen. Modbus-Master-Anweisungen können nur in
jeweils einem Programmzyklus oder in jeweils einer zyklischen/zeitverzögerten
Ausführungsschicht ausgeführt werden. Sie dürfen nicht in beiden Prioritätsschichten der
Ausführung bearbeitet werden. Die Vorrangunterbrechung einer Modbus-Master-
Anweisung durch eine andere Modbus-Master-Anweisung in einer Ausführungsschicht
mit höherer Priorität führt zu nicht ordnungsgemäßem Betrieb. Die Modbus-Master-
Anweisungen dürfen nicht in Anlauf-, Diagnose- oder Zeitfehlerausführungsschichten
bearbeitet werden.
Nachdem eine Masteranweisung eine Übertragung ausgelöst hat, muss diese Instanz mit
aktiviertem Eingang EN fortlaufend ausgeführt werden, bis der Zustand DONE = 1 oder
ERROR = 1 ausgegeben wird. Eine bestimmte MB_MASTER-Instanz wird als aktiv
betrachtet, bis eines dieser beiden Ereignisse auftritt. Während die ursprüngliche Instanz
aktiv ist, führt jeder Aufruf einer weiteren Instanz mit aktiviertem Eingang REQ zu einem
Fehler. Wenn die fortlaufende Ausführung der ursprünglichen Instanz stoppt, bleibt der
Anforderungszustand für die von der statischen Variable Blocked_Proc_Timeout
angegebene Zeitdauer aktiv. Nach Ablauf dieser Zeitdauer wird die nächste aufgerufene
Master-Anweisung mit aktiviertem Eingang REQ zur aktiven Instanz. Dies verhindert,
dass eine einzige Modbus-Master-Anweisung ein Monopol inne hat oder den Zugriff auf
den Port sperrt. Wenn die ursprüngliche aktive Instanz nicht während des von der
statischen Variablen "Blocked_Proc_Timeout" angegebenen Zeitraums aktiviert wird,
löscht die nächste Ausführung durch diese Instanz (ohne gesetzten Eingang REQ) den
aktiven Zustand. Falls (REQ gesetzt ist), löst diese Ausführung eine neue Master-
Anforderung aus, als wenn keine andere Instanz aktiv wäre.