Patrz: Obiekt
PmaOpcDaClientGroup
Standardowy
OPC serwer (oferujący dane) przyjmuje dane z jakiegoś źródła danych (np. sterownika PLC - dalej będzie nazywany
DEVICE), zapisuje je do swej pamięci pomocniczej (dalej będzie nazywana
CACHE) i oferuje je podłączonym klientom.
W celu optymalizacji szybkości transmisji danych każdy klient danych (w tym przypadku obiekt
PmaOpcDaClientGroup) informuje
OPC serwer, w jaki sposób chce okreólone dane współdzielić. Jednym z tych parametrów optymalizacyjnych można dla danej grupy danych ustawić, czy grupa jest grupą
aktywną (patrz karta "
Parametry" oraz właściwość
ActiveGroup). Jeżeli grupa nie jest aktywna (a pozostali klienci nie wymagają tych danych), wtedy
OPC serwer nie musi takie dane aktualizować w swej pamięci
CACHE i może zatem inne dane aktualizować częściej.
Inną optymalizacją jest wybór trybu odbioru danych.
OPC klient może zdecydować, czy dane będzie odbierać automatycznie (i wymaga, żeby
OPC serwer wysyłał do niego wartości danych, u których doszło do zmiany) lub chce danymi władać sam (odczytywać i zapisywać do
OPC serwera według zapotrzebowania).
Jeżeli
OPC klient chce dane odbierać automatycznie, wtedy musi być dla grupy zezwolone odświeżanie (patrz karta "
Parametry" oraz właściwość
Update). Jeżeli odświeżanie jest zezwolone, wtedy
OPC serwer automatycznie przesyła klientowi zmienione wartości tej grupy. Takie odświeżanie można jeszcze zoptymalizować przez określenie parametrów: minimalna
szybkość odświeżania oraz
niewrażliwość (patrz właściwość
UpdateRate oraz właściwość
Deadband). To znaczy, że
OPC serwer nie będzie klientowi przesyłać danych szybciej, niż jest to określone w minimalnej szybkości odświeżania oraz również nie będzie wysyłać danych, jeżeli wartość zmieniła się mniejsze niż wartość niewrażliwości (zmiana odnosi się do ostatnim razem przesłanej wartości do klienta).
Jeżeli
OPC klient chce odczytywać i zapisywać do
OPC serwera sam, wtedy jest odpowiednie wyłączenie automatycznego
odświeżania. Można wprawdzie pozostawić automatyczne odświeżanie danych włączone a przy tym zapisywać, lecz w przypadku takiej kombinacji mogło by się wydarzyć, że zanim klient zapisze wymaganą wartość do
OPC serwera, wartość ta zostanie odświeżona z serwera. To znaczy, że do
OPC serwera może być zapisywana wartość, która już tam występuje.
Z podobnych powodów jest także często zalecane - jeżeli trzeba pozycje równocześnie odczytywać i zapisywać do nich - wytworzyć raczej dwie
OPC grupy (dwa obiekty
PmaOpcDaClientGroup). Jedna grupa będzie przeznaczona do odczytu a druga do zapisu. W ten sposób można także lepiej kontrolować rzeczywiste stany wartości.
Do odczytu i zapisu wartości do
OPC serwera służą następujące metody: (można zastosować tylko jeżeli nie jest włączony automatyczny odczyt lub zapis)
Refresh - odczyt wszystkich wartości grupy danych z
OPC serwera
Read - odczyt określonego bloku danych w grupie z
OPC serwera
Write - zapis okrślonego bloku danych w grupie do
OPC serwera
W metodach
Refresh oraz
Read można wprowadzić, czy wartości mają być odczytywane z
CACHE lub z
DEVICE. Zakłada się, że większość klientów będzie odczytywać dane z
CACHE. Bezpżośredni dostęp do danych z
DEVICE jest ogólnie wolny i powinien być stosowany tylko dla celów diagnostycznych lub do operacji krytycznych.
Metoda
Write zapisuje dane zawsze do
DEVICE (tym jest zapewnione, że dane są zawsze zapisane na przykład do sterownika PLC a nie tylko do pamięci pośredniej
OPC serwera).
W wyżej wymienionych 3 metod można również określić, czy dana operacja powinna być wykonyny
asynchronicznie lub
synchronicznie.
Przy wywołaniu metody w trybie asynchronicznym tryb transmisji tylko rozpocznie się lecz po wywołaniu tej metody nie jest zapewnione, że transmisja została fizycznie zakończona. Tryb ten jest odpowiedni, jeżeli jest konieczne zapis/odczyt danych do
DEVICE, ponieważ transmisja danych do
DEVICE jest ogólnie wolna (kilka sekund) a w przypadku synchronicznego zapisu algorytmy aplikacji PROMOTIC zostałyby zatrzymane po cały ten czas.
Wołanie metod w trybie synchronicznym jest odpowiednie do odczytu z
CACHE OPC serwera (ulokowanym na tym samym komputerze co klient), ponieważ odczyt z
CACHE jest bardzo szybki i po poprawnym wykonaniu tej metody jest pewne, że w danych znajdują się bieżące wartości. Wytwarzanie algorytmów dla trybu synchronicznego jest z tego powodu prostsze.
Identyfikator #vars:
W obiekcie
PmaOpcDaClientGroup są przy pomocy identyfikatora
#vars udostępnione zmienne (typu
PmVar) zdefiniowane w karcie "
Dane". Identyfikatore te można zastosować w metodzie
Pm, lub w powiązaniu danych "
PP - Właściwość Pma obiektu". Na przykład metoda
pMe.
Pm("opcdata/#vars/aaa") zwraca zmienną
aaa z obiektu o nazwie "
opcdata" który jest typu
PmaOpcDaClientGroup.
Rozszerzenie danych:
Zmienne w obiekcie
PmaData mogą wykorzystać
ExtOpcDa i zostać zarejestrowane bezpośrednio do obiektu
PmaOpcDaClientGroup. Wtedy w karcie "
PmaOpcDaClientGroup > Dane" nie jest konieczna definicja żadnych zmiennych.
Transmisja wektora danych:
Niektóre
OPC serwery (dla
Simatic,
Schneider,
Bernecker&Reiner ...) mogą
w jednej pozycji danych transmitować wektor (Array) danych (zazwyczaj z ograniczeniem, że wszystkie pozycje wektora muszą mieć ten sam typ danych). Jeżeli jest konieczne odbiór/wysłanie takich danych, wtedy w zmiennej jest konieczne ustawienie konfiguratora
Typ danych na typ danych
Variant (to jest zabronione dla
PmRtFree - Bezpłatna licencja runtime).
Podczas
odbioru danych zawierających pozycję typu
Array system PROMOTIC uformuje taką pozycję do standardowej postaci (tablicę wartości
Integer uformuje na tablicę wartości
Variant typu
Integer). Potem jedną pozycję takiego wektora można odczytać np.
Podczas
wysyłania danych zawierających pozycję typu
Array jest konieczne do takiej pozycji umieścić wektor, który nie posiada standardowej postaci.
To można wykonać np. przy pomocy metody
Pm.TransformValue z parametrem
41, np.: