# Zugriff unter Windows mit Python



## Spsmatze (25 Oktober 2022)

Hallo an Alle!

Ich habe unter Windows 10 und Python Zugriff auf meine Siemens-Projekte (Datenbausteine) per Ferneinwahl über Ethernet.
Nun möchte ich das auch für die WAGO-Projekte haben, wobei ich ebenfalls über Ethernet-Ferneinwahl auf lokale Daten
z. B in globalen Datenbausteinen oder den Persistent Variablen zugreifen möchte.
Gibt es für WAGO (CPU 8212) auch so etwas, wie für die Siemens-CPS (Snap7 ?)

Vielen Dank im Voraus
spsmatze


----------



## Tschoke (25 Oktober 2022)

Ja.
Wago SPSen sind Codesys.
Zum Zugriff auf Codesys gibt es den PLCHandler









						PLCHandler
					

Der PLCHandler ist eine komfortable Softwareschnittstelle (API) zur Kommunikation zwischen einer CODESYS-konformen Steuerung und Clientsystemen. Mit dem...




					de.codesys.com


----------



## Tschoke (25 Oktober 2022)

Alternativ könntest du aber auch Modbus TCP benutzen


----------



## Spsmatze (25 Oktober 2022)

Hallo Tschoke,
vielen Dank für die schnelle Antwort, aber der PLC-Handler ist nicht das wonach ich suche, denn:

Ich benötige einen mittels Python per Skript erstellbaren Zugang.
Der Datenzugriff erfolgt von Büroleuten über eine entsprechende Oberfläche. (Das sind die Details...)
Diese haben natürlich keine Kenntnisse über SPS und so weiter.
Ein extra Software kann ich hier auch nicht verwenden. 
Daten sollen als CSV-Datei in einem speziellen Format in EXCEL eingebunden werden.
Daher muss ich den Datenzugriff "im Hintergrund", so wie bei Snap7 möglich programmieren können.
Mal sehen, ob es hier nicht doch noch Möglichkeiten gibt....

M. f. G.
spsmatze


----------



## Spsmatze (25 Oktober 2022)

Modbus-TCP: gute Idee.
Aber wie - leider keine Ahnung - und dann unbedingt in Python unter Win10...


----------



## Tschoke (25 Oktober 2022)

Spsmatze schrieb:


> Ein extra Software kann ich hier auch nicht verwenden.


Der PLCHandler ist keine "extra Software". Es ist genau so eine Bibliothek (SDK) wie Snap7.
Wobei ich nicht weiß wie die Einbindung in Python funktioniert.

Achso, OPC-UA wäre auch noch eine Möglichkeit.


----------



## Spsmatze (25 Oktober 2022)

Bin für jeden Tipp dankbar - vielen Dank.
Für heute ist erst mal Feierabend - Bis morgen.
spsmatze


----------



## KLM (25 Oktober 2022)

Wenn ich das richtig verstehe liegen auf dem Controller CSV-Dateien, die Du via Win10-basiertem Python Skript downloaden willst. In diesem Fall bietet sich (S)FTP an. Der Controller ist ab werk ein Server und für Python findet sich sicherlich etwas fertiges für einen FTP Client.


----------



## Tschoke (25 Oktober 2022)

Ich hab das ganz anders verstanden 
OK, bleibt spannend 🍿


----------



## Oberchefe (25 Oktober 2022)

Es gab mal von Wago die 759-312, eine Modbus DLL zu kaufen, die dürfte aber mit Windows 10 eher nicht mehr funktionieren.

Aber wie oben bereits geschrieben würde ich mir mal Modbus TCP anschauen, da gibt's auch was passendes für Python, wie z.B.


			PyModbus - A Python Modbus Stack — PyModbus 3.0.1 documentation


----------



## KLM (25 Oktober 2022)

Ich finde es nicht ganz eindeutig. CSV heißt für mich Zugriff auf's Dateisystem, aber oben steht was von Zugriff auf Variablen. Für's Dateisystem drängt sich FTP förmlich auf. Für den Zugriff auf Variablen ist der PLChandler die teuerste Lösung und alles andere (OPC UA, Modbus, etc.) hängt vom Aufwand in Python ab.
Die Modbus DLL gibt es seit Jahren schon nicht mehr. War glaube ich zuletzt mit Win7 kompatibel.


----------



## Oberchefe (25 Oktober 2022)

> Ich finde es nicht ganz eindeutig. CSV heißt für mich Zugriff auf's Dateisystem, aber oben steht was von Zugriff auf Variablen.



Ich verstehe das so, dass es auf den PCs noch CSV Dateien sind, deren Inhalt dann in Variablen in der Steuerung landen sollen. Das könnte man prinzipiell über FTP und Dateisystemfunktionen in der Steuerung machen, einfacher sollte aber der direkte Weg über Modbus TCP sein.


----------



## Thruser (25 Oktober 2022)

Hi,


Spsmatze schrieb:


> Modbus-TCP: gute Idee.
> Aber wie - leider keine Ahnung - und dann unbedingt in Python unter Win10...



Du könntest ja vielleicht eine Siemens SPS dazwischen schalten. Die fragt und schreibt  per Modbus die Werte aus/in die Wago SPS und Du kannst dann mit SNAP7 mit der Siemens SPS wie gewohnt kommunizieren.

Oder aber Du gibst mal in die Suchmaschine Deiner Wahl folgende Suchbegriffe ein: python modbus

Gruß


----------



## Spsmatze (26 Oktober 2022)

Hallo an Alle!

Ich möchte hier noch einmal - möglichst eindeutig - darlegen, was mein Ziel ist:
1. Ich arbeite ausschließlich unter dem Betriebssystem Windows (10).
2. Ich möchte den Zugriff auf WAGO-Controller mit Python (s. o. unter Windows) selbst als Skript erstellen.
3. Der Zugriff auch die WAGO-CPUs soll beliebige Daten aus globalen Variablen oder Funktionsbausteinen auslesen können,
   so wie man auf SIEMENS Datenbausteine zugreift. (Auf dem Controller soll also Nichts dahingehend ausgeführt werden müssen)
4. Die Verbindung zur WAGO-CPU muss über eine Ethernet-Verbindung laufen, so wie bei Snap7.
5. Die Verbindung zur WAGO-CPU wird i. d. R. über einen VPN-Tunnel (eCatcher) hergestellt. (Ferneinwahl)
Ich benötige also eine Art "WAGO-Snap7" - keine anderen Lösungen.
Ein Modbus-Zugriff würde ja eine entsprechend vorbereitete CPU voraus setzen und ältere Projekte damit ausschließen.
Der Zugriff auf die CPU selbst ist nur eine Teillösung, die in eine Benutzeroberflöche integriert wird, um der Büroabteilung
zu ermöglichen auf verschiedene Projekte (dann auch mit WAGO-CPUs) z.B. Verbrauchsdaten und Zählerstände abzurufen.
Bisher landet das auf meinem Tisch mit "mach mal schnell.." Darum meine Bemühungen mir das vom Hals zu halten.
Was da abgefragt wird, kann von Projekt zu Projekt sehr unterschiedlich sein!

Gesuch habe ich bereits stundenlang - aber wenn, scheint es so etwas nur unter Linux-Systemen oder dem Raspi zu geben.
Für Windows habe ich leider nichts finden können - darum meine Anfrage im Forum.

Nochmals vielen Dank für Eure Beiträge und Tipps!
Ich hoffe immer noch auf eine passende Lösung.

spsmatze


----------



## Tschoke (26 Oktober 2022)

Spsmatze schrieb:


> Ich hoffe immer noch auf eine passende Lösung.


Und warum ist der PLCHandler nicht passend?
Ist doch genau das was du suchst.
Eine Bibliothek die mit der SPS das native Protokoll spricht. Genau wie Snap7.


----------



## Spsmatze (26 Oktober 2022)

Wie ich beim PLCH Handler gelesen habe konstet der Geld - das ich nicht habe und nicht bekomme.
Gibt es ggf. eine Doku, wie ich ihn in die bestehende Lösung integrieren kann?
Dann hätte ich auch "nach oben" Argumente zum Erwerb des PLCH.


----------



## DeltaMikeAir (26 Oktober 2022)

Spsmatze schrieb:


> Wie ich beim PLCH Handler gelesen habe konstet der Geld - das ich nicht habe und nicht bekomme.





Spsmatze schrieb:


> Ich möchte hier noch einmal - möglichst eindeutig - darlegen, was mein Ziel ist:
> 1. Ich arbeite ausschließlich unter dem Betriebssystem Windows (10).
> 2. Ich möchte den Zugriff auf WAGO-Controller mit Python (s. o. unter Windows) selbst als Skript erstellen.
> 3. Der Zugriff auch die WAGO-CPUs soll beliebige Daten aus globalen Variablen oder Funktionsbausteinen auslesen können,
> ...


dann hast du Punkt 6 vergessen
6. "Kosten darf das Ganze nix"


----------



## Spsmatze (26 Oktober 2022)

Ja, Punkt 6 ist zwar nicht technisch aber dafür kaufmännisch wichtig.
Von "oben" habe ich wenig zu erwarten, denn ich möchte ja "nur" meine Arbeit effizienter machen können.
Das "WIE" interessiert ja leider nicht.
Darum suche ich ja nach "Offene Quelle-Lösungen", um es mal deutsch ausdrücken zu dürfen...

spsmatze


----------



## Blockmove (26 Oktober 2022)

Wenn der Controller mit eCockpit (Codesys 3.5) programmiert ist, dann kannst du OPC UA nutzen.
Dafür gibt es - meines Wissens - auch für Python Open Source Lösungen


----------



## Spsmatze (26 Oktober 2022)

Gibt es einen Link, wo ich OPC UA herunter laden kann?
Möglichst auch mit einer ladbaren (deutschen?) Doku?
Ich finde mich auf den Webseiten von Python leider nicht so recht durch...sorry.
M. f. G.
spsmatze


----------



## dingo (26 Oktober 2022)

Vielleicht ist die Wago Open Source Community interessant für Dich








						WAGO Open Source Community
					

The Community for deploying Open Source Software in Industrial Applications




					www.wago.community


----------



## Spsmatze (26 Oktober 2022)

mhh... Habe was gefunden! PyOPC-0.1a.zip.

So, nun muss ich nur noch herausfinden, wie ich von einem WAGO Controller 8212
im Netzwerk  192.168.200.xxx im eCockpit Modul "Global.rMonatsverbrauch" auslesen kann... oder auch
"PersistentVars.PID_Buehne_ZOV_Zuluft_1_2_Typconfig.rIstwertIrgendwas"
Das wird erst mal eine Aufgabe...
Vielen Dank erst mal
spsmatze


----------



## Spsmatze (26 Oktober 2022)

Hallo Dingo!
Ja, das WAGO-Forum wäre wohl die richtige Adresse, nur leider kann ich mich dort nicht verständlich machen.
Ich lebe im flaschen Land und spreche die falsche Sprache. Das ist deprimierend.
Aber eines habe ich dort sofort gefunden. Selbst "weit-weit-weg" gibt es die Probleme mit den abschmierenden eCockpit nach dem letzten Update.
Ich hoffe, der Druck wird hoch genug, damit es schleunigst einen Patch gibt....
Man kann ja gar nicht mehr damit arbeiten - und ich habe sozusagen Akkordleistung zu bringen. Projekte -Projekte - los, los, los...
(PS: Ohne die benötigte Hardware dieses Jahr auch nur zu sehen zu bekommen...)
Mal sehen, was noch kommt oder auch nicht

spsmatze


----------



## Tschoke (26 Oktober 2022)

Blockmove schrieb:


> Wenn der Controller mit eCockpit (Codesys 3.5) programmiert ist, dann kannst du OPC UA nutzen.
> Dafür gibt es - meines Wissens - auch für Python Open Source Lösungen


Ich komm nur selten mit codesys in Kontakt. Mich würde zum opc ua server noch interessieren:
1. ist der immer auf der SPS, oder muss man was installieren, hochladen...
2. Wenn 1 ja: ist der opc ua server immer aktiv oder muss er aktiviert werden
3. Müssen die Tags im opc ua server konfiguriert werden oder wird standardmäßig der ganze Baum bereitgestellt


----------



## KLM (27 Oktober 2022)

Beim 750-8xxx Controllern, TP600 Panels und Edge Controller ist der OPC UA Server ab Werk vorhanden. Er muss im Web-Interface aber eingeschaltet werden (kann sein, dass er das ab Werk schon ist - bin grad nicht ganz sicher) und in der Applikation muss man eine Sysmbolkonfiguration einfügen und dort sagen welche Variablen, Instanzen, Listen oder Programme man mit welchen Zugriffsrechten veröffentlichen will. Das sind wenige Mausklicks, aber ohne die kleine Programmanpassung geht es nicht.


----------

