# Wago SPS Variablen Extern auslesen



## Username2.1 (27 Juni 2018)

Hallo zusammen,

ich wollte fragen ob es eine "Schnittstelle" gibt bei e!cockpit bzw. bei der Wago SPS womit man bei einen selbstgeschriebenden Programm die Variablen auslesen kann und weiter verarbeiten kann.
Bei Beckhoff gibt es einen Nachrichtenkanal mit ADS und eine dazugehörige Bibliothek. Gibt es sowas vllt. auch bei der Wago SPS?
Falls nicht hat jemand eine Idee wie ich sowas integrieren/herstellen könnte? 
SPS Typ bzw. die Software Version ist bis jetzt noch unbekannt da ich noch keine Besitze ich würde mich dann einfach nach eure Vorschlägen richten, vielen Dank im voraus schon mal ! 
Das selbstgeschriebende Programm sollte Parallel zu den e!cockpit laufen. Alle 2 Programme laufen auf dem gleichen PC sprich auf der Wago SPS.

Viele Grüße 

Username2.1


----------



## HausSPSler (28 Juni 2018)

Hi Username2.1,
also ich würde mich auf OPCUA stürzen... ;-)
das sollte sowohl mit e!Cockpit als auch CODESYS V3 funktionieren - und das auch verschlüsselt.
Security ist ja auch bei einer modernen Anlagen ein sehr wichtiges Thema.(oder besser gesagt sollte ein wichtiges Thema sein)

Ich kann detailliert nur für CODESYS V3 sprechen ( was man ja auch auf den Wago PFC100 und PFC200 verwenden kann)
Hier ist ein OPCUA Server im Runtime mit drin - sprich du brauchst au deiner Seite einen OPCUA Client. ( davon gibt’s ja viele in allen möglichen Sprachen)


Grüße


----------



## Username2.1 (30 Juni 2018)

Vielen Dank für die schnelle Antwort.

Leider nicht das wonach ich gesucht habe da man für diesen OPC-UA Server eine Lizenz benötigt.
Ich wollte das alles ohne weitere Server und Lizenzen machen.
Ansonsten könnt ich mir auch eine SPS gleich mit der Azure Lizenz zulegen die das für mich viel einfacher gestaltet allerdings halt auch mehr Kostet.
Wollte die Kosten so gering halten wie möglich und natürlich ist auch Security bei mir wichtig.
Mein direktes Vorhaben ist Praktisch mit mein Programm die Werte lesen und die gelesenen Werte aus der SPS in die Azure zu schmeißen.

Viele Grüße


----------



## HausSPSler (30 Juni 2018)

Hallo Username2.1
Ich denke schon das es genau das ist was du suchst ;-)
Wenn du den PFC mit CODESYS V3 verwendest ist der OPCUA Server Lizenz im PFC enthalten und lizensiert!
Du brauchst keinen weiteren Server das ist alles in der CODESYS Runtime v3 mit drin - nur die Symbole (in CODESYS) konfigurieren die du über OPC UA publishen willst.
->es muss halt PFC100 oder PFC200 sein - nur die sind CODESYS V3 programmierbar 
Grüße


----------



## Blockmove (30 Juni 2018)

Wago kannn auch direkt mit MQTT in die Cloud schreiben.
In der neuen Firmware ist dies bereits integriert. Die Lib mit den Bausteinen gibt es zum Download.

Gruß
Blockmove


----------



## Username2.1 (11 Juli 2018)

Hallo zusammen,

vielen Dank für die vielen Antworten. 
Ich hab nun ein PFC 100 mit der Runtime V3 wenn es mich nicht täuscht und habe auch die Python Version 2.7.9 installiert. Eine höhere fand ich nicht. 
In der zwischen Zeit hab ich auch noch ein wenig Google benutzt und bin auf das gestoßen: https://sourceforge.net/projects/pynetvars/?source=navbar.
Soweit ich das verstanden habe greift es auf die Sockets zu. Sprich es sollte die Variablen auslesen was von e cockpit über UDP verschickt werden sollte.
Allerdings verstehe ich nicht ganz wie man das einstellen sollte, bzw. es schmeißt mir ein paar Fehlermeldungen raus bzw. alles was ich von GitHub oder ähnliches runterlade und denn Quellcode in Eclipse aufmache sehe ich hier und da ein paar Fehler und ja die Lib ist drinnen nur die Funktion entweder nicht drinnen in der Lib oder heißt vllt. anders ist das normal? Dachte immer das es fertige Funktionen wäre wo man praktisch nur noch den Pfad oder IP Adresse z.b. einstellen muss. Allerdings würde es mich nicht wundern wenn sowas wegen laufenden upcoming Updates nicht funktioniert bzw. diese Fehler dann auftauchen, das mal nur so am Rande. 

Nun zu euren Vorschlägen:
Wie muss ich mir das Vorstellen bzw. Einrichten mit dem OPC UA Server, hatte bisher nur mal eine Variable bei Beckhoff von einen OPC UA Server ausgelesen mehr leider noch nicht...
Deswegen stell ich mir das ein wenig "komisch" vor, sprich mit e cockpit einen OPC UA Server erstellen?!? Wo ich dann meine Variablen drauf schreibe? 

Das mit MQTT ist das für Azure Event Hub geeignet?

Je mehr ich lese desto mehr stellen sich mir Fragen wo ich kaum Antworten leider finde bzw. zu Fachlich ausgedrückt ist und für einen Leihen wir ich es bin kaum Verständlich ist 

Gruß
Username2.1


----------



## HausSPSler (12 Juli 2018)

Hi,
ja Netzwerkvariablen gehen auch....

Zum OPCUA Server schau mal das an:
https://www.youtube.com/watch?v=-htrsSi8VzI
Ist alles drin im PFC100 musst nur die Symbole durch anlegen einer Symbolkonfig im CODESYS Projekt freigeben und den "OPCUA Haken" setzen.

Wenn du einen PFC100 vor dir hast,  ist da erst mal die eCOCKBIT runtime drauf und aktiv, die du durch das CODESYS V3  Update PFC100 Tool ( Menu in CODESYS ) ersetzen kannst. (CODESYS V3 Runtime)
Keine Angst man kann auch jederzeit zurück also kostet dich dieser Test null komma nichts.

Also CODESYSV3 runterladen hier:
https://store.codesys.com/engineering/codesys.html
-dann am besten in CODESYS auf das Einkaufswagen Symbol/Icon klicken und dort PFC100 eingeben...
dieses PFC100 Packet installieren
- dann CODESYS neu starten, dann hast du unter Tools-"Update PFC100" Menu
- Dort den PFC100 scannen (das sucht nach der MAC ID des PFC100) 
- die CODESYS V3 Runtime drauf machen 
etc denke so kommst du weiter.

Dann musst du dich entscheiden zwischen Python OPCUA Client und vvielleicht auch die Pyhon netvars die du erwähnst.
Hier ein Beispiel Projekt und passendes Pythons script (OPC UA Client)
https://forum.codesys.com/viewtopic.php?f=23&t=6247&p=19932#p19932
je nach Gusto.

Grüße


----------



## Username2.1 (18 Juli 2018)

Hi,

vielen Dank für die ausführliche Antwort.  
Hab mich in den letzten Tage darüber schlau gemacht und möchte nun nach einer alternativ Lösung fragen, warum das?

Nun die Performance mit den OPC UA leidet zu stark darunter angeblich (Hab erfahren das man den alle paar Sekunden nur abfragen kann und das wäre zu wenig).
Das mit pyNetvars ist auch untergegangen mit der zusätzlichen Runtime Software für 100 € und da es auf dem PFC100 nur Codesys V3 gibt und die pyNetvars für Codesys V2.3 ausgelegt ist, sprich es ist mir für ein Test ein wenig gewagt. (Hab auch mit der Person geschrieben die das Modul bereit stellt, allerdings hat er es auf Codesys V3 nicht getestet somit steht das offen. Falls jemand Erfahrung hat her mit der Antwort wie was zum einstellen ist. Ich hab es bis jetzt noch nicht geschafft auf e!Cockpit es zum laufen zu bringen vor allem ist das Modul eigentlich für die Kommunikation gedacht mit einer SPS und einem PC. Ich wollte Innerhalb der SPS kommunizieren. 
Falls es mit Codesys V3 auch gehen sollte müsste es auch mit e!Cockpit gehen vermute ich mal.

Mein Ansatz wäre nun irgendwie mit Sockets zu arbeiten?!? Allerdings weiß ich nicht wie das mit der Performance ist bzw. ob das überhaupt möglich ist. Ich müsste die Variablen alle paar ms abfragen können. Ich denke wenn ich im e!Cockpit ein Client schreibe leidet mir die Kommunikation zu stark darunter bzw. das gesamte Programm. Also falls jemand noch irgendeine Idee hat her damit und bitte berichtet mich einfach, falls ich was falsch aufgefasst habe, danke 

Grüße

Username2.1


----------



## Blockmove (18 Juli 2018)

Woher bringst du denn Unsinn dass man OPCUA nur alle paar Sekunden abfragen kann?
Was heißt konkret bei dir "die Variablen alle paar ms" abfragen?
Der PFC100 ist sicher kein schlechter Controller, aber der schnellste ist er sicher auch nicht.
Mit etwas PLC-Programm bist du gleich bei >10ms Zykluszeit.


----------



## Username2.1 (18 Juli 2018)

Hab es von Kollegen gehört die auf einer EDV Schule gingen gehört.
Abfrage sollte alle 50 ms ca. sein, je schneller desto besser. 
Wie schnell könnte man denn abfragen mit Python?


----------



## Thruser (19 Juli 2018)

Hallo,

warum benutzt Du nicht einfach das Modbus Interface.

Siehe 8100 Handbuch Kapitel 9: https://www.wago.com/wagoweb/docume...coupler_controller/m07508100_00000000_0de.pdf
und e!cockpit Handbuck Kapitel 7.2.3.7.2: https://www.wago.com/de/d/7604

Einfach Doppelklick auf den Controller in der Netzwerkansicht, dann öffnet sich die Geräteansicht. Im unteren Abschnitt hast Du dann den Modbus Slave Schnittstellenkonfigurator.


unten rechts kannst Du dann bereits angelegte Variablen freigeben (mit Wahl der Modbusadresse), oder auch neue anlegen.


Gruß

/EDIT: Dann mußt Du nicht extra über Netzwerkvariablen gehen, sondern kannst die Variablen direkt ansprechen. Auch über Python: https://github.com/ljean/modbus-tk


----------



## HausSPSler (19 Juli 2018)

Ich bleibe auch dabei OPCUA wäre die richtige Technologie und auch schnell genug... das mit den paar Sekunden ist wirklich Schmarrrrrn...!
Klar Netvars gehen mit V3 und die sind kompatibel zu den V2.3 Netvars also gehen die auch mit dem Python netvars.

*Zu Modbus: *
Ist zwar echt leider weit verbreitet aber ist doch nicht euer ernst das heutzutage noch ein Bus nicht mal seine Slaves scannen kann und man durch mühsames "Slavehandbuch lesen" man 
alles einzeln raussuchen muss - es keine Gerätebeschreibungen gibt.
Auch wenn du nur mit Modbus zu Python kommunizieren willst.
Echt gruselig - dazu steh ich! Naja manchmal geht's halt wohl nicht anders...  ;-)
Grüße


----------

