29.09.2015 Views

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 ...

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!