Teil 1: S7-1200 Modbus RTU-Kommunikation
(I) Übersicht
Modbus verfügt über zwei serielle Übertragungsmodi: ASCII und RTU. Modbus ist eine einzelne Master-Slave - Kommunikationsmodus, Modbus-Netzwerk kann nur eine Master-Station existieren, Master-Station im Modbus-Netzwerk keine Adresse, jede Slave-Station muss eine eindeutige Adresse haben, die Adressbereich der Slave-Station ist 0 - 247, wobei 0 die Broadcast-Adresse ist, die tatsächliche Adressbereich der Slave-Station ist 1 - 247. Modbus RTU Kommunikation in der Art von Master-Slave Datenübertragung, Modbus RTU Master-Station ist die aktive Partei im Prozess der Übertragung, das heißt, Master-Station sendet Daten-Anforderung Nachricht an die Slave-Station, Modbus RTU Slave-Station Rückkehr Antwort Nachricht. S7-1200 Die folgenden Module unterstützen die Modbus RTU-Kommunikation:
| Kommunikationsmodul / Kommunikationsplatte | Bestellnummer |
| CM1241 RS232 | 6ES7241-1AH32-0XB0 |
| CM1241 RS422/485 | 6ES7241-1CH32-0XB0 |
| CB1241RS485 | 6ES7241-1CH30-1XB0 |
Hinweis:
(1) Wenn das Kommunikationsmodul CM1241 RS232 als Modbus RTU-Master - Station verwendet wird, kann nur eine Slave-Station kommunizieren.
(2) Mit dem Kommunikationsmodul CM1241RS485 als Modbus-RTU - Master-Station kann die Kommunikation mit bis zu 32 Slaven-Stationen erstellt werden.
(3) Bei der Verwendung der Kommunikationskarte CB1241RS485 muss die CPU-Firmware V2.0 oder höher sein und die Software, die verwendet wird, muss STEP7 Basic V11 oder STEP7 Professional V11 höher sein.
(ii) Modbus RTU-Version und Einschränkung
Mit der kontinuierlichen Aktualisierung der Software und der S7 - 1200 - CPU-Firmware wurden auch verschiedene Versionen der S7 - 1200 - Modbus-RTU - Anweisungen erhältlich. Benutzer müssen entsprechend der verwendeten Software und Hardware die richtige Auswahl der erforderlichen S7 - 1200 Modbus RTU-Befehle verwenden, um die Modbus RTU-Kommunikation zu implementieren, deren Software - und Hardwareanforderungen und Befehlsversionen werden unten beschrieben.
S7 - 1200 Modbus RTUBefehl
Die Modbus RTU-Befehle wird in zwei Versionen der Modbus RTU-Befehle geliefert. Wie in Abbildung 1 unten gezeigt:
- Frühere Versionen der Modbus-RTU - Befehle (Abbildung 1). Modbus-RTU - Kommunikation kann nur über das CM1241 - Kommunikationsmodul oder die CB1241 - Kommunikationsplatte durchgeführt werden.
- Neue Version der Modbus-RTU - Anweisung (Abbildung 1). Modbus-RTU - Funktionen in MODBUS (RTU) V3.0 erweitert die Funktionen der Modbus-RTU, die Anweisung unterstützt neben CM1241 Kommunikationsmodul, CB1241 Kommunikations-Board, auch die Implementierung der Modbus-RTU - Kommunikation mit dem PTP-Kommunikationsmodul auf dem PROFINET oder PROFIBUS verteilten I / O-Rack.
(2) Einschränkungen für die Verwendung der neuen Modbus RTU-Befehlversion
Neue Modbus RTU-Befehlversion Bei der Modbus RTU-Kommunikation über das CM1241 - Kommunikationsmodul oder die CB1241 - Kommunikationsplatte müssen die folgenden Bedingungen erfüllt werden:
a. Die Firmware-Version der S7 - 1200 CPU darf nicht älter als V4.1 sein
b sein. CM1241 Kommunikationsmodul V2.1 oder neuer oder CB1241

Abbildung 1. Zwei Versionen Modbus-RTU - Anweisungen
(III) Häufig gestellte Fragen
(1) S7-1200Unterstützt der Modbus-ASCII - Kommunikationsmodus?
Siemens bietet keine vorhandenen Anweisungen zur Unterstützung der oben genannten Kommunikationsmodelle an, die vom Benutzer selbst im Free-Port - Modus programmiert werden müssen.
(2) Modbus RTUWas ist der Unterschied zwischen den Versionen V1 und V2?
Die Modbus RTU-Befehlversion V2 fügt die Parameter "REQ" und "DONE" zur "MB _ COMM _ LOAD" - Befehl hinzu. Darüber hinaus ermöglicht der "MB _ ADDR" - Parameter der "MB _ MASTER" - und "MB _ SLAVE" - Anweisungen nun einen UInt-Wert für die erweiterte Adressierung.
(3) Kann man zwei verschiedene Versionen der Modbus-RTU - Anweisungen V1 und V2 gleichzeitig in einem CPU-Programm verwenden?
Es ist nicht möglich, sowohl die V1 (V1.x) als auch die V2 (V2.y) - Befehlsversionen im selben CPU-Programm zu verwenden. Modbus-Befehle für Benutzerprogramme müssen dieselbe Hauptversionsnummer haben; einzelne Befehle in einer Hauptversionsgruppe können unterschiedliche Unterversionsnummern haben.
(4) Kann das S7 - 1200 - Kommunikationsmodul CM1241 als Modbus-RTU - Master - oder Modbus-RTU - Slave-Station verwendet werden?
Konfiguration und Programmierung des S7-1200 - Kommunikationsmoduls CM1241 durch den Aufruf der Befehl "MB_COMM_LOAD", um es auf den Modbus-RTU - Kommunikationsmodus einzurichten. Das S7-1200-Kommunikationsmodul CM1241 kann als Modbus-RTU - Masterstation oder als Modbus-RTU - Slavestation durch den Aufruf der Befehl "MB_MASTER" programmiert werden.
Hinweis:Egal, ob das S7-1200-Kommunikationsmodul CM1241 als Modbus-RTU - Master - oder Slave-Station programmiert wird, müssen Sie die Befehl "MB_COMM_LOAD" aufrufen.
(5) S7 - 1200Unterstützt die CM1241 / CB1241 Modbus-RTU - Kommunikation zwei Stoppbits?
unterstützt.
Hinweis:S7-1200 CM1241/CB1241 - Eigenschaft kann ein Stop-Bit festgelegt werden, aber wenn das Modul für die Modbus-Kommunikation verwendet wird, ist diese Einstellung ein Stop-Bit ungültig, und es ist notwendig, die STOP_BITS-Stop - Bit-Wert 2 in der Hintergrund-DB der Modbus_Commload-Befehl Static zu ändern. Wie in der folgenden Abbildung 2 - 3 gezeigt:

Abbildung 2. CM1241 Konfiguration des Stop-Bit - Parameters
Hintergrund der Modbus_Commload-Befehl Static modifiziert den Stop-Bit - Wert von STOP_BITS auf 2 (Standardwert = 1)

Abbildung 3. Modbus RTU Kommunikation Stopp-Bit ändern
PART 02
Teil II: Funktionen der V3 - Anweisungen
(I) Übersicht über die Modbus-RTU - Anweisungen
In der Software der V13 - SP1 - Version von Botou stehen zwei Versionen der Modbus-RTU - Anweisungen zur Verfügung:

Abbildung 1. Zwei Versionen der Modbus RTU-Befehl
(1) Frühere Versionen der Modbus RTU-Befehl (Abbildung 1). Modbus-RTU - Kommunikation kann nur über das CM1241 - Kommunikationsmodul oder die CB1241 - Kommunikationsplatte durchgeführt werden.
(2) Neue Version der Modbus RTU-Befehl (Abbildung 1). Modbus-RTU - Funktionen erweitert in MODBUS (RTU) V3.0, die Anweisung unterstützt neben dem CM1241 - Kommunikationsmodul, CB1241 - Kommunikationsplatte, auch die Implementierung von Modbus-RTU - Kommunikation durch PTP-Kommunikationsmodulen auf einem PROFINET oder PROFIBUS verteilten I / O-Rack.
(3) Die PTP-Module, die von der neuen Modbus-RTU - Anweisung unterstützt werden, sind in Abbildung 2 dargestellt:

Abbildung 2. PTP-Module, die von der neuen Version der Modbus RTU-Befehl unterstützt werden
Modbus-RTU - Anweisungsumgebung
Die neue Version der Modbus-RTU - Anweisungen enthält Modbus-RTU - Master - und Slave-Anweisungen. Dieser Artikel beschreibt die Programmierungsschritte der Master-Slaven - Kommunikation mit der neuen Version von Modbus RTU-Befehl anhand des CPU1217C + CM1241 RS422 / 485 + ET200SP CM-PTP - Moduls. Das CPU-Rack CM1241 RS422 / 485 dient als Modbus-RTU - Slave-Station und das CMPTP-Modul im verteilten Rack ET200SP dient als Modbus-RTU - Master-Station.
1. Die Netzwerkstruktur ist wie folgt:

Abbildung 3. Modubus RTU Netzwerk-Kommunikations - Architektur-Diagramm
2. Die Hardware und Software, die in diesem Projekt verwendet werden, sind wie folgt:
(1) Hardware:
1 CPU1217C (Bestellnummer: 6ES7 217-1AG40-0XB0), Firmware-Version V4.1.3
2 CM1241 RS422/485 - Modul (Bestellnummer: 6ES7 241-1CH32-0XB0), Firmware-Version V2.1
3 24V-Stromversorgung PS307 (Bestellnummer: 6ES7307-1KA02 - 0AA0)
4ET200SP IM155 - 6PN HF (Bestellnummer: 6ES7155 - 6AU00 - 0CN0)
5CM PTP-Modul (Bestellnummer: 6ES7137 - 6AA00 - 0BA0)
(2) Software:
1 Gerätekonfiguration für die Instanz von Botou SP1 UP9
(III)
1, Konfiguration des Moduls CM1241 RS422 / 485
(1) Öffnen Sie die Geräteansicht, fügen Sie die S7-1200 CPU hinzu und finden Sie im Hardware-Katalog "Kommunikationsmodul" → "Point-to - Point" → "CM1241"(RS422/485) ", Ziehen Sie dieses Modul auf die linke Seite der CPU, wie in Abbildung 4 dargestellt:

Bild 4. CM1241 RS422 / 485 - Modul hinzufügen
Hinweis:Firmware-Version > = V2.1CM1241 RS422 / 485 - Modul unterstützt die neue Version der Modbus-RTU - Befehle.
(2) Als nächstes wählen Sie das Modul CM1241 (RS422 / 485) mit der Maus in der "Geräteansicht", konfigurieren Sie die Hardware-Schnittstellenparameter dieses Moduls in "Eigenschaften" → "Port-Konfiguration", in diesem Beispiel die Übertragungsrate = 9,6 Kbps, Parity = keine Parity, Daten-Bit = 8 - Bit-Zeichen, Stop-Bit = 1 Beispiel. Die Konfiguration des Portes CM1241 ist wie in Abbildung 5 dargestellt:
Abbildung 5. CM1241 RS422/485 Modul-Port - Konfiguration
(3) Verifizieren Sie schließlich, dass die Hardware-Identifikation 269 ist (dieser Parameter wird in der Programmierung verwendet), wie in Abbildung 6 dargestellt:

Abbildung 6 Hardware-Identifikation
(4) Darüber hinaus bietet der S7-1200 auch System - und Taktspeicherfunktionen, die für die nachfolgenden Befehle empfohlen werden, aktiviert zu werden. In der CPU „Eigenschaften" → „Allgemein" → „System und Taktspeicher" aktivieren Sie die System - und Taktspeicher-Funktionen, wie in Abbildung 7 dargestellt.

Bild 7. System - und Uhrspeicherfunktionen
2, Konfiguration des ET200SP CM PtP-Moduls
(1) Einfügen Sie einen verteilten ET200SP-Standort ein, öffnen Sie die Netzwerkansicht und ziehen Sie einen ET200SP-Standort hin und weisen Sie ihn dem entsprechenden IO-Controller (in diesem Fall CPU1217C ist der IO-Controller) zu, wie in Abbildung 8 gezeigt:

Abbildung 8. Einfügen der ET200SP-Standorte
(2) Konfiguration der ET200SP-Standorte, Hinzufügen von Signalen, Kommunikationsmodulen und Servermodulen für die ET200SP-Standorte in der Umgebung "Gerätansicht" von ET200SP, in diesem Fall nur das CM PTP-Modul und das Servermodul hinzugefügt. Wählen Sie CM PTP in der ET200SP "Gerätansicht" mit der Maus, konfigurieren Sie die Parameter der Hardware-Schnittstelle dieses Moduls in "Eigenschaften" → "Allgemein" → "Schnittstelle" → "Betriebsmodus", in diesem Fall "Betriebsmodus angegeben": "Half-Duplex (RS485) 2 - Draht-Betrieb"; "Erstzustand der Empfangsleitung": "Kein". Wie in der folgenden Abbildung 9 gezeigt:

Abbildung 9. CM PTP-Betriebsmodus
Hinweis: Das Servermodul ist auf der ET200SP-Website konfiguriert werden muss. Das Servermodul wird zusammen mit dem Schnittstellenmodul beschafft und muss nicht separat gekauft werden.Das ET200SP-Schnittstellenmodul muss IP-Adresse und Gerätenname zugewiesen werden, für detaillierte Schritte zur Konfiguration von ET200SP verteilten IO, lesen Sie bitte den Schnellstart für die Verwendung von ET200SP, dieses Beispiel beschreibt nicht mehr die relevanten Einstellungen und Schritte für die Profinet IO-Kommunikation. Download-Links für den Einsatz des ET200SP:
(3) Als nächstes konfigurieren Sie den Portkonfigurationsparameter dieses Moduls in "Eigenschaften" → "Allgemein" → "Schnittstelle" → "Portkonfiguration", in diesem Fall "Protokoll" festlegen: "Freeport / Modbus"; "Port Parameter" Einstellung: Übertragungsrate = 9,6 Kbps, Parity = keine Parity, Datenbit = 8 - Bit-Zeichen, Stop-Bit = 1 Beispiel. Die Konfiguration des Ports ist wie in Abbildung 10 dargestellt:

Abbildung 10. CM PTP Port Konfiguration
(4) Schließlich müssen Sie die Hardware-Identifikator des CM PTP-Moduls in der "Hardware-Identifikator" bestätigen, der Parameter in der Programmierung verwendet wird.
c) Software-Programmierung mit Beispielen
Modbus-RTU - Hauptstation
Die Modbus-RTU - Host-Programmierung erfordert den Aufruf der Modbus_Comm_Load-Befehl, die das Kommunikationsmodul über das Modbus-RTU - Protokoll konfiguriert, und der Modbus_Master-Befehl, der als Modbus-Hoster über einen Port kommuniziert werden kann, der durch die Modbus_Comm_Load-Befehl konfiguriert wird, und der MB_DB-Parameter der Modbus_Comm_Load-Befehl muss mit dem (statischen) MB_DB-Parameter der Modbus_Master-Befehl verbunden sein. In diesem Beispiel wird das CM PTP-Modul im verteilten Rack ET200SP als Modbus-RTU - Masterstation verwendet, und die entsprechenden Programmierschritte sind wie folgt:
(1) Fügen Sie eine FC-Funktion in OB1 ein und ziehen Sie die Anweisungen Modbus_Comm_Load und Modbus_Master in die Funktion ein. Wie in Abbildung 11 gezeigt:

Abbildung 11. Ziehen Sie Modbus RTU-Master - Anweisung
Modbus_Comm_Load-Anweisung Die Bedeutung der einzelnen Parameter ist in der folgenden Tabelle1 dargestellt:
| Pin | Beschreibung |
| REQ | Aufstiegskende Trigger |
| PORT | Hardware-Identifier für den Kommunikationsport |
| BAUD | Baudrate Auswahl: 3600,6000,12000,2400,4800,9600,19200,38400,57600,76800,115200 |
| PARITY | Paritätsprüfung Auswahl: 0 - Kein; 1 - Paritätsprüfung; 2 - Paritätsprüfung |
| FLOW_CTRL | Flusssteuerung Auswahl: 0 - (Standard) Keine Flusssteuerung |
| RTS_ON_DLY | RTS-Verzögerung Auswahl: 0 - (Standard) |
| RTS_OFF_DLY | RTS-Aus - Verzögerung Auswahl: 0 - (Standard) |
| RESP_TO | Response Timeout: Standardwert = 1000 ms. MB _ MASTER Die zulässige Zeit (in Millisekunden) für die Antwort der Slave-Station. |
| MB_DB | Der Hinweis auf den Hintergrundblock der Modbus _ Master - oder Modbus _ Slave-Befehl. Der MB _ DB-Parameter muss mit der statischen Variablen MB _ DB-Parameter in der Modbus _ Master - oder Modbus _ Slave-Befehl verbunden sein. |
| DONE | Wenn die letzte Anforderung ohne Fehler abgeschlossen wurde, wird das DONE-Bit TRUE und bleibt für einen Zeitraum erhalten. |
| ERROR | Wenn die letzte Anforderung fehlerhaft abgeschlossen wurde, wird das ERROR-Bit TRUE und bleibt für einen Zeitraum erhalten. Der Fehlercode im STATUS-Parameter ist nur für die Periode ERROR = TRUE gültig. |
| STATUS | Für Portkonfigurationsfehlercodes lesen Sie bitte die Online-Hilfe für die TIA Software oder das Systemhandbuch für S7 - 1200. |
Tabelle 1 Bedeutung des MB_COMM_LOAD-Befehlparameters
Die Bedeutung der Modbus _ Master-Parameter wird in Tabelle 2 dargestellt:
| Pin | Beschreibung |
| EN | Enabler |
| REQ | TRUE = Anforderung, Daten an die Modbus-Sklaven zu senden, empfohlen, die Rising Edge zu verwenden, um |
| MB_ADDR | Modbus-RTU - Adresse zu lösen. Standardadressbereich: 0 bis 247; erweiterter Adressbereich: 0 bis 65535. Der Wert 0 wird für die Übertragung von Nachrichten an alle Modbus-Sklaven reserviert. |
| MODE | Modus-Auswahl: Geben Sie den Anforderungstyp an (Lesen oder Schreiben). |
| Daten _ ADDR | Startadresse in der Slave-Station: Geben Sie die Startadresse der Daten an, auf die Modbus-Slaven zugreifen soll. |
| Daten _ Len | Datenlänge: Gibt die Anzahl der Bits oder Wörter an, auf die in dieser Anforderung zugegriffen werden soll. |
| Daten _ PTR | Datenzeiger: Zeigt auf die Marker - oder Blockadresse, die für das Schreiben oder Lesen von Daten vorgesehen ist. |
| DONE | Complete Bit: Nachdem die letzte Anforderung ohne Fehler abgeschlossen wurde, bleibt das DONE-Bit für einen Scanzyklus auf TRUE. |
| BUSY | FALSE - Modbus _ Master ist nicht aktiviert: TRUE - Der Referenz |
| ERROR | Der Hinweis auf den Hintergrundblock der Modbus _ Master - oder Modbus _ Slave-Befehl. Der MB _ DB-Parameter muss mit der statischen Variablen MB _ DB-Parameter in der Modbus _ Master - oder Modbus _ Slave-Befehl verbunden sein. |
| STATUS | Wenn die letzte Anforderung ohne Fehler abgeschlossen wurde, wird das DONE-Bit TRUE und hält es für einen Zeitraum. |
| ERROR | Wenn die letzte Anforderung fehlerhaft abgeschlossen wurde, wird das ERROR-Bit TRUE und bleibt für einen Zeitraum erhalten. Der Fehlercode im STATUS-Parameter ist nur für die Periode ERROR = TRUE gültig. |
| STATUS | Fehlercode |
Tabelle 2 Bedeutung des Modbus_Master-Befehlparameters
Hinweis:
1Die Anweisung Modbus_Comm_Load wird nicht im Start-Organisation - Block OB100 aufgerufen, sondern in OB1 empfohlen. Bei Aufruf der Anweisung Modbus_Comm_Load in OB1 wird das Eingangsbit „REQ" mit einem Aufstieg ausgelöst, in diesem Fall das „FirstScan" - Systemspeicherbit.
2Die statische Variable "MODE" im Hintergrundblock der Anweisung Modbus_Comm_Load wird verwendet, um den Betriebsmodus des PTP-Modules zu beschreiben, der gültige Betriebsmodus ist:
- 0 = Vollduplex (RS232)
- 1 = Vollduplex (RS422) Vierdrahtmodus (Punkt-zu - Punkt)
- 2 = Vollduplex (RS422) Vierdrahtmodus (Mehrpunkt-Hauptstation, CM PtP)(ET200SP))
- 3 = Vollduplex (RS422) Vierdrahlmodus (Mehrpunkt von der Station, CM PtP)(ET200SP))
- 4 = Halbduplex (RS485) Zwedraht-Modus
Die statischen Variablen "MODE" Standarddaten sind 0 (RS232 Vollduplex-Modus), müssen den Wert entsprechend der tatsächlichen Konfiguration des CM PTP-Modules ändern, in diesem Beispiel muss der CM PTP-Module im Halbduplex-Modus von RS485 arbeiten, müssen diese Zahl 4 ändern, wie in Abbildung 12 gezeigt:

Zeichnung 12. Modbus_Comm_Load Hintergrund-Blockstatische Variable "MODE" geändert
3 Der Parameter "DATA_PTR" der Modbus_Master-Befehl wird verwendet, um die Adresse des Datenbereichs zu verweisen, in dem Daten geschrieben oder gelesen werden sollen, und der Datenbereich unterstützt optimierte oder nicht optimierte (Standard) Datenblöcke, die nicht optimierte Datenblöcke werden empfohlen.
Der in diesem Beispiel verwendete Datenbereich ist ein nicht-optimierter Zugriff auf den Datenblock, können Sie den Block in einen nicht-optimierten Zugriff auf den Datenblock ändern, indem Sie den "optimierten Zugriff auf den Block" in den Eigenschaften des Datenblocks absagen (Rechte Maustaste-Datenblock, Wählen Sie "Eigenschaften", Absagen von "optimierter Zugriff auf den Block"), wie in Abbildung 13 dargestellt:

Abbildung 13. Block für nicht optimierten Zugriff festlegen
Wenn die Modbus_Master-Anweisung „DATA_PTR" auf einen nicht optimierten Zugriffsabschnitt verweist, muss der Eingabeparameter mit Zeiger-Methode wie P#DB3.DBX0.0 WORD5 ausgefüllt werden.
4 Wenn es mehrere modbus-RTU - Slaves im Modbus-RTU - Netzwerk oder eine modbus-RTU - Slave-Station gibt, die gleichzeitig Lese - und Schreiboperationen benötigt, müssen mehrere Modbus _ Master-Befehle aufgerufen werden, wobei die Modbus _ Master-Befehle aufgerufen werden müssen.
unten 14. Beschreibt, wie die beiden Modbus _ Master-Befehle aufrufe abfragen.

Abbildung 14. Modbus _ Master-Aufruf - Methode
(2) Einfügen von "Pull or plug of modules" Interrupt OB83
In diesem Beispiel ist das Modbus-RTU - Host-Modul auf einer verteilten IO-Standort installiert, so dass das Programm einen Ausfall der verteilten IO-Standort, einen Ausfall des CM-PTP - Moduls und andere Ausfälle berücksichtigen muss. Wenn ein Modul in eine verteilte IO-Standort eingegeben oder ausgeschaltet wird, ruft das Betriebssystem einmal OB83 auf. Die Eingabevariable "16#Event_Class" im OB83 - Interface-Bereich bestimmt das fehlerhafte Modul und den Typ: Der Ereignistyp 16#39 zeigt an, dass das Modul entfernt wurde, und der Ereignistyp 16#38 zeigt an, dass das Modul eingefügt wurde. Wenn das CM-PTP - Modul neu eingegeben wird, muss das Kommunikationsmodul durch Aufruf der Befehl Modbus_Comm_Load in der Interruption OB83 neu konfiguriert werden, wie in Abbildung 15 dargestellt.

Bild 15. Modbus_Comm_Load-Befehl in OB83 wieder aufgerufen
Hinweis:
Der Hintergrund-Block, für den die Modbus_Comm_Load-Befehl in OB183 aufgerufen wird, muss identisch mit dem Hintergrund-Block sein, für den die Modbus_Comm_Load-Befehl in OB1 aufgerufen wird.
Die Hardware-Identifikation des 2CM-PTP - Moduls kann auch in "PLC-Variablen" - - > "Systemkonstanten" abgefragt werden, wie in Abbildung 16 dargestellt:

Abbildung 16. Systemkonstante
(3) Einfügen von "Rack or Station failure" Interrupt OB86
Bei einem Ausfall und Wiederherstellung einer verteilten IO-Standort ruft das Betriebssystem OB86 einmal auf. Das Modul und der Typ des Ausfalls werden durch die Eingabevariable "16#Event_Class" in der OB86 - Schnittstelle bestimmt: Der Ereignistyp 16#39 zeigt einen Ausfall der Website und der Ereignistyp 16#38 zeigt eine Wiederherstellung der Website. Bei der Wiederherstellung der I-O - Site, auf der sich das CM PTP-Modul befindet, muss das Kommunikationsmodul durch den Aufruf der Modbus_Comm_Load-Befehl in der Unterbrechung OB86 neu konfiguriert werden, wie in Abbildung 17 dargestellt:

Abbildung 17. Aufruf der Anweisung Modbus_Comm_Load in OB86
Hinweis:
1Hintergrundblöcke, die die Anweisung Modbus_Comm_Load in OB86 aufrufen, müssen identisch mit dem Hintergrundblöcke sein, die die Anweisung Modbus_Comm_Load in OB1 aufrufen.
2 Die Hardware-Identifikatoren für verteilte I-O - Standorte können auch in "PLC-Variablen" - - > "Systemkonstanten" abfragt werden.
Modbus-RTU - Programmierung von der Station
Die Modbus-RTU - Slave-Programmierung erfordert den Aufruf der Modbus _ Comm _ Load-Befehl und der Modbus _ Slave-Befehl, wobei die Modbus _ Comm _ Load-Befehl das Kommunikationsmodul über das Modbus-RTU - Protokoll konfiguriert und die Modbus _ Slave-Befehl als Modbus-Slave über den Port, der durch die Modbus _ Comm _ Load-Befehl konfiguriert ist, kommunizieren kann. Der MB _ DB-Parameter der Anweisung Modbus _ Comm _ Load muss mit dem (statischen) MB _ DB-Parameter der Anweisung Modbus _ Slaver verbunden sein. In diesem Beispiel wird der CPU-Rack CM1241 RS422 / 485 als Modbus-RTU - Slave verwendet, und die Programmierschritte sind wie folgt:
(1) Fügen Sie eine FC-Funktion in OB1 ein und ziehen Sie die Befehle Modbus_Comm_Load und Modbus_Slave in die Funktion ein. Wie in Abbildung 18 gezeigt:

Zeichnung 18. Zögern Sie in Modbus RTU-Stationsbefehl
Modbus_Slave-Anweisung Die Bedeutung der Parameter der Anweisung wird in der folgenden Tabelle 3 dargestellt:
| Pin | Beschreibung |
| MB_ADDR | Standard-Adresse für Modbus-Slaven: Standard-Adressbereich (1 bis 247) Erweiterter Adressbereich (0 bis 65535) |
| MB_HOLD_REG | Ein Datenzeiger, der auf die Adresse des Modbus-Haltregisters verweist, das sowohl M-Speicher als auch DB-Datenbereich sein kann. Wenn Modbus das Register als DB-Datenbereich behält, unterstützt der DB-Datenbereich den optimierten Zugriff auf Datenblöcke oder nicht optimierte Zugriff auf Datenblöcke, und es wird empfohlen, den nicht optimierten Zugriff auf Datenblöcke anzuwenden. |
| NDR | Neue Daten verfügbar: FALSE - Keine neuen Daten TRUE - bedeutet, dass neue Daten vom Modbus-Master geschrieben wurden Wenn die letzte Anforderung ohne Fehler abgeschlossen wurde, wird das NDR-Bit TRUE und hält für einen Zeitraum. |
| DR | Read Data: FALSE - Keine neuen Daten TRUE - bedeutet, dass die Befehl bereits die vom Modbus-Master empfangenen Daten in der Zielzone speichert hat. Wenn die letzte Anforderung ohne Fehler abgeschlossen wurde, wird das DR-Bit TRUE und hält für einen Zeitraum. |
| ERROR | Wenn die letzte Anforderung fehlerhaft abgeschlossen wurde, wird das ERROR-Bit TRUE und bleibt für einen Zeitraum erhalten. Wenn die Ausführung aufgrund eines Fehlers beendet wird, ist der Fehlercode im STATUS-Parameter nur für die Periode mit ERROR = TRUE gültig. |
| STATUS | Fehlercode |
Tabelle 3 Bedeutung des Modbus_Slave-Befehlparameters
Hinweis:
1Die Modbus_Comm_Load-Befehl wird nicht im Start-Organisation - Block OB100 aufgerufen, sondern in OB1 empfohlen. Bei Aufruf der Anweisung Modbus_Comm_Load in OB1 wird das Eingangsbit „REQ" mit einem Aufstieg ausgelöst, in diesem Fall das „FirstScan" - Systemspeicherbit.
2Die statische Variable "MODE" im Hintergrundblock der Anweisung Modbus_Comm_Load wird verwendet, um den Betriebsmodus des PTP-Modules zu beschreiben, die gültigen Betriebsmodus sind:
- 0 = Vollduplex (RS232)
- 1 = Vollduplex (RS422) Quad-Leiter - Modus (Punkt-zu - Punkt)
- 2 = Vollduplex (RS422) Quad-Leiter - Modus (Multipoint-Master - Station, CM PtP (ET200SP))
- 3 = Vollduplex (RS422) Vierdrahtmodus (Mehrpunkt von der Station, CM PtP)(ET200SP))
- 4 = Halbduplex (RS485) Zwedrahtmodus
Die statische Variable „MODE" ist standardmäßig 0 (RS232 Full-Duplex - Modus), müssen Sie den Wert gemäß der tatsächlichen Konfiguration des CM1241 RS422 / 485 - Moduls ändern, in diesem Fall CM1241 RS422 / 485 - Modul in der Arbeit im RS485 Halb-Duplex - Modus müssen Sie den Wert auf 4 ändern, wie Sie die statische Variable "MODE" ändern, wie in Abbildung 12 dargestellt.
3Die „MB_HOLD_REG" der Modbus_Slave-Befehl wird auf die Adresse des Datenbereichs des Modbus-Haltregisters verwiesen, der sowohl für den optimierten Zugriff als auch für den nicht optimierten (Standard) Zugriff unterstützt, der nicht optimierten Zugriff empfohlen wird. Der in diesem Beispiel verwendete Datenbereich ist ein nicht-optimierter Zugriffsabschnitt, und die Eingabeparameter müssen mit Zeiger-Methode wie P#DB6.DBX0.0 WORD 100 ausgefüllt werden. Wie Sie den "optimierten Blockzugriff" in den Eigenschaften eines Datenblöcks deaktivieren können, wird in Abbildung 13 dargestellt. Das Programm in die SPS herunterzuladen und das CM1241 RS422 / 485 mit dem CM PTP-Modul mit dem Profibus DP-Kommunikationskabel verbinden, um die Modbus-RTU - Kommunikation zu testen.
f) Häufige Fragen
1. Gibt es Einschränkungen für die Verwendung der neuen Modbus RTU-Befehlversion?
Die Modbus RTU-Kommunikation über das CM1241 - Kommunikationsmodul oder die CB1241 - Kommunikationsplatte muss folgende Voraussetzungen erfüllen:
a. Die Firmware-Version der CPU S7 - 1200 darf nicht älter als V4.1;
b. Die Firmware des CM1241 - Kommunikationsmoduls oder der CB1241 - Kommunikationsplatte darf nicht älter als V2.1 sein.
Die S7-1200 V4.0 - Firmware-CPU kann über die Firmware auf die V4.1 - Version aktualisiert werden, und das CM1241 - Kommunikationsmodul der V2.0 - Firmware kann auch über das Firmware-Update auf die V2.1 - Version aktualisiert werden. Informationen zu den Methoden für das Firmware-Update finden Sie unter S7 - 1200 Firmware-Update.
2. Welche Rolle spielt die statische Variable "MODE" im Hintergrundblock der Anweisung Modbus_Comm_Load? Warum sollte man diese Variablen in der Regel ändern?
Die neue Version der Modbus-RTU - Anweisung erweitert die Funktionalität der Modbus-RTU - Anweisung, die neben der Unterstützung des CM1241 - Kommunikationsmoduls und der CB1241 - Kommunikationsplatte auch die Modbus-RTU - Kommunikation mit PTP-Kommunikationsmodulen auf einem PROFINET - oder PROFIBUS-Distributed - I / O-Rack unterstützt. Das PTP-Kommunikationsmodul auf dem verteilten I / O-Rack kann eine Vielzahl von Betriebsmodi unterstützen, zum Beispiel das ET200SP CM PtP-Modul (Bestellnummer: 6ES7137 - 6AA00 - 0BA0) kann eine Vielzahl von Betriebsmodi wie RS232, RS485 und RS422 unterstützen. Die statische Variable „MODE" im Hintergrundblock der Modbus_Comm_Load-Befehl wird verwendet, um den Betriebsmodus des PTP-Moduls zu definieren. Der Standardwert für „MODE" ist 0, was für den „Vollduplex (RS232)" Betriebsmodus steht, und in der tatsächlichen Projektkonfiguration muss diese Variable entsprechend dem tatsächlichen Betriebsmodus geändert werden.
3. Kann die Anweisung Modbus_Comm_Load im Startup-Organisationsblock OB100 aufgerufen werden?
Die Anweisung Modbus_Comm_Load wird nicht empfohlen, im Startup-Organisation - Block OB100 aufzurufen. Die neue Version der Modbus-RTU - Anweisung erweitert die Funktionalität von Modbus-RTU und unterstützt die Modbus-RTU - Kommunikation durch PtP-Kommunikationsmodule auf einem PROFINET - oder PROFIBUS-Distributed - I / O-Rack. Das Betriebssystem benötigt Befehle wie Lesen von Datensätzen und Schreiben von Datensätzen, um die Kommunikation mit Modbus RTUs in einem verteilten E / A-Rack zu ermöglichen. Die Befehle zum Lesen von Datensätzen und Schreiben von Datensätzen sind asynchrone Lese - und Schreibbefehle, deren Ausführung N Scanzyklen benötigt, daher wird es nicht empfohlen, die Befehle Modbus_Comm_Load im Start-Organisationsblock OB100 aufzurufen.
4. Wie finde ich einen Fehlercode bei Modbus RTU-Kommunikationsfehler?
Bei der Modbus_Master-Befehl zum Beispiel wird das "ERROR" - Ausgabebit der Modbus_Master-Befehl TRUE, wenn ein Kommunikationsfehler auftritt, aber es bleibt nur für einen Scanzyklus, so dass der Fehler nicht bei der Überwachung durch das TIA-Software - Programm nachgefragt werden kann. Der Fehlercode im Parameter „STATUS" der Modbus _ Master-Anweisung ist nur für einen Scan-Zyklus mit „ERROR" = TRUE gültig, um den Fehlercode für einen Modbus-RTU - Kommunikationsfehler zu erhalten, können wir die folgende Abbildung 19 verwenden. Methode der Programmierung.

Bild 19. Status erhalten
Antwort veröffentlichen