Promotic
Zalogowanie logon

PmOpcUaClient - Driver do komunikacji z serwerem OPC UA

Przed zastosowaniem tego drivera w aplikacji PROMOTIC należy obejżeć "PROMOTIC wideo kurs 4 - Drivery komunikacyjne".

Podstawowe właściwości drivera:
- Zastosowanie tego drivera wymaga zakup licencji PmOPC. Podczas wytwarzania aplikacji w trybie freeware PmFree lub z licencją deweloperską oraz podczas jej testowania w runtime element ten jest zawsze funkcjonalny.
- Komunikacja jest dla Ethernetu (aplikacja PROMOTIC jest klientem).
- Driver jest wbudowany do systemu PROMOTIC przy pomocy obiektu PmaComm.
Driver wspiera zastosowanie obiektów PmaCommGroup oraz PmaCommMsg. Dla zwykłych przypadków transmisji danych dogodniejszym jest zastosowanie obiektu PmaCommGroup.
Dla łatwego dodania tego drivera do aplikacji jest dogodne zastosować: Konfiguracje wstępne w grupie "OPC"
- Driver ten jest dostępny od wersji Pm9.0.9.


Driver wspiera następujące typy danych OpcUa:
- Boolean: Wartość logiczna dwustanowa (true lub false).
W aplikacji PROMOTIC jest reprezentowany przez typ danych Boolean.
Do odczytu i zapisu.
- SByte: Liczba całkowita (1 bajt) w zakresie: -128 do 127 włącznie.
W aplikacji PROMOTIC jest reprezentowany przez typ danych Integer.
Do odczytu i zapisu.
- Byte: Liczba całkowita (1 bajt) w zakresie: 0 do 255 włącznie.
W aplikacji PROMOTIC jest reprezentowany przez typ danych Byte.
Do odczytu i zapisu.
- Int16: Liczba całkowita (2 bajty) w zakresie: -32 768 do 32 767 włącznie.
W aplikacji PROMOTIC jest reprezentowany przez typ danych Integer.
Do odczytu i zapisu.
- UInt16: Liczba całkowita (2 bajty) w zakresie: 0 do 65 535 włącznie.
W aplikacji PROMOTIC jest reprezentowany przez typ danych Long.
Do odczytu i zapisu.
- Int32: Liczba całkowita (4 bajty) w zakresie: -2 147 483 648 do 2 147 483 647 włącznie.
W aplikacji PROMOTIC jest reprezentowany przez typ danych Long.
Do odczytu i zapisu.
- UInt32: Liczba całkowita (4 bajty) w zakresie: 0 do 4 294 967 295 włącznie.
W aplikacji PROMOTIC jest reprezentowany przez typ danych Double.
Do odczytu i zapisu.
- Int64: Liczba całkowita (8 bajty) w zakresie: -9 223 372 036 854 775 808 do 9 223 372 036 854 775 807 włącznie.
W aplikacji PROMOTIC jest reprezentowany przez typ danych Double.
Do odczytu i zapisu.
- UInt64: Liczba całkowita (8 bajty) w zakresie: 0 do 18 446 744 073 709 551 615 włącznie.
W aplikacji PROMOTIC jest reprezentowany przez typ danych Double.
Do odczytu i zapisu.
- Float: 4-bajtowa liczba rzeczywista w formacie IEEE-754 (32-bit).
W aplikacji PROMOTIC jest reprezentowany przez typ danych Single.
Do odczytu i zapisu.
- Double: 8-bajtowa liczba rzeczywista w formacie IEEE-754 (64-bit).
W aplikacji PROMOTIC jest reprezentowany przez typ danych Double.
Do odczytu i zapisu.
- String: Sekwencja znaków Unicode (łańcuch tekstowy).
W aplikacji PROMOTIC jest reprezentowany przez typ danych String.
Do odczytu i zapisu.
- DateTime: Data oraz czas.
W aplikacji PROMOTIC jest reprezentowany przez typ danych Date.
Do odczytu i zapisu.
OPC-UA transmituje czas zawsze w formie czasu UTC. Przy odbiorze system PROMOTIC przeliczy taki czas do czasu lokalnego i odwrotnie, przy wysłaniu lokalny czas przeliczy na czas UTC.
- ByteString: Tablica bajtów.
W aplikacji PROMOTIC jest reprezentowany przez typ danych Object typu PmBuffer.
Na razie tylko do odczytu.
- StatusCode: Liczbowy identyfikator błędu lub stanu powiązanego z wartością lub operacją.
W aplikacji PROMOTIC jest reprezentowany przez typ danych Double.
Do odczytu i zapisu.
- QualifiedName: Nazwa określona przez przestrzeń nazw.
W aplikacji PROMOTIC jest reprezentowany przez typ danych String.
Na razie tylko do odczytu.
- LocalizedText: Tekst z opcjonalnym identyfikatorem ustawień regionalnych.
W aplikacji PROMOTIC jest reprezentowany przez typ danych String.
Do odczytu i zapisu.
- Array: Tablica wartości.
W aplikacji PROMOTIC jest reprezentowany przez typ danych Array.
Na razie tylko do odczytu.
- ExtensionObject: Struktura zawierająca typ danych specyficzny dla aplikacji.
W aplikacji PROMOTIC jest reprezentowany przez typ danych Object typu PmMap.
Na razie tylko do odczytu.
Obiekt zawiera następujące właściwości:
TypeId - (Long) Identyfikator struktury.
Encoding - (Long) Liczba określająca zawartość obiektu PmBuffer we właściwości Body:
0 = obiekt jest pusty
.
1 = obiekt zawiera ByteString, tzn. łańcuch bajtów.
2 = obiekt zawiera XmlElement, tzn. tekst XML.
Body - (obiekt PmBuffer) Obiekt ten zawiera wartości struktury zakodowane według właściwości Encoding.


Zalecone wartości parametrów obiektu PmaComm:

Zalecane wartości dla pozycji Parametry Ethernet-klient:
Adres sieciowyAdres URL OPC-UA serwera.
Numer zdalnego portu TCP/UDPPort OPC-UA serwera (zazwyczaj wartość 4840).
 
Patrz: Wikipedia: Lista numerów portów TCP i UDP używanych przez protokoły do uruchamiania aplikacji sieciowych.
Typ transmisji EthernetTCP
Podłączyć dopiero przy pierwszej transmisjiNIE zaznaczać (obowiązkowe)
Zamknij połączenie po każdej transmisjiNIE zaznaczać (obowiązkowe). Po każdym nawiązaniu połączenia jest konieczne przenieść kilka wiadomości inicjalizacyjnych i gdyby połączenie było często zamykane to szybkość transmisji została by znacząco obniżona.
Opis i zalecane wartości dla pozycji Parametry protokołu:
Wybieranie ustawień za pomocą połączenia z serweremPo naciśnięciu tego przycisku zostanie otwarte okno, które komunikuje się z serwerem OpcUa. i pobiera z niego punkty końcowe (endpoints) oraz obsługiwane typy zabezpieczeń.
Każdy typ zabezpieczeń ma również numeryczną wartość Security Level (poziom bezpieczeństwa). Im większa wartość, tym wyższy poziom bezpieczeństwa.
 
Uzyskane informacje są wyświetlane w tym oknie i można wybrać wymagany typ zabezpieczeń. To ustawi konfiguratory:
- URL punktu końcowego serwera
- Tryb bezpieczeństwa (Security Mode)
- Polityka bezpieczeństwa (Security Policy)
- Typ uwierzytelniania

URL punktu końcowego serweraTu należy określić adres URL punktu końcowego OPC-UA serwera.
Stosowany jest jeżeli serwer umożliwia przekierowanie do innych serwerów, w innym przypadku wystarczy wprowadzić pusty łańcuch (spowoduje to automatyczne wybranie pierwszego punktu końcowego obsługiwanego przez serwer).
Wartość może być w formie "opc.tcp://URL:Port".
Zabezpieczenie (Security):
Tryb bezpieczeństwa (Security Mode)Określa tryb zabezpieczenia komunikacji między klientem OPC UA a serwerem.
Istnieją trzy tryby zabezpieczeń:
None - Ten tryb nie zapewnia żadnych zabezpieczeń.
Jest on używany głównie w celach testowania lub w odizolowanych sieciach, gdzie bezpieczeństwo nie jest priorytetem.
Sign - Wiadomości nie są szyfrowane, ale podpisywane cyfrowo przez nadawcę.
Zapewnia to uwierzytelnienie (sprawdzenie, czy wiadomość pochodzi od autoryzowanego nadawcy) i integralność (weryfikacja, że wiadomość nie została zmieniona podczas transmisji).
Dane są nadal widoczne i czytelne, ale nie można ich modyfikować bez wykrycia.
Sign&Encrypt - Jest to najbezpieczniejszy tryb.
Wiadomości są podpisywane cyfrowo (w celu uwierzytelnienia i integralności) i szyfrowane (w celu zapewnienia poufności).
To znaczy, że dane są nie tylko chronione przed nieautoryzowanymi zmianami, ale są również nieczytelne dla nikogo poza zamierzonym odbiorcą.
Polityka bezpieczeństwa (Security Policy)Konfigurator ten jest widoczny tylko jeżeli "Tryb bezpieczeństwa (Security Mode) = Sign" lub "Sign&Encrypt".
 
Określa algorytmy, które mają zostać zastosowane:
- Algorytmy szyfrowania: Jaki algorytm ma zostać zastosowany do szyfrowania danych (np. AES-128, AES-256).
- Algorytmy podpisywania: Jaki algorytm ma zostać zastosowany do podpisu cyfrowego (np. SHA-256, SHA-384).
- Algorytmy uwierzytelniania: Jaki algorytm ma zostać zastosowany do uwierzytelniania tożsamości klienta i serwera? (np. przy użyciu certyfikatów cyfrowych X.509).
 
Driver ten obsługuje następujące zasady bezpieczeństwa:
Auto - Driver sam wybiera politykę bezpieczeństwa porównując zasady obsługiwane przez serwer i driver.
Wybierana jest obsługiwana polityka, która ma najwyższy poziom bezpieczeństwa (Security Level).
Basic256Sha256 - Wymaga użycia certyfikatów X.509 do uwierzytelniania klienta i serwera.
Algorytm symetrycznego szyfrowania: AES-256 (z 256-bitowym kluczem).
Algorytm asymetrycznego szyfrowania: RSA-OAEP + SHA-1.
Algorytm podpisu: (RSA-PKCS15) + SHA-256.
Aes128_Sha256_RsaOaep - Wymaga użycia certyfikatów X.509 do uwierzytelniania klienta i serwera.
Algorytm symetrycznego szyfrowania: AES-128 (z 128-bitowym kluczem).
Algorytm asymetrycznego szyfrowania: RSA-OAEP.
Algorytm podpisu: SHA-256.
Aes256_Sha256_RsaPss - Jest to jeden z najwyższych i najnowszych standardów ochrony komunikacji.
Wymaga użycia certyfikatów X.509 do uwierzytelniania klienta i serwera.
Algorytm symetrycznego szyfrowania: AES-256 (z 256-bitowym kluczem).
Algorytm asymetrycznego szyfrowania: RSA-PSS.
Algorytm podpisu: SHA-256.
Basic256 - Przestarzałe. Definiuje starszy, ale wciąż używany standard ochrony komunikacji. Ta polityka jest uważana za prekursora bardziej nowoczesnych i bezpiecznych polityk, takich jak Basic256Sha256.
Wymaga użycia certyfikatów X.509 do uwierzytelniania klienta i serwera.
Algorytm symetrycznego szyfrowania: AES-256 (z 256-bitowym kluczem).
Algorytm asymetrycznego szyfrowania: RSA-PKCS15 + SHA-1.
Algorytm podpisu: SHA-1.
Basic128Rsa15 - Przestarzałe. Jest to najstarsza i najsłabsza polityka bezpieczeństwa w ramach specyfikacji OPC UA.
Wymaga użycia certyfikatów X.509 do uwierzytelniania klienta i serwera.
Algorytm symetrycznego szyfrowania: AES-128 (z 128-bitowym kluczem).
Algorytm asymetrycznego szyfrowania: RSA-PKCS15 + SHA-1.
Algorytm podpisu: SHA-1.
Ścieżka do lokalnego klucza prywatnegoKonfigurator ten jest widoczny tylko jeżeli "Tryb bezpieczeństwa (Security Mode) = Sign" lub "Sign&Encrypt".
 
Jest to ścieżka do pliku, który zawiera lokalny prywatny klucz (plik z rozszerzeniem .der lub .pem).
Ścieżka do lokalnego certyfikatuKonfigurator ten jest widoczny tylko jeżeli "Tryb bezpieczeństwa (Security Mode) = Sign" lub "Sign&Encrypt".
 
Jest to ścieżka do pliku, który zawiera lokalny certifikat (plik z rozszerzeniem .der lub .pem).
Utwórz nowy klucz prywatny / certyfikat...Konfigurator ten jest widoczny tylko jeżeli "Tryb bezpieczeństwa (Security Mode) = Sign" lub "Sign&Encrypt".
 
Za pomocą tego przycisku można otworzyć okno, w którym można zdefiniować parametry, a następnie utworzyć dwa pliki: klucz prywatny oraz certyfikat z podpisem własnym.
Te nowe pliki można następnie wprowadzić w konfiguratorze "Ścieżka do lokalnego klucza prywatnego" oraz "Ścieżka do lokalnego certyfikatu".
Tak utworzone pliki służą głównie w celach testowania.
 
W środowisku produkcyjnym zdecydowanie zaleca się, aby certyfikat był podpisany przez jednostkę certyfikacji (CA), zarówno wewnętrzny, jak i publiczny.
Do celów testowania i rozwoju wystarczy jednak certyfikat podpisany samodzielnie.
 
Zezwolenie na certyfikat klienta (zwykle plik z rozszerzeniem .der lub .pem) po stronie serwera OPC UA odbywa się w jego oprogramowaniu konfiguracyjnym.
Każdy producent ma swoją specyficzną procedurę, ale zasada jest zawsze taka sama: certyfikat należy załadować do "Trusted" (zaufanego) magazynu certyfikatów na serwerze.
Uwierzytelnianie (Authentication):
Typ uwierzytelnianiaTu określa się typ uwierzytelniania klienta.
(Uwierzytelnianie typu "2=Certificate" nie jest na razie wspierana driverem.)
0=Anonymous - Anonimowa uwierzytelnianie, tzn. klient nie korzysta z uwierzytelniania.
1=UserName - Uwierzytelnianie przy pomocy nazwy i hasła.
NazwaNazwa klienta.
Konfigurator ten jest widoczny tylko jeżeli "Typ uwierzytelniania = (1=UserName)".
HasłoHasło danego klienta.
Konfigurator ten jest widoczny tylko jeżeli "Typ uwierzytelniania = (1=UserName)".

Dodatkowe parametryNa razie pozostaw pustą wartość.

Opis komunikacji przy pomocy obiektu PmaCommGroup

Dla niniejszego drivera komunikacyjnego można zastosować obiekty PmaCommGroup.
Zmiennych w obiekcie PmaCommGroup (lub jeszcze lepiej zmiennych w obiekcie PmaData z rozszerzeniem danych ExtComm) może być dowolna ilości, mogą być dowolnego typu danych i w dowolnej kolejności. Driver sam w zoptymalizowany sposób odczyta dane z urządzenia przy pomocy wewnętrznie wytworzonych wiadomości komunikacyjnych.
Odczytywane są wszystkie zmienne (jeżeli konfigurator "Odświeżanie danych zezwolone" jest zaznaczony). Przy zapisie do zmiennej do urządzenia jest odesłana tylko zapisywana zmienna (jeżeli konfigurator "Automatycznie przesyłaj przy zapisie do pozycji" jest zaznaczony).

Odświeżanie wartości zmiennych zarejestrowanych w obiekcie PmaCommGroup:
Driver podczas swojej inicjalizacji zarejestruje wszystkie zmienne do OPC serwera (wiadomość systemowa OPC CreateMonitoredItems) oraz informuje serwer o wymaganym czsie odpowiedzi według ustawionego konfiguratora "Szybkość odświeżania komunikacji [ms]".
Następnie driver zażąda o wysłanie wiadomości podczas zmiany tych zmiennych (wiadomość systemowa OPC PublishRequest). Podczas zmieny zmiennej OPC serwer (lub jeżeli nie nastąpi żadna zmiana, wtedy do czasu określonego w konfiguratorze "Szybkość odświeżania komunikacji [ms]") wyśle wiadomość zawierającą informacje o wszystkich zmienionych zmiennych (wiadomość systemowe OPC PublishResponse).
Driver po otrzymaniu tej wiadomości odrazu ponownie wyśle wiadomość PublishRequest. W ten sposób są uaktualniane wartości zmiennych obiektu PmaCommGroup o określonym periodzie Szybkość odświeżania komunikacji [ms].

Opis konfiguratora "ItemId":
ItemId jest identyfikator tekstowy pozycji, który służy do adresacji pozycji w urządzeniu. Z konfiguratora ItemId driver stwierdzi, w jaki sposób ma zostać wartość pozycji wczytana lub wysłana.
Tekst można albo wpisać ręcznie, lub ułożyć w oknie, które zostanie otwarte przy pomocy przycisku wprawo od konfiguratora.
Do wprowadzenia można zastosować Makro wyrażenie (wartość jest obliczana po uruchomieniu aplikacji).
Identyfikator ItemId może mieć wygląd na przykład "ns2,str,xxxx", gdzie:
- ns2: Określa, do którego obszaru (ns=namespace) OPC-UA serwera zmienna należy (0, 1, 2, ...).
- str: Określa typ identyfikatora zmiennej.
str = Identyfikator zmiennej jest łańcuch tekstowy.
nmb = Identyfikator zmiennej jest liczba.
- xxxx: Identyfikator zmiennej. Tekst ten jest zależny tylko od OPC-UA serwera.


Opis konfiguratora "PmaCommGroup > Parametry > Parametry specjalne":
Typ odczytu czasu wartości zmiennejOkreśla, czy wraz z wartością będzie z OPC-UA serwera odczytywany również czas danej wartości.
Jeżeli czas będzie odczytywany, wtedy zostanie on zapisany do właściwości PmVar.TimeSource.
No - Czas wartości nie będzie odczytywany.
Source - Będzie odczytywany czas źródła, tzn. czas, który OPC-UA serwer odczytał z urządzenia, z którym komunikuje (jeżeli serwer potrafi z urządzenia taki czas odczytać).
Server - Będzie odczytywany czas odczytu wartości OPC-UA serwerem.
Maksymalna liczba zmiennych w jednej wiadomości rejestrującejMaksymalna liczba zmiennych, które zostaną zarejestrowane do serwera OPC w jednej wiadomości (wiadomość OPC typu CreateMonitoredItems).
Ten konfigurator jest wstępnie ustawiony jako wyłączony (a więc wszystkie zmienne są rejestrowane jednocześnie przy pomocy jednej wiadomości).
 
Ten konfigurator zwykle nie musi być włączony. Włączenie tej funkcji jest konieczne na przykład wtedy, gdy OPC serwer nie pozwala na rejestrację wielu zmiennych w jednej wiadomości (w praktyce napotkaliśmy na ograniczenie liczby 990 zmiennych). Jeżeli jest konieczne ustawienie konkretnej liczby, wtedy najlepiej jest ustawić ją na jak najwyższym poziomie.

Opis komunikacji przy pomocy obiektu PmaCommMsg:

Lista oraz opis wiadomości komunikacyjnych:
- 1 = ReadData:
Parametry wiadomości:
Maksymalna liczba odczytanych pozycjiMaksymalna liczba elementów, które mogą zostać odebrane jednocześnie w odpowiedzi tej wiadomości.
Wymagana liczba odczytanych pozycji jest następnie określana w zmiennej VarCountRequest w karcie "Dane-odbiór".
W karcie "Dane-wysłanie" znajdują się zmienne:
VarCountRequest: (Long) Wymagana liczba odczytanych pozycji.
Wartość musi być mniejsza lub równa wartości w konfiguratorze "Maksymalna liczba odczytanych pozycji".
ItemId1: (String) Identyfikator pierwszego odczytywanego elementu.
Identyfikator jest taki sam jak w obiekcie PmaCommGroup, patrz Opis konfiguratora "ItemId".
Za tymi zmiennymi znajdują się dodatkowe zmienne ItemId2, ItemId3 ... Ich liczba jest określona wartością w konfiguratorze "Maksymalna liczba odczytanych pozycji".
W karcie "Dane-odbiór" znajdujuą się zmienne:
VarCountResponse: (Long) Rzeczywista liczba przeczytanych pozycji.
Value1: (Variant) Pierwsza odczytana wartość.
Za tymi zmiennymi znajdują się dodatkowe zmienne Value2, Value3 ... Ich liczba jest określona wartością w konfiguratorze "Maksymalna liczba odczytanych pozycji".

- 2 = WriteData:
Parametry wiadomości:
Maksymalna liczba zapisywanych pozycjiMaksymalna liczba elementów, które w tej wiadomości mogą być wysłane jednocześnie.
Wymagana liczba zapisywanych pozycji jest następnie określana w zmiennej VarCount w karcie "Dane-wysłanie".
W karcie "Dane-wysłanie" znajdują się zmienne:
VarCount: (Long) Wymagana liczba zapisywanych pozycji.
Wartość musi być mniejsza lub równa wartości w konfiguratorze "Maksymalna liczba zapisywanych pozycji".
ItemId1: (String) Identyfikator pierwszego zapisywanego elementu.
Identyfikator jest taki sam jak w obiekcie PmaCommGroup, patrz Opis konfiguratora "ItemId".
Value1: (Variant) Pierwsza wysyłana wartość.
Za tymi zmiennymi znajdują się dodatkowe zmienne ItemId2, Value2, ItemId3, Value3 ... Ich liczba jest określona wartością w konfiguratorze "Maksymalna liczba zapisywanych pozycji".
W karcie "Dane-odbiór" znajdujuą się zmienne:
StatusCode: (Long) Wartość OPC-UA wskazująca status transmisji.
Wartość 0 oznacza, że wszystko jest w porządku.
Wartości niezerowe oznaczają błąd (patrz Standard OPC-UA, część 4, rozdział 7.34-StatusCode).

- 3 = Send CloseSecureChannel:
W karcie "Dane-wysłanie" nie ma żadnej zmiennej.
W karcie "Dane-odbiór" nie ma żadnej zmiennej.

Wiadomość ta może zostać wysłana do serwera OPC-UA na przykład:
- kiedy aplikacja jest zatrzymana (metodę PmaCommMsg.Run można wywołać w zdarzeniu PmaRoot.onAppStopBegin) lub
.
- jeżeli połączenie OPC-UA musi zostać zrestartowane.

Historia:
Pm9.00.34: Usunięty błąd: Korekty błędów podczas szyfrowania hasła.
Pm9.00.33: Usprawniono podpisywanie i szyfrowanie
Pm9.00.32:
- Usprawniono komunikację przy pomocy obiektu PmaCommMsg dla wiadomości typu 1 = ReadData a 2 = WriteData.
- Usprawniono zapis typów danych: String, LocalizedText oraz StatusCode.
Pm9.00.29:
- Wprowadzono odbiór typu danych ExtensionObject, tzn. odbiór struktury danych.
- Usunięty błąd: Odczyt i zapis wartości typu String nie działał poprawnie, jeżeli wartość zawierała znaki diakrytyczne.
Pm9.00.23: Usunięty błąd: Dle tego drivera została wprowadzona metoda PmaComm.OpenPort oraz właściwość PmaCommGroup.UpdateEnabled.
Pm9.00.21: Korekta: Jeżeli w obiekcie PmaCommGroup było dużo zmiennych, wtedy nie działał odczyt danych.
Nowy konfigurator "PmaCommGroup > Parametry > Parametry specjalne > Maksymalna liczba zmiennych w jednej wiadomości rejestrującej".
Pm9.00.19: Usunięty błąd: Jeżeli nie udało się połączyć, wtedy powstawały nowe wymogi na wytworzenie połączenia a stare wymogi nie zostały zakończone.
Pm9.00.16:
- Włączona opcja autoryzacji nazwy użytkownika typu UserName (tzn. należy wprowadzić nazwę i hasło).
- Usunięty błąd: Po określonym czasie (np. po 5 minutach) następował restart tego drivera.
Pm9.00.15: Usunięty błąd: Nie działał odczyt wiadomości komunikacyjnej rozdzielonej do większej liczby podwiadomości.
Pm9.00.13: Usunięty błąd: Przy zapisie do zmiennych w obiekcie PmaCommGroup czasami została zakończona komunikacja.
Pm9.00.09: Wytworzono
© MICROSYS, spol. s r.o.Update cookies preferences