sobota, 7 stycznia 2012

Dostęp do danych procesowych [PL]

Ostatnio byłem zapytany i kilka rozwiązań związanych z dostępem do danych procesowych oraz z przekazywaniem danych z różnego rodzaju aplikacji do sterowników przemysłowych. Przyjrzyjmy się, jakie są możliwe podejścia, do wspomnianych problemów.

Zadanie 1

Zacznijmy od przypadku, w którym mamy zestaw kilku sterowników przemysłowych, które realizują pewną zadaną czynność (np. sterują linią produkcyjną). Ze wspomnianych sterowników potrzebujemy odczytać dane, by pokazać je na aplikacji operatora. Ponadto potrzebujemy przekazywać do sterowników zestawy nastaw (co ma linia produkcyjna wytworzyć). Dodatkowo dane ze sterowników chcemy zapisywać w bazie danych oraz potrzebujemy odczytywać z bazy danych pewne parametry (np. numery seryjne, które mają być przypisane wyprodukowanym urządzeniom).

Jak przygotować rozwiązanie wspierające powyższe warunki najwygodniej oprzeć je o standard OPC, wykorzystać serwery OPC do pozyskiwania danych ze sterowników przemysłowych oraz wyspecjalizowane oprogramowanie do komunikacji z bazą danych i dająca dostęp do danych przez WebSewisy oparte o XML/SOAP. Przykład takiego rozwiązania przedstawiono na poniższym rysunku:

Na rysunku najciekawsze elementy zostały oznaczone literami:

A. Na samym dole Serwer OPC komunikuje się z różnymi sterownikami. Protokół komunikacyjny jest dowolny, ale musi być wspierany zarówno przez Serwer OPC, jak i sterownik przemysłowy. Pamiętajmy tutaj, że musimy wiedzieć, co chcemy odczytywać lub zapisywać do sterownika przemysłowego. Musimy więc wiedzieć, jakie są adresy rejestrów, komórek pamięci, flag, wejść, czy wyjść, w których są interesujące dla nas dane.

B. Serwer OPC może być właściwie dowolny, ale musi wspierać komunikację ze sterownikami OPC. Serwer OPC może być jeden lub może być ich kilka (np. osobny dla każdego urządzenia, takie rozwiązanie nie jest jednak zalecane). Przykładem serwera OPC, który może jednocześnie obsłużyć wiele urządzeń, może być CommServer.

C. Interfejsem, przez który udostępnione zostaną dane z procesu będzie OPC. Ci, którzy nie wiedzą, co to jest OPC, powinni przeczytać artykuł: "Co to jest OPC?" (dostępny na tym blogu). Ci, którzy chcą zgłębić jak działa OPC, mogą przeczytać: "OPC, DCOM, .NET i C# w jednym stali domu". Warto wiedzieć, że do prawidłowego działania OPC potrzebne są odpowiednie ustawienia DCOM, opis jak to zrobić dostępny jest pod adresem: http://www.commsvr.com/Howitworks/Howto/KonfiguracjaDCOM.aspx. Na powyższym rysunku do interfejsu OPC jest m. in. podłączony DataPorter. Jest to przykład bardzo specjalistycznego oprogramowania, które jest jest pewnego rodzaju mostem pomiędzy interfejsem OPC, a bazą danych, czy WebSerwisami. DataPorter posiada wbudowanego klienta OPC i jednocześnie można go skonfigurować, by dane dostępne w OPC były dostępne przez WebSewis bazujący na XML i SOAP oraz pozwala również na dwukierunkową komunikację z bazą danych.

D. Opis konfiguracji komunikacji z bazą danych można znaleźć pod adresem: http://www.commsvr.com/OPC-Help/html/26dd91e2-db6e-4a3a-ac32-a7f14422e466.htm. Warto zauważyć,że są tam zarówno informacje na temat konfiguracji zapisu danych do bazy danych (np. w celu logowania danych z procesu w bazie danych): http://www.commsvr.com/OPC-Help/html/42ac5182-238c-41a2-81a7-f66a77089b02.htm. Jak i odczytu z bazy danych (np. w celu odczytywanych z bazy danych wspomnianych numerów seryjnych): http://www.commsvr.com/OPC-Help/html/169261d2-f2b0-43f0-908a-bf6d23099aa1.htm.

E. Jednym z wymagań postawionych w zadaniu jest też przekazywanie zestawów nastawień z zewnętrznej aplikacji. Można to oczywiście zrobić za pośrednictwem bazy danych (patrz punk D). Alternatywą jest jednak wykorzystanie prostego WebSerwisu oferowanego przez DataPorter'a. Dlaczego? Otóż przygotowanie samodzielnie klienta OPC nie jest proste i często lepiej skorzystać z gotowych rozwiązań, np. opisanego w artykule: "OPC Client .NET (w języku C#)".

F. W tym punkcie mamy jeszcze jedno połączenie, które służyć ma dostępowi do wspomnianej linii produkcyjnej dla aplikacji, która ma zapewnić wizualizację procesu. Może to być SCADA (Supervisory Control And Data Acquisition) lub proste HMI (human–machine interface). Warto tutaj zauważyć, jakie fajne rozwiązanie udało nam się stworzyć przy pomocy OPC – aplikacja wizualizacyjna korzysta z tego samego dostępu do danych co inne aplikacje i nie ma potrzeby duplikowania łącz komunikacyjnych do każdego z urządzeń osobno.

Zadanie 2

Potrzebujemy w pewnym pomieszczeniu umieścić zestaw czujników temperatury, czy wilgotności, tak by móc później obserwować wartości wspomnianych parametrów przez stronę internetową, czy bazę danych.

W tym przypadku musimy najpierw wyposażyć się odpowiednie urządzenia zbierające wspomniane dane (np. temperatury, czy wilgotność). Oczywiście jako urządzenie zbierające dane można użyć sterownika przemysłowego np. Saia, czy Control, które często oprócz funkcjonalności zbierania danych oferują również dostęp do nich przy pomocy serwisu internetowego, ale należy pamiętać, że trzeba je jeszcze programować. Dlatego warto zawrócić uwagę na gotowe i dedykowane urządzenia, pozwalające na podłączenie czujników, posiadające często komplet wejść i wyjść cyfrowych (np. które można wykorzystać do zdalnego resetu urządzeń) oraz udostępniające dane przy pomocy popularnego protokołu, strony internetowej, czy nawet przez SNMP. Przykładem takiego urządzenia może być Poseidon: http://www.hw-group.com/products/poseidon/poseidon_3268_pl.html . Tym, którym on nie wystarczy (gdyż np. nie zapewnia komunikacji z bazą danych), mogą do tego urządzenia podłączyć serwer OPC (np. CommServer) i następnie wykorzystać DataPorter do rozszerzenia funkcjonalności (np. o komunikację z bazą danych, czy WebSerwisy). To jak to można zrobić opisane zostało w rozwiązaniu dla zadania 1.

Podsumowanie

Mam nadzieję, że udało mi się pewne sprawy związane z OPC i dostępem do danych procesowych wyjaśnić i może komuś podpowiedzieć jakieś fajne pomysły. Wspomniane wyżej produkty należy traktować raczej jako przykładowe, to dlaczego akurat je wybrałem, wynika z faktu, że je znam, lub miałem z nimi styczność. Jeżeli macie jakieś pytania lub sugestie (np. jak jakieś rozwiązanie zmienić), to zapraszam do komentowania.

1 komentarz:

Posty powiązane / Related posts