26.3.2024

Komunikácia – protokol IEC 104, časť 2

V prvej časti článku o protokole IEC 104 sme popísali formát paketov a riadiaceho poľa, mechanizmus nadväzovania spojenia a potvrdzovanie paketov prostredníctvom SSN a RSN. Dnes pokračujeme vyžiadaním hodnôt po pripojení - Interrogation.

 

Interrogation

Po nadviazaní spojenia (a poslaní StartDT activation) pošle riadiaca stanica spravidla ako prvé I-rámce ASDU 100 „Interrogation Command“ a/alebo ASDU 101 „Counter Interrogation Command“ na vyžiadanie si aktuálnych hodnôt všetkých objektov, keďže po prijatí StartDT začne riadená stanica posielať iba zmeny.

 

V D2000 KOM procese určujú poradie posielania ASDU 100 a 101 a to, či sú posielané, hodnoty prametrov protokolu „Order of IC“ a „Order of CIC“.

Balancovaný mód

Balancovaný mód v IEC 104 protokole znamená, že obidve stanice môžu posielať dátové ASDU aj príkazové ASDU. Zároveň riadená stanica môže posielať Interrogation (ASDU 100 a 101) na získanie aktuálneho obrazu dátových bodov riadiacej stanice. Rozdiel medzi oboma stranami je teda už iba v tom, kto iniciuje komunikáciu.

 

Balancovaný mód sa na strane D2000 nezapína žiadnym parametrom protokolu. Spracovanie aj príkazových ASDU v protokole „IEC 104 Klient“ resp. aj dátových ASDU v protokole „IEC 104 Server“ je štandardne podporené (a záleží od konfigurácie druhej strany, či takéto ASDU pošle). V konfigurácii výstupného meraného bodu sa konfiguruje typ ASDU a záleží od konfigurátora, či použije dátové alebo príkazové ASDU. V konfigurácii meraného bodu sú najskôr ponúkané ASDU nebalancovaného módu (dátové pre server, príkazové pre klienta) a až potom ASDU balancovaného módu (a na konci D2000 špecifické ASDU).

Pri výbere ASDU treba zohľadniť aj povahu výstupného bodu – hodnoty dátových ASDU sú poslané druhej strane ako odpoveď na Interrogation, hodnoty príkazových ASDU sú posielané len pri zmene.

 

IEC104_12.png

Obr 12 – konfigurácia výstupného meraného bodu v protokole „IEC 104 Server“.
Najskôr sú ponúkané dátové ASDU, potom príkazové pre balancovaný mód, nakoniec D2000 špecifické.
Výber ASDU závisí od typu meraného bodu (na obrázku bod typu logický výstup – Dout).

 

IEC104_13.png

Obr 13 – konfigurácia výstupného meraného bodu v protokole „IEC 104 Klient“.
Najskôr sú ponúkané príkazové ASDU, potom dátové pre balancovaný mód, nakoniec D2000 špecifické.
Výber ASDU závisí od typu meraného bodu (na obrázku bod typu analógový výstup – Ao).

 

Synchronizácia času a časové značky

Podobne ako v IEC 101 sa na synchronizáciu času riadenej stanice používa ASDU 103 “clock synchronization command”.

Protokol „IEC 104 Server“ implementovaný v D2000 spracuje ASDU 103 tak, že síce nemení čas počítača ani D2000 systému (to by nebolo žiadúce a v prípade viacerých pripojených klientov ani zmysluplné), ale uchováva si časovú diferenciu medzi svojím časom a časom klienta a používa ju na korekcie časov posielaných hodnôt (pre ASDU, ktoré používajú časovú značku).

 

Protokol „IEC 104 Klient“ implementovaný v D2000 vykonáva synchronizáciu času podľa parametrov nastavených na stanici. Navyše (pokiaľ je nastavený parameter „Force Master Time“ je ochotný spracovať ASDU 103 poslanú IEC 104 serverom (čo je nad rámec normy) a vykonávať korekciu časov hodnôt, ktoré prišli s časovou značkou, aby sa upravili na čas D2000 systému. Alternatívou je parameter „Force Slave Time“, ktorý spôsobuje naopak to, že ASDU s časovou značkou sú prijaté do systému bez zmeny a hodnoty z ASDU bez časovej značky sú označované časom D2000 systému korigovaným o rozdiel času (takže sú  prevedené na čas komunikačného partnera). Ideálne je samozrejme, ak sú časy komunikujúcich systémov zladené (napr. pomocou NTP).

 

Ešte poznámka k času – norma neudáva, či sú časové značky v miestnom čase (so zohľadnením letného času) alebo v UTC. Implementácia v D2000 používa taký čas, aký je nastavený v parametroch stanice – lokálny (s prípadným letným posunom) alebo UTC (prípadne UTC plus definovaný offset). Naše skúsenosti sú také, že ideálne je použiť UTC, prípadne UTC s definovaným offsetom, lebo v takomto prípade nie sú problémy s prechodom časov. Nie každá implementácia toto podporuje. Stretli sme sa u konkrétneho zákazníka so staršou verziou ABB Microscada, ktorá ako IEC 104 server nastavovala v časovej značke príznak „SU“ (summer time) a teda v dobe prechodu z letného na zimný čas sa nedalo rozlíšiť, či sa jedná o „prvú“ 2. hodinu alebo o „druhú“, keďže príznak „SU“ bol nastavený stále.

 

ASDU 70 – „end of initialization“

Spomenutá ABB Microscada mala ešte ďalšiu nepríjemnú vlastnosť, kvôli ktorej do protokolu „IEC 104 Klient“ pribudol parameter „End of initialization“. Totiž ABB Microscada server po reštarte už prijímal klientov, reagoval na StartDT, ale ešte nemusel byť plne inicializovaný. Na ASDU 100 a 101 reagoval poslaním odpovede, ale nie dát. Po úplnej inicializácii poslal ASDU 70 a očakával, že klient zopakuje ASDU 100 a 101 na získanie aktuálneho obrazu dát. U iných 104 serverov sme sa s takýmto chovaním nestretli.

 

ASDU nad rámec normy

Do protokolu IEC 104 boli podporené viaceré ASDU nad rámec normy. Pri implementácii sme použili „vysoké“ čísla ASDU.

 

ASDU 252 – D2000 Unival

 

Pokiaľ sa IEC 104 protokol používa medzi dvoma D2000 systémami, umožňuje ASDU 252 prenos hodnoty aj s užívateľskými príznakmi, atribútmi (limity a procesné alarmy). Zároveň dokáže preniesť aj hodnoty typu text, relatívny a absolútny čas. Analógovú hodnotu prenáša ako 64-bitový float, takže sa nestrácia presnosť a nezmenšuje rozsah ako pri 32-bitovom floate, ktorý IEC 104 používa.

 

ASDU 249-251 – čítanie historických dát

 

Ak sú prepojené dva D2000 systémy, tak ASDU 250 sa používa na vyžiadanie historických dát pre jeden objekt za definovaný časový interval. Samotné dáta sú posielané ako ASDU 251 (32-bitové float hodnoty), prípadne – ak je nastavený parameter „D2000 64-bit Historical Values“ – ako ASDU 249 (64-bitové float hodnoty).

Čítanie historických dát sa dá použiť na zaplátanie diery po výpadku komunikácie. Systém D2000, ktorý je IEC 104 klient, si vyžiada dáta za požadované obdobie. IEC 104 server dáta získa z D2000 archívu. Zaujímavosťou je možnosť špecifikovať (v konfigurácii výstupného meraného bodu) archívny objekt pre poskytovanie historických dát. Je tak možné poskytnúť pri plátaní diery napríklad minútové priemery namiesto sekundových dát..

Vyvolanie čítania historických dát je možné ručne cez TELL príkaz GETOLDVAL, prípadne akciou GETOLDVAL zo skriptu.

 

ASDU 241 a 243 – 64 bitový float

 

Pre potreby spoločného projektu firiem URAP a Ipesoft boli na strane D2000 aj na strane PLC B&R používaných URAP-om implementované dátové ASDU 241 (64-bitový float) a 243 (64-bitový float s časovou značkou). Od štandardných ASDU 13 a 36 sa líšia iba 64-bitmi hodnoty namiesto 32. Tieto ASDU boli použité kvôli potrebe prenosu hodnôt s veľkým rozsahom a vysokou presnosťou z prepočítavačov plynu.

 

Redundancia serverov a sietí

Protokol „IEC 104 klient“ je v D2000 podporený na linkách „TCP/IP-TCP“ a „TCP/IP-TCP Redundant“.  Na linke „TCP/IP-TCP“ sa vytvára v jednom čase jedno TCP spojenie voči IEC 104 serveru. V konfigurácii linky je možné zadať jednu alebo viacero IP adries oddelených čiarkou alebo bodkočiarkou. D2000 KOM sa bude snažiť postupne pripájať k týmto IP adresám až kým úspešne nenadviaže TCP spojenie a nedostane odpoveď na StartDT rámec.  Túto konfiguráciu je možné použiť napr. v situácii ak komunikujeme s jedným serverom po dvoch redundantných sieťach.

 

IEC104_14.png

Obr 14 – konfigurácia s jedným serverom na redundantnej sieti

 

Rovnakú konfiguráciu by sme použili pri komunikácii s redundantným systémom, pričom iba aktívny IEC 104 server prijíma klientov.

 

IEC104_15.png

Obr 15 – konfigurácia s dvoma servermi, na TCP linke by boli IPA, IPB.

 

Pokiaľ by bolo potrebné v jednom čase komunikovať s oboma servermi, použili by sme linku „TCP/IP-TCP Redundant“. Ako IP adresu primárneho zariadenia by sme dali IPA, sekundárneho zariadenia IPB.

 

Ak by sa jednalo o dva servery na redundantných sieťach, opäť by sme použili linku „TCP/IP-TCP Redundant“. Ako IP adresy primárneho zariadenia by sme nakonfigurovali IPA1, IPA2, sekundárneho zariadenia IPB1 a IPB2.

 

IEC104_16.png

Obr 16 – konfigurácia s dvoma servermi na redundantných sieťach

 

Pre tento prípad (redundantné servery na redundantných sieťach) existujú parametre protokolu „Asymetric Redundancy Mode Periodicity“ a „Asymetric Redundancy Mode Slave Detection“, ktoré slúžia k tomu, aby sa po výpadku a následnom obnovení funkčnosti jednej siete pre každé TCP spojenie použila iná sieť (z dôvodu rovnomerného zaťaženia siete alebo prežitia jedného spojenia pri ďalšom výpadku siete).

 

Pokiaľ sú teda funkčné obe TCP spojenia, s definovanou periodicitou sa kontroluje, či obe spojenia idú cez tú istú sieť (obe TCP spojenia používajú rovnakú nakonfigurovanú IP adresu, napr. prvú). Ak áno, jedno spojenie sa preruší a obnoví po inej sieti. Ktoré? To hovorí parameter „Asymetric Redundancy Mode Slave Detection“. Buď ľubovolné alebo to, ktoré posiela ASDU s nastaveným „test“ bitom v poli príčina poslania (COT), alebo to, ktoré má v 3. bajte riadiaceho poľa nastavený najnižší bit na 1 (čo je chovanie nad rámec normy). Záleží od IEC 104 servera, akú formu detekcie „pasívneho“ resp. „standby“ servera ponúka. Pokiaľ je aj ako IEC 104 server redundantný D2000 systém, pomocou parametrov „Standby Set Test Bit“ alebo „Standby Set Control Field“ je možné nastaviť obidva vyššie popísané spôsoby odlíšenia pasívneho D2000 KOM procesu.

 

Čo ak je samotný systém D2000 redundantný a má teda dva alebo viac klientskych KOM procesov (jeden aktívny a ostatné pasívne)? Štandardne dôjde k zatvoreniu TCP spojenia, ak sa stane KOM proces pasívny (pre IEC 104 klient aj server protokol). Parameter protokolu „Standby Keep Open“ spôsobí, že spojenie nebude zavreté. Ak je navyše nastavený parameter protokolu „Standby Write Values“, aj pasívny  KOM proces bude posielať nové hodnoty a príkazy. Tieto parametre umožňujú za cenu vyššej záťaže siete a serverov v bežnej prevádzke “beznárazové” prepnutie D2000 redundancie (keďže nedôjde k zatvoreniu TCP spojení pasívnym D2000 KOM procesom, ani otvoreniu a poslaniu Interrogation aktívnym).

 

Ako detekovať nefunčnosť jednej z trás? Okrem „externých“ prostriedkov (pingovanie IP adries D2000 Serverom) je možné na linke „TCP/IP-TCP Redundant“ využiť príznaky FLC a FLD v hodnote stanice. Tieto príznaky sú nastavované KOM procesom  na indikáciu nefunkčnosti primárnej resp. sekundárnej trasy.

 

Okrem protokolov „IEC 104 Klient“ a „IEC 104 Server“ má systém D2000 už vyše 12 rokov implementovaný aj protokol „IEC 104 Sinaut“, ktorý zohľadňuje špecifiká systému Sinaut Spectrum. Čo sa týka redundancie, aktívny aj pasívny KOM proces v jednom čase komunikuje s aktívnym aj pasívnym serverom Sinaut po redundantných sieťach (t.j. každý KOM proces má otvorené 4 TCP spojenia).

 

IEC104_17.png

Obr  17 – komunikácia redundantných D2000 a Sinaut systémov na redundantnej sieti

 

Protokol „IEC 104 Sinaut“ nepodporuje všetky ASDU a nemá ani mnohé konfiguračné parametre, ktoré nie sú pre Sinaut potrebné.

 

Iné chuťovky

Pre zrýchlenie detekcie problémov komunikačných trás má  protokol „IEC 104 Klient“ parametre „Ping Timeout“ a „Ping Count“.  Ich nastavením je možné dosiahnuť, že D2000 KOM proces na pozadí posiela ICMP ping pakety na nakonfigurované IP adresy. Pokiaľ do času „Ping Timeout“ (zadávaného v milisekundách) nepríde odpoveď „Ping Count“-krát po sebe, TCP spojenie na túto IP adresu je zatvorené (ak bolo vytvorené) a D2000 KOM proces sa snaží o znovupripojenie na ďalšiu IP adresu podľa konfigurácie linky.

 

Parameter „Stop Data Confirm Ignored“ bol v protokole „IEC 104 klient“ implementovaný v roku 2007 kvôli chybe METSO DNA servera. Tento po nadviazaní spojenia pošle U-rámec StopDT confirmation, po prijatí ktorého by D2000 KOM proces spojenie štandardne zavrel. Takto je rámec ignorovaný a pokračuje sa v komunikácii :)

 

Záver

IEC104 protokol sme začali implementovať v systéme D2000 pred vyše 14 rokmi (najskôr klientskú časť, neskôr serverovskú a nakoniec Sinaut verziu). Za ten čas pribudli mnohé parametre reflektujúce rôznorodosť komunikačných partnerov a situácií, v ktorých bol protokol použitý. V súčasnosti  je nasadený u mnohých zákazníkov v energetike, plynárenstve, v rôznych výrobných závodoch, ale aj na prepojenie zákazníkov s partnerskými organizáciami (a nielen v rámci Slovenska). Myslím, že pre svoju implementačnú jednoduchosť, výkonnosť a vlastnosti potlačujúce vplyv latencie sa bude aj naďalej vo významnej miere používať ďalej, aj keď čelí konkurencii v podobe ICCP/TASE-2 alebo OPC UA protokolov, ktoré sú síce výrazne náročnejšie na implementáciu, ale ponúkajú možnosti nad rámec IEC 104 v oblasti ako autentifikácia a kryptovanie – čo začína mať v dnešnom svete čím ďalej tým väčšiu váhu.

20,11.2017, Ing. Peter Humaj, www.ipesoft.com

Iné blogy