Maschinen Kommunikation

Triggerliste

Das Trigger-System ist eine Ablauf- und Kommunikationssteuerung innerhalb der Analyzer4D Software. Diese Steuerung ähnelt einer Mini SPS, in der, analog zur SPS einer großen Maschinensteuerung, zyklisch eine Art Programm abgearbeitet wird. Die Triggerliste ist unser Modul zur Außenwelt: Von hier aus werden sowohl Ereignisse von außen verarbeitet als auch Ergebnisse an die Maschine kommuniziert.

Dadurch können wir:

  • Externe Maschinensteuersignale empfangen und auslösen

  • Daten mit Maschinen austauschen

  • Die Messwertaufzeichnung steuern

  • Interne Mess-, Analyse-, und Steuerabläufe regeln

Das Programm bezeichnen wir als „Triggerliste“. In der Triggerliste wird in jeder Zeile ein mögliches Ereignis mit einer Aktion verknüpft. Die Triggerliste wird alle 2 Millisekunden komplett abgearbeitet.

Beispiel Triggerliste


Auf der linken Seite steht der Auslöser - das Ereignis und rechts die Aktion, die beim Eintritt des Ereignises ausgeführt wird.

Diese Triggerliste startet eine Messung bei einer steigenden Flanke am digitalen I/O Eingang 1.1 (Zeile 1). Die Messung wird dann nach 10 Sekunden wieder gestoppt (Zeile 2). Falls während der Messung durch eine Operatornetz das Signal „high_energy“ gesendet wird, wird der I/O Ausgang 3.4 gesetzt (Zeile 3). Dieses Ausgangssignal wird bei jedem Messstart zurückgesetzt, falls es aktiv war (Zeile 4)

Das Beispiel zeigt, wie externe Signale ausgewertet werden und interne Analysen (in diesem Fall ein laufendes Operatornetz) mit externen Signalen verbunden werden können.

Beispiele für externe Kommunikation via Trigger

  • 16 – 24 digitale I/O Eingänge (24V) und 8 – 16 digitale I/O Ausgänge
  • Profibus / Profinet mit einer maximalen Telegrammgröße von 144 Bytes
  • Tastatureingaben
  • Skripte und CLI Befehle im Linux System
  • AppVars
  • Indirekt über AppVars auch: JSON Server (Communication Server)

Beispiele für Ereignis-Typen

  • I/O Eingangszustand hat sich verändert (IO Input Line Event, IO Measure on ...)

  • interner Zähler hat einen Schwellwert erreicht (Enumerator Target)

  • Zeit ist abgelaufen (Timer Target)

  • Analyzer Status hat sich geändert (App Event)

  • Profibus Nachricht empfangen (Profibus Event)

  • TCP Socket Message empfangen

  • Operator Netz hat ein Signal gesendet (Operator Signal)

  • Globale Variable (AppVar) hat ihren Wert geändert (Global Variable Changed)

Globale Variablen und das Trigger System

Globale Variablen (sog. AppVars) können praktisch aus allen Modulen der Analyzer-Software ausgelesen, verändert und erzeugt werden. Dadurch steht ein mächtiges System für den Informationsaustausch innerhalb der Software zu Verfügung.

Eine AppVar besteht einfach aus einem Key/Value Pair, also ein Schlüssel, der gleichzeitig auch der Name der Variablen ist und deren Inhalt, der ein String ist. Eine AppVar kann z.B. aus dem SetAppVar Operator oder allgemein aus einem Python Operator, im JSON Server, Testscripten oder auch einfach aus der Triggerliste selbst gesetzt werden.

Beispiel für Trigger, AppVars und Profibus

Diese Triggerliste sendet den Inhalt der AppVar „SPEED“ als 32bit Wert über Profibus im Telegramm an Addresse 8. Eine Änderung eines 32bit Wertes in einer empfangenen Profibusnachricht an Addresse 4 wird in die AppVar „POSITION“ geschrieben.

Trigger-Aktionen

Aus der Triggerliste heraus können viele Aktionen der Software ausgelöst werden. Natürlich können hier Messungen gesteuert werden, aber auch globale Variablen geändert werden, Metadaten ergänzt werden, oder gar komplexe Scripte und Applikations-Kommandos ausgeführt werden.

Python Integration

Für maximale Flexibilität können Python-Funktionen direkt von der Triggerliste aus ausgeführt werden.
So kann auch komplexe Steuerungslogik abgebildet werden.

Zudem kann Python auch eingesetzt werden, um Ereignisse aus der Software nach außen zu kommunizieren.

#

Netzwerk-Schnittstelle

Unsere Software bietet eine umfangreiche Netzwerkschnittstelle, aufbauend auf einem JSON-Protokoll.
Aber keine Sorge - Du musst dich jetzt nicht mit den Einzelheiten unseres Schnittstellen-Protokolls befassen: Wir bieten eine umfangreiche Python-Implementierung dieser Schnittstelle an.

QASS Open Source

/qass-open-sourceÜber die Schnittstelle lassen sich praktisch alle Aktionen initiieren, die auch von der Triggerliste aus gestartet werden können.

Du kannst den Optimizer4D also ganz bequem von Deinen Schreibtisch aus fern steuern.
Vor allem aber, kannst Du den Optimizer4D in komplexe Steuerungen integrieren.

Die Netzwerkschnittstelle bietet natürlich die Möglichkeit, Messungen zu steuern, aber auch, sich über Änderungen des Systems informieren zu lassen. So können Benachrichtigungen für Änderungen von Inputs/Outputs und AppVars (globale Applikations-Variablen) registriert werden. Auf diese Weise kannst Du in Deiner Implementierung dynamisch auf Status-Änderungen oder Analyse-Ergebnisse reagieren.

Selbst einer direkten Ansteuerung aus Matlab heraus sollte nichts im Wege stehen, da auch Matlab ermöglicht, Python-Code auszuführen. (https://de.mathworks.com/products/matlab/matlab-and-python.html)

Eine besondere Rolle kommt der Netzwerkschnittstelle bei der Implementierung von externen Kommunikations-Adaptern zu.

Kommunikations-Adapter

Einige der etablierten Industrie-Kommunikationsprotokolle setzen spezielle Hardware-Schnittstellen voraus. Dazu gehören 24V Ein-/Ausgänge, aber auch Profibus oder Profinet. Die dafür benötigten Schnittstellen werden vom Optimizer4D unterstützt und sind in die Software integriert.

Inzwischen jedoch basieren viele Protokolle auf der Basis weit verbreiteter Netzwerk-Technologie. Längst sind MQTT und OPCUA im Smart-Home-Bereich aber auch in der Industrie weit verbreitet.

Unsere Python Netzwerkschnittstelle ermöglicht die Implementierung von fast beliebigen Kommunikations-Adaptern. Mit Hilfe von AppVars können Werte sowohl AN die Analyzer4D-Software übertragen werden, als auch VON der Software empfangen werden.

Auf diese Weise implementieren wir beispielsweise Kommunikations-Brücken für OPCUA oder die TCP/IP Schnittstelle von Siemens SPS. Sämtliche Protokolle, die unter Python verfügbar sind, können auf diese Art mit unserer Software verknüpft werden.