Kommunikation Modbus/RTU Siemens: Unterschied zwischen den Versionen

Aus wiki.vistera.de
Zur Navigation springen Zur Suche springen
Kieran (Diskussion | Beiträge)
Markierung: visualeditor
Kieran (Diskussion | Beiträge)
Markierung: visualeditor
Zeile 23: Zeile 23:
== Software ==
== Software ==


=== Modbus_Comm_Load ===
=== Modbus_Comm_Load - Baustein ===
Dieser Baustein gibt der CM-PtP Karte die gewünschten Modbus RTU Parameter vor. Folgende Parameter müssen am Baustein angegeben werden:
Dieser Baustein gibt der CM-PtP Karte die gewünschten Modbus RTU Parameter vor. Folgende Parameter müssen am Baustein angegeben werden:


Zeile 36: Zeile 36:
Für den Zweidraht-Betrieb (RS485) beispielweise muss hier "4" vorgegeben werden.
Für den Zweidraht-Betrieb (RS485) beispielweise muss hier "4" vorgegeben werden.


=== Modbus_Master ===
=== Modbus_Master - Baustein ===
Der Modbus_Master Baustein stellt die Verbindung zum Slave her und überträgt die angegebenen Datenpunkte in gewünschter Datenlänge. Am Baustein
Der Modbus_Master Baustein stellt die Verbindung zum Slave her und überträgt die angegebenen Datenpunkte in gewünschter Datenlänge. Am Baustein


Zeile 47: Zeile 47:
* DATA_LEN - Hier wird Datenlänge angegeben (wurde bei DATA_ADDR z.B. 30001 angegeben werden bei Angabe von 10 an DATA_LEN alle Werte von 30001 bis 30011 gelesen)
* DATA_LEN - Hier wird Datenlänge angegeben (wurde bei DATA_ADDR z.B. 30001 angegeben werden bei Angabe von 10 an DATA_LEN alle Werte von 30001 bis 30011 gelesen)
* DATA_PTR - Hier muss der Datenbereich angegeben werden, an dem die gelesenen oder zu schreibenden Werte liegen. Hier ist es empfehlenswert z.B. eine Struktur oder ein Array aus einem Datenbaustein anzugeben. (z.B. "Array[1...100] of Int")
* DATA_PTR - Hier muss der Datenbereich angegeben werden, an dem die gelesenen oder zu schreibenden Werte liegen. Hier ist es empfehlenswert z.B. eine Struktur oder ein Array aus einem Datenbaustein anzugeben. (z.B. "Array[1...100] of Int")
=== Lesen / Schreiben mehrerer Datenbereiche ===
Sollen mehrere von einandere getrennte Datenbereiche gelesen oder geschrieben werden müssen mehrere Aufrufe des Modbus_Master Bausteines erfolgen mit jeweils anderen Parametern.
Hierfür sollte ein Ablaufprogramm erstellt werden, siehe Bild unten. Dabei wird der REQ des Modbus_Master gestartet und wenn dieser ein DONE oder ERROR zurückgibt wird ein Zähler
hochgezählt, sodass der nächste Modbus_Master Aufruf ausgeführt werden kann. Am EN Parameter des jeweiligen Modbus_Master Bausteines wird dann die Zahl mit einem Vergleicher-Baustein
verglichen. Ist der letzte Aufruf erreicht und gibt ein DONE oder ERROR zurück, wird der Zähler zurückgesetzt und die Aufruf - Reihenfolge startet von vorne. So wird ein zyklischer Datenaustausch gewährleistet.
[[Datei:Modbus RTU Ablaufprogramm.jpg|links]]


[[Kategorie:Siemens Kommunikation]]
[[Kategorie:Siemens Kommunikation]]
__INHALTSVERZEICHNIS_ERZWINGEN__
__INHALTSVERZEICHNIS_ERZWINGEN__

Version vom 24. März 2023, 10:54 Uhr

Hardware

Allgemein

Für Modbus RTU Kommunikation setzen wir in der Regel S7-1500SP Baugruppen mit CM-PtP Karten ein. Bis jetzt waren wir dabei immer Modbus Master und

die Fremdsteuerungen die Slaves. Es kommt meistens der Zweidraht Betrieb (RS485) zum Einsatz, wobei hier die Adern auf der Karte an Klemme 12 und 14 angeschlossen

werden. Der Schirm der Leitung sollte an Klemme 15 angeschlossen werden.

Hardwarekonfiguration

Folgende Einstellungen müssen in der Hardwarekonfiguration der CM-PtP Karten vorgenommen werden:

  • Potenzialgruppe vorgeben
  • Betriebsart festlegen (z.B. RS485 bei Zweidraht-Betrieb)
  • Anschlussparameter einstellen
    • Protokoll: Freeport/Modbus
    • Datenübertragungsrate (entspechend der Einstellungen am Slave)
    • Parität (entspechend der Einstellungen am Slave)
    • Datenbits (entspechend der Einstellungen am Slave)
    • Stopbits (entspechend der Einstellungen am Slave)
  • Ermitteln der Hardware-Kennung der Schnittstelle (Klick auf die Karte, in den Eigenschaften den Reiter "Systemkonstanten" anwählen)

Software

Modbus_Comm_Load - Baustein

Dieser Baustein gibt der CM-PtP Karte die gewünschten Modbus RTU Parameter vor. Folgende Parameter müssen am Baustein angegeben werden:

  • REQ - Der REQ Befehl muss nur einmal auf TRUE getriggert werden, um die Parameter vorzugeben
  • PORT - Hier muss die zuvor ermittelte Hardware-Kennung der CM-PtP Schnittstelle angegeben werden
  • BAUD - Hier muss die Baudrate der Kommunikation vorgegeben werden
  • PARITY - Hier muss die Parität der Kommunikation vorgegeben werden (0 = Keine, 1 = Ungerade, 2 = Gerade)
  • RESP_TO - Hier kann der Antwort Timeout eingestellt werden (in ms; Standartwert 1000)
  • MB_DB - Hier wird der MB_DB Datenpunkt aus dem Modbus_Master Baustein angegeben (siehe unten)

Zusätzlich sollte mit einem "MOVE" Befehl dem Modbus_Comm_Load Datenbaustein der Parameter "MODE" vorgegeben werden.

Für den Zweidraht-Betrieb (RS485) beispielweise muss hier "4" vorgegeben werden.

Modbus_Master - Baustein

Der Modbus_Master Baustein stellt die Verbindung zum Slave her und überträgt die angegebenen Datenpunkte in gewünschter Datenlänge. Am Baustein

müssen dafür folgende Parameter angegeben werden:

  • REQ - Nur, wenn der REQ auf TRUE steht wird die Verbindung zum Slave aufgebaut
  • MB_ADDR - Hier wird die Adresse des Modbus Slave angegeben
  • MODE - Hier wird der Modus der gewünschten Datenübertragung angegeben (z.B. steht MODE 0 für das Lesen von Datenpunkten (siehe Beschreibung im TIA))
  • DATA_ADDR - Hier wird die Adresse des ersten Datenpunktes angegeben (Beim Lesen von Halteregistern (MODE 0) ist der Datenpunkt 1 = 30001)
  • DATA_LEN - Hier wird Datenlänge angegeben (wurde bei DATA_ADDR z.B. 30001 angegeben werden bei Angabe von 10 an DATA_LEN alle Werte von 30001 bis 30011 gelesen)
  • DATA_PTR - Hier muss der Datenbereich angegeben werden, an dem die gelesenen oder zu schreibenden Werte liegen. Hier ist es empfehlenswert z.B. eine Struktur oder ein Array aus einem Datenbaustein anzugeben. (z.B. "Array[1...100] of Int")

Lesen / Schreiben mehrerer Datenbereiche

Sollen mehrere von einandere getrennte Datenbereiche gelesen oder geschrieben werden müssen mehrere Aufrufe des Modbus_Master Bausteines erfolgen mit jeweils anderen Parametern.

Hierfür sollte ein Ablaufprogramm erstellt werden, siehe Bild unten. Dabei wird der REQ des Modbus_Master gestartet und wenn dieser ein DONE oder ERROR zurückgibt wird ein Zähler

hochgezählt, sodass der nächste Modbus_Master Aufruf ausgeführt werden kann. Am EN Parameter des jeweiligen Modbus_Master Bausteines wird dann die Zahl mit einem Vergleicher-Baustein

verglichen. Ist der letzte Aufruf erreicht und gibt ein DONE oder ERROR zurück, wird der Zähler zurückgesetzt und die Aufruf - Reihenfolge startet von vorne. So wird ein zyklischer Datenaustausch gewährleistet.