December 3, 2021

D2000 a malinový koláč

Prečo takýto nadpis? Anglicky zdatnejší čitatelia si ho môžu preložiť do angličtiny - potom snáď bude jasnejší. Tí ostaní sa dozvedia jeho podstatu o chvíľu.

 

D2000 a Linux

 

V súčasnosti sa pripravuje na trh nová verzia D2000-ky, ktorá bude bežať na platforme Linux. Podobne ako v minulosti pri platformách OpenVMS a HP-UX, na Linux boli portované serverovské procesy D2000-ky. A podobne ako v minulosti, jedná sa o 64-bitovú D2000-ku, schopnú zvládať tie dátovo a výkonnostne najnáročnejšie aplikácie.

 

Rpi1_1_EN.png

Obr 1: na Linux boli portované serverovské procesy (červený rámik).

 

D2000-ku ale nasadzujeme my a najmä naši OEM partneri aj v menších zakázkach - v rozsahu rádove stoviek až tisícov tagov, jedno-dve HI, pár komunikácií. Príkladom sú rôzne dispečingy výroby a rozvodu tepla, monitoringy emisií, aplikácie PMToolkit, riadenie výroby. Relatívne nenáročné aplikácie, ktoré sa aj v praxi často prevádzkujú na bežných pracovných staniciach.

 

D2000 a kompilátor

 

Ako vieme z blogu “Výber programovacieho jazyka pre realtime systémy”, D2000-ka je napísaná v jazyku Ada, pričom na kompiláciu sa používa kompilátor GNAT od firmy AdaCore, ktorý striktne implementuje štandard jazyka Ada podľa normy ISO/IEC 8652:2012 a podporuje tak vysokú mieru portability medzi platformami.

 

No a v roku 2015 bol zverejnený kompilátor GNAT GPL 2015 aj pre platformu Raspberry PI2. O rok neskôr bol kompilátor aktualizovaný ako GNAT GPL 2016.

 

Názov Raspberry PI sa číta rovnako ako “raspberry pie” - čo je malinový koláč spomínaný v nadpise. Čo to je? Minipočítač vyvíjaný od roku 2013 - v súčasnosti je na trhu už tretia generácia PI3. Základná verzia stojí okolo 35 USD, má 1 GB RAM, štvorjadrový procesor Broadcom BCM2837 taktovaný na 1.2GHz (architektúra ARM7). Podporuje operačný systém Raspbian (Linuxová distribúcia postavená na Debiane) alebo viacero alternatív.

 

Takže - inšpirovaní jedným naším OEM partnerom - sme začali skúmať, či by sa nedal Raspberry PI použiť ako komunikačný počítač.

 

Príklad použitia? Malý Raspberry PI umiestnený v nejakej “skrini” komunikujúci s miestnymi zariadeniami - cez LAN, sériové linky RS-232 či RS-485 alebo digitálne či analógové vstupy a výstupy, ktorými disponuje. Smerom nahor komunikujúci s D2000 Serverom - cez LAN, WiFi alebo mobilné siete. Pre prípad straty konektivity by sa využila funkcia KOM Archív, ktorá umožňuje samostaný nábeh a beh KOM procesu a ukladanie hodnôt získaných z komunikácie do súboru. Po obnovení komunikácie je možné dáta automaticky alebo na povel odoslať do procesu D2000 Server, takže v takejto architektúre výpadok komunikácie neznamená stratu dát.

 

Okrem základnej konfigurácie Raspberry PI existujú aj firmy, ktoré dodávajú rôzne priemyselné verzie - montovateľné na DIN lištu, obsahujúce rôzne vstupy a výstupy (analógové, digitálne, reléové), modul pre uchovávanie reálneho času, prípadne GSM/GPRS/3G karty. Príkladom je IonoPi alebo NPE X500 (na webe si možno vyskladať rôzne periférie včítanie CAN zbernice, RS232/485 rozhrania, ZigBee a mobilných sietí). Pochopiteľne, takéto priemyselné verzie s perifériami už nestoja 35 USD, ale okolo 200 Eur a vyššie. Dokonca aj Moxa vyrába priemyselný ARM počítač UC-8100 s operačným systémom Debian Linux, pre ktorý by sa mal dať D2000 KOM skompilovať.

 

Rpi1_2.png

Obr 2: Sme na Raspberry PI - Linux, architektúra ARM71

 

D2000 a PI

 

Takže sme si nainštalovali kompilátor (jedná sa o cross-platformový kompilátor pracujúci na x64 Linuxe a generujúci binárky pre ARM architektúru) a po niekoľkých dňoch a prekonaní drobných problémov sme mali skompilovaný a funkčný KOM proces bežiaci na Raspberry PI (mali sme k dispozícii staršiu verziu PI2). Najviac nás potrápil Ada runtime, ktorý v GNAT GPL 2016 na platforme ARM nemal implementovanú knižnicu pre atomické operácie - takže sme ju museli emulovať.

 

Následne sme spustili KOM voči aplikačnému serveru s aplikáciou, ktorá má vyše 7000 vstupných a výstupných meraných bodov.

 

Rpi1_3.png

Obr 3: KOM spustený na Raspberry PI

 

Keďže sme nemali možnosť spustiť reálnu komunikáciu, vyskúšali sme aspoň replay mód, v ktorom KOM prehrával hodnoty nahraté a uložené v súboroch.

 

Celý KOM proces s konfiguráciou vyše 7000 meraných bodov a prehrávajúci desiatky hodnôt za sekundu spotrebúval podľa utility top cca. 200 MB operačnej pamäte a okolo 10% výkonu CPU (top považuje 100% za plné zaťaženie jedného jadra, preto môžu byť zobrazené aj hodnoty nad 100% a maximálny dostupný výkon je na štvorjadrovom PI3 rovný 400%).

 

Rpi1_4.png

Obr 4: Zaťaženie systému merané utilitou top

 

Ktoré komunikačné protokoly sú k dispozícii? V zásade všetky, ktoré na komunikáciu používajú sériovú linku, protokoly TCP/IP alebo UDP a prípadne komunikáciu cez súbory. Takže Modbus, M-Bus, IEC101, IEC104, ICCP/TASE2, OPC UA, BACnet …

Pochopiteľne nie sú k dispozícii protokoly, ktoré používajú Windows technológiu (OPC, DDE..) a protokoly vyžadujúce knižnice od výrobcov (LonTalk, AMiT ATOUCH32 DB-Net, L&G PROFIBUS..). Zoznam všetkých protokolov implementovaných v D2000 a na ktorých platformách sú dostupné, je uvedený v dokumentácii.

 

V druhom kroku sme vyskúšali skompilovať aj ostatné serverové procesy D2000-ky a nainštalovať ich na starší PI2 a novší PI3 (osadené 16GB resp. 8GB pamäťovou SD kartou). Na konfiguračnú a monitorovaciu databázu sme použili PostgreSQL (hoci D2000-ka podporuje aj štartovanie z XML súborov v situácii so statickou konfiguráciou aplikácie).

 

Obidva Raspberry sme prepojili do redundancie a spustili na nich cca. 5000-tagovú aplikáciu TLFC (kópiu LFC terminálu).

 

Rpi1_5.png

Obr 5: Redundantný systém TLFC na Raspberry PI

 

Následne sme ešte k Raspberry PI3 pripojili cez USB externý 2.5” disk s kapacitou 320 GB, presunuli naň konfiguračnú a monitorovaciu databázu, vytvorili archívnu databázu a spustili archív. Takže PI3 plnil kompletnú funkciu aplikačného a archívneho servera. Mimochodom, po štarte prehrávania hodnôt, keď kernel inicializuje hodnoty všetkých objektov zo súboru nahratých hodnôt, bol archív schopný spracovať niekoľko stovák hodnôt za sekundu!

 

Toto je druhý scenár použitia Raspberry PI - ako plnohodnotný aplikačný server D2000, voliteľne aj v redundantnom zapojení - redundantné servery aj redundantné archívy, aby sa eliminovalo riziko výpadku jedného zo strojov.

 

Rpi1_6_EN.png

Obr 6: redundantný LFC terminál na Raspberry PI2 a PI3 s archívom na PI3

  

K takémuto aplikačnému serveru je možné pripojiť štandardné užívateľské procesy (HI, CNF, GR) z prostredia Windows - či už 32 alebo 64-bitové. Interný komunikačný protokol D2000 umožňuje pripojenie klientských procesov k D2000 serveru bez ohľadu na platformu klienta a servera.

 

D2000 a tenký klient

 

Poďme ďalej. Zvládne Raspberry PI ešte viac ako prevádzkovanie D2000? Na silnejší model PI3 sme nainštalovali Javu (kvôli vyhnutiu sa možným problémom s licenciou OpenJDK namiesto Oracle Javy) a webový server WildFly. Nakonfigurovali sme procesy potrebné pre fungovanie tenkého klienta (tcts, tdldeployer) a boli sme schopní zobraziť schémy v prehliadači (bez ich akýchkoľvek ich úprav).

 

Rpi1_7.png

Obr 7: hlavná schéma TLFC zobrazená v prehliadači Chrome na Windows.

  

Raspberry ako .. dispečerská stanica?

 

Vyskúšali sme na staršom Raspberry PI2 vypnúť D2000 aj databázový server PostgreSQL a nainštalovať grafické prostredie “Raspberry Pi Desktop” a prehliadač Chromium. Po tejto inštalácii bolo na SD karte použitých cca 2.4 GB (včítane cca 200 MB súborov D2000-ky a 100 MB súborov databáz). Následne sme na tomto Raspberry spustili prehliadač a pripojili sa k webovému serveru na PI3.

 

Vytvorili sme tak konfiguráciu jedného aplikačného servera s web serverom (PI3), ku ktorému je pripojený klientsky počítač s prehliadačom (PI2).

 

Rpi1_8.png

Obr 8: Chromium na PI2 zobrazujúci schému TLFC

 

Raspberry - sme ekologickí a ekonomickí?

 

Do prevádzkových nákladov serverov dnes výrazne prispieva spotreba elektrickej energie. Takže ako je na tom náš server? Meranie napätia a prúdu z USB nabíjačky sme vykonávali cez USB modul KEWEISI. Výkonnejší Raspberry PI3 s pripojeným externým diskom mal bežnú spotrebu okolo 0.5-0.6 A, špičkovú (najmä pri zaťažení pevného disku) okolo 0.8 A. Toto je ďalšia výhoda energeticky úsporných procesorov ARM.

 

Rpi1_9.jpg

Obr 9: bežné hodnoty napájacieho prúdu a napätia RPI3 - 0.55 A, 5.36 V

 

 

Raspberry - výkon

 

Už vyššie sme písali o záťaži 10% pri prehrávaní hodnôt samostatne bežiacim KOM procesom. Aký je ale výkon napr. v porovnaní s PC? Vyskúšali sme jednoduchý syntetický test, pri ktorom sme merali trvanie stotisíc cyklov, v ktorých sa nastavuje lokálna premenná. Na Raspberry PI3 trval test cca 5 sekúnd. Na desať rokov starom PC (procesor Intel Core 2 Q6600 2.4 GHz) cca 3.1 sekundy. A súčasné PC (procesor Intel I7 860 2.8 GHz) to zvládlo za cca 0.6 sekundy.

 

 

Rpi1_10.png

Obr 10: test 100 tisíc cyklov v ESL skripte na RPI3 a I7


Takže na aplikácie väčšie rozsahom (počet tagov, klientov, procesov) alebo výkonom (skripty písané v ESL alebo Jave, náročnejšie a početnejšie komunikácie) už Raspberry PI stačiť nebude - kvôli obmedzeniam RAM a CPU.

 

Raspberry - bezpečnosť

 

Raspberry PI netrpí zraniteľnosťami Spectre a Meltdown, keďže jadrá ARM1176, Cortex-A7 a Cortex-A53 použité v jednotlivých generáciách procesorov PI nepoužívajú špekulatívne vykonávanie inštrukcií na zvýšenie výkonu (vykonáva sa iba špekulatívne načítanie inštrukcií do cache).

A keďže pochopiteľne nemá žiaden management procesor, netrpí ani nedávno odhalenými zraniteľnosťami, ktoré postihujú Intel Management Engine, Server Platform Services a Trusted Execution Engine.

 

Ďalším bonusom je nedostatok vírusov a malware pre túto platformu (s výnimkou malware ťažiaceho kryptomenu Monero na Raspberry zneužívajúceho prednastavené meno a heslo). 

 

Záver

 

Toto je síce záver blogu, ale v žiadnom prípade nie záver našej práce s Raspberry PI. Naopak - je to prvá informácia o tom, že niečo takéto je možné - vtesnať aplikačný server D2000 do prostredia malého, lacného a energeticky nenáročného ARM počítača.

 

Či už toto riešenie použijeme my alebo naši OEM partneri ako vzdialený komunikačný počítač, aplikačný server (voliteľne redundantný) implementujúci malý SCADA systém alebo protokolový prevodník, prípadne aj s webovým serverom pre tenkých klientov - alebo dokonca ako lacnú a jednoduchú dispečerskú stanicu - verím, že si táto technológia nájde v dnešnej realite hovoriacej o IoT a Priemysle 4 svoje miesto. 

 

Dodatok

 

Medzi napísaním tohto blogu a jeho zverejnením o platformu Raspberry PI prejavili záujem kolegovia z Inseka. Uvažujú o možnosti použitia ako tenkého klienta aplikácie PM Toolkit. V tejto konfigurácii by použili grafické prostredie s prehliadačom Chromium bežiacim v „kiosk“ móde, v ktorom sa nedá vypnúť ani prepnúť do inej aplikácie. Zároveň na pozadí bežiaci KOM proces by spolupracoval s USB čítačkou čiarových kódov (otestovali sme model LS2208 od Symbol Technologies s použitím Generic User Protokolu).

 

12.3.2018, Ing. Peter Humaj, www.ipesoft.com

Iné blogy