sobota, 31 października 2009

OPC UA Server (CommServer UA) już dostępny! [PL]

Promuj

Po ostatniej wytężonej pracy w firmie gdzie pracuję, chciałbym ogłosić, że OPC UA Server - CommServer UA jest już dostępny i gotowy do pobrania dla wszystkich tych, którzy chcą się bliżej zapoznać z technologią OPC UA

CommServer to pakiet oprogramowania komunikacyjnego do zarządzania transferem danych. Jest to w pełni konfigurowalny serwer OPC Unified Architecture (OPC UA). Wbudowane technologie i algorytmy pozwalają na inteligentną transmisję danych automatycznie dostosowującą jej parametry do potrzeb użytkownika lub procesu.

Jest to pierwsza publiczna wersja CommServer’a UA dostępna w dziale download wortalu CommServer (wersja dostępna z licencją demo). CommServer UA został przetestowany pod kątem kompatybilności i współdziałania z innymi produktami podczas OPC Interoperability Workshop (2009) w Norymberdze, Niemcy. OPC UA Address Space Model Designer w wersji 2.10.00 i OPC Viewer w wersji 3.00.02 są komponentami CommServer’a UA w wersji 1.00. 20.

CommServer UA wspiera interfejs serwera OPC UA i pozwala na udostępnianie danych z trzech źródeł (nazywanych w oprogramowaniu DataSources):

  • CommServer – silnik komunikacyjnych (wbudowane technologie i algorytmy pozwalają na inteligentną transmisję danych automatycznie dostosowującą jej parametry do potrzeb użytkownika lub procesu)
  • Klient OPC DA (działa jako Wrapper OPC DA z w pełni konfigurowalną przestrzenią adresową)
  • Symulator (dane są symulowane)

 

Zobacz online help (http://www.commsvr.com/UAModelDesigner/Index.aspx)

Pobierz najnowszą wersję CommServer UA 1.00.20

Kolejną nowością są nowe wersje oprogramowania z rodziny CommServer

Przetestowane pod kątem kompatybilności i współdziałania z innymi produktami podczas OPC Interoperability Workshop (2009) w Norymberdze, Niemcy.

OPC Viewer 3.00.02

DataPorter rel. 2.00.02

CommServer 4.00.02

CommServer UA w wersji 1.00.20

OPC UA Address Space Model Designer 2.10.00

Promuj

środa, 28 października 2009

OPC Client .NET (cz.2 Implementacja) [PL]

Promuj

W poprzedniej części opisałem czynności przygotowawcze, teraz napiszemy trochę kodu :).

Na początku należy dodać referencję do projektu w Visual Studio:


Teraz wskazujemy serwis (wpisując jego adres: http://localhost/CAS.OPCWSDataAccess/OPCAdvancedDataAccess.asmx):


Wpisujemy jeszcze nazwę naszej referencji, klikamy na "Add Reference" i referencja powinna nam się pojawić w naszym Solution:


Teraz wykorzystamy dwie funkcje: GetAvailiableItems (zwracającą dostępne w serwerze elementy) oraz GetValue_OneItem (odczytującą wartość wybranego elementu). Informacje na temat innych wywołań dostępne są tutaj: http://www.commsvr.com/DataPorter/Index.aspx?topic=html/3bddf5c3-5d5a-4569-85db-fcdc52a1b34a.htm. Poniższe dwa rysunki pokazują efekt wykonania tych dwóch funkcji przy pomocy wspomnianej wcześniej strony debugger'a.

GetAvailiableItems:


GetValue_OneItem:


Oczywiście my wywołamy te dwie funkcje z poziomu C#. W tym celu należy najpierw wykonać połączenie: OPCAdvancedDataAccess.OPCAdvancedDataAccess opcDA = new OPCAdvancedDataAccess.OPCAdvancedDataAccess(). Później można pobrać listę elementów jako tablicę stringów: string[] items = opcDA.GetAvailiableItems(). Oraz można pobrać wartość dla jednego z elementów tablicy: OPCAdvancedDataAccess.ItemValue val = opcDA.GetValue_OneItem( items[ 0 ] ).

Ostatecznie kod prostej funkcji nawiązującej połączenie, pobierającej i wyświetlającej listę dostępnych elementów oraz wartość pierwszego dostępnego elementu, wygląda następująco:

static void Main( string[] args )
{
  //connecting to remote object
  OPCAdvancedDataAccess.OPCAdvancedDataAccess opcDA = new OPCAdvancedDataAccess.OPCAdvancedDataAccess();
  // getting availiable item list
  string[] items = opcDA.GetAvailiableItems();
  //displaing the list
  Console.WriteLine("Item List:");
  foreach ( string item in items )
    Console.WriteLine( item );
  //reading a value of the first item (#0)
  OPCAdvancedDataAccess.ItemValue val = opcDA.GetValue_OneItem( items[ 0 ] );
  Console.WriteLine( "---------------------" );
  Console.WriteLine( "Value of item {0}", items[ 0 ] );
  Console.WriteLine( "value={0}", val.Value );
  Console.WriteLine( "quality={0}", val.Quality.QualityBits );
  Console.WriteLine( "timestamp={0}", val.Timestamp );

  //waiting for enter
  Console.WriteLine( "[Press Enter]" );
  Console.ReadLine();
}

I daje w efekcie:



Item List:
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/108
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/102
CAS.CommServer.OPC.Da.Server/Generator/PLC/G/000
CAS.CommServer.OPC.Da.Server/Generator/PLC/G/001
CAS.CommServer.OPC.Da.Server/Generator/PLC/G/002
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/101
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/101
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/100
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/105
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/107
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/100
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/109
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/103
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/106
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/104
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/108
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/105
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/106
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/110
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/103
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/109
CAS.CommServer.OPC.Da.Server/Registers/PLC/R/102
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/107
CAS.CommServer.OPC.Da.Server/Flags/PLC/F/104
---------------------
Value of item CAS.CommServer.OPC.Da.Server/Registers/PLC/R/108
value=170
quality=good
timestamp=2009-08-12 15:17:04
[Press Enter]

Proste prawda? :)

Promuj

wtorek, 27 października 2009

OPC Client .NET (część 1. Przygotowania) [PL]

Promuj

Jakiś czas temu w post'cie pt. "Implementacja klienta OPC w C#" spróbowałem naświetlić podstawowe zagadnienia związane z implementacją klienta OPC na platformie .NET. Nie jest to proste zagadnienie, a do tego poza dobrą znajomością programowania opartego o DCOM należy mieć dostęp do specyfikacji standardu OPC. W tym artykule chciałbym wskazać pewną alternatywę, a mianowicie pokazać jak można dostać się do danych w OPC z poziomu platformy .NET (przykład w C#) bez implementacji pełnego klienta OPC. W tym celu zostanie wykorzystane dodatkowe oprogramowanie: DataPorter, które posiada funkcjonalność klienta OPC oraz zapewnia dostęp do odczytywanych przez niego danych poprzez WebSerwis. W prezentowanym tutaj przykładzie nie zostanie napisany "prawdziwy klient OPC", gdyż zostanie wykorzystane kompletne oprogramowanie klienta, zamierzam natomiast pokazać jak przy pomocy prostego programiku można dostać się do danych z OPC. Niniejszy artykuł może być również ciekawy dla osób, które chcą poznać przykład wykorzystania jakiegoś WebSerwisu z poziomu .NET (oczywiście nie piszę tu o WebSerwisie w rozumieniu serwisów w formie stron internetowych, a o serwisach opartych o SOAP i technologie WS-*)

Oprogramowanie DataPorter jest dostępne w pełni funkcjonalnej wersji demonstracyjnej (ograniczonej czasowo) na stronie: http://www.commsvr.com/DownloadCenter/ProductSoftware/PR2605DataPorter_Software.aspx (wymagana jest darmowa rejestracja). Instalowane jest z domyślną konfiguracją, w której podłącza się one do oprogramowania serwera OPC: CommServer. Opis domyślnej konfiguracji dostępny jest tutaj: http://www.commsvr.com/Products/DataPorterDescription/DataPortersampleconfiguration/tabid/320/language/en-US/Default.aspx. Pokazany w tym artykule przykład używa oprogramowania CommServer, dlatego warto je również zainstalować (jak to zrobić?). Przed przystąpieniem do dalszych ćwiczeń warto, w tym miejscu sprawdzić wspólne działanie CommServer'a i DataPorter'a (w przypadku jakichś problemów polecam odwiedzenie e-manuala DataPorter'a, dostępnego tutaj: http://www.commsvr.com/DataPorter/Index.aspx

Po pomyślnym zweryfikowaniu działania DataPorter'a i CommServer'a należy zainstalować dodatek do DataPorter'a udostępniający WebSerwisy (uwaga wcześniej należy mieć zainstalowany IIS, zintegrowany z platformą .NET 2.0). Dodatek znajduje się w katalogu DataPortera w następującej lokalizacji:

"%programfiles%\CAS\DataPorter\AdditionalSetup\CAS.OPCWSDataAccess\setup.exe" 

Po instalacji dodatku i wpisaniu w przeglądarkę internetową adresu: http://localhost/CAS.OPCWSDataAccess/OPCAdvancedDataAccess.asmx, oczom powinien się okazać obraz podobny do poniższego:


Jest to strona generowana w sposób automatyczny przez serwer IIS na podstawie WebSerwisu i umożliwiająca jego debugowanie (uwaga: ta strona dostępna jest tylko na lokalnej maszynie - tzn. tylko na tym komputerze, na którym zainstalowany jest WebSerwis).

Dla takiego WebSerwisu można pobrać i odczytać jego definicję zapisaną w języku WSDL. W tym celu należy do przedstawionego wyżej adresu dopisać "?wsdl" lub kliknąć na odpowiedni odnośnik na wspomnianej autogenerowanej stronie.


W następnej części zaprezentuję jak obsłużyć taki WebSerwis z poziomu C# i .NET, czyli w konsekwencji jak dostać się do danych w OPC.

Promuj

niedziela, 25 października 2009

Wprowadzenie do Open XML SDK na CodeGuru [PL]


Zainteresowanych tematem Open XML SDK chciałbym poinformować, że zamieściłem dzisiaj na portalu CodeGuru mój artykuł na te temat. Treść artykułu jest zbieżna z materiałem, który pojawiał się już na tym blogu, ale teraz połączyłem to w jedną całość. Dodatkowo zainteresować może też fakt, że przytoczone fragmenty kodu dostępne są jako gotowe solution (dla Visual Studio) i dołączone są jako załącznik do artykułu.
Zapraszam do lektury: http://codeguru.pl/article-763.aspx.



Promuj

piątek, 23 października 2009

Visual Studio 2010 Beta 2 Download [PL]

Promuj

Zgodnie z tym co pisałem wcześniej, Microsoft opublikował publicznie kolejne wersje beta swoich produktów związanych z Visual Studio 2010. Poniżej spis linków (pochodzący z oficjalnej strony poświęconej Visual Studio), wcześniej można obejrzeć filmik na temat instalacji: http://channel9.msdn.com/shows/10-4/10-4-Episode-33-Downloading-and-Installing-Visual-Studio-2010-Beta-2/.

Visual Studio

Visual Studio Extensibility

.NET Framework

Team Foundation Server

Test Products

Express

Promuj

środa, 21 października 2009

Visual Studio 2010 Beta 2 Training Kit już dostępny [PL]

Niedawno pisałem o tym, że pojawiła się kolejna wersja beta Visual Studio 2010, wczoraj doszła kolejna nowość: Microsoft opublikował Visual Studio 2010 and .NET Framework 4 Training Kit - October Preview. Dostępny jest on pod adresem:

http://www.microsoft.com/downloads/details.aspx?familyid=752CB725-969B-4732-A383-ED5740F02E93&displaylang=en

Kolejna Beta (2) tego Training Kit'u zawiera 15 prezentacji, 19 hands-on labs i 13 demonstracji. Pokazano tam wiele nowych technologii, włączając w to: C# 4, VB 10, F#, Parallel Extensions, Windows Communication Foundation, Windows Workflow, Windows Presentation Foundation, ASP.NET 4, Entity Framework, ADO.NET Data Services, Managed Extensibility Framework, and Visual Studio Ultimate.

Więcej na temat zawartości pakietu można znaleźć w artykule: "Visual Studio 2010 Beta 2 Training Kit Published"

Promuj

Google Chrome - pierwsze wrażenia [PL]

Przegląda Google Chrome ma już ponad rok, więc pomimo mojego przyzwyczajenia do Firefox postanowiłem przyjrzeć się jej trochę bliżej.


Nie korzystam jeszcze z niej długo, ale muszę przyznać, że moje pierwsze wrażenia są dość pozytywne. Przeglądarka działa stabilnie i szybko. Ma ciekawy wygląd, którego cechą jest minimalistyczny interfejs, tak aby obszar na którym wyświetlana jest strona był jak największy. Nawet pasek tytułu okna i ramka okna znika po maksymalizacji przeglądarki. Bardzo wygodny jest też zintegrowany z wyszukiwarką pasek adresu - działa on dużo lepiej niż w Firefox

Niestety są też pewne braki: naciśnięcie rolki na myszce nie powoduje otwierania strony "w tle". Na pasku adresu brakuje mi ikonki RSS, która pojawia się jeżeli na stronie znajduje się jakiś kanał, a jej naciśnięcie pozwala na dodanie RSS do wybranego agregatora. Z RSS'ami jest jeszcze jeden problem (chociaż może jest to problem mojego czytnika (RSS Bandit), który nie zintegrował się z Chromem), otworzenie kanału nie powoduje jego automatycznego importu do czytnika. Kolejny problem powodują niektóre edytory na różnych stronach, nie działa np. popularny FCKEditor, czy wykorzystywany edytor na portalu "Dotnetomaniak". Brakuje też mi opcji zaznaczenia fragmentu strony i wyświetlenia źródła zaznaczenia.... ale może już dość tego narzekania. Być może część przytoczonych przeze mnie problemów znika po odpowiedniej konfiguracji, czy zainstalowaniu odpowiedniego dodatku

Na koniec, tym wszystkim, którzy chcieliby przeczytać więcej na temat Chrome (w języku polskim), polecam odwiedzenie bloga:

GOOGLE CHROME DEV
POLSKI BLOG O PRZEGLĄDARCE GOOGLE CHROME. NOWE WERSJE, PLUGINY, CIEKAWOSTKI.

wtorek, 20 października 2009

Serwis uruchamiać albo nie? oto jest pytanie.... [PL]

Jakiś czas temu pisałem na temat tworzenia i instalowania serwisu Windows. Pokazałem wtedy prosty kod procedury Main, który uruchamia serwis:

static void Main()
{
ServiceBase[] ServicesToRun;
ServicesToRun = new ServiceBase[]
  {
      new Service1()
  };
ServiceBase.Run( ServicesToRun );
}

W większości wypadków jest to dobre rozwiązanie, gorzej jeżeli chcemy uruchamiać również wytworzony plik "exe" dwuklikając na niego (lub wciskając "play" w VS). Jeżeli wykorzystaliśmy powyższy kod otrzymamy:

W sumie otrzymaliśmy precyzyjną informację co należy zrobić by uruchomić serwis, ale przecież nie o to chodziło. Czy można coś zrobić? Oczywiście !

Rozwiązanie pierwsze (trywialne, by nie powiedzieć prymitywne) to wykorzystanie linii poleceń do przekazania argumentu mówiącego: "uruchom normalnie", np. jeżeli argument będzie brzmiał "noservice", to będziemy mieli:

 if ( m_cmmdLine.ToLower().Contains( "noservice" ) )
 {
   Application.Run( new ServerForm( ) );
 }
 else
 {
   ServiceBase.Run( new Service1() );
 }

Rozwiązanie drugie jest trochę bardziej eleganckie i zakłada sprawdzenie kontekstu w jakim aplikacja jest uruchamiana:

 if ( !Environment.UserInteractive )
  {
    ServiceBase.Run( new Service() );
    return;
  }
  else
    Application.Run( new ServerForm( ) );

Proste prawda?

Promuj

Artykuł: Certyfikacja OPC [PL]

W celu zapewnienia wysokiej jakości produktów wspierających technologię OPC, organizacja zajmująca się utrzymaniem standardu, czyli OPC Foundation, powołała program certyfikacyjny, któremu poddawane są te produkty. Chyba nie trzeba nikogo specjalnie przekonywać, że warto wybierać właśnie certyfikowane produkty. Każdy inżynier - integrator wie, jak ważne są aplikacje, które są przez niego wdrażane. Chyba nie warto ryzykować awarii lub niepowodzenia, tylko poprzez złą decyzję podjętą już na samym początku wdrożenia.

W tej krótkiej serii postów chciałbym pomóc w zrozumieniu na czym polega program certyfikacyjny prowadzony przez OPC Foundation, jak znaleźć certyfikowane produkty i jak zinterpretować to co jest na temat danego produktu podane.

Artykuł został podzielony na następujące części:

  1. Podstawy
  2. Testowanie interoperacyjności podczas warsztatów
  3. Niezależne laboratorium certyfikacyjne
  4. Jak znaleźć i sprawdzić, czy produkt jest certyfikowany?

Życzę dobrej lektury

poniedziałek, 19 października 2009

Jak wyciągnąć grafiki i muzykę z prezentacji programu PowerPoint ?[PL]

Niedawno ktoś mnie zapytał, czy jest możliwe z istniejącej prezentacji programu PowerPoint wydobycie grafik, czy muzyki. Odpowiedziałem wtedy, że muszę sprawdzić czy poszukać,bo przecież łatwo coś do PowerPoint'a wkleić lub wstawić, ale nie można kliknąć na dowolnym obiekcie i wybrać: "Zapisz jako.."

Jak więc wyciągnąć jakąś grafikę, czy muzykę z prezentacji? Okazuje się to dość proste, jeżeli używamy PowerPoint'a 2007 (lub przynajmniej zapiszemy prezentację w tym formacie (OpenXML)). Można bowiem wtedy w prosty sposób dostać się do wszystkich zasobów dokumentu. Jak? Można to zrobić w podobny sposób jak to opisywałem jakiś czas temu na przykładzie pliku programu Word (docx). Zamieniamy rozszerzenie prezentacji (nie jest istotne czy jest to pptx, czy ppsx) na rozszerzenie typu zip, następnie wypakowujemy archiwum. W tym momencie powinniśmy uzyskać strukturę plików i katalogów podobną do poniższej:

plik.zip
|   [Content_Types].xml
|  +---docProps
|       app.xml
|       core.xml
|       thumbnail.jpeg
|      +---ppt
|   |   presentation.xml
|   |   presProps.xml
|   |   tableStyles.xml
|   |   viewProps.xml
|   |  |   +---media
|   |       audio1.wav
|   |       image1.png
|   |       image10.png
|   |       image11.png
|   |       image12.png
|   |       image13.png
|   |       image14.jpeg
|   |       image15.png
|   |       image16.png
|   |       image17.png
|   |       image18.png
|   |       image19.png
|   |      |   +---slideLayouts
|   |   |   slideLayout1.xml
|   |   |   slideLayout10.xml
|   |   |   slideLayout11.xml
|   |   |   slideLayout2.xml
|   |   |   slideLayout3.xml
|   |   |   slideLayout4.xml
|   |   |   slideLayout5.xml
|   |   |   slideLayout6.xml
|   |   |   slideLayout7.xml
|   |   |   slideLayout8.xml
|   |   |   slideLayout9.xml
|   |   |  |   |   \---_rels
|   |           slideLayout1.xml.rels
|   |           slideLayout10.xml.rels
|   |           slideLayout11.xml.rels
|   |           slideLayout2.xml.rels
|   |           slideLayout3.xml.rels
|   |           slideLayout4.xml.rels
|   |           slideLayout5.xml.rels
|   |           slideLayout6.xml.rels
|   |           slideLayout7.xml.rels
|   |           slideLayout8.xml.rels
|   |           slideLayout9.xml.rels
|   |          |   +---slideMasters
|   |   |   slideMaster1.xml
|   |   |  |   |   \---_rels
|   |           slideMaster1.xml.rels
|   |          |   +---slides
|   |   |   slide1.xml
|   |   |   slide2.xml
|   |   |   slide3.xml
|   |   |   slide4.xml
|   |   |   slide5.xml
|   |   |  |   |   \---_rels
|   |           slide1.xml.rels
|   |           slide2.xml.rels
|   |           slide3.xml.rels
|   |           slide4.xml.rels
|   |           slide5.xml.rels
|   |          |   +---theme
|   |       theme1.xml
|   |      |   \---_rels
|           presentation.xml.rels
|          \---_rels
      .rels

Teraz, jeżeli zajrzymy do katalogu "media" znajdziemy tam wszystkie wykorzystane w prezentacji obrazy i dźwięki. Proste prawda??

Co więcej można również wykorzystać opisany tu sposób do podmiany dowolnego obrazka na inny. Zadziwiające, że PowerPoint sam w sobie nie posiada funkcjonalności podmień obrazek w prezentacji, a przecież gdy wykonamy skomplikowaną animację, w której potrzebujemy podmienić jeden z wykorzystanych obrazów okazuje się bardzo problematyczne. Jak więc to zrobić? W tym celu rozpakowujemy prezentację, odnajdujemy interesujący nas obraz, podmieniamy go na nowy (pod tą samą nazwą), ponownie pakujemy prezentację.

Na koniec pozostaje nam jeszcze pytanie-dylemat, czy opisane tu czynności możemy wykonać, czy prawo autorskie nam na to pozwala, ale to już temat na inne rozwiązania i pozostawię to waszemu sumieniu.

Zainteresowanych dalszymi informacjami na temat formatu w jakim zapisywane są pliki przy pomocy Office 2007, czyli OpenXML, zachęcam do przeczytania artykułu: "Open XML - tworzymy dokument Word (docx)".

Visual Studio 2010 Beta 2 nadchodzi [PL]

Czy już wszyscy zainteresowani przetestowali Visual Studio 2010 Beta (1)? Jeśli nie, to może o tamtej wersji zapomnieć i zwrócić uwagę na kolejną opublikowaną betę, która dzisiaj pojawiła się jako dostępna dla subskrybentów MSDN, a 21-go października będzie dostępna dla innych zainteresowanych. Więcej na ten temat znajdziemy w artykule: "Microsoft names Visual Studio 2010 dates". Wiadomo już też kiedy ma nastąpić oficjalna premiera nowego Visual Studio, a będzie to 22-gi marca 2010. Wiadomo też ile będzie kosztować (zainteresowanych odsyłam do wspomnianego artykułu).

Nowa wersja ma zawierać dodatkowe narzędzia wspierające Windows 7 i nadchodzący SharePoint 2010, drag-and-drop bindings w Silverlight i Windows Presentation Foundation, wykorzystanie Dynamic Language Runtime (DLR) do programowania w językach skryptowych i wsparcie dla programowania równoległego (tutaj też proponuję zajrzeć do artykułu). Ciekawe natomiast jak to będzie z wydajnością, na którą wielu do tej pory narzekało? .... pobierzemy, zainstalujemy, zobaczymy ...

Promuj

Update: linki do downloadu są podane tutaj: http://maciej-progtech.blogspot.com/2009/10/visual-studio-2010-beta-2-download-pl.html

wtorek, 13 października 2009

Certyfikowane produkty OPC [PL]

Dzisiaj w ramach kontynuacji tematu związanego z certyfikacją produktów wspierających technologię OPC chciałbym pokazać jak znaleźć certyfikowane produkty oraz jak sprawdzić, czy dany producent ma prawo do deklarowania zgodności jego produktu ze specyfikacją. Przykłady zawarte w tym tekście oprę o dobrze znany mi produkt CommServer - stworzony przez firmę CAS.

Sprawdzanie, czy dany produkt jest "certyfikowany" można zacząć od przejrzenia materiałów informacyjnych poświęconych temu produktowi, np. w przypadku serwera OPC - CommServer można odwiedzić poświęconą mu stronę: http://www.commsvr.com/Products/CommServer/CommServerProfessional.aspx, na której dobrze widoczne jest logo "OPC Selftested For Compliance":

Dodatkowo warto odwiedzić stronę organizacji OPC Foundation (http://www.opcfoundation.org) by sprawdzić, czy produkt ten jest tam zarejestrowany i jaki jest jego status w procesie certyfikacji. Dane dot. produktu, ich statusu w certyfikacji (w tym wyniki testów) dostępne są dla każdego (w tym anonimowego) użytkownika. Pokazany niżej rysunek prezentuje stronę poświęconą produktowi CommServer (http://www.opcfoundation.org/Products/ProductDetails.aspx?CM=1&RI=8491&CU=6) oraz informuje, że jest to produkt certyfikowany:

Na samym dole strony poświęconej produktowi można jeszcze znaleźć informacje na temat testów, które on przeszedł:

Z powyższej listy można wybrać test, którego sprawdzeniem jesteśmy zainteresowani i w ten sposób można sprawdzić wyniki testów wykonanych przy pomocy opisywanego wcześniej "Compliance Test Tool":

czy może wyniki testów wykonanych podczas wartszatów: "OPC Interoperability Workshop":

Szczególnie te wyniki mogą być interesujące, pozwalają bowiem sprawdzić czy dany produkt był już testowany z jakimś innym produktem z którym chcemy nawiązać komunikację.

Na koniec chciałbym jeszcze wspomnieć o certyfikacji na poziomie "Lab Certified". Aktualnie nie ma wielu produktów certyfikowanych na tym poziomie, dlatego  aby dodatkowo wyróżnić produkty, które ten poziom osiągnęły, OPC Foundation stworzyła dodatkową stronę (dostępną w menu Products -> Lab Certified Product) na której można znaleźć produkty "Lab Certified".



sobota, 10 października 2009

Certyfikacja produktów wspierających OPC i OPC UA (poziom Lab Certified) [PL]

W poprzednich postach opisałem już przygotowania do certyfikacji produktów wspierających technologię OPC oraz testowanie na tzw. "OPC Interoperability Worshop". Ostatnim (najwyższym) poziomem certyfikacyjny jest tzw. poziom "Lab Certified". Poziom ten wymaga przejścia testów w niezależnym laboratorium certyfikacyjnym. Aktualnie są dwa takie laboratorium jedno (a za razem pierwsze, które powstało) w Niemczech, a drugie USA.

W ramach takich testów sprawdzane są:

  • Podstawowe funkcje oprogramowania – wzajemna interoperacyjności i zgodność ze specyfikacją OPC.
  • Wydajność - czy jest zadowalająca i zgodna z deklarowaną przez producenta.
  • Stress Testing -  testy mające na celu sprawdzenie poprawności działania oprogramowania w warunkach granicznych obciążeń deklarowanych przez producenta.
  • Mechanizm recovery - czy oprogramowanie potrafi samodzielnie wyjść ze stanu awarii (np. utraty komunikacji z urządzeniem).
  • Testy długotrwałe mające na celu identyfikację trudniejszych problemów, pojawiających się po dłuższym okresie czasu, np. w skutek bardzo powolnego wycieku zasobów, jak i obniżenia wydajności w czasie.
  • Badanie użyteczności, czyli czy produkt jest łatwy w instalacji, konfiguracji, użytkowaniu i rozwiązywaniu problemów.
  • Środowisko - czy deklarowane przez producenta wymagania odnośnie środowiska (np. systemu operacyjnego) są zgodne z prawdą.
  • Ostatecznie po pozytywnym przejściu testów, produktowi przysługuje prawo do korzystania z loga: "Certified":

    piątek, 9 października 2009

    Certyfikacja produktów wspierających OPC i OPC UA (Interoperability Workshop ) [PL]

    Kolejnym krokiem certyfikacji jest odbycie testów podczas tzw. "OPC Interoperability Workshop" (OPC IOPW). Warsztaty te odbywają się trzy razy do roku: raz w Europie, raz w USA i raz w Japonii. Na warsztaty przyjeżdżają przedstawiciele różnych firm. Ci którzy chcą przetestować oprogramowanie typu serwer zobowiązani są go uruchomić i przygotować, by mogły się do niego podłączać aplikacje klienckie innych firm. Ci którzy testują oprogramowanie typu "klient" nawiązują komunikację z serwerami, a następnie wykonują serię testów, których wyniki są zapisywane na specjalnych stronach OPC Foundation. Zestaw testów pozwala na dość szczegółowe sprawdzenie wzajemnej kompatybilności, sprawdzane są takie elementy jak: sprawdzanie statusu, lokalizacja, tworzenie grup, powiadomienia o zamknięciu, przeglądanie elementów (tagów) i ich właściwości, operacje odczytu i zapisu (synchroniczne i asynchroniczne), zarządzanie stanem, mechanizm keep alive, deadband, filtrowanie, buforowanie, wsparcie dla różnych typów danych itp… Jak widać ilość testów do wykonania jest dość duża. Niektóre testy wymagają konsultacji pomiędzy obiema stronami (testującą i testowaną) w celu wyjaśnienia po której stronie tkwi problem. Niektóre problemy poprawiane są na bieżąco inne (bardzie poważne) mogą spowodować, że oprogramowanie testów nie przejdzie. W przypadku klientów OPC dodatkowo wymagany jest test przy pomocy (wspomnianego wcześniej) "OPC Analyser’a", który odbywa się w obecności przedstawiciela OPC Foundation, tak aby zapewnić wiarygodność testu.

    Ostatecznie po pozytywnym przejściu testów przy pomocy oprogramowania testującego (CTT lub OPC Analyser) oraz testów podczas OPC IOPW, produktowi przysługuje prawo do korzystania z loga: "Self-Tested":

    OPC Self-Tested Logo (color)SAMPLE109x133.JPG

    Na koniec tego post’a chciałbym pokazać zdjęcie z IOPW:


    czwartek, 8 października 2009

    Certyfikacja produktów wspierających OPC i OPC UA (postawy) [PL]

    Ostatnio na blogu była dłuższa chwila przerwy, dlaczego? Powód bardzo prozaiczny: więcej pracy. Można jednak zapytań, czym było to spowodowane? Otóż, tak jak pisałem jakiś czas temu w post'cie pt.: "Najbliższe wydarzenia związane z OPC", brałem niedawno udział w tzw. "OPC Interoperability Workshop", czyli w warsztatach podczas których testowane są produkty wspierające technologię OPC. Testy te mają za zadanie sprawdzić wzajemną współpracę produktów różnych firm i są częścią procedury certyfikacyjnej dla produktów OPC. Przejdę jednak do początku i spróbuję wyjaśnić na czym polega i czemu ma służyć ta certyfikacja.

    W celu zapewnienia wysokiej jakości produktów wspierających technologię OPC, organizacja zajmująca się utrzymaniem standardu, czyli OPC Foundation, powołała program certyfikacyjny, któremu poddawane są te produkty. W programie tym mogą brać wszyscy członkowie OPC Foundation, którzy mają swoje produkty wspierające OPC i których poziom członkostwa w organizacji to tzw. "Corporate Member". Certyfikacja to proces wieloetapowy, na który składają się różne elementy i który trochę różni się również w zależności od tego czy certyfikowany jest produkt wpierający poprzednią wersję OPC (coraz cześciej nazywaną OPC Classic), czy OPC Unified Architecture. W opisie tym skupię się przede wszystkim na certyfikacji związanej z technologii OPC Classic, ponieważ w tym przypadku zostały już opracowane odpowiednie specyfikacje związane z procedurą certyfikacyjną.

    Pierwszym krokiem jest oczywiście zapoznanie się z odpowiednimi specyfikacjami, opisującymi certyfikację i testowanie:

    • OPC Test Lab Part 1 - Concepts
    • OPC Test Lab Part 2 - Abstract Test Suite
    • OPC Test Lab Part 3 - Test Lab Realization
    • OPC Test Lab Part 4 - Certification Process
    • OPC Test Lab Part 5 - Quality Management Manual
    • OPC Test Lab Part 6 - COM DA Server Test Cases Specification
    • OPC Test Lab Part 7 - COM DA Client Test Cases Specification

    Drugim krokiem będą testy przy pomocy narzędzi wspomagających. W przypadku serwera OPC będzie to "Compliance Test Tool", w przypadku klienta OPC będzie to "OPC Analyser".

    "Compliance Test Tool" (CTT) jest zautomatyzowanym narzędziem, które wykonuje szereg testów  na wybranym serwerze OPC, a następnie analizuje wyniki. W przypadku pozytywnego zaliczenia wszystkich testów, CTT może wygenerować specjalny plik z rezultatami, który jest podpisany cyfrowo i może być przekazany do OPC Foundation jako potwierdzenie pomyślnego wykonania testów. Oprogramowanie CTT jest dostępne dla członków OPC Foundation i można pobrać je ze stron działu "Downloads" (http://www.opcfoundation.org/Downloads.aspx?CM=1&CN=KEY&CI=279&CU=7). Oprogramowanie te oprócz głównego modułu testującego potrzebuje jeszcze zainstalowania odpowiedniej wtyczki, która powiązana jest z konkretną specyfikacją dla której testy chcemy wykonać (np. DA 2.05, DA 3.00, AE, HDA).

    Compliance Test Tool

    "OPC Analyser " jest narzędziem do testowania klienta OPC. Jest uruchamiany jako narzędzie pośredniczące pomiędzy klientem, a serwerem OPC. Pozwala na prześledzenie całej komunikacji (wszystkich wywołań, przekazywanych danych itp..), tak by można było ocenić, czy przebiega ona poprawnie. Dodatkowo  ma wbudowany język skryptowy, który pozwala na generowanie błędów i w ten sposób można przetestować zachowanie klienta (jak reaguje na błędy, czy pokazuje je użytkownikowi, czy aplikacja nie kończy się w błędzie). Atutem programu jest duża baza gotowych skryptów, które wspomagają testowanie scenariuszy testów opisanych w specyfikacji testowania. Niestety testy nie przebiegają całkowicie w sposób automatyczny i konieczna jest interakcja z człowiekiem – testerem.  OPC Analyser (tak jak CTT)  jest dostępny dla członków OPC Foundation i można pobrać je ze stron działu "Downloads". Zainteresowani mogą obejrzeć prezentację poświęconą temu narzędziu poda adresem: http://opcf.org/Compliance-Certification/opcanalyzer-walkthrough.htm.

    OPC Analyser

    W następnej części opiszę kolejny krok certyfikacji.

    Posty powiązane / Related posts