MqttSubscribe – Odběr zpráv z MQTT topic

Symbol blokuPotřebná licence: MQTT
PIC

Popis funkce
Tento funkční blok je závislý na MQTT ovladači. Je doporučeno si před použitím přečíst manuál MQTTDrv ovladače [12].

Účelem bloku MqttSubscribe je přihlášení se k odebírání zpráv ze zařízení typu MQTT Broker a a jejich vyčítání prostřednictvím spojení, které zajišťuje ovladač MQTTDrv.

Parametr topic určuje tématický celek, k jehož odběru se blok přihlašuje. Protokol MQTT doručuje aplikační zprávy dle zvolené úrovně kvality služby (Quality of Service – QoS). Požadovaná úroveň lze nastavit parametrem QoS. Více informací naleznete ve specifikaci MQTT protokolu [13] (pouze anglicky).

Nastavením parametru type lze určit, jaký je očekávaný typ čtených zpráv. Blok se snaží konvertovat příchozí zprávy do zvoleného datového typu a výsledek nastavuje na výstupní signál value v případě úspěchu a nebo nastavuje výstup errId na příslušný chybový kód.

Parametr mode má dvě možné hodnoty: Last value a Buffered values. Pokud je parametr nastaven na hodnotu Last value, blok na výstup vždy vystaví pouze poslední zprávu i v případě, že bylo v poslední periodě přijato více zpráv. Pokud je ale parametr nastaven na hodnotu Buffered values, blok si zprávy ukládá do vnitřního bufferu a na výstup předává jednu zprávu za druhou v následujících ticích tasku.

Parametr defBuffSize může být použit pro optimalizaci práce s pamětí bloku. Hodnota parametru představuje velikost staticky alokované paměti pro vnitřní buffer odchozích zpráv. Pokud je velikost bufferu nadbytečně velká, blok si alokuje paměť, která je zbytečně blokována. Na druhou stranu pokud je hodnota parametru příliš malá, algoritmus bloku musí často dynamicky alokovat paměť, což je časově náročná operace.

Akce přihlášení se k odběru je provedena na základě vzestupné hrany (off on) a odhlášení odběru na základě sestupné hrany (on off) vstupu RUN.

Výstup nDRDY určuje počet přijatých zpráv, které jsou dostupné ve vnitřním bufferu. Pokud je parametr mode nastaven na hodnotu Last value výstup může mít pouze hodnotu 0 nebo 1.

Výstup RETAIN je nastaven na on, pokud přijatý paket měl nastaven příznak RETAIN. Více informací naleznete ve specifikaci MQTT protokolu [13] (pouze anglicky)..

Přihlašování se k odběrům s využitím zástupných znaků typu wildcards není podporováno.

Tento blok nepropaguje kvalitu signálu. Více informací je uvedeno v sekci 1.4.

Vstup

RUN

Povolení běhu algoritmu

Bool

Parametr

topic

MQTT topic

String

QoS

Quality of Service  1

Long (I32)

1 ....

QoS0 (Maximálně jednou)

2 ....

QoS1 (Alespoň jednou)

3 ....

QoS2 (Právě jednou)

type

Očekávaný typ příchozích dat  1

Long (I32)

1 ....

string

2 ....

double

3 ....

long

4 ....

bool

5 ....

byte vector/blob

mode

Způsob bufferování příchozích zpráv  1

Long (I32)

1 ....

poslední hodnota

2 ....

buffrovat hodnoty

defBuffSize

Výchozí velikost bufferu   1 2048

Long (I32)

Výstup

value

Výstupní signál

Any

nDRDY

Počet přijatých zpráv   0  10

Long (I32)

RETAIN

Zachovat poslední zprávu  on

Bool

errId

Kód chyby

Error

2024 © REX Controls s.r.o., www.rexygen.com