Modbus TCP -> RTU Gateway funktion

Nost

Level-2
Beiträge
256
Reaktionspunkte
62
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
Gibt es eine möglichkeit über eien Bibiliothek oder über das Linux im Hintergrund auf einem Wago Controller (CC100) eine Modbus TCP->RTU Gateway funktion zu realisieren. Am Controller ist ein Modbus Slave eine weitere SPS Angebunden eines dritterstellers. Diese kann per MOdbus RTU Programmiert werden. Damit dies aus der Ferne auch klappt suchen wir eben so eine Funktion.
Die nachgeschaltete Steuerung hat nur RTU und nicht TCP. Eine zusätzlicher Gateway wäre natürlich eine möglichkeit, aber wenn man es direkt mit der Steuerung hiinbekommen würde wäre es ideal.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Eine Idee wäre es statisch zu programmieren. Das bedeutet es ist bekannt welche Anfragen der Modbus TCP Client sendet.
Dann wurde ein Modbus RTU Client selbstständig diese Anfragen an die Modbus RTU Slaves senden. Die Daten werden dann asynchron mit dem Modbus TCP Server ausgetauscht.

Wenn es universell sein soll, wird es schwieriger da es keinen fertigen Modbus Server gibt, der seine Antwort verzögert um die Antwort vom Modbus RTU Client abzuwarten.

Da die Modbus Anfragen meist zyklisch gesendet werden, könnte der Modbus TCP Server auch die eingehenden Anfragen auflisten und als Jobliste dem Modbus RTU Client übergeben. Danach erfolgt der Datenaustausch wieder asynchron.
So würde die Gatewayfunktion nach einer kurzen Einspielphase laufen.

Je nach Anzahl der Modbus RTU Server kann es aber komplex werden.

Dann vielleicht doch einen klassischen TCP Server mit angebundenem Modbus RTU Client...
 
Selber programmieren. z.B. mit https://github.com/alongL/modbusServer oder wenn man Python kann, dann z.B. https://pymodbus.readthedocs.io/en/latest/.

Python sollte auf dem Controller vorinstalliert sein. Möglicherweise eine ältere Version.
Ggf. könnte man auch MicroPython verwenden, aber soweit ich weiß, ist machine.UART für den UNIX-Port nicht implementiert.

Um Programme kompilieren zu können, benötigt man das SDK von Wago für den CC100.
Hier ist das SDK: https://github.com/WAGO/cc100-firmware-sdk

Hier noch ein Artikel über Feldbusse: https://www.linux-magazin.de/ausgaben/2018/04/feldbusse/
 
RS485 ist die physikalische Schnittstelle, das Protokoll für die Programmierung ist aber bestimmt ein anderes als Modbus.

Wie kommst du darauf? Wenn von RTU die Rede ist, ist Modbus gemeint. RTU == Remote Terminal Unit: RS-485, RS-422 oder RS-232
Modbus kann via TCP/UDP und RTU transportiert werden. Das Protokoll stammt aus dem Jahr 1979 und ist wahrscheinlich deswegen vielen jungen Menschen unbekannt.

Es gibt noch andere Wege, wie man lokal mit dem Controller kommunizieren kann, wenn man direkten Zugriff auf das OS des Controllers hat.

OPCUA und MQTT wäre auch noch eine Möglichkeit mit dem Controller Daten auszutauschen.
Für MQTT benötigt man aber einen Broker und den würde ich nicht auf dem Controller laufen lassen.

Am einfachsten ist wahrscheinlich NVL.
 
Am Controller ist ein Modbus Slave eine weitere SPS Angebunden eines dritterstellers. Diese kann per MOdbus RTU Programmiert werden. Damit dies aus der Ferne auch klappt
Wie programmiert denn der Dritthersteller seine SPS vorort? Steckt er sich da auf deinen RS485 drauf? Oder wie kommst du drauf, dass diese SPS "per Modbus RTU programmiert werden kann"?
Kannst du uns vielleicht verraten, was für eine SPS das ist?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Also, das gibt es wirklich. Ich meine das mal bei einer China SPS gesehen zu haben. Die Telegramme waren aufgebaut wie Modbus Telegramme, aber Funktionscode und die Datenbytes waren jenseits von Gut und Böse. Das könnte man natürlich auch auf Modbus TCP darstellen, wenn das Gateway keine Funktionscodes prüft, also wirklich transparent ist.
 
GIbt ja diverse Standalone Umsetzter. Bei anderen Produkten geht es auch über die Steuerung bzw. das HMI.
Schon gesehen bei Kinco HMIs, oder bei TM172P Steuerungen. Da kann man sich per Ethernet Verbinden und sich auf den RTU Teilnehmer durchtunneln.
 
... und manche Schnittstellen (z.B. RS485) können auch mehrere Protokolle, oft sogar gleichzeitig, wenn die Protokolle untereinander kompatibel sind --- Modbus RTU aber eher nicht

z.B. eine S7-200 kann auf seinen RS485-PPI-Schnittstellen mehrere Protokolle, auch Modbus RTU. Sobald die Schnittstellen auf Modbus RTU eingestellt sind, dann gehen über diese Schnittstellen keine Programmierfunktionen mehr.

So auch hier bei der unbekannten geheimen SPS: es wäre sehr unwahrscheinlich, dass die SPS bei laufendem Modbus RTU Bus auch noch programmiert werden kann. Und falls doch möglich, dann müsste der Umsetzer Modbus TCP zu "irgendwas über Modbus RTU" selbst in der Wago prgrammiert werden. Es kann ja durchaus sein, dass die SPS auf ihrer RS485-Schnittstelle Modbus RTU kann, und über diese Schnittstelle auch programmiert werden kann - aber vermutlich nicht gleichzeitig. Nachfragen dazu werden vom Fragesteller nicht beantwortet --> also die hochwahrscheinliche Antwort: "Geht nicht"
 
Zuletzt bearbeitet:
Zurück
Oben