SubscribeWithQualityOfServiceLevel

TwinCAT TIA
Netzwerk MQTT Client ActiveClients Ein Client

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

Abonniert ein MQTT Topic mit QoS vom MQTT Broker.

Parameter:

    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.

Rückgabewert:

Beispiele:

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

Beckhoff Parameter:

    bMqttSubscribeWithQualityOfServiceLevel
    Eine boolesche Variable, über welche die Ausführung des SubscribeWithQualityOfServiceLevel-Befehls getriggert werden kann.
    OutputDataMqttSubscribeWithQualityOfServiceLevel
    Eine Instanz der ST_VoidOutputData Struktur, in welche der Rückgabewert der SubscribeWithQualityOfServiceLevel-Methode geschrieben wird.
    hrMqttSubscribeWithQualityOfServiceLevel
    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 zu abonnierende Topic spezifiziert.
    QualityOfServiceLevel
    Ein Enum vom Typ "MqttQualityOfServiceLevel", welches das Quality of Service Level der Übertragung festlegt.
    sClientId
    Eine String(255)-Variable, welche den Client spezifiziert, der den Befehl ausführen soll.
    ConnectionHandle
    Beim Verbindungsaufbau zwischen DEPRAG Smart Server und Ihrem OPC UA Client erhaltenes "ConnectionHandle".


VAR
   bMqttSubscribeWithQualityOfServiceLevel    : BOOL;
   OutputDataMqttSubscribeWithQualityOfServiceLevel : ST_VoidOutputData;
   hrMqttSubscribeWithQualityOfServiceLevel   : HRESULT;

   fbMqtt  : FB_Mqtt;
END_VAR

hrMqttSubscribeWithQualityOfServiceLevel := fbMqtt.SubscribeWithQualityOfServiceLevel(
     bExecute    := bMqttSubscribeWithQualityOfServiceLevel, 
     ConnectionHandle  := depragSmartConnection.ConnectionHandle, 
     sTopic     := 'testSmart/test', 
     QualityOfServiceLevel := MqttQualityOfServiceLevel.ExactlyOnce, 
     sClientId    := '0', 
     OutputData    => OutputDataMqttSubscribeFullyParameterized);
IF hrMqttSubscribeWithQualityOfServiceLevel <> S_FALSE THEN 
    bMqttSubscribeWithQualityOfServiceLevel := 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.