StartFullyParameterized

TwinCAT TIA
Netzwerk MQTT Client ActiveClients Ein Client

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

Parametriert den MQTT Client mit allen Parametern und stellt eine Verbindung zum angegebenen MQTT Broker her.

Parameter:

    PendingMessagesOverflowStrategy
    Legt das Verfahren fest, wenn die Anzahl der zu sendenden Nachrichten größer als der Puffer sind:
    DropOldestQueuedMessage(0): Verwerfe älteste Nachricht
    DropNewMessage(1): Verwerfe neuste Nachricht
    CleanSession
    Legt fest, ob der Broker bei Verbindungsverlust des MQTT Clients übermittelte Nachrichten von anderen Clients zwischenspeichert (Parameter = False) oder sie zwischenspeichert und nachträglich zustellt.
    WillMessage
    Setzt die Last Will Message für den MQTT Client. Diese Nachricht wird bei Abbruch des MQTT Clients allen anderen MQTT Clients vom Broker mitgeteilt.
    WillTopic
    Setzt das Last Will Topic für den MQTT Client. Diese Nachricht wird bei Abbruch des MQTT Clients allen anderen MQTT Clients vom Broker mitgeteilt.
    WillQualityOfService
    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.
    WillDelayIntervalInSeconds
    Zeitspanne in Sekunden, die nach einem Verbindungsverlust vom Broker gewartet wird, bis die Last Will Message gesendet wird.
    SslProtocol
    Konfiguriert das zu verwendenden SSL-Protokoll:
    None(0), SSL2(12), SSL3(48), TLS(192), Default(240), TLS11(768), TLS12(3072), TLS13(12288).

Rückgabewert:

Beispiele:

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

Beckhoff Parameter:

    bMqttStartFullyParameterized
    Eine boolesche Variable, über welche die Ausführung des StartFullyParameterized-Befehls getriggert werden kann.
    OutputDataMqttStartFullyParameterized
    Eine Instanz der ST_VoidOutputData Struktur, in welche der Rückgabewert der StartFullyParameterized-Methode geschrieben wird.
    hrMqttStartFullyParameterized
    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.
    nAutoReconnectDelayInSeconds
    Eine DINT-Variable, welche festlegt wie lange der MQTT Client warten soll bis er eine neue Verbindung zum MQTT Broker aufbaut.
    nConnectionCheckIntervalInSeconds
    Eine DINT-Variable, welche das Zeitintervall in Sekunden festlegt, nach dem überprüft wird, ob die Verbindung mit dem Broker noch besteht.
    nMaxPendingMessages
    Eine DINT-Variable, welche die maximale Anzahl an Nachrichten die am Client gecacht werden festlegt.
    PendingMessagesOverflowStrategy
    Ein Enum vom Typ "MqttPendingMessagesOverflowStrategy", welches festlegt, wie vorgegangen werden soll, wenn die Anzahl der zu sendenden Nachrichten größer als der Puffer ist.
    nMaxTopicFiltersInSubscribeUnsubscribePackets
    Eine DINT-Variable, welche die maximale Anzahl an Topics in abonnierten und deabonnierten Paketen festlegt.
    sClientName
    Eine String(255)-Variable, welche die Identifikation des MQTT Clients am Broker darstellt.
    bCleanSession
    Eine boolesche Variable,welche festlegt, ob der Broker bei Verbindungsverlust des MQTT Clients übermittelte Nachrichten von anderen Clients zwischenspeichert (Parameter = False) oder sie zwischenspeichert und nachträglich zustellt.
    ProtocolVersion
    Ein Enum vom Typ "MqttProtocolVersionSmart", welches die zu verwendende MQTT Protokoll Version festlegt.
    nKeepAlivePeriodInSeconds
    Eine DINT-Variable, welche das Zeitintervall in Sekunden definiert, nach dem eine IsAlive-Nachricht an den Broker gesendet werden soll.
    sWillMessage
    Eine String(255)-Variable, welche die Last Will Message für den MQTT Client darstellt.
    sWillTopic
    Eine String(255)-Variable, welche das Last Will Topic für den MQTT Client darstellt.
    WillQualityOfService
    Ein Enum vom Typ "MqttQualityOfServiceLevel", welches das Quality of Service Level der Übertragung festlegt.
    nWillDelayIntervalInSeconds
    Eine DINT-Variable, welche die Zeitspanne in Sekunden festlegt, die nach einem Verbindungsverlust vom Broker gewartet wird, bis die Last Will Message gesendet wird.
    SslProtocol
    Ein Enum vom Typ "SslProtocols", welches das zu verwendenden SSL-Protokoll festlegt.
    bIgnoreCertificateChainErrors
    Eine boolesche Variable, welche festlegt, ob Fehler in der Zertifikatskette ignoriert werden sollen.
    bIgnoreCertificateRevocationErrors
    Eine boolesche Variable, welche festlegt, ob Fehler von der Zertifikatssperrliste ignoriert werden sollen.
    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
   bMqttStartFullyParameterized      : BOOL;
   OutputDataMqttStartFullyParameterized    : ST_VoidOutputData;
   hrMqttStartFullyParameterized      : HRESULT;

   fbMqtt  : FB_Mqtt;
END_VAR

hrMqttStartFullyParameterized := fbMqtt.StartFullyParameterized(
     bExecute          := bMqttStartFullyParameterized, 
     ConnectionHandle        := depragSmartConnection.ConnectionHandle, 
     nAutoReconnectDelayInSeconds     := 3, 
     nConnectionCheckIntervalInSeconds    := 2, 
     nMaxPendingMessages        := 100, 
     PendingMessagesOverflowStrategy     := MqttPendingMessagesOverflowStrategy.DropOldestQueuedMessage, 
     nMaxTopicFiltersInSubscribeUnsubscribePackets := 100, 
     sClientName          := 'SmartTest', 
     bCleanSession         := FALSE, 
     ProtocolVersion         := MqttProtocolVersionSmart.V311, 
     nKeepAlivePeriodInSeconds      := 5, 
     sWillMessage         := 'WillMessage', 
     sWillTopic          := 'WillTopic', 
     WillQualityOfService       := MqttQualityOfServiceLevel.ExactlyOnce, 
     nWillDelayIntervalInSeconds      := 5, 
     SslProtocol          := SslProtocols.Tls12, 
     bIgnoreCertificateChainErrors     := TRUE, 
     bIgnoreCertificateRevocationErrors    := TRUE, 
     sClientId          := '0', 
     OutputData          => OutputDataMqttStartFullyParameterized);
IF hrMqttStartFullyParameterized <> S_FALSE THEN 
    bMqttStartFullyParameterized := 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.