26.3.2024

SCADA architektúra - referenčná integrita

Toto je prvý zo série blogov ohľadne architektúry SCADA systémov. Chcel by som sa v nich venovať dôležitým vlastnostiam SCADA technológií, ktorých prítomnosť (alebo absencia) ovplyvňuje funkčnosť, užívateľskú prívetivosť, použiteľnosť a škálovateľnosť týchto technológií. Tento blog bude o vlastnosti, ktorú v aplikačnom serveri reálneho času Ipesoft D2000 nazývame referenčná integrita.

Čo je to referenčná integrita?

Referenciami nazývame vzťahy medzi D2000 objektami – ak jeden objekt používa/potrebuje iný. Ak je napríklad meraný bod zobrazovaný na schéme, tak ho schéma „potrebuje“ k svojmu fungovaniu. V referenciách schémy bude teda uvedený dotyčný meraný bod.

Referencie môžú byť dvoch druhov:

• Statické – používanie je súčasťou konfigurácie - viď príklad vyššie. Táto väzba je stála a zrušiť ju môže iba zmena konfigurácie.

• Dynamické – objekt je používaný dynamicky – napríklad užívateľ si otvoril schému v grafickom rozhraní D2000 HI, alebo si otvoril zoznam objektov v konfiguračnom nástroji D2000 CNF. Táto väzba je dynamická, krátkodobá a zaniká napr. zatvorením schémy alebo zatvorením zoznamu objektov.

Referenčnou integritou nazývame zabezpečenie kontroly, že konfigurácia SCADA aplikácie je v každom okamihu konzistentná – t.j. všetky používané objekty existujú a nemôže dôjsť k vymazaniu objektu, ktorý je používaný v konfigurácii iného objektu.

Aj pri hromadných zmenách konfigurácie (XML Import) sa kontroluje konzistencia aplikácie – XML import sa nevykoná, ak importované objekty obsahujú referencie na iné objekty, ktoré nie sú v existujúcej aplikácii ani medzi importovanými.

Referenčnú integritu stráži jadro systému D2000 – proces D2000 Server, ktorý udržuje celú konfiguráciu aplikácie – primárne v operačnej pamäti a následne synchronizuje zmeny konfigurácie do konfiguračnej SQL databázy.

Referenčná integrita bola od začiatku súčasťou návrhu systému D2000 – vyžadoval ju navrhnutý DODM (dynamický objektový dátový model), ktorý mal byť dynamický (zmeny konfigurácie za behu) a objektový (konfigurácia existuje vo forme objektov a vzťahov medzi nimi) a preto musel zabezpečiť konzistenciu konfigurácie.

Načo je to dobré?

Okrem udržovania konzistencie aplikácie je referenčná integrita neoceniteľným pomocníkom pri tvorbe a udržovaní rozsiahlych SCADA systémov. Umožňuje vysledovať dátové toky a aplikačnú logiku pomocou sledovania vzťahov medzi objektami.

Najjednoduchšie to ukážem na príklade:

V aplikácii sú merané body M.StA.Temp1 a M.StA.Temp2, ktoré merajú teploty stanice StA. Tieto sú archivované archívnymi objektami H.StA.Temp1 resp. H.StA.Temp2. Následne sú nakonfigurované štatistické archívy H.StA.Temp1_minAvg a H.StA.Temp2_minAvg, ktoré ukladajú ich jednominútové vážené priemery a ďalšie štatistické archívy H.StA.Temp1_5minAvg a H.StA.Temp2_5minAvg, ktoré ukladajú 5-minútové vážené priemery počítané z minútových.

Okrem toho existuje počítaný bod P.StA.TempMax, ktorý počíta maximum z teplôt M.StA.Temp1 a M.StA.Temp2.

Všetky spomenuté objekty sú vizualizované na schéme S.StA.Temperatures, pričom merané body a archívne objekty sú zobrazované aj v grafe D.StA.Temps, ktorý je tiež súčasťou schémy.

Nasledujúci obrázok ukazuje konfiguráciu uvedených objektov v nástroji D2000 CNF, prípadne ich zobrazenie v D2000 HI (graf a schéma).

Obrázok 1 - Konfigurácia meraných bodov, archívnych objektov, počítaného bodu, grafu a schémy použitých v príklade

Pomocou zobrazenia závislostí je možné zistiť, kto statickypoužíva meraný bod M.StA.Temp1 a na ňom závislé objekty:

Obrázok 2- Závislosti medzi objektami: kto staticky používa meraný bod M.StA.Temp1 a na ňom závislé objekty

Na obrázku č. 2 vidieť všetky vyššie popísané závislosti.V prípade veľkého množstva závislých objektov je možné filtrovať podľa názvu a typu objektu.

Takýmto spôsobom je možné sledovať tok dát od meraného bodu,cez počítané body, archívne objekty a ďalšie typy objektov, až po prípadné zobrazenie na schémach.

Jeden objekt sa môže v strome nachádzať aj viackrát, ak používa viacero objektov závislých na meranom bode – napr. schéma S.StA.Temperatures používa (zobrazuje) všetky ostatné objekty - meraný bod, archívne objekty, graf aj počítaný bod.

Tento istý dialóg umožňuje aj zobrazenie v opačnom smere – tj. je možné zistiť, ktoré objekty sú používané iným objektom. Ak začneme schémou a zisťujeme, ktoré objekty používa/potrebuje, dostaneme takýto strom objektov:

Obrázok 3-Závislosti medzi objektami: kto je staticky používaný schémou S.StA.Temperatures

Dialóg umožňuje aj zobrazenie dynamických závislostí:

Obrázok 4- Závislosti medzi objektami: kto dynamicky používa meraný bod M.StA.Temp1 a na ňom závislé objekty

Vidieť, že meraný bod je otvorený v dynamickom zozname (list) v konfiguračnom nástroj CNF (proces nb1phum1.CNF). Schéma S.StA.Temperatures je otvorená v v grafickom rozhraní HI (proces nb1phum1.HIP) ako aj v zozname objektov (takisto v procese nb1phum1.HIP).

Dynamické závislosti pomôžu zachytiť aj používanie D2000 objektov externými programami – napr. otvorenie objektu prostredníctvom rozhrania D2000 OBJApi určeného pre C/C++ programy alebo D2000 VBApi z prostredia Microsoft Visual Basic / Microsoft Excel.

Výkon

Sledovanie dynamických závislostí medzi objektami umožňuje implementáciu optimálnej „push“ architektúry. Proces D2000 Server vie, ktorý proces používa aké objekty a teda potrebuje ich hodnoty. Napríklad po otvorení schémy v grafickom rozhraní HI mu začne posielať zmeny hodnôt všetkých objektov, ktoré schéma potrebuje. Po zatvorení schémy posielanie hodnôt prestane. Takto je zabezpečené, že nedochádza k zahlteniu D2000 Servera periodickým dotazovaním ohľadne zmien hodnôt. Mimochodom, mal som dočinenia so SCADA systémom, ktorý mal všetky objekty a ich hodnoty v in-memory SQL databáze a jeho proces užívateľského rozhrania periodicky (každé 2 sekundy) túto databázu dotazoval. Nielenže zaťažoval server, ale nebol schopný zobraziť rýchle zmeny hodnôt (niekoľkokrát za sekundu). Architektúra D2000 vďaka sledovaniu dynamických závislostí takýmito nedostatkami netrpí.

Ešte poznámka: na implementáciu „push“ architektúry stačí poznať dynamické závislosti objektov. Preto môžu existovať SCADA systémy, v ktorých klientské procesy oznamujú serveru, že majú záujem o konkrétne tagy, a následne im server posiela hodnoty týchto tagov – bez toho, že by implementoval referenčnú integritu. Takže ak dôjde k vymazaniu meraného bodu použitého v schéme, po otvorení schémy a vyžiadaní hodnoty meraného bodu server zahlási „objekt nebol nájdený“.

Má referenčnú integritu aj váš SCADA systém?

Rýchla odpoveď je: pravdepodobne nie – nepoznám konkurenčný systém, ktorý by ju implementoval (ak sa mýlim, prosím dajte mi vedieť). Jedná sa o unikátnu a veľmi užitočnú vlastnosť, ktorá však musí byť zapracovaná do základov systémovej architektúry. Ak napríklad používate textové identifikátory objektov (napr. SCADA systémy Ignition alebo WinCC OA), neviem si predstaviť implementáciu referenčnej integrity.

Záver

Referenčná integrita v aplikačnom serveri reálneho času Ipesoft D2000 je skvelá systémová vlastnosť, ktorá zabezpečuje konzistenciu konfigurácie, zabraňuje vymazať používaný objekt, umožňuje sledovať tok dát a aplikačnej logiky podľa väzieb medzi jednotlivými objektami a distribuovať hodnoty objektov do procesov, ktoré ich potrebujú. Bez referenčnej integrity by bolo vytváranie, servisovanie a ďalší rozvoj rozsiahlych SCADA a MES systémov oveľa náročnejšie a komplikovanejšie – preto buďme vďační tvorcom, ktorí referenčnú integritu zakomponovali už do návrhu systému Ipesoft D2000!

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

Iné blogy