DNP3 Protokol
Podporované typy a verzie zariadení
Konfigurácia komunikačnej linky
Konfigurácia komunikačnej stanice
Konfigurácia meraných bodov
Tell príkazy
Literatúra
Zmeny a úpravy
Revízie dokumentu
Podporované typy a verzie zariadení
Protokol DNP3 je telemetrický protokol určený na komunikáciu centrálnej stanice (Master Station, zvyčajne SCADA) s podriadenými stanicami (Outstation, zvyčajne PLC, RTU alebo iné IED - Intelligent Electronic Devices). Bol vyvinutý počas doby, keď IEC iba pracovalo na štandardoch skupiny IEC60870-5 (IEC 870-5-101 a IEC 870-5-104).
Protokol DNP3 definuje viacero skupín objektov (Groups - napr. Binary Input, Analog Input, Counter) a pre každú skupinu objektov viacero variácií (napr. pre Analog Input je to 32-bit with flag, 16-bit with flag, 32-bit without flag, 16-bit without flag, Single-precision floating point with flag..). Každý objekt je definovaný číslom skupiny a indexom (nezáporné číslo s veľkosťou 1, 2 alebo 4 bajty).
Zároveň DNP3 protokol zaraďuje objekty do 4 tried (Class 0 - statické objekty; Class 1..3 - dynamické objekty s registrovaním zmien). Podobne ako IEC 870-5-101 a IEC 870-5-104 podporuje DNP3 vyžiadanie si všetkých hodnôt konkrétnej triedy (výzva Poll), navyše je možné explicitné čítanie konkrétnej skupiny objektov s udaním variácie (prípadne s použitím variácie 0 - automatickej). Pri čítaní je možné žiadať dáta celej skupiny, prípadne špecifikovať konkrétny index, prípadne celý interval objektov.
Nad objektami sú podporené tieto aplikačné funkcie:
Read (1) - čítanie objektov.
Write (2) - jednofázový zápis objektov (s číselným kódom potvrdzujúcim úspešný zápis alebo hovoriacim o chybe zápisu).
Select (3) + Operate (4) - dvojfázový zápis objektov, ktorý prakticky vylučuje možnosť chyby v dôsledku nedetekovaného rušenia na linke. Každá operácia vracia okrem návratového kódu aj skupinu, index a zapisovanú hodnotu.
Direct Operate (5) - jednofázový zápis objektov (okrem číselného kódu operácia vracia aj skupinu, index a zapisovanú hodnotu).
Direct Operate Non Return (6) - jednofázový zápis objektu bez potvrdenia (najmenej bezpečný).
Enable Unsolicited Responses (20) - aktivácia posielania spontánnych zmien podriadenými stanicami.
Protokol podporuje aj posielanie spontánnych zmien podriadenými stanicami - s použitím aplikačnej funkcie Unsolicited Response (130).
Dáta sú posielané ako dátové pakety (Data Link Layer packet) nazývané aj transportné segmenty. Jeden alebo viacero transportných segmentov tvorí fragment aplikačnej vrstvy (Application Layer fragment). Fragment môže byť posielaný ako potvrdzovaný (funkčný kód dátovej vrstvy 3 - CONFIRMED_USER_DATA) alebo nepotvrdzovaný (funkčný kód dátovej vrstvy 4 - UNCONFIRMED_USER_DATA). Samotné transportné segmenty v rámci jedného fragmentu sú vždy potvrdzované - s výnimkou posledného (funkčný kód dátovej vrstvy 0 - ACK).
Tab. č. 1: Implementácia D2000 podporuje spracovanie nasledovných skupín objektov a ich variácií:
Skupina objektov | Variácie | Podporené | Poznámka |
|---|---|---|---|
Binary Input (1) | Packed format (1) | Čítanie (Read) | Binárne vstupy |
Binary Input Event (2) | Without time (1) | Analýza* | Reportovanie zmien binárnych vstupov |
Double-bit Binary Input (3) | Packed format (1) | Čítanie (Read) | Štvorstavové vstupy |
Double-bit Binary Input Event (4) | Without time (1) | Analýza* | Reportovanie zmien štvorstavových vstupov |
Binary Output (10) | Packed format (1) | Čítanie (Read) | Binárne výstupy |
Binary Output Event (11) | Status w/o time (1) | Čítanie (Read) | Reportovanie zmien binárnych výstupov |
Binary Command (12) | Control relay output block (CROB) (1) | - | Zatiaľ nepodporené |
Binary Output Command Event (13) | Command status without time (1) | Analýza* | Reportovanie zmien (príkazov niekoho iného) |
Counter (20) | 32-bit with flag (1) | Čítanie (Read) | Počítadlá |
Frozen Counter (21) | 32-bit with flag (1) | Čítanie (Read) | Počítadlá - hodnoty zachytené v čase, keď bol objekt zmrazené |
Counter Event (22) | 32-bit with flag (1) | Analýza* | Reportovanie zmien počítadiel |
Frozen Counter Event (23) | 32-bit with flag (1) | Analýza* | Reportovanie zmien počítadiel v čase zmrazenia |
Analog Input (30) | 32-bit with flag (1) | Čítanie (Read) | Analógové vstupy |
Frozen Analog Input (31) | 32-bit with flag (1) | Čítanie (Read) | Analógové vstupy - hodnoty zachytené v čase, keď bol objekt zmrazený |
Analog Input Event (32) | 32-bit w/o time (1) | Analýza* | Reportovanie zmien analógových vstupov |
Frozen Analog Input Event (33) | 32-bit w/o time (1) | Analýza* | Reportovanie zmien analógových vstupov v čase zmrazenia |
Analog Input Reporting Deadband (34) | 16-bit (1) | Čítanie (Read) | Deadbandy analógových vstupov |
Analog Output Status (40) | 32-bit with flag (1) | Čítanie (Read) | Čítanie analógových výstupov |
Analog Output (41) | 32-bit (1) | Zápis (Select+Operate, | Zápis analógových výstupov |
Analog Output Event (42) | 32-bit w/o time (1) | Analýza* | Reportovanie zmien analógových výstupov |
Analog Output Command Event (43) | 32-bit w/o time (1) | Analýza* | Reportovanie zmien analógových výstupov |
Time and Date (50) | Absolute time (1) | Čítanie (Read) | Aktuálny čas |
Time and Date CTO (51) | Absolute time, synchronized (1) | Analýza* | Základná časová značka** |
Class Objects (60) | Class 0 data (1) | Poll | Vyžiadanie hodnôt všetkých objektov príslušnej triedy |
Binary-Coded Decimal Integer (101) | Small (1) | Čítanie (Read) | Čítanie 1,2 a 4-bajtových BCD čísiel so znamienkom |
Unsigned Integer (102) | 8-bit (1) | Čítanie (Read) | Čítanie 8-bitových čísiel bez znamienka |
Octet String (110) | Variácie 0-255 zodpovedajú reťazcom s dĺžkou 0-255 bajtov | Čítanie (Read) | Čítanie + zápis reťazcov |
Octet String Event (111) | Variácie 0-255 zodpovedajú reťazcom s dĺžkou 0-255 bajtov | Analýza* | Reportovanie zmien reťazcov |
Virtual Terminal Output Block (112) | Variácie 0-255 zodpovedajú reťazcom s dĺžkou 0-255 bajtov | Zápis (Write) | Zápis do virtuálneho terminálu |
Virtual Terminal Event Data (113) | Variácie 0-255 zodpovedajú reťazcom s dĺžkou 0-255 bajtov | Čítanie (Read) | Čítanie z virtuálneho terminálu |
* Pozn: operácia Analýza znamená, že D2000 KOM dokáže analyzovať správu a priradiť hodnoty príslušnému meranému bodu. Napr. pre skupinu objektov Binary Input Event (2) sa hodnoty priraďujú meraným bodom zo skupiny Binary Input (1).
** Pozn: Stanica môže posielať hodnoty objektu zo skupiny Time and Date CTO (51) s významom nastavenia CTO (Common Time of Occurence) - základnej časovej značky. Následne sú posielané hodnoty s relatívnym časom - skupiny Binary Input Event (2) a Double-bit Binary Input Event (4), s použitím variácie With relative time (3).
Pozn: D2000 KOM umožňuje poslať správu s typom zápisu aj mimo rozsah povolený normou - napr. pre skupinu Analog Output (41) je možné nakonfigurovať zápisovú operáciu s funkciou Write (2).
Implementácia D2000 podporuje aj synchronizáciu času (podľa parametrov nastavených na stanici) a browsovanie. Nie je podporená funkcia bezpečnej autentifikácie (secure authentication).
Konfigurácia komunikačnej linky
Kategória komunikačnej linky:
TCP/IP-UDP: na linke sa konfiguruje IP adresa a UDP port podriadenej stanice (štandardný port pre DNP3 protokol je 20000). UDP port na strane D2000 KOM procesu je pridelený dynamicky. Ak je potrebné ho zafixovať, použite linku SerialOverUDP Device Redundant.
TCP/IP-TCP: na linke sa konfiguruje IP adresa a TCP port podriadenej stanice (štandardný port pre DNP3 protokol je 20000). Parameter Číslo linky sa nepoužíva, nastavte ho na 0.
Pozn: ak sú na linke TCP/IP-TCP všetky stanice v stave StOFF, TCP spojenie bude zatvorené. Takto je možné riadiť TCP komunikáciu zo skriptu pomocou tell príkazu STSTAT.
Parametre protokolu linky
Dialóg konfigurácia linky - záložka Parametre protokolu.
Ovplyvňujú niektoré voliteľné parametre protokolu. Môžu byť zadané nasledovné parametre protokolu linky:
Kľúčové slovo | Plný názov | Popis | Jednotka | Náhradná hodnota |
|---|---|---|---|---|
MA | Master Address | Adresa KOM procesu. Adresa musí byť 16-bitové číslo z intervalu 0-65 519 (ostatné adresy majú špeciálne významy). | - | 1 |
SS | Serialized Stations | Serializácia komunikácie s jednotlivými stanicami na linke. Serializácia znamená, že jednotlivé stanice sú vyzývané postupne (čo zodpovedá situácii staníc na sériovej linke), aby nedošlo ku konfliktu, keď sa budú viaceré stanice snažiť poslať odpoveď naraz. Pokiaľ sa komunikuje v skutočnosti s jediným zariadením, ktoré obsahuje viacero virtuálnych staníc, prípadne preposiela správy ďalším staniciam (tak, aby nedošlo ku konfliktu), alebo sa jedná o duplexný kanál (TCP, UDP), je možné serializáciu vypnúť. D2000 KOM proces vtedy rozpošle výzvy na všetky stanice na linke a následne čaká na odpovede. Vypnutie serializácie môže komunikáciu zrýchliť, ale na linkách s viacerými stanicami a možnosťou vzniku kolízie (napr. RS-485) to spôsobí kolíze a straty paketov. | - | YES |
BG | Browse All Groups | Parameter určuje, či sa pri browsovaní okrem Poll výzviev na jednotlivé triedy (Class 0-3) majú posielať aj výzvy na explicitné čítanie všetkých podporovaných skupín objektov. Dôvodom explicitného čítania skupín je, že niektoré objekty nemusia byť zaradené do žiadnej z tried, takže Poll výzva ich nenájde. | - | YES |
DTQ | Debug Timeout Queue | Parameter zapína rozšírené ladiace informácie o správach v časovej fronte. | - | NO |
Konfigurácia komunikačnej stanice
Komunikačný protokol DNP3.
Adresa stanice: 16-bitové číslo z intervalu 0-65 519 (ostatné adresy majú špeciálne významy).
Parametre protokolu stanice
Môžu byť zadané nasledovné parametre protokolu stanice:
Kľúčové slovo | Plný názov | Popis | Jednotka | Náhradná hodnota |
|---|---|---|---|---|
PI1, PI2, PI3, PI4 | Poll Interval n (-1=OFF) | Interval pre posielanie Poll výziev. Je možné nakonfigurovať 4 rôzne intervaly a pre každý špecifikovať triedu, na ktorú sa Poll výzva posiela (Class 0-3). | sec | 10 pre PI1-3 600 pre PI0 |
PC1, PC2, PC3, PC4 | Poll Class n |