Viz: Objekt
PmaOpcDaClientGroup
Standardní
OPC server (poskytující data) příjímá data z nějakého zdroje dat (např. PLC automatu - dále budeme nazývat
DEVICE), ukládá je do své pomocné mezipaměti (dále budeme nazývat
CACHE) a poskytuje je pak připojeným klientům.
Pro optimalizaci rychlosti přenosu dat každý datový klient (v tom případě objekt
PmaOpcDaClientGroup) informuje
OPC server, jak chce specifikovaná data sdílet. Jedním z těchto optimalizačních parametrů lze pro danou skupinu dat nastavit, zda je skupina
aktivní (viz karta "
Parametry" a vlastnost
ActiveGroup). Pokud není skupina aktivní (a ani jiní klienti tato data nepožadují), pak
OPC server nemusí tato data aktualizovat ve své paměti
CACHE a může tedy jiná data aktualizovat častěji.
Jinou optimalizací je volba režimu příjmu dat.
OPC klient se může rozhodnout, zda bude data přijímat automaticky (a chce tedy, aby mu
OPC server zasílal hodnoty dat, ve kterých došlo ke změně) nebo chce data ovládat sám (číst a zapisovat na
OPC server na vyžádání).
Pokud
OPC klient chce data přijímat automaticky, pak musí pro skupinu povolit obnovování (viz karta "
Parametry" a vlastnost
Update). Pokud obnovování je povoleno, pak
OPC server automaticky klientovi posílá změněné hodnoty dat této skupiny. Toto obnovování lze dále ještě optimalizovat zadáním parametrů: minimální obnovovací
rychlost a
necitlivost (viz vlastnost
UpdateRate a vlastnost
Deadband). To znamená, že
OPC server nebude klientovi posílat data rychleji než je určeno v minimální obnovovací rychlosti a také nebude data posílat, pokud změna hodnoty je menší než necitlivost (myslí se změna od naposledy poslané hodnoty klientovi).
Pokud
OPC klient chce číst a zapisovat do
OPC serveru sám, pak je vhodné automatické
obnovování zakázat. Lze sice automatické obnovování nechat zapnuté a přitom zapisovat, ale mohlo by se při této kombinaci stát, že dřív než klient požadovanou hodnotu do
OPC serveru zapíše, tato hodnota se obnoví ze serveru. To znamená, že do
OPC serveru se zapíše hodnota, která tam již je.
Z podobných důvodů je také často vhodné - pokud chcete položky zároveň číst i do nich zapisovat - vytvořit raději dvě
OPC skupiny (dva objekty
PmaOpcDaClientGroup). Jedna skupina bude určena pro čtení a druhá pro zápis. Takto lze pak i lépe kontrolovat skutečné stavy hodnot.
Pro čtení a zápis hodnot do
OPC serveru slouží následující metody: (lze použít pouze pokud není zapnut automatický příjem nebo zápis)
Refresh - čtení všech hodnot skupiny dat z
OPC serveru
Read - čtení zadaného datového bloku ve skupině z
OPC serveru
Write - zápis zadaného datového bloku ve skupině do
OPC serveru
U metod
Refresh a
Read lze zadat, zda se mají hodnoty číst z
CACHE nebo z
DEVICE. Předpokládá se, že většina klientů bude číst data z
CACHE. Přímý přístup na data z
DEVICE je obecně pomalý a měl by být používán pouze pro diagnostické účely nebo pro kritické operace.
Metoda
Write píše data vždy do
DEVICE (tím je zaručeno že se data vždy zapíší například do PLC automatu a ne pouze do mezipaměti
OPC serveru).
U výše zmíněných 3 metod lze také zadat, zda operace má proběhnout
asynchronně nebo
synchronně.
Při volání metody v asynchronním režimu se přenos pouze nastartuje ale po volání této metody není zaručeno, že přenos fyzicky skončil. Tento režim je vhodný, pokud je nutno psát/číst do
DEVICE, protože přenos dat do
DEVICE je obecně pomalý (několik sekund) a v případě synchronního režimu by celou tuto dobu byly algoritmy aplikace PROMOTIC zastaveny.
Volání metod v synchronním režimu je vhodné pro čtení z
CACHE OPC serveru (umístěn na stejném počítači jako klient), protože čtení z
CACHE je velmi rychlé a po úspěšném ukončení této metody je jisté, že v datech jsou aktuální hodnoty. Psaní algoritmů pro synchronní režim je proto jednodušší.
Identifikátor #vars:
V objektu
PmaOpcDaClientGroup jsou pomocí identifikátoru
#vars zpřístupněny proměnné (typu
PmVar) definované v kartě "
Data". Tento identifikátor lze použít v metodě
Pm nebo v datové vazbě "
PP - Vlastnost Pma objektu". Například metoda
pMe.
Pm("opcdata/#vars/aaa") vrací proměnnou
aaa z objektu s názvem "
opcdata" který je typu
PmaOpcDaClientGroup.
Datové rozšíření:
Proměnné v objektu
PmaData mohou využít
ExtOpcDa a zaregistrovat se přímo do objektu
PmaOpcDaClientGroup. Pak v kartě "
PmaOpcDaClientGroup > Data" se nemusí definovat žádné proměnné.
Přenos vektoru dat:
Některé
OPC servery (pro
Simatic,
Schneider,
Bernecker&Reiner ...) mohou
přenášet v jedné datové položce vektor (Array) dat (obvykle s omezením že všechny položky vektoru musí mít stejný datový typ). Pokud je nutno přijímat/zasílat i taková data, pak se musí u proměnné nastavit konfigurátor "
Datový typ" na datový typ
Variant (toto je zakázáno pro
PmRtFree - Bezplatná runtime licence).
Při
příjmu dat obsahující položku typu
Array systém PROMOTIC upraví tuto položku do standardní podoby (např. pole
Integer hodnot převede na pole
Variant hodnot typu
Integer). Potom jednu položku tohoto pole lze číst např.
Při
vyslání dat obsahující položku typu
Array je nutno uložit do této položky vektor, který nemá standardní podobu.
Lze to provést např. metodou
Pm.TransformValue s parametrem
41, např.: