background image

OPC (OLE for Process Control) jest modelem wymiany 
danych przeznaczonych dla systemów automatyki. Ba-
zuje na technologiach obiektów OLE, COM oraz DCOM 
firmy Microsoft [1]. Jest to nowoczesny standard, coraz 
powszechniej stosowany w dużych systemach. Umoż-
liwia połączenie urządzeń automatyki z oprogramowa-
niem sterującym, jak też lokalną bądź zdalną wymianę 
danych pomiędzy aplikacjami. Nad jego rozwojem 
i tworzeniem kolejnych specyfikacji czuwa fundacja 
OPC Foundation [2]. W Katedrze Informatyki i Automa-
tyki Politechniki Rzeszowskiej opracowano w ramach 
praktyki studenckiej prototypowy zestaw laboratoryjny 
umożliwiający poznanie budowy zarówno klienta jak 
i serwera OPC DA.

Standard OPC

Komponenty programowe komunikujące się w standar-
dzie OPC tworzą relację klient-serwer. Typowy serwer 
OPC pośredniczy w wymianie danych pomiędzy właści-
wym urządzeniem automatyki a aplikacjami klienckimi 
[3]. Bywa on zintegrowany sprzętowo z danym urządze-
niem lub działa jako autonomiczny moduł. Wymiana da-
nych może odbywać się przy wykorzystaniu dwojakiego 
rodzaju interfejsów: custom lub automation [4], z któ-
rych drugi jest opcjonalny. W opisywanym rozwiązaniu 
używane są wyłącznie interfejsy typu custom.
Istnieje kilka specyfikacji standardu OPC wyróżnionych 
ze względu na rodzaj danych oraz sposób zarządzania. 
Podstawowymi są:

   OPC DA (Data Access) – umożliwia wymianę bieżą-

cych danych. Polega to na zapisach lub odczytach da-
nych serwera dokonywanych przez klientów, względ-
nie na wysyłaniu przez serwer do klienta określonego 
zestawu danych, gdy ich wartości ulegają zmianom.

   OPC HDA (Historical Data Access) – pozwala na 

gromadzenie i przekazywanie danych uszeregowa-
nych czasowo. Cechą charakterystyczną OPC HDA 
jest możliwość wyznaczania wartości różnorodnych 

Komunikacja OPC DA w prototypowym 
zestawie mikroprocesorowym

Andrzej Bożek
Dariusz Rzońca

Standard OPC uważany jest za skomplikowany, dlatego na razie występuje 
jedynie w większych systemach automatyki. Poniższy artykuł opisuje 
budowę stosunkowo prostego zestawu laboratoryjnego z komunikacją 
według standardu OPC DA.

Andrzej Bożek, Politechnika Rzeszowska
mgr inż. Dariusz Rzońca, Politechnika Rzeszowska

Pomiary Automatyka Robotyka  4/2007

funkcji, np.  minimów, maksimów, średnich, inter-
polacji itp.

  OPC A&E (Alarms and Events) – służy do powiada-

miania o stanach i sytuacjach wymagających szcze-
gólnej uwagi operatora lub bezpośredniej reakcji 
urządzeń współpracujących. Serwery OPC A&E wy-
krywają warunki alarmów i zdarzeń w urządzeniach 
współpracujących. Klientami OPC A&E są stacje ope-
ratorskie oraz urządzenia archiwizujące.

Specyfikacja OPC DA jest spotykana najczęściej za-

równo w pojedynczych urządzeniach, jak i w rozbu-
dowanych systemach. Klient OPC DA po połączeniu 
z odpowiednim serwerem ma dostęp do jego struktury 
danych. Jest to przeważnie struktura hierarchiczna, po-
dobna do drzewa katalogowego w systemach plików. 
Rozmieszczenie elementów (items) odzwierciedla fi-
zyczne bądź logiczne zależności występujące między 
nimi. Pozycje skrajne, pozbawione odgałęzień, odpowia-
dają określonym danym dostępnym dla klientów. Są one 
przechowywane w postaci tzw. własności (properties
przynależnych pozycjom [5]. Pozycja może zawierać 
bardzo liczny zbiór własności (identyfikator jest liczbą 
16-bitową), jednak niektóre z nich są wyróżnione i w 
sposób szczególny obsługiwane przez serwer. Jako fun-
damentalne należy wymienić wartość (value), jakość 
(quality) i stempel czasowy (time stamp). Wartość po-
zycji dotyczy np. poziomu cieczy, natężenia przepływu, 
prędkości itd. Zmiana rzeczywistego wejścia pociąga 
za sobą aktualizację wartości w serwerze OPC. Klient 
może dokonać zapisu nowej wartości do serwera, co 
spowoduje modyfikację rzeczywistego wyjścia. In-
formacja o czasie ostatniej modyfikacji wartości jest 
przechowywana jako stempel czasowy. Jakość określa 
stopień poprawności danej na jaki może liczyć w danej 
chwili klient.

Bezpośrednie odczyty lub zapisy wartości pozycji 

zawartych w strukturze danych serwera nie stano-
wią typowej metody wykorzystania standardu OPC 
DA. Preferowaną formą komunikacji jest użycie grup 
(groups) będących logicznym zbiorem pozycji, które 
serwer zakłada na życzenie klienta. Pozwalają one na 
pożądaną segregację pozycji niezależną od hierarchii 
danych serwera. Mechanizm grup umożliwia także zle-
cenie serwerowi zawiadamiania klientów o zmianach 
wartości wybranych pozycji grupy. Jest to bardzo pożą-

12

background image

dany mechanizm, zwłaszcza gdy klient jest przyłączony 
do wielu pozycji, których intensywność zmian jest nie-
wielka. W takim  przypadku zawiadomienia z serwera 
są bardziej ekonomicznym trybem pracy, niż cykliczne 
odpytywanie przez klienta.

Prototypowy zestaw laboratoryjny

Zest aw laborator y jny 
z komunikacją według 
standardu OPC DA został 
oparty na systemie uru-
chomieniowym MegaAVR 
pokazanym na rys. 1.

System został opraco-

wany jako uniwersalny 
moduł mi k roproceso -
row y i stanowi pomoc 
dyda k t ycz ną podcza s 
zajęć dot ycząc ych mi-
krokontrolerów. Za jed-
nostkę centralną służy 
mikrokontroler ATmega 
128 [6] z rodziny Atmel 

AVR. Moduł wyposażony jest w następujące peryferia: 
wyświetlacz LCD, klawiatura, diody LED, przetwornik 
ADC, zegar RTC, interfejs RS-232.

W skład zestawu laboratoryjnego wchodzą następu-

jące elementy pokazane na rys. 2:
a) klient OPC współpracujący z serwerami OPC DA 

w wersjach 1.0, 2.0 oraz 3.0

b) moduł programowy serwera PC bezpośrednio łą-

czący się z klientami, wspierający OPC DA 2.0 i 3.0

c) system uruchomieniowy MegaAVR komunikujący się 

z serwerem przez port szeregowy

d) dodatkowe układy przyłączone do modułu MegaAVR 

za pomocą magistrali 1-wire.

Program klienta został napisany w środowisku Mi-

crosoft Visual C# 2005 .NET. Część kodu definiująca 
interfejsy odwołujące się do obiektów COM pochodzi 

z przykładów firmy VISCOM [7]. Dzięki temu uzyskano 
kod w całości jawny, bez dołączanych bibliotek lub mo-
dułów związanych z obsługą OPC, które z reguły są od-
płatne. Przykładowe okno podczas pracy z programem 
pokazano na rys. 3.

Oprogramowanie serwera utworzone zostało za po-

mocą pakietu DANSrv OPC DA Server Toolkit Evaluation 
firmy Advosol [8]. Wykorzystano znowu środowisko Vi-
sual C# 2005 .NET. Z uwagi na wersję ewaluacyjną opro-
gramowania serwer jest aktywny tylko przez 30 min 
po uruchomieniu. Potem przestaje aktualizować dane 
i należy dokonać restartu – zamknięcia i ponownego 
uruchomienia. Ograniczenie to nie jest szczególnie 
uciążliwe przy badawczym i dydaktycznym wykorzy-
staniu zestawu.

Moduł serwera zaimplementowany w systemie uru-

chomieniowym MegaAVR komunikuje się z kompu-
terem PC za pomocą łącza szeregowego. Program ten 
stworzono od podstaw korzystając z pakietu WinAVR 
z kompilatorem avr-gcc.

Struktura danych OPC została zdefiniowana w modu-

le MegaAVR, jak to pokazano na rys. 4. Organizowanie 
hierarchii danych polega na tworzeniu listy struktur 
języka C opisujących pozycje oraz ich własności. Jedna 
z gałęzi struktury zawiera pozycje reprezentujące typy 
danych, które może obsługiwać serwer. Naturalnie ze-

staw tych typów jest znacznie ograniczony w stosunku 
do pełnego zestawu typów OPC. Pozostałe gałęzie po-
zwalają na dostęp do elementów sprzętowych modułu, 
m.in. do zegara czasu rzeczywistego, klawiszy, diod LED, 
wyświetlacza LCD oraz do magistrali 1-wire [9]. W ra-
mach obsługi 1-wire można poprzez OPC określić liczbę 
urządzeń przyłączonych do magistrali, odczytać 64-bi-
towe identyfikatory oraz odczytać temperaturę z przy-
łączonych czujników DS18B20. W dość prosty sposób 
można tę strukturę danych modyfikować i rozszerzać.

Całą budowę serwera w postaci uproszczonego sche-

matu blokowego ukazuje rys. 5. Uwzględniono na nim 
zarówno właściwe składniki serwera OPC, jak i ele-
menty systemu MegaAVR, stanowiące źródło danych. 
O funkcjonowaniu oprogramowania jako serwera OPC 
decydują w pierwszym rzędzie obiekty COM, widoczne 
w lewej części rysunku, a zwłaszcza ich interfejsy, za-
znaczone symbolicznie poszerzonymi strzałkami, które 

Rys 1. System uruchomie-

niowy MegaAVR

Rys 2. Struktura zestawu laboratoryjnego

Rys 3. Program klienta OPC DA

Rys 4.  Fragment kodu dla systemu MegaAVR definiującego 

strukturę danych serwera

Pomiary Automatyka Robotyka  4/2007

13

background image

Pomiary Automatyka Robotyka  4/2007

14

muszą być zgodne z określoną specyfikacją. Obiekt ser-
wera (OPCServer) ma charakter podstawowy i stanowi 
funkcjonalny punkt wyjścia do odwoływania się do po-
żądanych zasobów. Zbiór wszystkich pozycji przypo-
rządkowany jest statycznie obiektowi serwera. Za po-
mocą odpowiednich metod obiektu serwera tworzone 
są dynamicznie obiekty grupy (OPCGroup). Po utwo-
rzeniu, grupy zarządzane są przez własne interfejsy, 
bezpośrednio przyłączane do klienta, bez pośrednictwa 
obiektu serwera. Poszczególne pozycje (OPCItems) re-
prezentujące dane, choć stanowią integralne składniki 
oprogramowania serwera, nie są obiektami COM i nie 
mają interfejsów, dostęp do nich możliwy jest albo za 
pomocą obiektu serwera albo obiektów grup.

Strukturę połączenia komunikacyjnego OPC DA 

między klientem a serwerem na poziomie interfejsów 
COM przedstawia rys. 6. Grot strzałki wskazuje obiekt, 

którego metody są wywoływane przez 
dany interfejs. Napis na strzałce okre-
śla interfejs, a pod strzałką metody 
interfejsu. Rysunek ukazuje reprezen-
tatywny, ale nie kompletny zbiór  in-
terfejsów i metod, co wynika z dużej 
ich liczby. Szczegółową listę i opisy 
zawiera wspomniana już specyfikacja 
[5]. Zazwyczaj klient wywołuje me-
tody serwera, istnieją jednak także in-
terfejsy pozwalające na wywoływanie 
pewnych metod zaimplementowanych 
w programie klienta, które pozwalają 
m.in. na zawiadamianie przez serwer 
o zmianach wartości pozycji w gru-
pach. Poziom interfejsów COM jest 
fragmentem omawianego zestawu, 
który w sposób ścisły podlega założe-
niom specyfikacji OPC, aby zapewnić 

kompatybilność z innymi modułami programowymi 
podobnego typu. Kompatybilność potwierdziły udane 
próby łączenia klienta z różnymi serwerami i serwera 
z różnymi klientami OPC DA.

Podsumowanie

Stworzony zestaw prototypowy  dobrze ukazuje zasadni-
cze właściwości struktur OPC DA. Pozwala na zapozna-
nie się z komunikacją w relacji klient-serwer, przegląda-
nie w programie klienckim struktury danych serwera, 
dokonywanie odczytów i zapisów wartości pozycji ser-
wera powodujących zmiany w sprzętowym funkcjono-
waniu modułu MegaAVR. Odczytane dane oprócz war-
tości zawierają stempel czasowy i oznaczenie jakości. 
Zestaw umożliwia także zapoznanie się z mechanizmem 
grup OPC DA, łącznie z funkcją zawiadamiania klientów 
o zmianach wartości pozycji w serwerze. Zgodność ze 
standardem pozwala na wykorzystanie innej aplikacji 
klienta lub serwera, w szczególności przyłączenie do ist-
niejącego systemu automatyki. W ramach dalszych prac 
planowane jest rozbudowanie aplikacji serwera o obsłu-
gę protokołu MODBUS, co pozwoli na akwizycję danych 
z typowych aparatowych urządzeń automatyki.

Bibliografia

1.  OPC Common Definitions, Version 1.0, OPC Foundation 

1998.

2.  http://www.opcfoundation.org/
3.  OPC Overview. OPC Foundation 1998.
4.  Simicz A.: Zintegrowane środowisko projektowania 

i testowania regulatorów do sterowania rozproszo-
nego
, Pomiary Automatyka Robotyka 11/2006.

5.  OPC Data Access Custom Interface Specification, Ver-

sion 3.00. OPC Foundation 2003.

6.  ATmega 128 Datasheet. Atmel 2003.
7.  http://www.codeproject.com/dotnet/opcdotnet.asp
8.  http://www.advosol.com/pc-5-4-dansrv-net-server-

-toolkit.aspx

9.  Book of iButton Standards. Dallas Semiconductor Corp. 

2002.

Rys 5.  Schemat blokowy hierarchii serwera OPC z uwzględnieniem fizycznego źródła 

danych

Rys 6.  Połączenie OPC DA klient-serwer na poziomie interfej-

sów COM