OnChange-Mechanismen

Der OnChange-Mechanismus ist vorrangig für die Verwendung mit dem SendDataAsString-Mechanismus vorgesehen. Es gibt verschiedene Hinweise zu der Nutzung dieses Mechanismus.

Unterschied der verschiedenen Methoden

Die SendData-Methode und die SendDataAsString-Methode werden als Retain-Nachrichten gesendet. Das hat den Effekt, dass eine neu verbundene App automatisch die zuletzt gesendeten Daten zur Verfügung hat, auch wenn gerade keine Daten gesendet werden.

Wenn die jeweiligen OnChange-Methoden verwendet werden, werden die Nachrichten nicht als Retain-Nachrichten gesendet. Bei einer neuen Verbindung sollte der aktuelle Stand der Daten als Retain-Nachricht gesendet werden, damit auch die neu verbundene App-Instanz den aktuellen Stand der Daten zur Verfügung hat. Weitere Informationen zu den OnChange-Methoden können unter SendData_OnChange und SendDataAsString_OnChange entnommen werden.

Hinzufügen von Variablen/Widgets

Wenn der SendDataAsString-Mechanismus verwendet wird, muss ein bestimmter Aufbau des JSON-Dokuments berücksichtigt werden. Wenn zwischen zwei Aufrufen Änderungen (Hinzufügen/Löschen oder Anpassen) am Aufbau gemacht werden, sind folgende Punkte zu beachten:

Weitere Hinweise

Aufbau TwinCAT JSON

Die TwinCAT IoT Communicator-Produktpalette benutzt für die Kommunikation ein JSON-Format mit dem Namen TwinCAT JSON: Im Folgenden wird der Aufbau eines TwinCAT JSON-Dokuments am Beispiel der Widgets Steckdose und Lüftung beschrieben.

{
    "Timestamp" : "2022-08-04T07:15:06.176",
    "GroupName" : "Widget Testpage",
    "Values" : {
        "sPageDesc" : "TwinCAT JSON Page",
        "stPlug" : {
            "sDisplayName" : "",
            "bOn" : true,
            "sMode" : "Manual",
            "aModes" : [ "Manual", "Automatic" ]
        },
        "stVent" : {
             "sDisplayName" : "",
             "bOn" : true,
             "nValue" : 725,
             "nValueRequest" : 400,
             "sMode" : "Manual",
             "aModes" : [ "Manual", "Automatic" ]
        }
    },
    "MetaData" : {
        "sPageDesc" : {
            "iot.DisplayName" : "Info",
            "iot.ReadOnly" : "true"
        },
        "stPlug" : {
            "iot.DisplayName" : "Plug Widget",
            "iot.ReadOnly" : "false",
            "iot.WidgetType" : "Plug",
            "iot.PlugModeVisible" : "true",
            "iot.PlugModeChangeable" : "false"
        },
        "stVent" : {
            "iot.DisplayName" : "Ventilation Widget",
            "iot.ReadOnly" : "false",
            "iot.WidgetType" : "Ventilation",
            "iot.VentilationSliderVisible" : "true",
            "iot.VentilationValueRequestVisible" : "false",
            "iot.VentilationModeVisible" : "true",
            "iot.VentilationModeChangeable" : "false"
         },
        "stVent.nValue" : {
            "iot.Unit" : "ppm",
            "iot.MinValue" : "400",
            "iot.MaxValue" : "1400"
        }
    },
"ForceUpdate":false
}

Bereich

Beschreibung

Timestamp

Muss pro Nachricht einen Timestamp im Format: "YYYY-MM-DDThh:mm:ss.fff" enthalten z. B. "2022-08-04T07:15:06.176".

GroupName

Name des Einstiegsknotens des Communicator-Bausteins in der App.

Values

Die anzuzeigenden Werte, angefangen auf der ersten Seite, mit anschließender Verschachtelung.

MetaData

Alles, was in SPS-Attributen umgesetzt ist (bspw. die Konfiguration der Widgets).

ForceUpdate

Optionaler Parameter. Wird beim OnChange-Mechanismus dafür eingesetzt, nach Änderungen ein Update zu triggern. Genauere Informationen unter OnChange-Mechanismen.