Matalasta MQTT Sparkplug siirtotiestä syvään UNS-hierarkiaan: Ilman Parris- tai Schultz-mallia

—

kirjoittaja

in

Teollisuuden ja maatalouden automaatiossa Unified Namespace (UNS) eli yhtenäinen nimiavaruus on nykypäivää. UNS kokoaa yrityksen kaiken datan – oli kyseessä tehdas tai älykäs säätösalaojitettu pelto – yhteen selkeään, hierarkkiseen puurakenteeseen.

Kun UNS-puu toteutetaan MQTT Sparkplug -protokollalla, törmätään usein väärinkäsitykseen, että Sparkplug B pakottaa UNS-puun matalaksi (koska osoite on matala: Group / Edge / Device). Miten ihmeessä voimme rakentaa syvän ja vapaasti skaalautuvan UNS-puun, jos tiedonsiirtoprotokolla määrittää raamit näin tiukasti? (lisätietoa: www.hivemq.com)

Vastaus on kuitenkin yksinkertainen: MQTT Sparkplug -osoite on vain tiedon kuljetusmekanismi, ei UNS-puun lukittu muotti. Mitään esteitä vapaalle UNS-hierarkialle ei ole, kun tiedonsiirto ja looginen sijainti erotetaan toisistaan.

Miten tämä eroaa alan tunnetuista malleista?

Teollisuusautomaatiossa tähän haasteeseen on perinteisesti tarjottu kahta johtavaa mallia, joista kumpaankin liittyy omat haasteensa:

  1. Parris-malli (Matthew Parris) pyrkii ahtamaan koko syvän hierarkian yhteen Sparkplug-osoitteeseen käyttämällä Group ID:n sisällä erikoismerkkejä (kuten Tehdas:Alue:Linja). Tämä kuitenkin siirtää ongelman kooditasolle, sillä se vaatii raskasta ja virhealtista merkkijonojen parsimista järjestelmän molemmissa päissä.
  2. Schultz-malli (David Schultz) puolestaan ratkaisee tilanteen fyysisellä arkkitehtuurilla: pystyttämällä useita eri MQTT-välittäjiä organisaation eri tasoille ja replikoimalla dataa niiden välillä ylöspäin. Tämä puolestaan synnyttää monimutkaisen palvelinviidakon ja vaatii erillisen integraatioalustan datan siirtelyyn.

SSOT-automaation lähestymistapa: Ohjelmistokeskeinen kytkentäeditori

Me olemme valinneet kolmannen tien, joka ottaa molempien maailmojen parhaat puolet ilman niiden varjopuolia. Erotamme matalan tason tiedonsiirron ja syvän loogisen UNS-hierarkian kokonaan toisistaan tietokantatasolla.

Kuvitellaan peltomallinnus, jossa meillä on syvä hierarkia: Galileo-palvelut / Seinäjoen alue / Alajoki / Kastelualue 2 / Säätökaivo.

Kentällä oleva älykäs ohjausyksikkö kommunikoi MQTT-välittäjän kanssa käyttäen matalaa ja lyhyttä Sparkplug-osoitetta, kuten Edge ID ”AA” ja Device ID ”1” (Sparkplugin otsikko: spBv1.0/galileo/DDATA/AA/1).

Kun laite ilmoittautuu ensimmäistä kertaa, se nousee väliaikaiseen Inboxiin. Järjestelmän kytkentäeditorissa tämä laitteen Edge ID tunniste ”AA” sidotaan suoraan tietokannassa siihen kohtaan syvää UNS-hierarkiaa, jonne se loogisesti kuuluu. DuckDB tietokannan uns_nodes taulussa on jokaiselle solmulle määritelty uns_key, uns_id, name ja sparkplugin_edge_id, mikäli kyseiseen solmuun on kytketty MQTT Sparkplugin Edge_id (esim. ”AA”).
Kaikki solmujen väliset lapsi ym. kytkökset on määritelty uns_edges taulussa.

Tämän arkkitehtuurin hyödyt:

  • Edge voi ilmoittautua kantaan lyhyellä Edge ID-tunnuksella (esim: ”AA”) ilman kikkailua maastossa, koska ei tarvitse tietää UNS-hierarkian polkua. Laiteet kytkeytyvät automaattisesti, jos niiden Edge ID on UNS-hierarkiassa.
  • Laite voidaan kytkeä, siirtää tai vaihtaa UNS-puussa ilman, että laitteen sisäistä koodia tai MQTT-aihetta (topic) tarvitsee koskaan muuttaa.
  • Vältämme Parris-mallin merkkijononparsimiset ja Schultz-mallin raskaan palvelininfrastruktuurin.

Tietograafi täydentää kokonaisuuden

UNS -puurakenne kertoo loistavasti, missä laite sijaitsee, mutta se ei osaa kertoa, miten laitteet vaikuttavat toisiinsa. Tähän tarvitaan tietograafia.

Tietograafin avulla voimme luoda solmujen välille vapaita suhteita, kuten ”Säätökaivo 3 FLOWS_TO Säätökaivo 4” tai laskennallisia arvoja UNS-tiedoista esim. ”Kastelupumpun kustannukset tunnissa”. Kun nämä fysiikan ja logiikan säännöt sidotaan osaksi UNS-puuta, järjestelmästä tulee elävä digitaalinen kaksonen, joka ymmärtää prosessien todelliset riippuvuudet.

UNS & Tietograafi -päänäytöllä on UNS hierarkiapuu ja sen editointi työkalut
Tietograafi muodostuu DuckDB tietokannan uns_nodes ja uns_edges tauluista

Tieto voittaa aina – kunhan se on järjestetty oikein. Erottamalla matalan tason tiedonsiirron ja syvän loogisen UNS-hierarkian toisistaan saamme keveän tiedonsiirron ja rajattoman skaalautuvuuden.