IoT sprendimų architektūra

Vykstant 4-ajai pramonės revoliucijai, tokios sąvokos kaip skaitmenizacija, dirbtinis intelektas, daiktų internetas ir pan. jau yra vartojamos kasdien, bet ne visiems iki galo aiškios. Šiuo straipsniu norime panagrinėti daiktų interneto (Internet of Things) pritaikymą kasdienėje praktinėje veikloje. Pati sąvoka Internet of Things (IoT) yra labai plati, abstrakti ir gana miglotai įsivaizduojama be konkrečių pavyzdžių, todėl pasidalinsime daugumą pritaikymo sričių apimančiu tinklo architektūros pavyzdžiu.

Pavyzdyje naudojame mūsų partnerio Advantech schemą. Kadangi tai yra pramoninių kompiuterių gamybos lyderis pasaulyje (33% pasaulinės rinkos) ir turi vieną plačiausių produktų krepšelių šioje srityje, šis pavyzdys labai patogus norint suprasti, kaip įgyvendinama IoT architektūra.

Iš esmės IoT galima pavadinti bet kokį prietaisų tinklą M2M (Machine-to-Machine), tačiau norint suprasti jo sandarą smulkiau, reikia daugiau sąvokų, kurių lietuvių kalboje dar nėra arba jų vartojimas dar visiškai nepapiltęs. Todėl pabandysime naudoti angliškus tarptautinius terminus ir lietuvių kalba paaiškinti, ką jie reiškia.

Periferinė arba I/O pajungimo dalis (Edge Sensing)

Bet kokio įrengimų tinklo labiausiai nutolusioje dalyje paprastai yra prietaisai, į kuriuos jungiami jutikliai, pavaros arba kiti įvesties/išvesties įrenginiai. Lietuvių kalboje nėra nusistovėjusio termino šiai daliai pavadinti. Galima tai vadinti periferine arba I/O pajungimo dalimi, o angliškai naudojama sąvoka Edge Sensing. Dažniausiai šie prietaisai atlieka informacijos perdavimo funkciją ir tai paprastai tai būna:

   Specializuotos PCI/PCI Express plokštės, skirtos pajungti kompiuterinės regos kameroms arba variklių ir pavarų valdymui. Kameros ir pavaros dažniausiai jungiamos per Ethernet sąsają, o pačios plokštės montuojamos į kompiuterius.
  Laidiniai ir belaidžiai nutolę I/O moduliai su Modbus, Profinet, LoraWAN ir kt. standartiniais ryšio protokolais.
Valdikliai, terminaliniai kompiuteriai. I/O jungiami į šiuos prietaisus tiesiogiai. Nors šie kompiuteriai būna maži, ekonomiški ir neturi galingų CPU ar daug atminties (nes yra skirti tik perduoti informacijai), vis tiek jie būna galingesni už daugumą įprastinių valdiklių. Tai naudinga tada, kai įprastinių valdiklių informacijos apdorojimo parametrai yra per silpni reikiamiems uždaviniams spręsti.
  Jutikliai su ryšio sąsaja. Kai kurie jutikliai (vibracijos, padėties nustatymo, lygio ir kt.) jau turi integruotą ryšio protokolą (IO-Link, LoRa, Bluetooth ar kt.), todėl gali būti laikomi šio lygmens atstovais.
  Įvairūs kiti duomenų surinkimo prietaisai: jungiami prie PC per USB ar kt. sąsajas: įvairūs osciloskopai, kabeliavimo plokštės, adapteriai ir pan.

 

Tarpiniai (Edge) kompiuteriai

Gavus jutiklių ir kitų įvesties įrenginių informaciją iš žemiausio lygmens, ją reikia apdoroti. Žinoma, teoriškai galima būtų ją siųsti tiesiai į serverius, bet tokiu atveju labai juos apkrautume, sistema veiktų lėtai, o serveriams prireiktų labai didelių ryšio resursų (pvz., su kiekvienu belaidžiu prietaisu bendrauti skirtingu dažniu). Taigi, šioje vietoje labai praverčia tarpinis kompiuteris, kuris dalį informacijos apdoroja pats, o dalį perduoda aukštesniam lygmeniui. Tokiu būdu sukuriama iš dalies paskirstyta tinklo architektūra, kai serveris tiesiogiai komunikuoja daugiausiai tik su tarpiniais kompiuteriais.

Šie kompiuteriai yra galingesni ir turi daugiau atminties, nei terminaliniai kompiuteriai, nes be informacijos perdavimo dar atlieka ir dalies jos apdorojimo funkcijas. Pateiksime populiariausius tarpinių kompiuterių tipus:

   Galingi pramoniniai kompiuteriai
   Moduliniai pramoniniai kompiuteriai. Jie turi labai lanksčias konfigūravimo galimybes: modulinės struktūros dėka galima turėti kokius reikia I/O ar ryšio sąsajas.
  Beventiliatoriniai kompiuteriai
  Paneliniai kompiuteriai. Kompiuteris su monitoriumi yra viename korpuse.
  Valdikliai kompiuterių pagrindu. Laisvai programuojami valdikliai su kompiuteriuose plačiai naudojamais CPU, RAM, SSD, įterptinėmis (embedded) Windows OS ir šioje aplinkoje veikiančiais programavimo įrankiais:

  • IEC 61131- 3 programavimo kalbos (LD, IL, FBD, SFC, CFC);
  • eVC (Embedded Visual C++), .NET aplinkos;
  • CODESYS;

Linux aplinka palaiko C ir Phyton programavimo kalbas.

Nuo periferinėje dalyje esančių įprastinių valdiklių skiriasi tuo, kad be prietaisų valdymo dar atlieka daugiau informacijos apdorojimo ir perdavimo užduočių, turi galingesnius CPU, daugiau atminties (todėl ir naudojami tie komponentai, kurie būna naudojami ir kompiuteriuose).


Ryšio įranga

Kai jau turime periferinėje dalyje iš jutiklių ir įvesties įrenginių surinktą bei dalinai tarpiniuose kompiuteriuose apdorotą informaciją, belieka ją perduoti į serverius. Tam reikalinga ryšio įranga. Nuo periferinėje dalyje esančių I/O įrengimų jie skiriasi tuo, kad ryšio įrengimai nerenka skaitmeninių ar analoginių įėjimų/išėjimų, bet tik perduoda jau surinktus duomenis tam tikru protokolu (iš tarpinių kompiuterių serveriams). Pagal perdavimo terpę labai paprastai galime ją skirstyti į tokias grupes:

   Laidinio ryšio duomenų perdavimo įranga.
  Bevielio ryšio duomenų perdavimo įranga.

 

Serveriai ir duomenų saugojimo įranga

Tai yra aukščiausias lygmuo šioje architektūroje, taigi, jame esantys įrenginiai jau apdoroja ir saugo visą reikalingą informaciją bei atlieka visos sistemos valdymą. Tai – galingiausius apdorojimo resursus (CPU, atmintis) turintys įrenginiai visame tinkle. Pagrindiniai jų tipai:

  Duomenų saugojimo ir hibridiniai serveriai. Svarbiausia jų užduotis – patikimai saugoti duomenis ir užtikrinti jų saugumą.
  Giluminio mokymosi (deep learning) /GPU serveriai. Dirbtinio intelekto (Artificial Intelligence – AI) sistema yra specifinis tinklas, turintis tam tikrų savybių. Ateityje tikimės pateikti atskirą straipsnį apie dirbtinį intelektą ir jo taikymą pramonėje. Kol kas paminėsime, kad pramonėje dažniausiai AI taikomas kompiuterinės regos srityje, dėl to didžiausias dėmesys skiriamas darbui su grafika (GPU serveriai). Šie serveriai atlieka būtent „mokymosi” darbą.
   Sprendimų (Inference) serveriai. Remdamiesi jau „išmoktu” algoritmu, šie AI serveriai jau analizuoja gaunamą informaciją ir daro sprendimus (arba galima vadinti „išvadas, spėjimus”) pagal tai, kas „išmokta”, t.y. pagal sudarytą dirbtinio intelekto algoritmą. Pvz., atpažįsta, ar nuotraukoje pavaizduotas gyvūnas yra šuo, ar katė.

 

Tokia yra fizinė tinklo architektūra. Programinėje dalyje ji gali būti kitokia. Dažniausiai programinė įranga taikoma tam tikrai sričiai (pvz., Advantech WebAccess/CNC skirta CNC staklių stebėjimui) ir apima visus fizinius lygmenis nuo periferinės dalies iki serverių. Kai kurios programos skirtos tik vienam lygmeniui: pvz., WebAccess/NMS skirta tik ryšio įrangai (valdomiems komutatoriams).

Realiose sąlygose fizinė architektūra taip pat gali apimti ne visus lygmenis: pvz., jei įėjimų/išėjimų skaičius nedidelis ir atstumas nuo jutiklio iki kompiuterio nedidelis, žemiausio lygmens (periferinės dalies) galima atsisakyti ir jutiklius pajungti tiesiai prie tarpinio kompiuterio (žinoma tokio, kuris turi integruotus I/O).