Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - Befehlfunktionen

kostenlosKostenloses technisches Material

Dieser Inhalt ist direkt lesbar und eignet sich für das Grundlagenlernen und die Suche.

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - Befehlfunktionen

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 / KommunikationsplatteBestellnummer
CM1241 RS2326ES7241-1AH32-0XB0
CM1241 RS422/4856ES7241-1CH32-0XB0
CB1241RS4856ES7241-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

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung

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:

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung1

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)

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung2

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:

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung3

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:

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung4

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:

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung5

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:

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung6

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:

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung7Abbildung 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:

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung8

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.

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung9

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:
Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung10

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:
Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung11

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:

https://support.industry.siemens.com/cs/cn/zh/view/78304711

(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:

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung12

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:
Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung13

Abbildung 11. Ziehen Sie Modbus RTU-Master - Anweisung

Modbus_Comm_Load-Anweisung Die Bedeutung der einzelnen Parameter ist in der folgenden Tabelle1 dargestellt:

PinBeschreibung
REQAufstiegskende Trigger
PORTHardware-Identifier für den Kommunikationsport
BAUDBaudrate Auswahl: 3600,6000,12000,2400,4800,9600,19200,38400,57600,76800,115200
PARITYParitätsprüfung Auswahl: 0 - Kein; 1 - Paritätsprüfung; 2 - Paritätsprüfung
FLOW_CTRLFlusssteuerung Auswahl: 0 - (Standard) Keine Flusssteuerung
RTS_ON_DLYRTS-Verzögerung Auswahl: 0 - (Standard)
RTS_OFF_DLYRTS-Aus - Verzögerung Auswahl: 0 - (Standard)
RESP_TOResponse Timeout: Standardwert = 1000 ms. MB _ MASTER Die zulässige Zeit (in Millisekunden) für die Antwort der Slave-Station.
MB_DBDer 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.
DONEWenn die letzte Anforderung ohne Fehler abgeschlossen wurde, wird das DONE-Bit TRUE und bleibt für einen Zeitraum erhalten.
ERRORWenn 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.
STATUSFü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:

PinBeschreibung
ENEnabler
REQTRUE = Anforderung, Daten an die Modbus-Sklaven zu senden, empfohlen, die Rising Edge zu verwenden, um
MB_ADDRModbus-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.
MODEModus-Auswahl: Geben Sie den Anforderungstyp an (Lesen oder Schreiben).
Daten _ ADDRStartadresse in der Slave-Station: Geben Sie die Startadresse der Daten an, auf die Modbus-Slaven zugreifen soll.
Daten _ LenDatenlänge: Gibt die Anzahl der Bits oder Wörter an, auf die in dieser Anforderung zugegriffen werden soll.
Daten _ PTRDatenzeiger: Zeigt auf die Marker - oder Blockadresse, die für das Schreiben oder Lesen von Daten vorgesehen ist.
DONEComplete Bit: Nachdem die letzte Anforderung ohne Fehler abgeschlossen wurde, bleibt das DONE-Bit für einen Scanzyklus auf TRUE.
BUSYFALSE - Modbus _ Master ist nicht aktiviert:
TRUE - Der Referenz
ERRORDer 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.
STATUSWenn die letzte Anforderung ohne Fehler abgeschlossen wurde, wird das DONE-Bit TRUE und hält es für einen Zeitraum.
ERRORWenn 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.
STATUSFehlercode

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:

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung14

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:

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung15

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.

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung16

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.

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung17

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:

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung18

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:

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung19

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:
Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung20

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:

PinBeschreibung
MB_ADDRStandard-Adresse für Modbus-Slaven:
Standard-Adressbereich (1 bis 247)
Erweiterter Adressbereich (0 bis 65535)
MB_HOLD_REGEin 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.
NDRNeue 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.
DRRead 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.
ERRORWenn 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.
STATUSFehlercode

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.

Siemens S7 - 1200 Modbus RTU-Kommunikation und V3 - BefehlfunktionenAbbildung21

Bild 19. Status erhalten

Sollte man diese Informationen für ein echtes Projekt verwenden?

Gehen Sie zum Tool Center, um Nachrichten zu analysieren, CRC-Prüfungen und Geräte-Debugging zu erledigen, oder senden Sie Anforderungen für Auswahl - und Zugangsvorschläge.

Ingenieur Mitglied

Verwandeln Sie diesen Artikel in ein umsetzbares Debuggermaterial

Erweiterte Nachrichtenanalyse, Paket-Downloads, Codebeispiele, Engineering-Szenarien und Priority-Technischer Support sind für die Real-Projekt - Bereitstellung möglich.

Unbegrenzte Werkzeuge
Datenpaket und Codepaket
Vollständige Engineering Case-Basis
Vorrangiger Zugang zum technischen Support

Antwort veröffentlichen

Ihre E-Mail - Adresse wird nicht öffentlich gemacht. Erforderliche Elemente wurden verwendet * markiert.