DNP3 Protokol

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
(zvýraznené sa dajú konfigurovať pre merané body)

Variácie

Podporené
operácie

Poznámka

Binary Input (1)

Packed format (1)
With flags (2)

Čítanie (Read)

Binárne vstupy

Binary Input Event (2)

Without time (1)
With absolute time (2)
With relative time (3)

Analýza*

Reportovanie zmien binárnych vstupov

Double-bit Binary Input (3)

Packed format (1)
With flags (2)

Čítanie (Read)

Štvorstavové vstupy

Double-bit Binary Input Event (4)

Without time (1)
With absolute time (2)
With relative time (3)

Analýza*

Reportovanie zmien štvorstavových vstupov

Binary Output (10)

Packed format (1)
Output status with flags (2)

Čítanie (Read)
Zápis (Write, Select+Operate)

Binárne výstupy

Binary Output Event (11)

Status w/o time (1)
Status with time (2)

Čítanie (Read)

Reportovanie zmien binárnych výstupov

Binary Command (12)

Control relay output block (CROB) (1)
Pattern control block (PCB) (2)
Pattern mask (3)

-

Zatiaľ nepodporené

Binary Output Command Event (13)

Command status without time (1)
Command status with time (2)

Analýza*

Reportovanie zmien (príkazov niekoho iného)

Counter (20)

32-bit with flag (1)
16-bit with flag (2)
32-bit with flag, delta (obsolete) (3)
16-bit with flag, delta (obsolete) (4)
32-bit w/o flag (5)
16-bit w/o flag (6)
32-bit w/o flag, delta (obsolete) (7)
16-bit w/o flag, delta (obsolete) (8)

Čítanie (Read)

Počítadlá

Frozen Counter (21)

32-bit with flag (1)
16-bit with flag (2)
32-bit with flag, delta (obsolete) (3)
16-bit with flag, delta (obsolete) (4)
32-bit with flag and time (5)
16-bit with flag and time (6)
32-bit with flag and time, delta (obsolete) (7)
16-bit with flag and time, delta (obsolete) (8)
32-bit w/o flag (9)
16-bit w/o flag (10)
32-bit w/o flag, delta (obsolete) (11)
16-bit w/o flag, delta (obsolete) (12)

Čítanie (Read)

Počítadlá - hodnoty zachytené v čase, keď bol objekt zmrazené

Counter Event (22)

32-bit with flag (1)
16-bit with flag (2)
32-bit with flag, delta (obsolete) (3)
16-bit with flag, delta (obsolete) (4)
32-bit with flag and time (5)
16-bit with flag and time (6)
32-bit with flag and time, delta (obsolete) (7)
16-bit with flag and time, delta (obsolete) (8)

Analýza*

Reportovanie zmien počítadiel

Frozen Counter Event (23)

32-bit with flag (1)
16-bit with flag (2)
32-bit with flag, delta (obsolete) (3)
16-bit with flag, delta (obsolete) (4)
32-bit with flag and time (5)
16-bit with flag and time (6)
32-bit with flag and time, delta (obsolete) (7)
16-bit with flag and time, delta (obsolete) (8)

Analýza*

Reportovanie zmien počítadiel v čase zmrazenia

Analog Input (30)

32-bit with flag (1)
16-bit with flag (2)
32-bit w/o flag (3)
16-bit w/o flag (4)
Single-prec flt-pt with flag (5)
Double-prec flt-pt with flag (6)

Čítanie (Read)

Analógové vstupy

Frozen Analog Input (31)

32-bit with flag (1)
16-bit with flag (2)
32-bit with time-of-freeze (3)
16-bit with time-of-freeze (4)
32-bit w/o flag (5)
16-bit w/o flag (6)
Single-prec flt-pt with flag (7)
Double-prec flt-pt with flag (8)

Čítanie (Read)

Analógové vstupy - hodnoty zachytené v čase, keď bol objekt zmrazený

Analog Input Event (32)

32-bit w/o time (1)
16-bit w/o time (2)
32-bit with time (3)e
16-bit with time (4)
Single-prec flt-pt w/o time (5)
Double-prec flt-pt w/o time (6)
Single-prec flt-pt with time (7)
Double-prec flt-pt with time (8)

Analýza*

Reportovanie zmien analógových vstupov

Frozen Analog Input Event (33)

32-bit w/o time (1)
16-bit w/o time (2)
32-bit with time (3)
16-bit with time (4)
Single-prec flt-pt w/o time (5)
Double-prec flt-pt w/o time (6)
Single-prec flt-pt with time (7)
Double-prec flt-pt with time (8)

Analýza*

Reportovanie zmien analógových vstupov  v čase zmrazenia

Analog Input Reporting Deadband (34)

16-bit (1)
32-bit (2)
Single-prec flt-pt (3)

Čítanie (Read)
Zápis (všetky funkcie)

Deadbandy analógových vstupov

Analog Output Status (40)

32-bit with flag (1)
16-bit with flag (2)
Single-prec flt-pt with flag (3)
Double-prec flt-pt with flag (4)

Čítanie (Read)

Čítanie analógových výstupov

Analog Output (41)

32-bit (1)
16-bit (2)
Single-prec flt-pt (3)
Double-prec flt-pt (4)

Zápis (Select+Operate,
Direct Operate,
Direct Operate No Response, ale nie Write)

Zápis analógových výstupov

Analog Output Event (42)

32-bit w/o time (1)
16-bit w/o time (2)
32-bit with time (3)
16-bit with time (4)
Single-prec flt-pt w/o time (5)
Double-prec flt-pt w/o time (6)
Single-prec flt-pt with time (7)
Double-prec flt-pt with time (8)

Analýza*

Reportovanie zmien analógových výstupov

Analog Output Command Event (43)

32-bit w/o time (1)
16-bit w/o time (2)
32-bit with time (3)
16-bit with time (4)
Single-prec flt-pt w/o time (5)
Double-prec flt-pt w/o time (6)
Single-prec flt-pt with time (7)
Double-prec flt-pt with time (8)

Analýza*

Reportovanie zmien analógových výstupov
(v dôsledku príkazu niekoho iného)

Time and Date (50)

Absolute time (1)
Absolute time and interval (2)
Absolute time at last recorded time (3)

Čítanie (Read)

Aktuálny čas

Time and Date CTO (51)

Absolute time, synchronized (1)
Absolute time, unsynchronized (2)

Analýza*

Základná časová značka**

Class Objects (60)

Class 0 data (1)
Class 1 data (2)
Class 2 data (3)
Class 3 data (4)

Poll

Vyžiadanie hodnôt všetkých objektov príslušnej triedy

Binary-Coded Decimal Integer (101)

Small (1)
Medium (2)
Large (3)

Čí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)
Zápis (Write)

Čí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:

  • Serial

  • SerialOverUDP Device Redundant

  • MOXA IP Serial Library

  • RFC2217 Client

  • 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

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

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).
Pri každom periodickom obvolávaní stanice (podľa nastavení zadaných na záložke "Časové parametre" objektu typu Stanica) sa kontroluje, či už uplynul zadaný interval od poslania poslednej Poll výzvy.
Pozn: Poll výzvy sa navyše posielajú aj vtedy, pokiaľ stanica reportuje dostupné dáta (pomocou poľa Internal Indications, ktoré je prítomné v odpovediach na čítanie/zápis).

sec

10 pre PI1-3

600 pre PI0

PC1, PC2, PC3, PC4

Poll Class n