PublishByteArray

TwinCAT TIA
Netzwerk MQTT Client ActiveClients Ein Client

ns=2;s=DEPRAG Smart/Network/MQTT/ActiveClients/0/PublishByteArray

Der Befehl sendet eine Nachricht mit dazugehörigem Topic an den MQTT Broker.

Parameter:

    MessageData
    Inhalt der übermittelnden Nachricht als Byte Array.
    QualityOfServiceLevel
    Konfiguriert das Quality of Service Level der Übertragung:
    AtMostOnce(0): Die Nachricht wird genau einmal gepublished und es wird auf keine Empfangsbestätigung vom Broker gewartet.
    AtLeastOnce(1): Die Nachricht wird solange gesendet, bis der Client eine Empfangsbestätigung vom MQTT Broker erhält. So ist sichergestellt, dass die Nachricht mindestens einmal beim Empfänger angekommen ist.
    ExactlyOnce(2): Die Nachricht wird genau einmal vom Client an den Broker übertragen.
    WithRetainFlag
    Markiert das Retain Flag in der MQTT Nachricht. Der Broker wird damit angewiesen die letzte gesendete Nachricht zu dem Topic zwischenspeichern. Clients die sich zu einem späteren Zeitpunkt am Broker verbinden bekommen diese Nachricht zugestellt.

Rückgabewert:

Beispiele:

Neben den bereits erläuterten Parametern sind für die Implementierung in TwinCAT 3 nachfolgende Variablen anzulegen / zu übergeben:

Beckhoff Parameter:

    bMqttPublishByteArray
    Eine boolesche Variable, über welche die Ausführung des PublishByteArray-Befehls getriggert werden kann.
    OutputDataMqttPublishByteArray
    Eine Instanz der ST_VoidOutputData Struktur, in welche der Rückgabewert der PublishByteArray-Methode geschrieben wird.
    hrMqttPublishByteArray
    Hiermit kann die Ausführung des Befehls überwacht werden. Fehler-Codes haben den Typ HRESULT.
    fbMqtt
    Eine Instanz des, mit der DEPRAG Smart-Bibliothek gelieferten, "FB_Mqtt" Funktionsbausteins.
    sTopic
    Eine String(255)-Variable, welche das Topic der MQTT Nachricht darstellt.
    nMessageLength
    Eine UINT-Variable, welche die Länge der zu sendenden Nachricht spezifiziert.
    QualityOfServiceLevel
    Ein Enum vom Typ "MqttQualityOfServiceLevel", welches das Quality of Service Level der Übertragung festlegt.
    bWithRetainFlag
    Eine boolesche Variable, welche das Retain Flag in der MQTT Nachricht setzt.
    sClientId
    Eine String(255)-Variable, welche den Client spezifiziert, der den Befehl ausführen soll.
    MessageData
    Eine Variable vom Typ "ARRAY[*] OF BYTE", welche die zu sendende Nachricht enthält.
    ConnectionHandle
    Beim Verbindungsaufbau zwischen DEPRAG Smart Server und Ihrem OPC UA Client erhaltenes "ConnectionHandle".


VAR
   bMqttPublishByteArray        : BOOL;
   OutputDataMqttPublishByteArray      : ST_VoidOutputData;
   hrMqttPublishByteArray        : HRESULT;
   testLongByteArray : ARRAY[1..1000] OF BYTE := [84, 101, 115, 116, 255];

   fbMqtt  : FB_Mqtt;
END_VAR

hrMqttPublishByteArray := fbMqtt.PublishByteArray(
     bExecute        := bMqttPublishByteArray, 
     ConnectionHandle      := depragSmartConnection.ConnectionHandle, 
     sTopic         := 'TestSmartTwinCat', 
     nMessageLength       := 5, 
     QualityOfServiceLevel     := MqttQualityOfServiceLevel.ExactlyOnce, 
     bWithRetainFlag       := FALSE, 
     sClientId        := '0', 
     MessageData        := testLongByteArray, 
     OutputData        => OutputDataMqttPublishByteArray);
IF hrMqttPublishByteArray <> S_FALSE THEN 
    bMqttPublishByteArray := FALSE;
END_IF
                                                    

Für Beispiele und Erklärungen bezüglich der Aufrufe von Knoten via Siemens TIA Portal sei an dieser Stelle auf den Unterpunkt "Siemens TIA Portal" in Abschnitt "Erste Schritte" verwiesen.