Variablen in CoDeSys V2.3 mit externem Programm lesen und schreiben

desanta

Level-1
Beiträge
4
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag, ich arbeite gerade mit CoDeSys V2.3 (nicht meine Entscheidung). Während der Simulation würde ich gerne Variablen mit einem externen Programm lesen und schreiben können, beispielsweise mit einem Python-Script. CoDeSys und das externe Programm sollen einfach auf dem gleichen lokalen Rechner laufen. Hierbei soll keine externe Hardware involviert sein.


Um etwas genauer zu werden: Ich möchte einen echten Controller simulieren. Der Benutzer sollte ein Programm schreiben können, welches ein paar Variablen setzt (Ausgänge). Das externe Programm soll diese Variablen lesen können und daraufhin andere Variablen (Eingänge) setzen können.


Beispiel:
plc_prg.png



Das Programm inkrementiert einfach in jedem Zyklus eine Variable. Nun soll die Variable "ACTIVE" mit einem externen Programm gesetzt werden können. Daraufhin soll das Zählen also nur dann laufen, wenn das externe Programm die Variable auf "TRUE" setzt, das Ergebnis soll dann auch in CoDeSys sichtbar sein.


Ich bin mir hier nicht sicher, ob es eine Art API oder ein Kommunikationsprotokoll gibt, womit ich das umsetzen könnte.


Beste Grüße!
 
Zuletzt bearbeitet:
Ich leider gar nicht mehr. Kenn das nur noch aus meiner Instandhalterzeit. Momentan programmiere ich Jetter–Steuerungen Aber so wie es aussieht, wird demnächst noch B&R dazukommen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibt in Codesys2.x die Gateway Communication sowie OPC DA, wenngleich oldfashioned und obsolet, aber mit alten Windows Versionen laufen die heute noch. tempus fugit...
 
Danke schon mal für die Antworten und das Interesse, Codesys V3 darf ich leider nicht benutzen, es muss mit Codesys V2.X funktionieren.

Vielleicht macht es Sinn, die Frage noch mal etwas anders zu formulieren. Normalerweise kommuniziert Codesys bei uns mit realen Eingangs- und Ausgangskarten, an die Sensoren und Motoren angeschlossen sind (Lichtschranke, etc.).
Jetzt soll es möglich sein, diese reale Hardware durch eine simulierte Hardware zu ersetzen. D. h. wenn ich in Codesys einen Ausgang auf "TRUE" schalte, soll ich das in meiner geschriebenen Simulationssoftware erkennen können und daraufhin auch Eingänge in Codesys setzen können.

Das ganze muss "leider" auf Windows 8.1/10 laufen und sozusagen als "Übungssoftware" dienen.

> Gateway
Hab ich auch schon entdeckt, "Codesys Gateway Server" und "Codesys Gateway DDE Server" scheinen wohl standardmäßig mitinstalliert zu sein.
Leider fehlt mir hier generell das Hintergrundwissen, ich weiß nicht wirklich, was die Funktion des Gateways in Codesys ist.
Meine Software wäre dann hier ja der Client, der mit dem Server kommunizieren würde.
Kann ich mein Vorhaben über den Gateway umsetzen? Gibt es hier ein besonderes Protokoll oder Schema, über das man die Variablen/Eingänge/Ausgänge abfragen kann?
 
Das Problem das Ihr bekommen werdet ist, dass Ihr die TC2 Runtime auf einem PC laufen lassen wollt. Das geht nur mit einem 32Bit OS, was aber auch der Person klar sein sollte, der auf TC2 besteht. Habt Ihr keinen Rechner mit einem 32Bit OS erübrigen sich alle weiteren Überlegungen, weil es schlcht nicht gehen wird.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Das Problem das Ihr bekommen werdet ist, dass Ihr die TC2 Runtime auf einem PC laufen lassen wollt. Das geht nur mit einem 32Bit OS, was aber auch der Person klar sein sollte, der auf TC2 besteht. Habt Ihr keinen Rechner mit einem 32Bit OS erübrigen sich alle weiteren Überlegungen, weil es schlcht nicht gehen wird.
Mit TwinCAT 2 / Beckhoff arbeite ich doch gar nicht.

Ich habe gerade von PLCWinNT gehört, das kommt mit CoDeSys mitinstalliert und soll wohl eine Art virtueller PLC sein. Also im Grunde genau das, was ich benötige.
Hat jemand vielleicht schon davon gehört oder mal damit gearbeitet?
 
Mit TwinCAT 2 / Beckhoff arbeite ich doch gar nicht.

Ich habe gerade von PLCWinNT gehört, das kommt mit CoDeSys mitinstalliert und soll wohl eine Art virtueller PLC sein. Also im Grunde genau das, was ich benötige.
Hat jemand vielleicht schon davon gehört oder mal damit gearbeitet?
Sorry, mein klassischer Fehler, ich arbeite hauptsächlich mit TwinCAT. Das Ganze gilt aber auch für Codesys V2.3 und alle seine Derivate (eben auch TC2), auch da läuft die Runtime nur unter einem 32 Bit OS. PLCWinNT ist sozusagen eine SofSPS, mit dieser kann man sein Programm im gewissen Rahmen ausführen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe mein Konzept etwas überdacht und paar Unklarheiten gelöst, ich wusste anfangs nicht genau, wonach ich eigentlich suche. :)

Eine SoftSPS ist genau das, was ich brauche. Wir haben einen PFC200 (750-8202) von Wago wo normalerweise die Programme drauf laufen.
Jetzt soll das Programm aber auf einem Simulator laufen, der die physikalischen Eingänge und Ausgänge lesen und setzen, also simulieren kann.

Ich habe PLCWinNT tatsächlich ohne große Probleme zum Laufen bekommen. Dafür habe ich das Zielsystem einfach auf PLCWinNT gesetzt und die Kommunikationsparameter angepasst.
Jetzt läuft CoDeSys nicht mehr im Simulationsmodus und das Programm läuft über PLCWinNT.

Dass CoDeSys und der Rest nur als 32-bit Variante verfügbar ist, ist doch eigentlich kein Problem. Auf meiner Win10 64-bit Version laufen doch auch zahlreiche Programme in der 32-bit Variante.

Jetzt möchte ich gerne über OPC UA mit PLCWinNT kommunizieren und darüber Variablen lesen und setzen.
Das hier geht in die Richtung, die ich mir als Ziel gesetzt habe: https://www.codesys-blog.com/kommunikation/python-opc-ua-client-mit-codesys-verbinden/ (leider für CoDeSys V3)

Ich habe recherchiert und paar URLs in der Form von "opcua://localhost:4840" und "opc.tcp://localhost:4840" gesehen. Ich bin mir aber nicht sicher, ob der OPC Server von CoDeSys überhaupt läuft. CoDeSys und PLCWinNT laufen über den Port 1200, denke mal nicht, dass die OPC Kommunikation dann über den gleichen Port läuft.

Also noch mal eine andere Frage, hat jemand vielleicht schon mit PLCWinNT und OPC gearbeitet?
Alternativ habe ich erst mal UaExpert als Client installiert, um zu schauen, ob die Verbindung überhaupt funktioniert.

Viele Grüße!
 
Die PLCWinNT hat "nur" den OPC DA Server, basierend auf COM/DCOM. Stelle die Frage doch einfach im Codesys Forge Forum, denke nicht, das Du da eine andere Antwort bekommst. OPC DA oder die nicht mehr unterstützte Gateway Kommunikation.
Wer nicht mit der Zeit geht, geht mit der Zeit. ;-)
 
...ganz ehrlich es wäre halt so einfach, wenn du einfach CODESYS V3 auf deinem PFC installieren würdest und komplett alles in V3 machen würdest.
Der OPCUA server ist sowohl im PFC200 als auch in der Control Win ( das ist die Steuerung auf V3 - PLCWinNT)
Für OPC DA mit V2.3 brauchst du für den Server eine Lizenz, OPC UA Server in V3 ist im Runtime verbaut und lizensiert. ( PFC / Wago Touch Panel TP600 und Control Win)

Ich würde echt überlegen, ob das nicht ein Zeitpunkt wäre alles umzustellen, es gibt keine Neuentwicklungen mehr für CODESYS V2.3 kein OPCUA kein Profinet / kein Ethercat / kein IO-Link / kein Automation Server keine IOT Bibliotheken einfach nichts Neues und dann noch die alte betagte JAVA Webvisu in V2.3.

Wenn du das in V3 mit all den Möglichkeiten dir anschaust, kann ich es kaum nachvollziehen nicht umzusteigen.
Irgendwann müsst ihr es vermutlich eh tun.
Grüße
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich steige auch mal in das Thema ein , ich suche genau wie der Themen Starter nach einer Möglichkeit per Codesys 2.3 über OPC-DA oder UA eine Verbindung herzustellen, bis jetzt ist mir das nur Per Modbus TCP gelungen, hier kann man auch Variablen freigeben. Ein weiterer Test Variablen per OPC-DA zu lesen und zu schreiben steht noch aus. Ein Umstieg auf Codesys V3 macht wirklich Sinn, ich bereite gerade auch alles dafür vor.
 
Zurück
Oben