Datenaustausch zwischen CoDeSys und externer Anwendung

Wuppi

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

ich möchte vorausschicken, dass ich im Bereich SPS und CoDeSys blutiger Anfänger bin und gerade versuche, einen Überblick zu bekommen. Konkret geht es um ein Projekt, in dem wir eine WAGO SPS mit Linux-OS einsetzen wollen. Ziel ist es, digitale Ein- und Ausgänge schalten zu können und z.B. bestimmte Eingänge zu verknüpfen. Abgesehen davon sollen standardisierte Zustände nach außen gereicht werden, um von einem externen Programm genutzt werden zu können.

Man kann sich das so vorstellen, dass bei der einen Installation 12 digitale Eingänge vorhanden sind, bei einer anderen z.B. 24. Ein standardisierter Zustand nach außen hin wäre dann beispielsweise "Alle sind eingeschaltet". Das CoDeSys-Programm soll also sozusagen als Vermittler dienen zwischen einem externen Programm und der evt. recht unterschiedlichen Hardware. Vorteil dieser Konstellation wäre, dass das externe Programm gleich bleiben kann (es sorgt u.a. dafür, dass Änderungen eventbasiert weitergereicht werden, in eine DB geschrieben werden, etc.). Das CoDeSys-Programm hingegen könnte dann je nach vorhandener Hardware auch vor Ort von unseren Technikern an die jeweiligen Voraussetzungen angepasst werden (was machbar ist, im Gegensatz zur Anpassung und Neukompilierung einer C++-Anwendung unter Linux). Somit würde die CoDeSys-Ebene die jeweils unterschiedlichen Zustände "übersetzen" in einheitliche Datenpunkte, mit denen das nachgelagerte Programm unter Linux arbeiten kann.

Ebenso wäre es erforderlich, dass das auch in die andere Richtung funktioniert: das externe Programm empfängt z.B. einen Befehl "Alle einschalten" über das Netzwerk und soll diesen Befehl dann an das CoDeSys-Programm weiterreichen, welches sich dann darum kümmert, dass alle vorhandenen Ausgänge auch tatsächlich entsprechend geschaltet werden.

Meine Frage wäre jetzt, ob das grundsätzlich so umsetzbar ist? Oder gibt es andere Möglichkeiten, die sich in einem solchen Fall anbieten würden? Vielen Dank schon einmal für alle Hinweise und Tipps!
 
Hallo Wuppi,

ich weiß nicht, wie es bei Wago funktioniert, aber bei Bachmann kann ich Variablen eines Tasks mit einem anderen Task abfragen.
Ich nutze dann gerne Zeiger, die ich abfrage. Dann habe ich nur eine kleine Variable (Adresse), die ich einmalig beim Hochbooten abfrage.
Dieser Zeiger kann dann auf einzelne Variablen oder ganze Strukturen zeigen. Mann kann sich also eine Schnittstelle als Benutzerdefinierten Datentypen anlegen, welchen ich (z.B. über eine Bibliothek) in beiden Programmen konsistent halte. Dann bilde ich im einen Task einen Zeiger auf meine Struktur, im anderen frage ich diesen Zeiger ab. Schon kann ich von dem anderen Task über den Zeiger auf die Strukturdaten des ersten Programms zugreifen.
Wago stellt da bestimmt auch Funktionen zur Verfügung, mit denen Du unter den Tasks kommunizieren kannst.

Gruß
JS
 
Zurück
Oben