Promotic

PmaOpcDaClientGroup - Podrobný popis objektu

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 bloku dat ve skupině z OPC serveru
Write - zápis zadaného bloku dat 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 jen 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 - Datová vazba na 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ř.
JavaScriptVBScriptVyber a zkopíruj do schránky

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


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ř.:
JavaScriptVBScriptVyber a zkopíruj do schránky

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