Promotic

PmaOpcDaClientGroup - Szczegółowy opis obiektu

Patrz: Obiekt PmaOpcDaClientGroup

Standardowy OPC serwer (oferujący dane) przyjmuje dane z jakiegoś źródła danych (np. sterownika PLC - w dalszym ciągu będzie nazywany DEVICE), zapisuje je do swej pamięci pomocniczej (w dalszym ciągu 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 a równocześnie 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ę wartości bieżące. 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 - Powiązanie danych z właściwością 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ę danych Integer uformuje na tablicę wartości Variant typu Integer). Potem jedną pozycję takiego wektora można odczytać np.
JavaScriptVBScriptWybierz oraz skopiuj do schowka

var arr = oOpcData.Item(x).Value;
var val = arr.GetItem(y);


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.:
JavaScriptVBScriptWybierz oraz skopiuj do schowka

oOpcData.Item(x).Value = Pm.TransformValue(arr, 41);
© MICROSYS, spol. s r.o.