Logi.Cad3 > Zugriff auf berechnete Variablen von aussen

Für Themen rund um logi.RTS und logi.CAD 3
Post Reply
MaSiMO2020
Posts: 13
Joined: 05 Feb 2020, 07:53

Logi.Cad3 > Zugriff auf berechnete Variablen von aussen

Post by MaSiMO2020 »

Liebes logi.cals Team

Ich hatte bereits im Forum zu allgemeinen Softwarefragen eine Anfrage bzgl. der Möglichkeiten einer Anbindung von Node-Red Dashboard an ein SPS-Program gestellt, das mit Logi.Cad3 ST erstellt wird: https://revolution.kunbus.de/forum/view ... 7edc93f10d .

Hier nochmal die grundsätzliche Frage: Wie realisiere ich einen Echzeitzugriff (lesen/schreiben) auf z. B. Variablen im SPS-Programm, die nicht mit einer Adressierung an DIO/AIO etc. Module angebunden sind (im SPS Programm berechnete Variablen etc.). Zum Beispiel wird bei der Intialisierung eines Roboters eine Referenzfahrt durchgeführt, die den Ursprung feststellt. Die im Ursprung ermittelten Encoder-Werte der Motoren werden als Referenzwerte als globalen Variablen gespeichert. Diese globalen Variablen möchte ich in Echtzeit auslesen ... betrifft auch andere Rechengrößen bzw. Variablen ... und sie z. B. in einem Dashboard (z. B. Node-Red) darstellen. Aufgrund der hohen Zykluszeit ist ja das lesen/schreiben einer Datei (z. B. log) wohl eher unangebracht oder!?

Danke und Grüße
Marco
User avatar
Walter
Official 3rd Party Support logi.cals
Posts: 77
Joined: 15 Dec 2016, 12:56

Re: Logi.Cad3 > Zugriff auf berechnete Variablen von aussen

Post by Walter »

Hallo Marco,

dieser Punkt ist in Klärung mit unseren Entwicklern. Ich melde mich dazu in Kürze wieder.

lg
Walter
User avatar
Walter
Official 3rd Party Support logi.cals
Posts: 77
Joined: 15 Dec 2016, 12:56

Re: Logi.Cad3 > Zugriff auf berechnete Variablen von aussen

Post by Walter »

Hallo Marco,
zunächst einmal wären für dieses Szenario die Echtzeitanforderungen zu definieren. Echtzeit bedeutet ja nur, dass Antwortzeiten bzw. Ergebnisse auf Anfragen in einer bestimmten definierten Zeitspanne erfolgen müssen.
In Abhängigkeit dieser Anforderungen bietet unser System folgende Möglichkeiten:
  • Zugriff auf Variablendaten via MQTT: Das wäre die einfachste Lösung, denn das funktioniert in unserem Laufzeitsystem "Out-of-the-Box" und unseres Wissens nach auch in Node-Red ohne Weiteres.
  • Zugriff von außen über TCP oder UDP logi.CAD 3 und unser Laufzeitsystem logi.RTS bieten standardmäßig die Möglichkeit, über spezielle Bausteine via TCP oder UDP Daten zu versenden und zu empfangen.
  • Abgreifen von Daten über die sogenannte Nameserver-API In diesem Fall können alle Daten im Namensraum der PLC-Applikation über eine relativ einfach zu bedienende C-Schnittstelle von einem externen Programm abgegriffen werden.
  • Eigene Kommunikationsmöglichkeit via C-Baustein. In logi.CAD 3 kann auf sehr einfache Art und Weise eigener C-Code in die PLC-Applikation eingebunden werden. Falls es bereits Bibliotheken gibt, welche die Kommunikation mit Node-Red ermöglichen, so kann dieser Weg eingeschlagen werden.
  • Zugriff auf Daten der PLC-Applikation via OPC-UA. Das wäre die komplexeste Lösung, zumal OPC-UA beim Revolution-Pi nicht standardmäßig freigeschalten ist und hier zusätzliche Laufzeitkosten anfallen. Bezüglich dieser Lösung müsste daher zunächst eine kommerzielle Einigung getroffen werden.
lg
Walter und Team
MaSiMO2020
Posts: 13
Joined: 05 Feb 2020, 07:53

Re: Logi.Cad3 > Zugriff auf berechnete Variablen von aussen

Post by MaSiMO2020 »

Hallo Walter und alle Mitlesenden

Zunächst Danke für deine hilfreiche Antwort. Ich habe den Datenaustausch jetzt erst einmal mit MQTT realisiert, dessen Umsetzung ich gern vom Profi bewerten lassen möchte, weil mir mein Weg noch zu umständlich erscheint und gewisse Probleme offenbart. Ich habe dazu ein Erklärungbild erstellt und dazu einige Anmerkungen/Fragen:

Es soll die Positionsveränderung eines Roboters SIMULTAN (also nicht nur die Endpositionen) in der HMI dargestellt werden, dass funktioniert soweit - aber SEHR Ressourcenintensiv.
  • Auf dem Revpi Core läuft der MQTT Broker Mosquitto
  • Für die HMI nutze ich Node-Red Dashboard und die entsprechenden MQTT-Nodes
  • In logi.cad3 ST nutze ich die MQTT-Blöcke
  • Ich wandel die sich schnell verändernde IST-Position des Roboters (DINT), in HEX um, damit ich sie ins Payload schreiben kann. HIER SCHONE EINE FRAGE: Die Umwandlung ist sehr umständlich: String, Ziffer/Vorzeichen einzeln auslesen und in Array schreiben, das mit dem MQTT-Publisher Block zum MQTT Broker geschickt wird. GEHT DAS NUR SO UMSTÄNDLICH? (siehe BILD).
  • Diese Umwandlung und Veröffentlichung findet in jedem Prozesszyklus statt, um eine glatte Zahlenveränderung in der HMI anzuzeigen. Dies führt dazu, dass der MQTT-Broker natürlich viele Datenschüsse abgibt, die auf dem Rechner mit dem HMI im Browser veraebeitet werden und somit zu einer hohen Auslastung führen. GEHE ICH AUCH HIER ZU UMSTÄNDLICH VOR?
  • Habe ich einen Denkfehler bei meiner Umsetzung? Wie gesagt, funktionieren tut es, aber mit hoher Systemauslastung! Und momentan verarbeite ich nur die Werte EINES Roboters
Ich bin für jede Einschätzung und Verbesserungsvorschläge sehr dankbar!

Danke und viele Grüße
Marco
screenshot_revpi_mqtt.jpg
screenshot_revpi_mqtt.jpg (438.17 KiB) Viewed 24691 times
User avatar
Walter
Official 3rd Party Support logi.cals
Posts: 77
Joined: 15 Dec 2016, 12:56

Re: Logi.Cad3 > Zugriff auf berechnete Variablen von aussen

Post by Walter »

Hallo Marco,


danke für Dein Feedback und die wunderbare Aufbereitung Deiner Frage!
Welche Zykluszeit hast du eingestellt? Eventuell könnte man das Publishen nur jeden 2. oder jede 3. Programmzyklus durchführen. Ist die HMI überhaupt "so schnell" wie der SPS-Programmzylus - oder kann man da ein bisschen einsparen?

Man könnte die Umrechnng des DINT Wertes in einen Byte Wert auch in einen C-Baustein auslagern. Das könnte die Last minimal senken.


lg
Walter
MaSiMO2020
Posts: 13
Joined: 05 Feb 2020, 07:53

Re: Logi.Cad3 > Zugriff auf berechnete Variablen von aussen

Post by MaSiMO2020 »

Hallo Walter

Danke für deinen Tipp der "Zyklussprünge". Ich habe jetzt mit einem If-Modulo veranlasst, dass nur bei jedem zweiten Prozesszyklus die Daten auf dem MQTT-Broker publiziert werden; das hat schon zu einer deutlichen Entlastung des Clients geführt (wo die Web-HMI läuft --> CPU-Auslastung durch den Browser von 40 % auf 10 % während der Datenpublikation). Im übrigen ist die Zykluszeit auf 50 ms eingestellt - höhere Zeiten führen zu Störungen, was u. a. an den schnellen Zählern (Encoder-Signale) liegen kann, die evtl. nicht mehr richtig verarbeitet werden.

Grüße
Marco
MaSiMO2020
Posts: 13
Joined: 05 Feb 2020, 07:53

OPC-UA > Logi.Cad3 > Zugriff auf berechnete Variablen von aussen

Post by MaSiMO2020 »

Hallo Walter

Bzgl. Kommunikation und Variablenzugriff hast Du in einem Beitrag weiter oben als eine Lösung geschrieben:

"Zugriff auf Daten der PLC-Applikation via OPC-UA. Das wäre die komplexeste Lösung, zumal OPC-UA beim Revolution-Pi nicht standardmäßig freigeschalten ist und hier zusätzliche Laufzeitkosten anfallen. Bezüglich dieser Lösung müsste daher zunächst eine kommerzielle Einigung getroffen werden."

Ich bin sehr an OPC-UA interessiert, da auch Kommunikationsstandard modener SCADA-Systeme.
Könnten wir hier den Sachverhalt bzgl. Lizenzen, Installation etc. zur Nutzung auf dem RevPi konkretisieren.

Vielen Dank und
beste Grüße
Marco
User avatar
Walter
Official 3rd Party Support logi.cals
Posts: 77
Joined: 15 Dec 2016, 12:56

Re: Logi.Cad3 > Zugriff auf berechnete Variablen von aussen

Post by Walter »

Hallo Marco,


die kommerziellen Details werden außerhalb des Forumsbeitrages geklärt.


freundliche Grüße
Walter
Post Reply