Grundsatzfrage: Kommunikation zwischen mehreren SPS

CX2033

Level-1
Beiträge
1
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

in diesem Thread interessieren mich eure Erfahrungen bzgl. Kommunikation innerhalb vernetzter Anlagen.
Momentan stehe ich vor einer Grundsatzfrage:
Was ist für meinen Anwendungsfall (siehe Unten) dies Richtige Kommunikationsart?

Anwendungsfall, hier am Beispiel einer Standardanordnung so wie ich sie anordnen muss:
Eine Zentrale-SPS im LAN mit Endgerät für den Anlagenbetreiber. Auf diesem PC/Handy/Tablet wird die TwinCAT-HMI Visu angezeigt. Angebunden an die Zentrale sind weitere SPS-Kleinststeuerungen (CX7000 & CX8200 etc.) in der Pampa und erfüllen dort eher "überwachende" Aufgaben. Jeder Steuerung in der Peripherie ist genauso wie die Zentrale Steuerung im LAN eines VPN-Routers und somit auch über das VPN gut erreichbar (Mobilfunk).
Für diesen Fall scheint mir die Auswahl des geeignetsten Kommunikationsprotokolls nicht schwer. Hier wäre es doch denkbar einfach über ADS/OPC-UA/MQTT alles in die Zentrale zu Schicken und gut is....

Nur gibt´s hier einen Haken. Was ist wenn der Router in der Zentrale die Mobilfunkverbindung verliert oder der Zentrale CX eingeht? Es musst auch in diesem Fall ein Failover geben, Die SPS in der Peripherie müssen weiterhin miteinander kommunizieren können.

Was wäre hier eine geeignete Möglichkeit?
 
Mqtt ist denke ich hier gut geeignet, da deine Baugruppen schon dezentral sind..

Der Broker könnte zB zentral auf der Hauptsteuerung laufen, wenn diese ein IPC ist, als fail over könnte ein kleines System im gleichen Netz vorgehalten werden, auf welchem auch ein Broker läuft.. mehrere Clientverbindungen sollten kein Problem sein, ansonsten bei Verbindungsverlust zum Broker der Hauptsteuerung/Empfangen einer last will message dann eben die Verbindung abbauen, ändern und neu aufbauen oder einfach wechseln.

Ads ist eher die direkte Kommunikation, mit der du Variablen direkt beschreiben kannst, da hab ich leider keine Idee wie sich diese überwachen/auswerten lässt
 
Der Tipp von asci25 ist super, besonders wenn du deterministische Echtzeit brauchst,

MQTT könnte auch gut sein, braucht halt überall Lizenzen + den Broker und ist je nach Implementierung keine Rakete.

ADS-Verbindungen lassen sich überwachen: ADSRDSTATE

Nutze ADS-Kommunikation recht viel zwischen Steuerungen und obiger FB dient dazu unabhängig von einem allfälligen Datenaustausch, die Präsenz der Kommunikationspartner bspw. im 1s-Takt zu überwachen. ADSRDSTATE gibt nicht nur zurück ob die Verbindung physikalisch verfügbar ist, sondern auch in welchem Zustand die Remote-Laufzeit ist (ADSSTATE und DEVSTATE). Du könntest mit dem FB sowohl von der Zentrale aus permanent prüfen lassen, ob alle dezentralen Steuerungen online sind, aber auch in den dezentralen Steuerungen selbst prüfen, ob die Zentrale erreichbar ist, und dort ggf. auf Failover-Kommunikationspartner umschalten.

1739534193877.png
Link-Status-Überwachung und Kommunikation könnte, alles in einen All-In-One FB verpackt damit dann bspw. so aussehen:

1739533912567.png
 
Das EAP ist eine feine Sache, es gibt auch entsprechende Stati-Variablen. Wäre auch meine erste Wahl.
Leider, nur leider braucht es dafür eine Netzwerkschnittstelle die Echtzeitkompatibel ist für den EtherCAT-Treiber. Das ist beim CX7xxx nicht der Fall.

Plan B wäre dann das du von der zentralen SPS aus die dezentralen Geräte per ADS ausliest, also wie in #4 beschrieben. Hier bekommst du immer eine Rückmeldung und der ADSReadState wäre überflüssig.
Schau mal in die Bibliothek: TC2_DataExChange.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
MQTT könnte auch gut sein, braucht halt überall Lizenzen + den Broker und ist je nach Implementierung keine Rakete.
Wieso sollte der Broker keine Rakete sein? Mqtt ist dafür konzipiert auf sämtlichen kleinen Systemen stabil zu laufen..

Aber ja.. Lizenzen werden dann pro Runtime benötigt
 
Broker gibt es hier kostenlos: https://mosquitto.org/
MQTT-Clients und Bibliotheken für Sprachen gibt es auch einige. Ich nutze z.B. für Python paho.mqtt.
Selbst für Micropython gibt es einen MQTT-Client.

Wie schnell der Broker die Nachrichten vom MQTT-Client (Logo) bekommt, hängt von der CPU der Logo ab.
Mit welcher Frequenz soll die Logo denn Nachrichten verschicken?
 
Broker gibt es hier kostenlos: https://mosquitto.org/
MQTT-Clients und Bibliotheken für Sprachen gibt es auch einige. Ich nutze z.B. für Python paho.mqtt.
Selbst für Micropython gibt es einen MQTT-Client.

Wie schnell der Broker die Nachrichten vom MQTT-Client (Logo) bekommt, hängt von der CPU der Logo ab.
Mit welcher Frequenz soll die Logo denn Nachrichten verschicken?
Hier gehts um Beckhoff und deren Mqtt Client befindet sich im nicht kostenfreien IoT Paket
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Beim CX7000 sind die IoT Functions integriert(ohne Zusatzkosten)
Wäre also eine Mögluchkeit.
Das gilt aber nicht für die CX8xxx Reihe oder sonst eine Beckhoff Steuerung.
Mqtt löst somit nicht die Fragestellung vom TE
 
Zurück
Oben