TIA Modbus RTU - verschiedene Netzeinstellungen bzw. Formate

Onkel Dagobert

Level-3
Beiträge
5.817
Reaktionspunkte
1.444
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe eine S7-1512SP mit einer seriellen Klemme CM PtP (6ES7137-6AA01-0BA0). Erste Tests mit einfachen RTU-Slaves waren erfolgreich. Später habe ich aber viele verschiedene und zum Teil umfangreiche Schnittstellen. Ich bin mir nicht sicher, ob das alles so zusammen passt. Erfahrung mit Modbus (TCP sowie RTU) habe ich bisher nur ansatzweise. Die Kommunikation baue ich mit "Modbus_Comm_Load" auf. Der Datenaustausch mit den Slaves erfolgt mit "Modbus_Master". So weit, so gut. Aber so einfach wird es später vermutlich nicht werden.

Meine momentan wichtigsten Fragen an euch:
  • Kann ich Einstellungen wie Datenbits, Stoppbits und Parität im laufenden Betrieb je nach Typ des Slaves umschalten? Falls ja, würde das der Klemme schaden, da die Parameter wohl in dieser gespeichert werden?
  • Wenn pro "Modbus_Comm_Load" der FB "Modbus_Master" mehrfach verwendet wird, so muss er jedes mal mit der selben Instanz aufgerufen werden?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
  • Kann ich Einstellungen wie Datenbits, Stoppbits und Parität im laufenden Betrieb je nach Typ des Slaves umschalten? Falls ja, würde das der Klemme schaden, da die Parameter wohl in dieser gespeichert werden?
Das solltest Du Siemens fragen. Denen ist ja tatsächlich zuzutrauen daß sie solchen Unfug machen und die Kommunikationsparameter in der Klemme (in einem EEPROM) speichern. Vielleicht ist die Dokumentation auch wieder mal nur schlecht, denn ganz alles wird anscheinend nicht in der Klemme gespeichert, weil bei Spannungswiederkehr und Modul Ziehen/Stecken soll Modbus_Comm_Load erneut aufgerufen werden.

Wie oft willst Du die Klemme umkonfigurieren bzw. die Kommunikationsparameter ändern? Jede Minute?

  • Wenn pro "Modbus_Comm_Load" der FB "Modbus_Master" mehrfach verwendet wird, so muss er jedes mal mit der selben Instanz aufgerufen werden?
Aus der TIA V16 Hilfe:
Regeln für die Kommunikation des Modbus-Master

Eine oder mehrere Instanzen von Modbus_Master 1) können mit diesem Port verwendet werden. Doch alle Ausführungen von Modbus_Master müssen den gleichen Instanz-DB für den Port verwenden.

1) Mit "Instanz von Modbus Master" ist hier ein Aufruf der Anweisung Modbus_Master mit gleicher Verschaltung mit einer Anweisung Modbus_Comm_Load und gleicher Einstellung für die Parameter MB_ADDR, MODE, DATA_ADDR und DATA_LEN gemeint.
Mit "gleichen Instanz-DB für den Port" ist vermutlich der Instanz-DB vom Modbus_Comm_Load gemeint, der der Modbus_Master-Instanz am Parameter MB_DB mitgeteilt werden muß.

Ich habe mit dem CM PtP keine Erfahrung, sondern alles aus der TIA Hilfe und Handbuch zusammengelesen.

Harald
 
.. denn ganz alles wird anscheinend nicht in der Klemme gespeichert, weil bei Spannungswiederkehr und Modul Ziehen/Stecken soll Modbus_Comm_Load erneut aufgerufen werden...
Aus dem Grund denke ich, es wird in der Klemme flüchtig im Ram gespeichert. Das würde ich aber gerne noch mal irgend wo bestätigt bekommen, bevor ich das rare Teilchen stresse. Vielleicht weiß es unter uns noch jemand etwas genauer. Mit dem Support ist das immer so eine Sache.

.. Wie oft willst Du die Klemme umkonfigurieren bzw. die Kommunikationsparameter ändern? Jede Minute? ..
Solange das Teil nicht anfängt zu klappern, würde ich es fortlaufend laufen lassen, wobei es aber absolut nicht zeitkritisch ist.

.. Ich habe mit dem CM PtP keine Erfahrung, sondern alles aus der TIA Hilfe und Handbuch zusammengelesen...
Vielen Dank Harald. TIA-Hilfe und Handbuch habe ich auch schon durch, so wie diverse Programmbeispiele.
 
Da würde ich aber überlegen, entsprechende Gateways auf Modbus/TCP zu verbauen (evtl. günstige Nicht-Siemens Geräte). Zum einen wird es irgendwann langsam bei größeren Datenpaketen und mehreren Teilnehmern. Zum andern kommt früher oder später ein Gerät, das nur Modbus ASCII spricht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin zusammen,

ich hatte vor kurzen auch ein vergleichbares Projekt in dem ich mehreren Modbus RTU Datenschreibern Messwerte aus der SPS gesendet habe. Wichtig war das der Modbus_Comm_Load genau einer Instanz Modbus_Master zugewiesen ist. Ich habe das wie folgt gelöst:
=> Mit 2 Trigger Bits "start" und "fertig" wurde eine Case abfrage "job" angestoßen und abgearbeitet
=> Wenn Trigger "start" und Job 0 => starte Abarbeitung FB und setze "start" zurück
=> job 0 => Keine Abarbeitung
1664282837441.png
=> Job 1 => Modbus_Comm_Load => Schnittstelle Parametrieren
1664282859133.png
1664282873120.png
=> Job 2-XX => Modbus_Master => Werte senden
1664282900706.png
=> alle Jobs erledigt=> setze "fertig"
1664282918985.png
=> das "fertig" Bit des einen FB`s ist dann das "start" Bit des folge FB`s

So kannst du je nach Modbus RTU Teilnehmer, die Schnittstelle um parametrieren. Allerdings ist die Abarbeitung schon Zeitintensiv. Bei 3 Teilnehmern je 6 sende Aufträgen dauert eine "Runde" schnell eine Minute. Bei uns ist dies Gott sei dank unkritisch....
 

Anhänge

  • 1664282780711.png
    1664282780711.png
    8,4 KB · Aufrufe: 8
Abwechselnd verschiedene RTU-Slaves an der CM PtP Klemme betreiben und mit Modbus_Comm_Load auch die Kommunikationsparameter (Baudrate, ...) umstellen ist ja nicht schwer. ABER: Laut TIA Hilfe ist bei Siemens jemand auf die glorreiche Idee gekommen, die Kommunikationsparameter stromausfallsicher in der Klemme zu speichern - und schon entsteht das Problem, daß man das nicht beliebig oft machen darf (zyklisch!) und womöglich den EEPROM-Speicher in der Klemme zerstört.

PS: vielleicht ist das auch eine Fehlinterpretation der TIA Hilfe Formulierung durch mich? siehe Beitrag #9

Harald
 
Zuletzt bearbeitet:
@Maggi, vielen Dank, nach genau dem selben Prinzip habe ich es vorbereitet.

@PN/DP, vielen Dank, demnach sollte man es tunlichst lassen. Ein anderer weiß das nicht und macht es einfach, und das auch noch erfolgreich :unsure:. Jetzt hätte ich mir gerne mal die Formulierung in der TIA-Hilfe angesehen, finde aber nichts dergleichen. Wo hast du das gelesen? Findest du dort wieder hin?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
@PN/DP, vielen Dank, demnach sollte man es tunlichst lassen. Ein anderer weiß das nicht und macht es einfach, und das auch noch erfolgreich :unsure:. Jetzt hätte ich mir gerne mal die Formulierung in der TIA-Hilfe angesehen
In der Hilfe steht nichts genaues von EEPROM und auch keine Anwendungswarnung. Aber wie soll man den extra erwähnten Fakt interpretieren, daß die Parameter von Modbus_Comm_Load in der Klemme gespeichert werden? Andererseits steht da, daß nach Spannungswiederkehr Modbus_Comm_Load erneut aufgerufen werden muß? :unsure: Vielleicht habe ich das auch falsch interpretiert?

Aus der TIA Hilfe V15.1 und V16:
Modbus_Comm_Load: Kommunikationsmodul für Modbus konfigurieren (S7-1200, S7-1500)

Hinweis
Einsatz mit CM1241
Der Einsatz dieser Anweisung mit einem CM1241 ist erst ab einem Firmware-Stand V2.1 des Moduls möglich.

Beschreibung

Die Anweisung Modbus_Comm_Load konfiguriert ein Kommunikationsmodul für die Kommunikation über das Modbus-RTU-Protokoll). Wenn Sie die Anweisung Modbus_Comm_Load in Ihr Programm einfügen, wird automatisch ein Instanz-Datenbaustein zugewiesen.

Die Konfigurationsänderungen von Modbus_Comm_Load werden nicht in der CPU sondern auf dem CM gespeichert. Bei Spannungswiederkehr und Ziehen/Stecken wird das CM mit den in der Gerätekonfiguration gespeicherten Daten parametriert. In diesen Fällen muss die Anweisung Modbus_Comm_Load erneut aufgerufen werden.

Harald
 
Zuletzt bearbeitet:
In der Hilfe steht nichts genaues von EEPROM und auch keine Anwendungswarnung. Aber wie soll man den extra erwähnten Fakt interpretieren, daß die Parameter von Modbus_Comm_Load in der Klemme gespeichert werden? Andererseits steht da, daß nach Spannungswiederkehr Modbus_Comm_Load erneut aufgerufen werden muß? :unsure: Vielleicht habe ich das auch falsch interpretiert?

Vielleicht wird es nur im RAM "gespeichert"?

Vielleicht meint Siemens damit, dass nach Ausführung solange mit diesen Werten gearbeitet wird bis zum Stromausfall oder erneutem Ausführen mit anderen Werten.
 
Vielleicht wollten sie auch nur sagen, daß die dynamischen Parameter vom Comm_Load in der CPU nicht gespeichert werden, doch das klang zu negativ/billig ("irgendwo speichern wir das bestimmt")?
Wenn man einen Analogeingang umparametriert, dann steht da doch auch nicht, daß die Parameter in der Analogeingangskarte "gespeichert" werden...

Naja, war wohl eine Fehl-Interpretation von mir. Das explizite "Speichern" der Kommunikationsparameter in der Klemme außer dem normalen Zwischenspeichern der aktuellen Parametrierung in flüchtigen Konfigurationsregistern der Schnittstelle macht ja auch keinen Sinn.

Harald
 
Zuletzt bearbeitet:
Zurück
Oben