V Mervis IDE je protokol MQTT technicky implementován jako klientský driver. Protože však Mervis RT dokáže data jak publikovat (poskytovat), tak i odebírat (přijímat), funguje efektivně oběma směry. Do sekce serverových protokolů je zařazen proto, že prostřednictvím centrálního Brokeru funguje jako poskytovatel dat pro ostatní systémy.
Data jsou organizována pomocí „Topics“, což jsou hierarchické struktury fungující jako cesty, kam jsou data publikována. Například základní složka může být building/hvac, se podsložkami jako building/hvac/temp.
(Poznámka k organizaci: Mervis podporuje Prototypy, které pomáhají systematicky organizovat pojmenování v rozsáhlých projektech. Nebudeme se jim zde detailně věnovat, ale jejich použití je velmi doporučeno pro udržení přehlednosti proměnných.)
broker.emqx.io na portu 1883. Pozor: Toto je pouze pro testování a nikdy by nemělo být použito pro produkční data.building/hvac.Užitečné makra Při nastavování Client ID nebo Topics můžete použít makra (nerozlišují velikost písmen), která automaticky doplní systémová data. Tím zajistíte plný kontext bez nutnosti opakovaného psaní.
| Makro | Popis |
|---|---|
ClientId | Vloží definované MQTT Client ID. |
PlcName | Vloží přiřazený název PLC. |
system.rtc | Vloží systémový reálný čas (lokální čas). |
system.rtcutc | Vloží systémový čas v UTC (Coordinated Universal Time). |
Mervis RT používá Read Group pro odběr topicu, parsování dokumentu a aktualizaci hodnot v programu.
Read_Group. Mervis RT používá tuto skupinu pro vytvoření dokumentu a jeho odeslání do brokeru.
Write_Group. foreach je velmi užitečný pro iteraci přes více proměnných, ale není povinný. Šablonu lze vytvořit i kompletně ručně.(Poznámka pro nové uživatele: Mapování datových bodů a práce s Enumy je obecná vlastnost klientských kanálů v Mervis. Pokud jste již používali Modbus nebo jiné protokoly v Mervis, bude vám tento proces velmi povědomý.)
Uvnitř Read_Group vytvořte datový bod pro vstup.
IO ⇒ ST na cílovou proměnnou.$.temp pro JSON), aby Mervis přesně věděl, kde hledat hodnotu v příchozím payloadu. Pro CSV použijte vlastnost Index k určení přesné pozice hodnoty (indexování od 1).
Uvnitř Write_Group vytvořte datový bod pro výstup (např. Total).
ST ⇒ IO. Po namapování komunikačních proměnných je můžete použít ve standardní logice IEC 61131-3.
V praktické aplikaci můžete například mapovat dva MQTT vstupy (např. Power_Zone_1 a Power_Zone_2) a sečíst je pro výpočet celkové spotřeby energie objektu. Matematický blok vypočítá součet a výsledek se zapíše přímo do globální MQTT výstupní proměnné (Calculated_Total).
Pro ověření správné funkčnosti použijte desktopového klienta, jako je MQTTX, který simuluje reálný datový provoz. Umožní vám vidět výsledky Publish Templates vytvořených v Kroku 2.
broker.emqx.io:1883).building/hvac/#, abyste mohli sledovat veškerá data v rámci base topicu.building/hvac/temp. Použijte nastavený formát (např. JSON: {„temp“:5,„humidity“:50} nebo standardní CSV řádek).