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 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:
| Adres sieciowy | Adres URL OPC-UA serwera. |
| Numer zdalnego portu TCP/UDP | Port 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 Ethernet | TCP |
| Podłączyć dopiero przy pierwszej transmisji | NIE zaznaczać (obowiązkowe) |
| Zamknij połączenie po każdej transmisji | NIE 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. |
|---|
| Wybieranie ustawień za pomocą połączenia z serwerem | Po 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 serwera | Tu 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 prywatnego | Konfigurator 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 certyfikatu | Konfigurator 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 uwierzytelniania | Tu 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. |
| Nazwa | Nazwa klienta.
Konfigurator ten jest widoczny tylko jeżeli "Typ uwierzytelniania = (1=UserName)". |
| Hasło | Hasło danego klienta.
Konfigurator ten jest widoczny tylko jeżeli "Typ uwierzytelniania = (1=UserName)". |
|
| Dodatkowe parametry | Na 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.
| Typ odczytu czasu wartości zmiennej | Okreś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ącej | Maksymalna 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 pozycji | Maksymalna 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-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 pozycji | Maksymalna 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:
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:
Wiadomość ta może zostać wysłana do serwera OPC-UA na przykład:
.
- jeżeli połączenie OPC-UA musi zostać zrestartowane.