Konfiguration des Gateway

Lesedauer: 5min Veröffentlicht am: November 6, 2023. Der Autor des Beitrages ist Maximilian Backenstos.
Inhalte auf dieser Seite
Primary Item (H2)Sub Item 1 (H3)

Aufbau Gateway Kommunikation

Das Gateway fungiert als Bindeglied zwischen einer Datenquelle (z.B. einer Steuerung) und der smartPLAZA. Das Gateway kommuniziert mit der Datenquelle, ruft die eingestellten Daten selbständig ab, transformiert diese und sendet die Daten an die smartPLAZA. Das Gateway kann auf dem gleichen Server wie die smartPLAZA installiert sein oder auf einem anderen Server laufen. Falls keine Verbindung zur smartPLAZA aufgebaut werden kann, puffert das Gateway die Daten lokal, bis sie weitergeleitet werden können.

Das Gateway kann in Windows-, Linux- und Docker-Umgebungen betrieben werden.

Konfigurationsdatei

Die Konfiguration für alle Datenquellen ist in der Datei config.json hinterlegt. Die Datenquellen sind als JSON-Objekte mit den folgenden Parametern gelistet:

  • bucket: Ziel-Bucket in der Store-API (z.B. "Temperaturdaten"), hieraus kann in der smartPLAZA eine Tabelle erstellt werden
  • writeKey: Schreibschlüssel für den angegebenen Bucket
  • source: csv, excel, odbc, opcua, mqtt, http, modbus
  • params: Weitere Parameter je nach Art der Datenquelle
  • server: Optional. Server, auf dem die Store-API gehostet wird (Default ist api.datenberg.eu, nur bei eigenem Serverhosting anpassen)

Beispielkonfigurationsdatei

Die folgende Beispielkonfiguration schreibt in eine Tabelle "Anlage2". Der Schreibschlüssel ist bekannt und die Daten werden von einer OPC UA Quelle geholt. Die Daten werden an den DatenBerg Cloud Service gesendet. Die Parameter der OPC UA Quelle sind im Abschnitt "OPC UA" näher definiert.

 "bucket": "Anlage2",
        "writeKey": "1111111",
        "source": "opcua",
        "params": {}

Parameter für CSV und Excel

Folgende Parameter müssen für eine CSV- bzw. Excel-Datei definiert werden:

  • file: Die zu überwachende Datei
  • monitoring: Art der Überwachung

Mögliche Werte für "monitoring":

  • changes: Jede Zeile übertragen, die neu ist oder in der eine Änderung festgestellt wurde.
  • rowNumber: Zeilen basierend auf ihrer Zeilennummer genau einmal übertragen.
  • lastValue: Eine Spalte überwachen und Zeilen übertragen, wenn sie nach dem letzten bekannten Wert eingefügt wurden. Als Parameter muss hier eine column als zu überwachende Spalte angegeben werden.

OPC UA

Eine OPC UA Datenquelle wird über einen OPC Verbindungsstring angesprochen. Das Gateway funktioniert dabei als Client, um Daten von einem OPC UA Server abzurufen. In der Antwort werden dann die einzelnen angefragten Datenpunkte übertragen.

Parametrisierung OPC UA

Die allgemeinen Parameter sind wie folgt zu definieren:

  • servers: Liste von OPC-Servern
  • Pro Server:
    • connection: OPC-Verbindungsstring
    • data: Liste der aufzuzeichnenden Variablen als OPC UA-Pfad
    • labels: Liste der zugehörigen Variablennamen (optional)
    • monitoring: Art der Überwachung

Optional können die folgenden Parameter mit übergeben werden:

  • user: Benutzername
  • password: Passwort
  • useCertificate: true, falls ein Zertifikat zur Anmeldung verwendet werden soll
  • ignore: Liste von Fällen, bei deren Auftreten die aktuelle Zeile ignoriert werden soll

Für das Monitoring können folgende Parameter definiert werden:

  • changes: Überträgt alle Variablen bei jeder Änderung.
  • value: Überwacht eine Variable auf Änderung und überträgt wahlweise den Stand aller Variablen unmittelbar vor oder nach der Änderung.
    Parameter:
    • variable: die zu überwachende Variable
    • trigger: before, after
  • timer: Übertragt alle Variablen nach einem regelmäßigen Zeitplan.
    Parameter: interval: Intervall des Timers in Sekunden

Optionen für "ignore":

  • variable: Zu überwachende Variable
  • value: Wert, bei dem die aktuelle Zeile ignoriert wird

Beispiel für einen zyklischen OPC UA Abruf

Im folgenden Beispiel werden Daten von einer Siemens S7-Steuerung mit der IP-Adresse 10.255.112.113 übertragen. Die Abfrage erfolgt alle 5 Sekunden über den Port 4840. Dabei werden zwei OPC UA Variablen (z.B. ns=4, i=4) übertragen. Die Variablennamen werden direkt über ein Label übergeben. Auch wenn kein Benutzer für die Authentifizierung benötigt wird, muss ein leerer Benutzer mit leerem Passwort übergeben werden.

 {"bucket": "Anlage2",
        "writeKey": "123456",
        "source": "opcua","params": {
            "monitoring": "timer",
            "interval": 5,
            "servers": [
                {
                    "connection": "opc.tcp://10.255.112.113:4840",
                    "data": [
                        "ns=4;i=4",
                        "ns=4;i=6"
                    ],
                    "labels": [
                        "Temperatur 1",
                        "Druck"
                    ],
                    "user": "",
                    "password": ""
                }
            ]
        }
    },

MQTT

Der Datenaustausch mit MQTT erfolgt über einen zentralen MQTT Broker, an den ein Gerät Daten sendet und der diese an Empfänger weiterleitet. Das Gateway " subscribed " sich auf ein zu definierendes Topic und leitet alle empfangenen Daten an die smartPLAZA weiter. In diesem Blogbeitrag gehen wir näher auf die Funktionsweise von MQTT ein.

Parametrisierung MQTT

Für den Empfang von Daten via MQTT müssen folgende Parameter definiert werden:

  • host: Adresse des MQTT-Servers
  • port: Port des MQTT-Servers
  • topic: Zu überwachendes Topic oder Topics
  • type: Payload-Format
    Mögliche Werte für "type":
    • text: Zeichnet den gesamten Text der Payload in ein Feld auf.
    • json: Interpretiert die Payload als JSON und erzeugt ein Feld für jeden Eintrag.
    • Optionale Parameter:
      transformation: Plugin (Python-Datei), das die Payload transformiert, muss im im Ordner Plugins vorliegen

Optional können diese Parameter definiert werden:

  • user: Benutzername zur Anmeldung
  • password: Entsprechendes Passwort

Beispielkonfiguration MQTT

Im folgenden Beispiel wird eine Verbindung zu einem MQTT Broker mit der IP-Adresse 10.123.45.20 auf Port 1883 hergestellt. Es werden alle Daten empfangen die auf dem auf Untertopics des Topic "Data" kommuniziert werden. Die Daten werden bereits als JSON versendet und können direkt weitergeleitet werden.

[
    {
        "bucket": "mqtt_daten",
        "writeKey": "123456789",
        "source": "mqtt",
        "params": {
            "host": "10.123.45.20",
            "port": 1883,
            "topic": "Data/#",
            "type": "json"

        }

    }
]

HTTP

Für den Abruf von Daten via HTTP müssen folgende Parameter definiert werden:

  • url: Abzurufende URL
  • monitoring: Art der Überwachung

Optional können diese Parameter definiert werden:

  • interval: Abrufintervall in Sekunden
  • transformation: Plugin, das die abgerufenen Daten transformiert

Mögliche Werte für "monitoring:

  • changes: Überträgt alle Variablen bei jeder Änderung.
  • timer: Übertragt alle Variablen nach einem regelmäßigen Zeitplan.
    Parameter: interval: Intervall des Timers in Sekunden

Modbus

Bei der Modbus-Kommunikation fordert ein Modbus-Client Daten von einem Modbus-Master an. In der Antwort überträgt der Master die aktuellen Prozesswerte. Das Gateway fungiert als Client, der die Verbindung zu einem Master herstellt. In diesem Blogbeitrag finden Sie ausführliche Informationen zum Modbus-Protokoll.

Parametrisierung Modbus

Die Konfiguration legt fest, welche Daten von welchen Adressen des Modbus-Masters abgefragt und in eine Tabelle geschrieben werden sollen. Für den Datenempfang über Modbus müssen folgende Konfigurationsparameter definiert werden:

  • server: Die IP-Adresse des Modbus-Master, mit dem kommuniziert wird.
  • interval: Das Zeitintervall in Sekunden zwischen aufeinanderfolgenden Modbus-Anfragen.
  • port: Kommunikationport für die TCP-Verbindung.
  • variables: Eine Liste von Modbus-Variablen, die überwacht werden sollen.
    • id: Ein eindeutiger Bezeichner für die Variable. Kann frei festgelegt werden.
    • type: Der Datentyp der Variable:
      • sint16: Für 16-Bit Ganzzahlen mit Vorzeichen
      • uint16: Für 16-Bit Ganzzahlen ohne Vorzeichen
      • sint32: Für 32-Bit Ganzzahlen mit Vorzeichen
      • uint32: Für 32-Bit Ganzzahlen ohne Vorzeichen
      • sint64: Für 64-Bit Ganzzahlen mit Vorzeichen
      • uint64: Für 64-Bit Ganzzahlen ohne Vorzeichen
    • scale: Skalierungsfaktor für die Variable (optional)
    • address: Die MODBUS-Adresse(n) der Variable

Beispielkonfiguration für Modbus

Im folgenden Beispiel werden von einem Kompressor mit der IP-Adresse 10.123.9.11 verschiedene Parameter über Modbus abgefragt. Aus der Modbusbeschreibung geht hervor, dass unter der Adresse 54 die Gesamtstunden und unter der Adresse 57 der Netzsolldruck abgerufen werden können. Dies wäre eine mögliche Konfiguration davon:

{
        "bucket": "Modbus",
        "server": "http://localhost",
        "writeKey": "12345678",
        "source": "modbus",
        "params": {
            "server": "10.123.9.11",
            "interval": 5,
            "variables": [
                {
                    "id": "Gesamtstunden",
                    "type": "sint16",
                    "address": 53
                },
                {
                    "id": "Netzsolldruck",
                    "type": "sint16",
                    "address": 57
                }
             ]
     }

Sie benötigen weitere Hilfe?
Gerne unterstützen wir Sie bei weiteren Fragen zum Thema. Kontaktieren Sie uns hier.