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