piątek, 20 lipca 2012

OPC dla Androida? [PL]

Ostatnio otrzymałem maila o treści zbliżonej do: "Jestem studentem i mam teraz praktyki w firmie związanej z przemysłem. Moim zadaniem jest nawiązanie komunikacji z serwerem OPC, czyli muszę zrobić klienta OPC. Aplikacja ma być na Androida. Mam duży problem z nawiązaniem łączności, nie wiem jakich bibliotek używać, niekoniecznie muszą być darmowe. Byłbym bardzo wdzięczny za pomoc za jakieś informacje jak mógłbym to zrealizować." Postanowiłem zamiast bezpośredniej odpowiedzi, opublikować krótkiego posta na blogu (a może się jeszcze komuś przyda??).

Na początku chciałem zaznaczyć, że w ostatnim czasie (od ok. roku) z OPC raczej miałem mało wspólnego z racji zmiany pracodawcy i odejściu od zagadnień związanych z automatyką przemysłową (teraz zajmują się tworzeniem oprogramowania dla instytucji finansowych). W związku z tym moja wiedza może być odrobinę nieaktualna, ale z drugiej strony chyba aż tak dużo się nie zmieniło.
Przejdźmy jednak do tematu, czyli możliwości dostępu do danych procesowych z poziomu systemu Android. Na starcie od razu stwierdzę, że nie jest to proste zagadnienie. Trzeba tutaj przeanalizować przynajmniej dwa przypadki, mianowicie czy jest to:
  • OPC DA 2 lub OPC DA 3 (zwane coraz częściej Classic)?
  • A może jest to OPC UA?
Z racji popularności wspomnianych standardów wydaje mi się, że autorowi pytania chodzi raczej o starszą wersję, czyli OPC DA (Classic) (dla tych którzy nie znają różnic, polecam przeczytanie postów: "Co to jest OPC? (w prostych żołnierskich słowach)" oraz "Porównanie Xi z innymi standardami (OPC DA, OPC XML DA, OPC UA, ...)"). Niestety ta wersja jest oparta o DCOM, a niestety jedyna słuszna implementacja DCOM dostępna jest w systemie operacyjnym Microsoft Windows. Dlatego wydaje mi się, że bezpośredni odstęp z aplikacji pracującej pod kontrolą systemu operacyjnego Android jest raczej skazana na porażkę. Ale … jak to zwykle bywa można zastosować pewien trik. Wystarczy na komputerze, na którym zainstalowany jest serwer OPC (lub nawet na innym komputerze pracującym pod kontrolą systemu Windows), zainstalować pewnego pośrednika, który zamieni OPC na coś innego, co można już łatwo skonsumować z poziomu aplikacji pracującej pod androidem. Jest co najmniej kilka tego rodzaju rozwiązań. Ja znam, korzystałem i współtworzyłem DataPorter'a. Potrafi on zamienić OPC na prosty Web Serwis oparty o SOAP. Taki web serwis na pewno łatwo skonsumować z poziomu aplikacji w systemie Android. Ja pisałem już wcześniej jak to zrobić z poziomu aplikacji .NET: "OPC Client .NET (w języku C# (csharp))", ale wydaje mi się, że implementacja z poziomu Javy nie powinna być dużo trudniejsza.

Mówiłem wcześniej o dwóch przypadkach, jeden już omówiłem, ale warto jeszcze wspomnieć o OPC UA. W tym przypadku nie jest wykorzystywany DCOM, komunikacja może odbywać się po dobrze zdefiniowanych binarnych strumieniach lub soap'owych webserwisach (!). Te dużo łatwiej obsłużyć z poziomu aplikacji Java. Zresztą (dla celów niekomercyjnych) jest również dostępne SDK dla Javy. Na stronie OPC Foundation znaleźć można informację "A non-commercial JAVA Sample Client and Server are available from VTT Technical Research Centre of Finland. Please email Matti.Paljakka_AT_vtt.fi.". Wydaje mi się również, że są dostępne komercyjne SDK, niestety żadnych nie znam, więc nic nie polecę

Na koniec chciałbym jeszcze wspomnieć, że po wpisaniu w Google (OPC Android), pojawia się m.in. link do firmy Unified Automation, która zajmuje się tworzeniem aplikacji wspierającej standard OPC. Niestety opisywane "coś" nie wygląda na skończony produkt, ale przecież zawsze można spróbować się z nimi jakoś skontaktować (wśród różnych firm związanych OPC, z którym miałem okazję się kontaktować, ich można uznać za dość doświadczonych w temacie OPC).

Polecam również przeczytanie na moim blogu pewnych postów (a może one podpowiedzą jeszcze jakieś rozwiązanie):"Dostęp do danych procesowych", "OPC – a programowanie – jak zacząć?".

2 komentarze:

  1. Chciałbym zacząć naukę programowania chodzi o programowanie abap z tego co słyszałem ta materia jest mega trudna, moje doświadczenie ograniczało się do C++

    OdpowiedzUsuń
  2. Jeżeli posiadamy serwer OPC, który implementuje standard XML DA, to również mamy dostęp poprzez web service :)

    OdpowiedzUsuń

Posty powiązane / Related posts