DEVELOPMENT AND INTEGRATION OF DNP3 DRIVER INTO SCADA SYSTEM
razvoj i integracija programske podrške za dnp3 protokol u scada ...
razvoj i integracija programske podrške za dnp3 protokol u scada ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
HRVATSKI OGRANAK MEĐUNARODNOG VIJEĆA<br />
ZA VELIKE ELEKTROENERGETSKE SUSTAVE – CIGRÉ<br />
10. savjetovanje HRO CIGRÉ<br />
Cavtat, 6. – 10. studenoga 2011.<br />
D2-03<br />
Božo Kopić Stjepan Sučić Goran Kekelj<br />
Končar-KET d.d. Končar-KET d.d. Končar - KET d.d.<br />
bozo.kopic@koncar-ket.hr stjepan.sucic@koncar-ket.hr goran.kekelj@koncar-ket.hr<br />
Hrvoje Keserica<br />
Končar - KET d.d.<br />
hrvoje.keserica@koncar-ket.hr<br />
Ante Martinić<br />
Končar - KET d.d.<br />
ante.martinic@koncar-ket.hr<br />
RAZVOJ I INTEGRACIJA PROGRAMSKE PODRŠKE ZA <strong>DNP3</strong> PROTOKOL U<br />
<strong>SCADA</strong> SUSTAVE<br />
SAŢETAK<br />
Značajno velik broj komunikacijskih protokola za automatizaciju elektroenergetskih podsustava<br />
uvjetuje kontinuirani razvoj programske podrške za sustave upravljanja i nadzora, tj. <strong>SCADA</strong> (eng.<br />
Supervisory Control and Data Acquisition) sustave. Uobičajeno korišteni komunikacijski protokoli temeljni<br />
na IEC normama pokrivaju najveći tržišni segment u europskim okvirima, dok se u sjevernoj Americi i<br />
većim dijelovima južne Amerike i Azije prvenstveno koristi komunikacijski protokol <strong>DNP3</strong>. Potpuni<br />
integracijski <strong>SCADA</strong> sustav zahtjeva podršku za sve vodeće komunikacijske protokole kako bi stvorio<br />
lokacijski transparentan informacijski sustav. Za razliku od IEC komunikacijskih protokola koji su<br />
prvenstveno namijenjenih vođenju elektroenergetskog sustava, <strong>DNP3</strong> protokol je općenit i namijenjen<br />
automatizaciji raznorodnih industrijskih postrojenja (elektroenergetski sustav, vodovod, plinovod,<br />
kanalizacija). Iz navedenih razloga <strong>DNP3</strong> odlikuje univerzalnost primjene i posebnost programske<br />
implementacije.<br />
U ovom članku dan je pregled <strong>DNP3</strong> protokola, napravljena je usporedba sa modernim<br />
upravljačkim komunikacijskim protokolima te su opisane posebnosti implementacije <strong>DNP3</strong> protokola.<br />
Prikazane su ključne razlike u modelu i tipovima <strong>DNP3</strong> procesnih podataka te su objašnjeni potrebni<br />
programski zahvati na aplikacijskim servisima kako bi se omogućila programska podrška za <strong>DNP3</strong><br />
uređaje.<br />
Ključne riječi: <strong>DNP3</strong>, <strong>SCADA</strong>, razvoj programske podrške<br />
<strong>DEVELOPMENT</strong> <strong>AND</strong> <strong>INTEGRATION</strong> <strong>OF</strong> <strong>DNP3</strong> <strong>DRIVER</strong> <strong>INTO</strong> <strong>SCADA</strong> <strong>SYSTEM</strong><br />
SUMMARY<br />
The large number of communication protocols used for power system automation introduces<br />
constant development of software support and communication drivers for <strong>SCADA</strong> (Supervisory Control<br />
and Data Acquisition) systems. Commonly used communication protocols based on IEC standards cover<br />
the largest part of European market while in the North America and in the most of the parts South<br />
America <strong>DNP3</strong> protocol is used. Complete integration system such as <strong>SCADA</strong> requires support for all<br />
leading communication protocols in order to create location transparent information system. Contrary to<br />
IEC protocols which are dominantly oriented for controlling power systems, <strong>DNP3</strong> is used for controlling<br />
variety of automated industrial systems (power system, water system, gas system, sewage system). For<br />
these reasons, <strong>DNP3</strong> is characterized by universal application and specific software implementation.<br />
This article provides an overview of <strong>DNP3</strong> protocol and comparison between <strong>DNP3</strong> and<br />
commonly used utility communication protocols. Some specific details during implementation process of<br />
1
<strong>DNP3</strong> driver are described. Also, key differences between <strong>DNP3</strong> data types are described and required<br />
programming actions regarding application services are explained in order to successfully create <strong>DNP3</strong><br />
driver.<br />
Key words: <strong>DNP3</strong>, <strong>SCADA</strong>, driver development<br />
1. <strong>DNP3</strong><br />
<strong>DNP3</strong> (eng. Distributed Network Protocol) je standardizirani industrijski komunikacijski protokol<br />
namijenjen upravljanju i nadzoru automatiziranim postrojenjima. Nastao je kao prvi potpuno otvoreni<br />
protokol u području industrijske automatizacije. Izvorna verzija razvijana je između 1992. i 1994. godine.<br />
Osnovna funkcionalnost temelji se na specifikacijama grupe komunikacijskih protokola IEC 60870-5 [1].<br />
Jedni od osnovnih zahtijeva prilikom razvoja <strong>DNP3</strong> bili su kompaktnost i mala veličina<br />
komunikacijskih poruka zajedno s velikim naglaskom na pouzdanosti i sigurnost komunikacije.<br />
Komunikacija je ostvarena slojevito upotrebom modificiranog OSI modela - u normu su uključeni<br />
podatkovni sloj, transportni sloj i aplikacijski sloj. Iako je <strong>DNP3</strong> izvorno dizajniran za upotrebu u serijskoj<br />
komunikaciji, zbog potrebe za razmjenom <strong>DNP3</strong> poruka putem brzih digitalnih komunikacijskih mreža,<br />
norma određuje peer-to-peer komunikaciju (upotrebu većeg broja poslužitelja) i obuhvaća opis upotrebe<br />
protokola TCP/IP i UDP/IP [2]. Slika 1. prikazuje osnovnu komunikacijsku arhitekturu uređaja koji<br />
komuniciraju <strong>DNP3</strong> protokolom.<br />
Master<br />
(<strong>SCADA</strong> Server)<br />
Master<br />
(<strong>SCADA</strong> Server)<br />
Master<br />
(<strong>SCADA</strong> Server)<br />
...<br />
Master / Slave<br />
(<strong>SCADA</strong> Gateway)<br />
Outstation<br />
(<strong>DNP3</strong> device)<br />
Outstation<br />
(<strong>DNP3</strong> device)<br />
Outstation<br />
(<strong>DNP3</strong> device)<br />
Outstation<br />
(<strong>DNP3</strong> device)<br />
...<br />
Outstation<br />
(<strong>DNP3</strong> device)<br />
Tipovi komunikacije<br />
TCP/IP<br />
UDP/IP<br />
RS232<br />
...<br />
Slika 1. Primjena <strong>DNP3</strong> protokola<br />
2
1.1. Osnovne funkcije <strong>DNP3</strong> protokola<br />
<strong>DNP3</strong> objedinjuje funkcionalnosti uobičajeno korištenih protokola za automatizaciju industrijskih<br />
postrojenja u jedinstvenom protokolu [1]. Primjeri tih funkcionalnosti su:<br />
Mogućnost slanja jedne poruke prema više uređaja (eng. Broadcasting).<br />
Upotreba većeg stupnja pouzdanosti pri određivanju mogućeg izlaznog parametra (eng.<br />
Select-Before-Operate).<br />
Upotreba vremenskih oznaka povezanih sa skoro svim oblicima podataka (eng.Time-<br />
Stamped Data).<br />
Precizna sinkronizacija vremena između poslužitelja i uređaja (eng. Accurate Time<br />
Synchronization).<br />
Upotrebom oznaka uključenih u protokol, omogućava se prijenos informacija o kvaliteti<br />
prenošenih podataka (eng Quality Flags).<br />
Podržani su različiti oblici zapisa podataka: 16-bit, 32-bit, s predznakom, bez predznaka,<br />
decimalni, BCD, itd (eng. Multiple Data Formats).<br />
Slanje zahtijeva za većim brojem međusobno povezanih podataka. (eng, Scan Groups).<br />
Razdvajanje funkcionalnosti prijenosa podataka od <strong>SCADA</strong> funkcionalnosti (eng. Layer<br />
Separation).<br />
Pouzdana obavijest o promjenama podataka poslana od strane uređaja (eng. Report-by-<br />
Exception).<br />
Prijavljivanje stanja uređaja korištenjem unaprijed definiranih zastavica uključenih u<br />
svakoj poruci odaslanoj od strane uređaja (eng Internal Indications).<br />
1.2. <strong>DNP3</strong> komunikacija<br />
Uobičajeni način komunikacije upotrebom protokola <strong>DNP3</strong> zasniva se na<br />
zahtjev/odgovor modelu. Poslužitelj (eng.master) prvi šalje poruku zahtjeva prema uređaju<br />
(eng. outstation). Po primitku poslužiteljeve poruke, uređaj šalje odgovor prema poslužitelju.<br />
Ovaj oblik komunikacije omogućava jednostavnu provjeru isporuke poslanog zahtjeva (za svaki<br />
poslani zahtjev očekuje se pripadni odgovor) [3].<br />
<strong>DNP3</strong> omogućava i komunikaciju kojom uređaj šalje podatke poslužitelju bez potrebe za<br />
prethodnim zahtjevom (eng. unsolicited). Koristeći unsolicited poruke, uređaj može poslati<br />
obavijest o promjeni stanja u trenutku kad se za time ukaže potreba. Ovaj vid komunikacije<br />
zamjenjuje potrebu za učestalim prozivanjem (eng. polling) od stane poslužitelja čime se<br />
sprječavaju značajnija opterećenja komunikacijske infrastrukture kod složenijih konfiguracija<br />
sustava.<br />
Kako bi se dodatno garantirala sigurnost isporuke poruka, <strong>DNP3</strong> uključuje upotrebu<br />
poruka potvrde primitka. Po primitku svake poruke, poslužitelj ili uređaj šalju pošiljatelju poruku<br />
potvrde primitka. Potvrda primitka poruke je implementirana i na podatkovnom i na<br />
aplikacijskom sloju protokola. Slika 2 prikazuje tipove komunikacije podržane <strong>DNP3</strong> protokolom.<br />
3
Binary<br />
Input<br />
8<br />
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
0<br />
Analog<br />
Input<br />
4<br />
3<br />
2<br />
1<br />
0<br />
Counter<br />
Input<br />
3<br />
2<br />
1<br />
0<br />
Binary<br />
Output<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
0<br />
Master<br />
Analog<br />
Output<br />
4<br />
3<br />
2<br />
1<br />
0<br />
Binary<br />
Input<br />
8<br />
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
0<br />
Analog<br />
Input<br />
4<br />
3<br />
2<br />
1<br />
0<br />
Counter<br />
Input<br />
3<br />
2<br />
1<br />
0<br />
Outstation<br />
Binary<br />
Output<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
0<br />
Analog<br />
Output<br />
4<br />
3<br />
2<br />
1<br />
0<br />
User Layer<br />
Application Layer<br />
Transport Function<br />
<strong>DNP3</strong><br />
Data Link Layer<br />
User Layer<br />
Application Layer<br />
Transport Function<br />
<strong>DNP3</strong><br />
Data Link Layer<br />
//<br />
Request<br />
Solicited and Unsolicited Responses<br />
Confirmations<br />
1.3. Slojevi <strong>DNP3</strong> protokola<br />
1.3.1. Podatkovni sloj<br />
Slika 2 Tipovi komunikacije podržani <strong>DNP3</strong> protokolom [3]<br />
Osnovna zadaća podatkovnog sloja je dvosmjerni transport podataka aplikacijskog sloja<br />
prema uređaju [4]. Ovaj sloj omogućava:<br />
• Enkapsulaciju segmenata transportnog sloja za prijenos putem komunikacijskog kanala<br />
• Dekodiranje paketa podatkovnog sloja u segmente transportnog sloja<br />
• detekciju pogrešaka i CRC (eng. Cyclic Redundacy Check)<br />
• adresiranje izvora i odredišta prijenosa podataka<br />
• mogućnost potvrđivanja svakog primljenog podatkovnog okvira<br />
• mogućnost detekcije izgubljenih ili ponovljenih podatkovnih okvira<br />
1.3.2. Transportni sloj<br />
Transportni sloj ima jednostavnu funkcionalnost razlaganja i ponovnog sastavljanja<br />
dužih poruka podatkovnog sloja [5]. Svi podaci podatkovnog sloja moraju proći kroz transportni<br />
sloj koji razlaže podatke na pakete koji sadrže između jednog i 249 okteta podataka<br />
aplikacijskog sloja. Po primitku poruke, podatkovni sloj prosljeđuje pakete transportnom sloju<br />
koji sakuplja ispravnim redoslijedom i formira izvorni cjeloviti oblik podataka aplikacijskog sloja.<br />
4
1.3.2. Aplikacijski sloj<br />
Aplikacijski sloj je najviši komunikacijski sloj <strong>DNP3</strong> modela kojeg izravno koriste<br />
korisničke aplikacije za prijenos i prihvat podataka [3].<br />
Svi podaci koji se prenose upotrebom protokola <strong>DNP3</strong> mogu se jedinstveno identificirati<br />
tipom podataka (binary input, analog input, counter input, binary output, analog output) i rednim<br />
bojem. Za prijenos ovih podataka upotrebljavaju se <strong>DNP3</strong> objekti tj. način zapisa podataka u<br />
<strong>DNP3</strong> porukama u ovisnosti o tipu i varijanti podataka (norma obuhvaća detaljni opis svih<br />
raspoloživih zapisa putem dokumenta DNP Object Library) [6], [7].<br />
<strong>DNP3</strong> vrijednosti podataka grupira u statičke vrijednosti i vrijednosti događaja. Statičke<br />
vrijednosti predstavljaju trenutačno aktualnu vrijednost određenog podatka, dok događaji<br />
predstavljaju vrijednost od nekog unaprijed definiranog značaja (npr. promjena statičke<br />
vrijednosti, vrijednost zabilježena u određenom vremenu, prisutnost novo dostupne informacije<br />
itd.). Kako bi se olakšalo upravljanje i pristup podacima, postoje 4 klase unutar kojih se<br />
grupiraju podaci (klasa 0 obuhvaća sve statičke podatke dok klase 1, 2 i 3 obuhvaćaju<br />
događaje). Slika 3 prikazuje strukturu poruka aplikacijskog sloja.<br />
← Start of fragment<br />
Application<br />
Header<br />
First<br />
Object<br />
Header<br />
<strong>DNP3</strong> Objects<br />
…<br />
Last<br />
Object<br />
Header<br />
<strong>DNP3</strong> Objects<br />
Object Type Field<br />
Group<br />
Variation<br />
Qualifier Field<br />
Range Field<br />
See Data Object Library<br />
7 6 5 4 3 2 1 0<br />
0 Object Prefix Code Range Specifier Code<br />
Qualifier octet<br />
bit number<br />
Object Prefix<br />
0 Objs packed without a prefix.<br />
1 Objs prefixed with 1-octet index.<br />
2 Objs prefixed with 2-octet index.<br />
3 Objs prefixed with 4-octet index.<br />
4 Objs prefixed with 1-octet object size.<br />
5 Objs prefixed with 2-octet object size.<br />
6 Objs prefixed with 4-octet object size.<br />
7 Reserved.<br />
Range Field Contains<br />
0 1-octet start – stop indexes.<br />
1 2-octet start – stop indexes.<br />
2 4-octet start – stop indexes.<br />
3 1-octet start – stop virtual addresses.<br />
4 2-octet start – stop virtual addresses.<br />
5 4-octet start – stop virtual addresses.<br />
6 No range field used. Implies all values.<br />
7 1-octet count of objects.<br />
8 2-octet count of objects.<br />
9 4-octet count of objects.<br />
A Reserved.<br />
B 1-octet count of objects (variable format).<br />
C Reserved.<br />
D Reserved.<br />
E Reserved.<br />
F Reserved.<br />
Slika 3. Struktura aplikacijske <strong>DNP3</strong> poruke [3]<br />
5
2. Usporedba <strong>DNP3</strong> protokola s uobičajeno korištenim protokolima za daljanski nadzor i<br />
upravljanje<br />
Tablica 1 Usporedba <strong>DNP3</strong> protokola sa IEC 61850 i IEC 60870-5-104 protokolima<br />
Karakteristika / protokol IEC 61850 IEC 60870-5-104 DNP 3.0<br />
Glavno područje primjene<br />
Automatizacija Daljinsko<br />
Daljinsko<br />
postrojenja upravljanje<br />
upravljanje<br />
Semantika procesnih<br />
informacija<br />
+ - -<br />
Podatkovni modela neovisan<br />
o aplikacijskim servisima<br />
+ - -<br />
Aplikacijski servisi neovisni<br />
implementacijskoj tehnologiji<br />
+ - -<br />
Slanje dogaĎaja s<br />
vremenskom oznakom<br />
+ + +<br />
Skup podrţanih tipova<br />
podataka<br />
Proširiv Fiksan Proširiv<br />
Tipovi komunikacije<br />
Client/Server,<br />
peer-to-peer<br />
Master/Slave Master/Slave<br />
Podrška za više mastera + + +<br />
Upravljačke naredbe + + Bez vremenske oznake<br />
Mjerenja + + +<br />
Vremenske oznake + + +<br />
Kvaliteta procesnih podataka + + +<br />
Spontano slanje + + +<br />
Istovremeno čitanje većeg<br />
broja podataka<br />
+ - +<br />
Istovremeno pisanje većeg<br />
broja podataka<br />
+ - +<br />
Slijed dogaĎaja + + +<br />
Vremenska sinkronizacija + + +<br />
Konfiguracija adresnog<br />
prostora procesnih podataka<br />
- + +<br />
Grupiranje podataka + - +<br />
Prijenos datoteka + + +<br />
Točnost vremenske<br />
sinkronizacije<br />
3. Integracija <strong>DNP3</strong> protokola u <strong>SCADA</strong> sustav<br />
U sklopu razvoja Končarevog <strong>SCADA</strong> sustava PROZA NET integrirana je programska podrška<br />
za <strong>DNP3</strong> protokol. <strong>DNP3</strong> protokol je integriran kao dio programske komponente zadužene za<br />
komunikaciju s udaljenim uređajima. Modularni dizajn komponente PORZA NET sustava zadužene za<br />
ostvarivanje komunikacije s različitim protokolima je prikazan na Slici 4.<br />
PROZA NET<br />
Ostale <strong>SCADA</strong> komponente<br />
Jedinstveni model procesnih podatka<br />
<strong>DNP3</strong> driver<br />
IEC 61850 driver IEC 60870-5-104 IEC 60870-5-101<br />
<strong>DNP3</strong> uređaj<br />
IEC 61850<br />
uređaj<br />
IEC 60870-5-104<br />
uređaj<br />
IEC 60870-5-101<br />
uređaj<br />
Slika 4 Modularni dizajn programske komponente za komuniciranja sa različitim protokolima<br />
Jedan od temeljnih elemenata PROZA NET <strong>SCADA</strong>-e koji predstavlja osnovu za implementaciju<br />
novog komunikacijskog protokola je jedinstveni model procesnih podataka. Na taj način nadogradnjom<br />
novog komunikacijskog protokola nije potrebno iznova razvijati već postojeće <strong>SCADA</strong> funkcionalnosti i<br />
gotove komponente.<br />
Jedinstveni model procesnih podataka se temelji na određivanju triju atributa procesnog podatka<br />
(vrijednost, kvaliteta i vremenska oznaka) i semantike samog procesnog podatka. Tako oblikovani<br />
procesni podatak je integralni dio upravljanja <strong>SCADA</strong> sustavom. Upravo zbog jedinstvenog modela<br />
procesnih podataka moguća je istovremeni rad s uređajima koji komuniciraju s različitim protokolima kako<br />
je prikazano na Slici 4.<br />
Kao dio aplikacijske logike procesiranja komunikacije prema <strong>DNP3</strong> uređajima su programski<br />
automati stanja koji opisuju način prihvata podataka. Dva osnovana automata koji prikazuju unsolicited i<br />
solicited komunikaciju su prikazani na Slikama 5 i 6. Pomoću posebno razvijenih programskih mehanizma<br />
PROZA NET <strong>SCADA</strong> sustava ovi automati stanja su izravno korišteni u sklopu razvoja programske<br />
podrške za <strong>DNP3</strong> protokol.<br />
Integrity Poll<br />
Completed<br />
First Unsolicited<br />
Fragment Received<br />
Startup FirstUR Idle<br />
Unsolicited<br />
Fragment<br />
Received<br />
Slika 5. Unsolicited <strong>DNP3</strong> komunikacija [3]<br />
7
Request Sent<br />
No Response<br />
Expected<br />
Unexpected<br />
Fragment<br />
Received<br />
Idle<br />
Fragment Received<br />
FIR = 1, FIN = 1, SEQ = N<br />
or<br />
FIR = 1, FIN = X, SEQ != N<br />
Reponse<br />
Timout<br />
Request Sent<br />
Response<br />
Expected<br />
Fragment Received<br />
FIR = 0<br />
AwaitFirst<br />
Fragment Received<br />
FIR = 1, FIN = 0, SEQ = N<br />
Reponse<br />
Timout<br />
Fragment Received<br />
All other conditions that do not<br />
result in loop back to Assembly<br />
Fragment Received<br />
FIR = 0, FIN = 0, SEQ = N + 1<br />
or<br />
FIR, FIN, SEQ and octets match previous<br />
Assembly<br />
Slika 6. Solicited <strong>DNP3</strong> komunikacija [3]<br />
4. ZAKLJUČAK<br />
<strong>DNP3</strong> protokol je vodeći protokol za automatizaciju industrijskih postrojenja u Sj. Americi. U ovom<br />
članku dan je pregled <strong>DNP3</strong> protokola i njegovih osnovnih karakteristika. Također, prikazana je<br />
usporedba <strong>DNP3</strong> protokola s uobičajeno korištenim komunikacijskim protokolima korištenim u Europi.<br />
Prikazani su detalji integracijskog procesa <strong>DNP3</strong> protokola u <strong>SCADA</strong> sustav. Kako bi se ostvario<br />
jedinstven i lokacijski transparentan <strong>SCADA</strong> proizvod poput Končarevog <strong>SCADA</strong> sustava PROZA NET,<br />
integracija protokola poput <strong>DNP3</strong> je ključan preduvjet visoke kvalitete i primjenjivosti sustava<br />
5. LITERATURA<br />
[1] “<strong>DNP3</strong> SPECIFICATION, Volume 1, <strong>DNP3</strong> INTRODUCTION, Version 2.01, 2007.” .<br />
[2] “<strong>DNP3</strong> SPECIFICATION,Volume 7, IP NETWORKING,Version 2.1, 2007.” .<br />
[3] “<strong>DNP3</strong> SPECIFICATION, Volume 2, APPLICATION LAYER, Version 2.01, 2007.” .<br />
[4] “<strong>DNP3</strong> SPECIFICATION, Volume 4, DATA LINK LAYER, Version 2.01, 2007.” .<br />
[5] “<strong>DNP3</strong> SPECIFICATION, Volume 3, TRANSPORT FUNCTION, Version 2.01, 2007.” .<br />
[6] “<strong>DNP3</strong> SPECIFICATION, Volume 6, Part 1 - Basics, <strong>DNP3</strong> OBJECT LIBRARY, Version 2.01, 2007.” .<br />
[7] “<strong>DNP3</strong> SPECIFICATION, Volume 6, Part 2 - Objects, <strong>DNP3</strong> OBJECT LIBRARY, Version 2.01, 2007.” .<br />
8