MQTT oder JSON mit TwinCAT2

Crashy

Level-2
Beiträge
123
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe an meiner Wärmepumpe ein Modul nachgerüstet, dass MQTT-Packages und JSON zur Verfügung stellt.

Ich habe zwar dies hier gefunden: https://github.com/tobiasbick/twincat2mqtt, aber scheinbar unterstützt meine Version die EXP´s nicht, da ich sie nicht importieren kann.

Was für Möglichkeiten gibt es noch, indem man z.B. umwandelt und dann einliest ?

Danke.
 
Zum Beispiel.
Ich würd vielleicht mal mit Node RED starten.
Hat die bessere Diagnose
Da ich derzeit ziemlich viele Projekte gleichzeitig habe, muss ich sagen, dass ich etwas faul geworden bin, was das reinarbeiten angeht.
Finde, dass Node Red nicht selbsterklärend genug ist. Habe es installiert und auch die Erweiterung für TwinCAT installiert, aber dann geht´s leider nicht ohne lesen nicht weiter.
Hatte ja eigentlich gehofft, dass QuickHMI direkt MQTT abrufen kann, aber dafür benötige ich auch einen Broker.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Habe jetzt iobroker auf dem TwinCAT-PC installiert. Abruf per MQTT von der Wärmepumpe funktionierte auf Anhieb.
Verbindung zur Beckhoff-PLC habe ich auch auf Anhieb hinbekommen. Struktur mit Variablen ist angelegt und auch als global deklariert.
Aber wie kann ich jetzt eine MQTT Variable an Beckhoff weiterleiten ? Finde dazu nix im Netz. Danke.
 
Habe jetzt iobroker auf dem TwinCAT-PC installiert. Abruf per MQTT von der Wärmepumpe funktionierte auf Anhieb.
Verbindung zur Beckhoff-PLC habe ich auch auf Anhieb hinbekommen. Struktur mit Variablen ist angelegt und auch als global deklariert.
Aber wie kann ich jetzt eine MQTT Variable an Beckhoff weiterleiten ? Finde dazu nix im Netz. Danke.

Dafür brauchst du dann Scripte.
Am einfachsten mit Blockly oder Rules.
Trigger auf Wertänderung der MQTT-Variable und dann der SPS-Variable den Wert zuweisen.
Sowas funktioniert per Noede RED einfacher :D
 
Ich habe an meiner Wärmepumpe ein Modul nachgerüstet, dass MQTT-Packages und JSON zur Verfügung stellt.

Ich habe zwar dies hier gefunden: https://github.com/tobiasbick/twincat2mqtt, aber scheinbar unterstützt meine Version die EXP´s nicht, da ich sie nicht importieren kann.

Was für Möglichkeiten gibt es noch, indem man z.B. umwandelt und dann einliest ?

Danke.

Wenn das mit den EXP Dateien bei dir nicht funktioniert, dann könntest du auch den Inhalt händisch in entsprechende Quelldateien einfügen, so wie du sonst auch neue FBs oder Typen erstellst. Das sind ganz normale Textdateien die du mit jedem Editor öffnen kannst, oder du kannst den Text auch einfach bei github herauskopieren, so viele Dateien sind es ja zum Glück nicht.

JSON verarbeiten sollte mit Twincat eigentlich auch relativ einfach möglich sein.

Ich verstehe nicht wieso das viel Aufwand ist. Und wenn, dann ist es das nur einmal und dann hast du für alle zukünftigen Projekte fertig in der Schublade und auch noch etwas gelernt dabei. Wenn ich lese, ja brauchste einen Raspberry Pi dann noch Software X und Gateway Y und Modul a und dann noch was von b musst aber kucken funktioniert nur in Version 2.01 und dann noch das, und klicki bunti schnell hier und da klicken und zusammen stöpseln.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hatte es ja dann auch händisch gemacht, aber der Aktionsaufruf klappte nicht.
Habe es mit Node-Red ja versucht, aber Beispiele und Anwendungen mit Beckhoff gibt's ja nicht gerade wie Sand am Meer.
Bei ioBroker bin ich halt schneller vorangekommen.

Muss auch noch sehen, wie ich eine PV-Batterie per Modbus RTU ausgelesen bekomme und in TCP wandle.

Ist aktuell alles ein bisschen viel auf einmal.
 
Ich verstehe nicht wieso das viel Aufwand ist. Und wenn, dann ist es das nur einmal und dann hast du für alle zukünftigen Projekte fertig in der Schublade und auch noch etwas gelernt dabei. Wenn ich lese, ja brauchste einen Raspberry Pi dann noch Software X und Gateway Y und Modul a und dann noch was von b musst aber kucken funktioniert nur in Version 2.01 und dann noch das, und klicki bunti schnell hier und da klicken und zusammen stöpseln.

Irgendwo muss bei MQTT auch noch ein Broker laufen. Hierfür kenne ich bislang keine vernünftige Lösung auf einer SPS.
Nimmt man dann z.B. ioBroker auf einem Raspi 4, dann ist dort im MQTT-Modul der Broker eingebaut.
Der Variablenhaushalt wird inklusive Status über die Admin-Oberfläche dargestellt.
Ähnlich ist es mit den Modulen für Modbus, ADS oder S7.
Da unter der Haube von ioBroker Node.js steckt, ist JSON überhaupt kein Problem.
Für mich persönlich der deutlich einfachere Weg als das alles auf einer SPS zu machen.
Letztlich irgendwie getreu dem Spruch: Für jede Aufgabe das richtige Werkzeug.

Irgendwie haben die SPS-Hersteller das ja auch erkannt und arbeiten an Lösungen wie z.B. Wago mit Linux und Docker bei den PFC oder Beckhoff mit BSD.
Dann läuft halt ioBroker oder Node RED in einem Container oder Jail auf der SPS.

Gruß
Blockmove
 
Als ich MQTT im ioBroker installiert und konfiguriert habe wurden mir ja sofort alle Variablen angezeigt.
Nur bei Beckhoff ADS stehen sie nicht drin. Dachte daher ich müsste sie händisch anlegen, aber da fehlt mir auf eine gewisse Art und Weise irgendwie die Zuweisung.

Habs jetzt auch nochmal mit Node-Red versucht.
Kommunikation zu Beckhoff besteht, aber die Befehle gehen unregelmäßig durch, wenn ich auf den Button klicke.
Es klappt immer nur direkt nach dem Anlegen oder mit Wiederholung, z.B. BOOL und STRING. REAL geht gar nicht.
Für MQTT benötige ich ja noch einen Broker, also benötige ich den ioBroker sowieso.
Ganz einfach einen MQTT-Input genommen, localhost eingestellt (Node-Red und ioBroker laufen in derselben VM) und den Topic genommen, der im ioBroker steht.
Das Ganze mit Debug "msg.payload" verbunden und mit Debugmode sehe ich auch meinen Wert.
Also als Nächstes MQTT-Input direkt mit ADS-Output verbunden.

Datasource ist wie folgt konfiguriert:
Host: IP der PLC
TargetNetID: IP der PLC mit .1.1 am Ende
Source NetID: IP der VM auf der iobroker und Node-Red laufen mit 1.1 am Ende

Kriege aber ADS-Error und die Meldung "check target NetID or routing".
Ok, vergessen Beckhoff-Dienst in iobroker zu deaktivieren.
Danach kriege ich keinen Fehler mehr, aber auch keinen Wert.
Mit Node-Red direkt an Beckhoff senden ohne über den iobroker gehen zu müssen, geht doch, oder nicht ?
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Als ich MQTT im ioBroker installiert und konfiguriert habe wurden mir ja sofort alle Variablen angezeigt.
Nur bei Beckhoff ADS stehen sie nicht drin. Dachte daher ich müsste sie händisch anlegen, aber da fehlt mir auf eine gewisse Art und Weise irgendwie die Zuweisung.

Habs jetzt auch nochmal mit Node-Red versucht.
Kommunikation zu Beckhoff besteht, aber die Befehle gehen unregelmäßig durch.
Es klappt immer nur direkt nach dem Anlegen, z.B. BOOL und STRING. REAL geht gar nicht.
Für MQTT benötige ich ja noch einen Broker, also benötige ich den ioBroker sowieso.
Ganz einfach einen MQTT-Input genommen, localhost eingestellt (Node-Red und ioBroker laufen in derselben VM) und den Topic genommen, der im ioBroker steht.
Das Ganze mit Debug "msg.payload" verbunden, aber dort wird nix angezeigt. Verbindung besteht, unter MQTT-Input steht verbunden.

Du darfst nicht glauben, dass MQTT, ADS, Node RED, ioBroker selbsterklärend sind und ohne Einarbeitung funktionieren. :ROFLMAO:
Mit Try and Error kommst du da recht schnell an die Grenzen.
Stell doch einfach deine Fragen im ioBroker-Forum.
Die Kollegen dort sind auch hilfsbereit.
 
Irgendwo muss bei MQTT auch noch ein Broker laufen. Hierfür kenne ich bislang keine vernünftige Lösung auf einer SPS.

Das muss ja auch kein voller Broker sein. Ein minimalistischer MQTT Server der nur Connect, Publish und Ping verarbeitet reicht doch völlig aus, wenn die Daten nur SPS intern verarbeitet werden. Am einfachsten natürlich ohne TLS, ist im LAN ja auch Ok. Das ist vom Aufwand her sehr überschaubar.
 
Das muss ja auch kein voller Broker sein. Ein minimalistischer MQTT Server der nur Connect, Publish und Ping verarbeitet reicht doch völlig aus, wenn die Daten nur SPS intern verarbeitet werden. Am einfachsten natürlich ohne TLS, ist im LAN ja auch Ok. Das ist vom Aufwand her sehr überschaubar.
Das würde mir ja reichen, da meine Visu im Internet erreichbar ist. Was wäre denn so eine minimalistische Lösung ? Aber ioBroker oder Node-Red sind ja auch recht überschaubar, solange man nicht alles nutzt.
Ist nur schade, dass es nicht selbsterklärend ist. MQTT läuft ja auf beiden, nur ADS noch nicht.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das würde mir ja reichen, da meine Visu im Internet erreichbar ist. Was wäre denn so eine minimalistische Lösung ? Aber ioBroker oder Node-Red sind ja auch recht überschaubar, solange man nicht alles nutzt.
Ist nur schade, dass es nicht selbsterklärend ist. MQTT läuft ja auf beiden, nur ADS noch nicht.

Modbus wäre auch noch eine Alternative zu ADS
 
Die Lösung für die Wärmepumpe heisst HeishaMon und bietet Auslesemöglichkeiten via MQTT oder JSON.
Dass man dies auch per Modbus auf die Beckhoff übertragen kann wäre mir neu, lasse mich aber gerne eines besseren belehren, zumal ich Modbus TCP auch nutze.
 
Habe jetzt Node-Red mit Mosquitto soweit am laufen, dass ich die MQTT-Daten der Wärmepumpe auslesen und auch Werte per ADS in Beckhoff schreiben kann.
Aber die Kombination aus beidem klappt nicht. Kann Zahlenwerte aus MQTT nicht in REAL-Werte per ADS schicken.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
So, MQTT via Node-Red und Weitergabe per ADS an die Steuerung funktioniert jetzt. Zwar etwas umständlich auf diesem Weg, aber was TC2 nicht kann, kann es halt nicht.
 
Zurück
Oben