Protokol IEC 870-5-104 Server
Podporované typy a verzie zariadení
Konfigurácia komunikačnej linky
Konfigurácia komunikačnej stanice
Konfigurácia meraných bodov
Literatúra
Revízie dokumentu
Podporované typy a verzie zariadení
Komunikácia podporuje čítanie a zápis údajov protokolom IEC870-5-104, pracujúcom na báze TCP sieťovej komunikácie. D2000 pracuje v režime IEC 870-5-104 server (slave) schopný komunikácie s N klientmi (masters). Implementácia je podľa normy IEC870-5-104 nasledovná:
- Počiatočná Originator ASDU address je 1 bajt, zadáva sa ako číslo linky.
- ASDU address je 2 bajty, zadáva sa ako adresa stanice. Každá stanica na jednej linke musí mať rôznu ASDU adresu.
- Cause of transmission má 2 bajty (obsahuje aj Originator ASDU address)
- Information object address = 3 bajty, zadáva sa ako adresa meraného bodu.
- Implementované sú nasledujúce ASDU v smere monitorovania (od D2000 k riadiacej stanici, v balancovanom móde aj opačným smerom):
Tab. č. 1
Typ ASDU | Typy meraného bodu |
---|---|
1 - Single-point information | Dout |
2 - Single-point information with time tag | Dout |
3 - Double-point information | Dout,Cout |
4 - Double-point information with time tag | Dout,Cout |
5 - Step position information | Cout |
6 - Step position information with time tag | Cout |
7 - Bitstring of 32 bits | Cout |
8 - Bitstring of 32 bits with time tag | Cout |
9 - Measured value, normalized value | Ao |
10 - Measured value, normalized value with time tag | Ao |
11 - Measured value, scaled value | Cout |
12 - Measured value, scaled value with time tag | Cout |
13 - Measured value, short floating point value | Aout |
14 - Measured value, short floating point value with time tag | Aout |
15 - Integrated totals | Cout |
16 - Integrated totals with time tag | Cout |
20 - Packed single-point information with status change detection | Cout * |
21 - Measured value, normalized value without quality descriptor | Ai |
30 - Single-point information with time tag CP56Time2a | Dout |
31 - Double-point information with CP56Time2a tag | Dout,Cout |
32 - Step position information with CP56Time2a tag | Cout |
33 - Bitstring of 32 bits with CP56Time2a tag | Cout |
34 - Measured value, normalized value with CP56Time2a tag | Aout |
35 - Measured value, scaled value with CP56Time2a tag | Cout |
36 - Measured value, short floating point value with time tag CP56Time2a | Aout |
37 - Integrated totals with time tag CP56Time2a | Cout |
241 - 64-bit floating point value (implementácia Ipesoft/URAP) | Ao |
243 - 64-bit floating point value with time tag CP56Time2a (implementácia Ipesoft/URAP) | Ao |
251 - Archive data values (implementácia Ipesoft) | žiaden ** |
252 - D2000 Unival (implementácia Ipesoft) | všetky |
Poznámka: Na nastavenie jednotlivých bitov bajtu, ktorý
hovorí o kvalite (SIQ pre ASDU 1,2,30; DIQ pre ASDU 3,4,31; QDS pre ASDU 5..14,20,32..36) sú použité flagy FLA (0.bit), FLB (1.bit) ..FLH (7.bit).
Napríklad:
- pre ASDU 4 bude: FLA=DPI bit 0, FLB=DPI bit 1, FLC=0, FLD=0, FLE=BL bit, FLF=SB bit, FLG=NT bit, FLH=IV bit
- pre ASDU 16 bude: FLA..FLE Sequence number bity 0..4, FLF=CY bit, FLG=CA bit, FLH=IV bit
Výnimkou sú bity, ktoré sú nastavené priamo hodnotou (napr. pre ASDU 1 nie je 0. bit nastavený flagom FLA, ale hodnotou výstupného
meraného bodu).
Ak má nová hodnota nastavený príznak Invalid,
v stavovom bajte všetkých ASDU (okrem ASDU 21, ktorý ho nemá) sa nastaví najvyšší bit (IV).
* - Status sa chápe ako dolné 2 bajty, Status change detection ako horné dva bajty 32 bitového integeru
Implementované sú nasledujúce ASDU v smere riadenia (od riadiacej stanice k D2000, v balancovanom móde aj opačným smerom):
Tab. č. 2
Typ ASDU | Typ meraného bodu |
---|---|
45 - Single command | Di, Qi |
46 - Double command | Qi |
47 - Regulating step command | Di, Qi |
48 - Set point command, normalised value | Ai |
49 - Set point command, scaled value | Ci |
50 - Set point command, short floating point value | Ai |
51 - Bitstring of 32 bit | Ci |
58 - Single command with time tag CP56Time2a | Di, Qi |
59 - Double command with time tag CP56Time2a | Qi |
60 - Regulating step command with time tag CP56Time2a | Di, Qi |
61 - Set point command, normalised value with time tag CP56Time2a | Ai |
62 - Set point command, scaled value with time tag CP56Time2a | Ci |
63 - Set point command, short floating point value with time tag CP56Time2a | Ai |
64 - Bitstring of 32 bit with time tag CP56Time2a | Ci |
250 - Archive data request command (implementácia Ipesoft) | žiaden ** |
252 - D2000 Unival (implementácia Ipesoft) | všetky okrem Qi |
Bity "stavového" bajtu (SCO pre ASDU 45,58; DCO pre ASDU 46,59; RCO pre ASDU 47,60; QOS pre ASDU 48..50,61..63) spôsobia nastavenie flagov FLA (0.bit),FLB (1.bit) ..FLH (7.bit) s výnimkou bitov, ktoré sú priamo nastavované hodnotou premennej ( SCO bit 0, DCO a RCS bity 0-1). Po prijatí odpovede (pozitívnej/negatívnej) sa flagy FLA..FLH nastavia na základe bitov "stavového" bajtu.
Pri zápise hodnôt sa ako CauseOfTransmission očakáva hodnota 6 [Activation]. Odpoveď riadiacej stanici závisí od nastavenia parametra CMDC. Originator ASDU address sa použije rovnako ako bola v prijatom príkaze.
Nadväzovanie spojenia:
- KOM čaká na TCP porte a po pripojení očakáva od klienta zaslanie U-framu StartDT Act, očakáva ako odpoveď StartDT Con. (pred StartDT Act je možné poslať aj TestFrame).
- Ak má KOM nastavený parameter EOI, posiela sa ASDU 70 [End of initialization], ako Originator ASDU address sa použije počiatočná (nastavená ako číslo linky).
- Ak má niektorá stanica nastavenú nenulovú Periódu synchronizácie v Časových parametroch, posiela s danou periódou ASDU 103 [Clock synchronisation command] s CauseOfTransmission= 6 [Activation], ako Originator ASDU address sa použije počiatočná (nastavená ako číslo linky), resp. Originator ASDU poslednej prijatej ASDU 100 alebo 101.
- KOM posiela nové hodnoty získané od procesu D2000 Server pre premenné s ASDU 1..14, 20, 21, 30 .. 36 klientovi, ktorý poslal ASDU 100 [Interrogation Command] a nové hodnoty pre premenné s ASDU 15,16,37 klientovi, ktorý poslal ASDU 101 [Counter Interrogation Command].
- KOM akceptuje synchronizáciu času pomocou ASDU typ 103 [Clock synchronisation command] s CauseOfTransmission=6 [Activation] alebo 3 [Spontaneous]. Ak CauseOfTransmission= 6,odpovedá v závislosti od nastavenia parametra CMDC, ak CauseOfTransmission= 3 tak neodpovedá.
- Na prijaté príkazy (ASDU 45..51, 58..64) s CauseOfTransmission= 6 [Activation] odpovedá KOM v závislosti od nastavenia parametra CMDC.
Originator ASDU address (OA): Pôvodná OA sa nastavuje v konfigurácii ako číslo TCP linky. Táto sa použije pri voliteľnom posielaní ASDU 70 [End of initialization] na začiatku spojenia a vždy pri zasielaní nových hodnôt. Po príchode ASDU 100, resp. 101 sa posielajú aktuálne hodnoty všetkých výstupných bodov (ktoré nemajú nastavený príznak Invalid) s takou OA, akú mala ASDU 100, resp. 101. Ako odpovede na prijaté príkazy (ASDU 45..51, 58..64) sa posielajú potvrdenia s takými ASDU, aké mal prijatý príkaz.
D2000 podporuje aj balancovaný mód, v ktorom je vymenená úloha riadiacej a riadenej stanice. D2000 vtedy posiela povely a ASDU 100/101. Balancovaný mód je možné použiť iba, ak ho podporuje partnerská stanica. Výhodou je, že po rozpade a opätovnom nadviazaní spojenia pošle D2000 ASDU 100 [Interrogation Command] a 101 [Counter Interrogation Command] a dostane aktuálny stav vstupných meraných bodov (nakonfigurovaných ako ASDU 1-40). Jednorázové príkazy je vhodné konfigurovať ako ASDU 45 - 64, tieto sa pri znovunadviazaní spojenia neopakujú.
Zápis výstupného meraného bodu:
- Pri zápise IEC 104 hodnôt (ASDU 1-40) platia pravidlá pre serverovské protokoly.
- Pri zápise IEC 104 príkazov (ASDU 45-64) v balancovanom režime sa ASDU považuje za potvrdenú (prejde zo stavu Transient) v závislosti od parametra CMDC. V prípade, že počas zápisu dôjde ku strate spojenia s klientom, úspešnosť zápisu závisí od parametra PW.
Konfigurácia komunikačnej linky
- Kategória komunikačnej linky: TCP/IP-TCP
- TCP Parametre:
- Nutné zadať parametre servera.
- Host: string max. 80 znakov – meno sieťového rozhrania vo formáte INET (meno alebo číselná adresa a.b.c.d, napr. 192.168.0.1), na ktorom má KOM prijímať klientov. Ak je toto meno ALL, KOM bude čakať na všetkých sieťových rozhraniach počítača, na ktorom beží.
- Port: číslo TCP portu (0 až 65535), na ktorom KOM čaká.
- Číslo linky: použije sa ako Originator ASDU address (1 bajt, 0-255).
Poznámka: Od D2000 verzie 7.02.004 sa pri nastavovaní hodnoty komunikačnej linky využívajú flagy FLA až FLP na informáciu o pripojených aktívnych klientoch. Aktívny klient je taký, ktorý nadviazal spojenie a poslal U-frame StartDT Act, t.j. vyžiadal si posielanie dát. Prvý pripojený aktívny klient spôsobí nastavenie flagu FLA, druhý flagu FLB, atď. až po FLP, ďalej sa pokračuje od prvého flagu FLA. Pokiaľ klient pošle U-frame StopDT Act (požiada o zastavenie posielania dát) alebo sa odpojí, hodnota flagu sa zmení na FALSE.
Konfigurácia komunikačnej stanice
- Komunikačný protokol: IEC870-TCP Server.
- Adresa stanice je dekadické číslo v rozsahu 0 až 65535, určuje adresu ASDU.
Poznámka: Protokol podporuje posielanie dlhých časových značiek (CP56Time2a tag) v lokálnom čase alebo v UTC čase s definovaným offsetom podľa nastavenia stanice (pozri parameter Použi monotónny čas UTC+).
Parametre protokolu stanice
Môžu byť zadané nasledovné parametre protokolu stanice:
Tab. č. 3
Kľúčové slovo | Plný názov | Popis | Jednotka | Náhradná hodnota |
---|---|---|---|---|
CMDC | Command Confirm | Potvrdzovanie riadiacich ASDU. Ak CMDC=0,proces D2000 KOM nepotvrdzuje riadiace ASDU od partnerskej stanice spätným poslaním ASDU s inou CauseOfTransmission. Ak CMDC=1, proces D2000 KOM potvrdzuje riadiace ASDU s CauseOfTransmission=7 (Activation Confirmation). Ak CMDC=2, proces D2000 KOM potvrdzuje riadiace ASDU s CauseOfTransmission=10 (Activation Termination). Ak CMDC=3, proces D2000 KOM potvrdzuje riadiace ASDU s CauseOfTransmission= 7 a CauseOfTransmission= 10. |
- | 1 |
D2CLS D2CPA D2VCO |
Parametre sú určené pre konfiguráciu stanice pri komunikácii medzi dvoma systémami D2000 s použitím ASDU 252 - D2000 Unival (implementácia Ipesoft). viac ... | |||
D2H64 | D2000 64-bit Historical Values | Pri posielaní historických hodnôt (ako odpoveď na žiadosť o historické dáta) sa nepoužije ASDU 251, v ktorej sú hodnoty posielané ako
32-bitové float hodnoty, ale kvôli zvýšeniu presnosti sa použije ASDU 249, ktorá používa 64-bitovú reprezentáciu hodnôt (rovnakú, ako vnútorne D2000). Poznámka: Pred zapnutím parametra je nutné overiť si, že aj klient podporuje ASDU 249. Táto podpora bola implementovaná v novembri 2011 do D2000 v8.00.011. |
- | False |
DBGI | Debug Input | Maska pre úrovne debugovania vstupných dát. Jednotlivé bity majú nasledovný význam:
|
- | 0 |
DBGO | Debug Output | Maska pre úrovne debugovania výstupných dát. Jednotlivé bity majú nasledovný význam:
|
- | 0 |
EOI | End of initialization | Ak je EOI=0, tak proces D2000 KOM neposiela ASDU 70 (End of initialisation). Ak je EOI=1, tak keď klient pošle U-frame StartDT Act, KOM odpovie StartDT Con a pošle ASDU 70. | - | 0 |
GISN | GI Send New | Ak je GISN=True, tak proces D2000 KOM po prijatí príkazu General Interrogation pošle aj hodnoty s novším časom ako čas, kedy príkaz General Interrogation prijal. Parameter GISN je nutné nastaviť na True, pokiaľ je potrebné príkazom General Interrogation posielať aj hodnoty s budúcim časom. | - | False |
ICF3 | Ignore Control Field 3bit 0 | Určuje správanie sa, ak ASDU obsahuje v 3. bajte Control Field (Receive nastavený bit 1 (test).
|
- | False |
III | Ignore Invalids on Interrogation | Ak je na stanici tento parameter nastavený, nepošle proces D2000 KOM ako odpoveď na ASDU 100 a 101 (Interrogation / Counter interrogation command) hodnoty objektov, ktoré sú Invalid alebo Unknown. Parameter má využitie napr. pri riadení, pokiaľ poslanie Invalid hodnoty spôsobí výpadok z riadenia. | - | False |
IT | Ignore Tests | Určuje správanie sa, ak ASDU obsahuje v CauseOfTransmission nastavený bit 1 (test).
|
- | 0 |
IUA | Ignore Unknown Addresses | Ak je hodnota parametra True, proces D2000 KOM nebude hlásiť chybu (na konzole ani do logovacích súborov) v prípade, že príde hodnota s adresou, ktorej nezodpovedá žiaden meraný bod. | - | False |
II | Implicit Interrogation | Ak je II=True, po pripojení klienta sa pošlú hodnoty všetkých premenných, ako keby klient poslal ASDU 100 a 101 [Interrogation/Counter Interrogation Command] | - | False |
ICCI | Interrogation Covers Counter Interrogation | Ako odpoveď na Interrogation sa posielajú aj ASDU 15,16,37 (Integrated Totals), ktoré sú štandardne vyžiadané ASDU 101 [Counter Interrogation]. | - | False |
IGO | Interrogation Groups Objects | Optimalizácia posielania hodnôt v rámci General Interrogation (odpoveď na Interrogation Command / Counter Interrogation Command). Pokiaľ IGO=True, v rámci jednej ASDU sa pošle viacero hodnôt (tak, aby dĺžka ASDU nepresiahla maximum podľa normy - 253 Bajtov). Parameter nemá vplyv na zmenové posielanie hodnôt počas normálnej komunikácie. | - | False |
IWOT | Interrogation WithOut Timestamps | Ak je hodnota parametra True, pri posielaní hodnôt ako odpoveď na ASDU 100 [Interrogation Command]
budú posielané hodnoty ako ASDU bez časových značiek. Napr. namiesto ASDU 2 (Single-point information with time tag) a ASDU 30 (Single-point information with time tag CP56Time2a) bude poslaná ASDU 1 (Single-point information). Toto chovanie umožňuje ošetriť situáciu, keď po výpadku komunikácie prídu nové hodnoty a nie je žiadané, aby mali starú časovú značku (napr. kvôli dopočtom v archíve, ak sa hodnoty menia iba zriedka a Invalid spôsobený výpadkom komunikácie by spôsoboval neplatné hodnoty vypočítaných archívov). |
- | False |
K | K | Veľkosť vysielacieho okna, t.j. množstvo paketov, ktoré KOM odošle bez prijatia potvrdenia (S-framu alebo I-framu). Podľa normy je prednastavené k=12. | - | 12 |
MC | Maximum Clients | Maximálny počet pripojených klientov. Parameter je potrebný pre D2000 OpenVMS, kde sa po štarte KOM procesu alokuje 2 * MC threadov pre obsluhu klientov (jeden na posielanie a jeden na príjem). Pokiaľ je hodnota parametra Maximum Clients rovná 0, počet klientov nie je obmedzený a thready sa vytvárajú dynamicky podľa potreby. | - | 0 |
NF | No Flags | Ak je hodnota parametra True, potom sa stavový bit prichádzajúcich ASDU ignoruje a neukladá do flagov FA...FH. Zároveň sú ignorované flagy výstupných meraných bodov a stavový bit sa nenastavuje podľa nich. | - | False |
OCIC | Order of Counter IC | Balancovaný mód: Poradie posielania ASDU 101 [Counter Interrogation Command] pri inicializácii spojenia. Ak je OCIC<OIC, pošle sa ASDU 101 pred ASDU 100. Ak je OCIC=0,ASDU 101 sa neposiela. Parameter je nastaviteľný a platný zvlášť pre každú stanicu. | - | 0 |
OIC | Order of IC | Balancovaný mód: Poradie posielania ASDU 100 [Interrogation Command] pri inicializácii spojenia. Ak je OIC<OCIC, pošle sa ASDU 100 pred ASDU 101. Ak je OIC= 0,ASDU 100 sa neposiela. Parameter je nastaviteľný a platný zvlášť pre každú stanicu. | - | 0 |
PW | Pessimistic Write | Určuje vyhodnocovanie úspešnosti zápisu v prípade pripojenia viac ako jedného klienta. Ak je PW=0, tak sa zápis hodnoty považuje za úspešný, ak ho potvrdil aspoň 1 klient (spôsob potvrdzovania udáva parameter CMDC). Ak je PW= 1, musia zápis potvrdiť všetci pripojení klienti. Ak ho aspoň 1 nepotvrdí (napr. dôjde k prerušeniu spojenia alebo je potvrdenie negatívne), zápis je považovaný za neúspešný. | - | 0 |
SSN | Send sequence number | Počiatočné SSN. Podľa normy sa po vytvorení spojenia nastavuje SSN na 0, iné ako nulové SSN môže byť vhodné napr. na testovanie. | - | 0 |
SKO | Standby Keep Open | Ak je True, po prechode procesu D2000 Server, ku ktorému je KOM proces pripojený, z Hot do Standby stavu (redundantný systém) sa nezatvoria spojenia s klientami ani sa neukončí prijímanie klientov. | - | False |
SSCF3 | Standby Set Control Field | Ak je True, po prechode procesu D2000 Server, ku ktorému je KOM proces pripojený, z Hot do Standby stavu (redundantný systém) bude posielať v najnižšom bite 3. bajtu Control Field-u Informačných APDU (APDU s dátami) miesto štandardnej 0 (podľa normy) hodnotu 1. Toto chovanie nie je striktne podľa normy a pokiaľ je to možné, odporúčame miesto toho použiť parameter SST | - | False |
SSTB | Standby Set Test Bit | Ak je True, po prechode procesu D2000 Server, ku ktorému je KOM proces pripojený, z Hot do Standby stavu (redundantný systém) bude posielať nastavený Test bit v Cause Of Transmission | - | False |
SWV | Standby Write Values | Ak je True, po prechode procesu D2000 Server, ku ktorému je KOM proces pripojený, z Hot do Standby stavu (redundantný systém), bude server posielať nové hodnoty klientom. | - | False |
W | W | Množstvo prijatých paketov, po ktorých KOM odošle ako potvrdenie S-frame. Podľa normy je prednastavené w=8. Musí platiť w < k, norma odporúča w = 2/3 * k |
- | 8 |
WT1 | Wait Timeout T1 | Timeout na prijatie potvrdenia na odoslaný I-frame (očakáva sa buď potvrdenie v rámci I-framu alebo samostatný S-frame) alebo U-frame (očakáva sa U-frame). Ak do času WT1 nedostane KOM potvrdenie, zavrie TCP spojenie. Podľa normy prednastavený WT1 je 15000 ms. | ms | 15 000 |
WT2 | Wait Timeout T2 | Timeout na posielanie potvrdenia na prijatý I-frame. WT2 < WT1. Ak nie je posielaný do času WT2 od prijatia I-framu iný I-frame (ktorý by zároveň potvrdil prijatý I-frame), tak proces D2000 KOM pošle partnerovi potvrdzujúci S-frame, ktorým potvrdí prijatý I-frame. Podľa normy prednastavený WT2 je 10000 ms. | ms | 10 000 |
WT3 | Wait Timeout T3 | Timeout na posielanie testovacích framov (U-frame TEST ACT). Ak sa neposielajú
žiadnym smerom dlhší čas žiadne dáta, po uplynutí doby WT3 proces
D2000 KOM pošle U-frame TEST ACT a očakáva (do doby
WT1 od odoslania) príchod U-frame TEST CON. V prípade, že partner má WT3 nastavený na menšiu hodnotu, posiela testovacie framy on a KOM na ne odpovedá. Podľa normy prednastavený WT3 je 20000 ms. Nastavením na 0 sa posielanie testovacích framov vypne. |
ms | 20 000 |
WTN | Wait Timeout No answer | Balancovaný mód: Timeout na prijatie potvrdenia spracovania zaslanej hodnoty pre ASDU v smere riadenia
(ASDU 45 - 64). Prijatie napr. S-framu s RSN (Receive
Sequence Number) potvrdzujúcim, že druhá strana prijala predchádzajúci I-frame, ešte neznamená, že
tento prijatý I-frame bol aj spracovaný. Do času WTn očakáva proces
D2000 KOM
prijatie odpovede (napr. po poslaní ASDU s
TypeIdentificator=45 [Single Command] s CauseOfTransmission=6 [Activation] sa očakáva prijatie Single
Commandu s CauseOfTransmission=7 [Activation Confirmation]. Po vypršaní WTn zavrie proces D2000 KOM TCP spojenie. |
ms | 60 000 |
String s parametrami protokolu sa zapisuje podľa pravidiel:
Kľúčové_slovo=hodnota;Kľúčové_slovo=hodnota; ...
Príklad:
WT1=10000;WT3=25000;EOI=1;
Ak nebolo v inicializačnom stringu nájdené kľúčové slovo s platnou hodnotou, je použitá náhradná hodnota podľa tabuľky. Zadané parametre sú platné pre celú linku - tj. stačí ich zadať v jedinej stanici patriacej linke. Výnimkou sú parametre OIC a OCIC, ktoré treba nastaviť pre každú stanicu zvlášť.
Konfigurácia meraných bodov
Povolené typy bodov:
Ai, Ao, Ci, Co, Di, Dout, Qi
- Adresa bodu je mapovaná na Information object address, t.j. má 3 bajty a musí byť v rozmedzí 0 - 16777215.
- Pre konkrétny typ výstupného bodu (Ao,Dout,Co) je nutné nastaviť typ ASDU, ktorý sa má použiť, viď tabuľka 1.
- Vstupné body musia mať príslušné typy (Ai,Ci,Di,Qi) pre prijaté ASDU, viď tabuľka 2, v balancovanom móde aj tabuľka 1.
- Archív pre poskytovanie starých hodnôt: ak si klient vyžiada archívne hodnoty pomocou
ASDU 250, server posiela:
- hodnoty archivovaného bodu zadané v tomto vstupnom políčku,
- ak vstupná políčko nie je vyplnené, hodnoty archivovaného bodu, ktorý archivuje priamo meraný bod,
- ak takýto archivovaný bod neexistuje, hodnoty archivovaného bodu, ktorý archivuje riadiaci objekt tohto meraného bodu,
- ak takýto objekt neexistuje (alebo archív nie je dostupný), vracia server chybu.
Literatúra
-
Revízie dokumentu
- Ver. 1.0 – 5.2.2004
- Ver. 1.1 – 1. december 2004: rozšírenie o podporu balancovaného módu
Súvisiace stránky:
1 komentár
D2000 Dev Team
O protokole IEC 870-5-104 si môžete prečítať aj blogy:
Pridať komentár