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 [6].

Úč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 [7] (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 [7] (pouze anglicky)..

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

Vstup

RUN

Povolení běhu algoritmu

Bool

Parametry

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 ....

bufferovat hodnoty

defBuffSize

Výchozí velikost bufferu   1 2048

Long (I32)

Výstupy

value

Výstupní signál

Unknown

nDRDY

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

Long (I32)

errId

Kód chyby

Error

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