Kommunikation Modbus/RTU Siemens
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
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
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")