Technologie ActiveX v programových aplikacích SCADA/HMI


Klen, Petr

Ing., PANTEK (CS), spol. s r. o., Hornopolní 12, Ostrava 1, 702 00,  pantek_sw@telecom.cz

1. Abstract

ActiveX technology is a powerful technology that can be use not only over the Internet as most users think. ActiveX is quite general and is taking its place in all software areas. ActiveX allows objects to utilize a common set of services to communicate and interface with other objects.

After short description of the anatomy of an ActiveX control this article discusses advantages of using ActiveX object in SCADA/HMI applications. The usage of ActiveX objects breaks down the limitations of programming tools in SCADA/HMI development environments and increases the functionality. ActiveX objects can ensures many different tasks such as calculations, data storing, graphical functions and other special functions that are specific to every application. There are several limitations that are specific to ActiveX objects that are used within SCADA/HMI applications. Their description is included as well.

Within the framework of the article a sample ActiveX object was developed to gain the information on ActiveX and its usage in SCADA/HMI application. The features and description of the ActiveX object interface was tested in Wonderware InTouch 7.0 environment. InTouch is a graphical SCADA/HMI application generator for industrial automation, process control and supervisory monitoring.

2. Úvod

Rozvoj nových technologií v oblasti programového vybavení proniká i do oblasti produktů pro řízení a vizualizaci technologických procesů. Mezi tyto poměrně nové technologie patří technologie ActiveX. Pojem ActiveX spojuje většina uživatelů s prostředím internetu, ale ve skutečnosti se jedná o technologii zcela obecnou. Ta umožňuje vytvářet programové komponenty se standardizovaným rozhraním, které lze následně vkládat a využívat v jiných programech.

V případě programových systémů pro tvorbu řídicích a vizualizačních aplikací (SCADA/HMI) může použitím ActiveX objektů dojít k významnému rozšíření jejich funkcí, které byly do nynějška ve většině případů omezeny možnostmi programovacích nástrojů těchto systémů. ActiveX objekty mohou zajišťovat například složitější výpočty, ukládání dat, speciální grafické funkce a mnohé další funkce specifické pro danou aplikaci. Programové produkty SCADA/HMI však musejí mít funkčnost ActiveX kontejnerů, jinak v nich ActiveX objekty nelze použít.

3. Technologie ActiveX

ActiveX je plně objektově orientovaná technologie založená na standardu COM (Component Object Model), který definuje zásady pro interakci mezi softwarovými komponentami v prostředí Microsoft Windows. COM poskytuje standardní prostředky, které umožňují objektům sdílet data a funkce nejen v rámci jedné aplikace, ale i mezi aplikacemi [Lewarne 1997]. ActiveX objekty jsou objekty založené na technologii COM a jsou určeny pro vkládání do jiných aplikací - tzv. ActiveX kontejnerů.

ActiveX umožňuje nejenom výměnu dat s jinými objekty a volání metod jiných objektů, ale také umožňuje zjistit, jaká data a jaké metody jiné objekty zobrazují. Tato vlastnost je označována jako OLE Automation nebo někdy též ActiveX Automation a je součástí technologie OLE 2.0. Oproti OLE 2.0 mají ActiveX objekty navíc schopnost informovat aplikaci kontejneru o tom, že nastala nějaká událost. To umožňuje lepší komunikaci mezi objektem a jeho kontejnerem [Lewarne 1997].

Jak již bylo naznačeno, rozhraní ActiveX definuje tři způsoby výměny informací mezi objektem a jeho kontejnerem. Jsou jimi vlastnosti, metody a události. Schematicky jsou zobrazeny na obr. 1.

Obr. 1. Základní pojmy technologie ActiveX.

ActiveX objekty mohou být vytvářeny v mnoha vývojových prostředích. Z těch nejznámějších jmenujme například Microsoft Visual C++, Borland C++, Borland Delphi nebo Microsoft Visual Basic 5.0.

4. ActiveX v produktech typu SCADA/HMI

Jak již bylo řečeno v úvodu, použitím ActiveX objektů lze dosáhnout významného rozšíření funkčnosti aplikace SCADA/HMI. Připomeňme, že nutnou podmínkou pro použití objektů ActiveX je, aby programové systémy, v nichž se aplikace SCADA/HMI vytvářejí, podporovaly jejich použití, tzn. měly funkčnost ActiveX kontejnerů. Ze současných programových systémů je to například systém Wonderware InTouch verze 7.0.

InTouch je součástí komplexního programového balíku Wonderware Factory Suite 2000 určeného pro oblast průmyslové automatizace. Právě tento programový systém byl použit autorem tohoto příspěvku pro získání informací o přínosu ActiveX technologie v programových aplikacích SCADA/HMI a právě na něj a na jeho vlastnosti bude odkazováno v následujícím textu.

InTouch umožňuje vkládat ActiveX objekty do okna aplikace jednoduše jako každý jiný standardní prvek. Poklepáním na něj se zobrazí standardní dialog se stránkami vlastností (property pages), seznamem všech vystavených vlastností a událostí ActiveX objektu. InTouch umožňuje svázat každou vystavenou vlastnost s nějakou svou vlastní proměnnou. Navíc je možno snadno pomocí šipek určit, kterým směrem bude probíhat výměna dat mezi objektem a systémem InTouch (viz obr. 2). Při nastavení obousměrné šipky mohou být data vyměňovány oběma směry, přičemž při inicializaci má přednost ActiveX objekt. Při vložení ActiveX objektu InTouch jako ActiveX kontejner testuje druh vystavených vlastností a nabídne pouze ty možnosti výměny dat, které jednotlivá vlastnost podporuje. To, které vlastnosti ActiveX objekt vystavuje a jakým způsobem, určuje samozřejmě jeho tvůrce.

Obr. 2. Přiřazení proměnných jednotlivým vlastnostem ActiveX objektu.

V programových skriptech systému InTouch, které řídí činnost aplikace, lze volat všechny metody, které ActiveX objekt vystavuje. Syntaxe volání je jednoduchá, například: #GrafXY.MoveVertical(2). GrafXY je příklad jména ActiveX objektu, MoveVertical je název vystavené metody, dvojka je parametr této metody. Názvy jednotlivých metod není nutné znát, InTouch sám nabídne jejich seznam.

Každé události kterou ActiveX objekt vyšle, může být navíc přiřazen nějaký skript, který na výskyt určité události bude reagovat patřičným způsobem. Vytvoření nebo přiřazení již existujícího ActiveX skriptu se provádí z karty Events.

Řada velkých producentů software dnes se svými produkty dodává řadu ActiveX objektů, které buď doplňují daný produkt nebo jsou určeny pro vložení do libovolného ActiveX kontejneru, kde mohou poskytovat informace z "mateřského" produktu nebo přenášet informace a provádět povely od kontejneru. Ne jinak je tomu u společnosti Microsoft nebo Wonderware (producent systému InTouch a celého Factory Suite) a dalších.

Často se ActiveX objekty používají pro realizaci složitějších výpočtových algoritmů, různých zobrazovacích funkcí (speciální grafy apod.), rozhraní s jinými programy nebo jiných speciálních funkcí (generování sestav, jejich tisk, dále realizace ovladačů atd.).

Z rodiny Wonderware Factory Suite 2000 je kromě systému InTouch ActiveX kontejnerem ještě systém InControl určený pro přímé řízení pomocí PC. K nim existuje několik ActiveX objektů realizujích například PID regulátor (pro InControl), jednoduchý editor elektronické pošty apod. Samozřejmě do nich mohou být vkládány ActiveX objekty od nezávislých producentů. Ostatní systémy, které tvoří Factory Suite 2000, vystavují své klientské objekty jako ActiveX objekty a jejich fukčnost tak může být rozšířena do jiných ActiveX kontejnerů.

5. Přínosy a omezení

Použití ActiveX objektů v aplikacích SCADA/HMI má několik významných výhod:

Systémy pro tvorbu aplikací SCADA/HMI však mají určitá specifika, která s sebou přinášejí některá omezení pro používání ActiveX objektů. Mezi ty nejdůležitější patří:

Zejména znalost uvedených omezení, která jsou na objekty ActiveX kladeny systémy SCADA/HMI, je velmi důležitá při programování takovýchto objektů.

6. Praktický příklad

Pro získání zkušeností s vývojem a používáním ActiveX objektů byl vyvinut jednoduchý objekt, na kterém byly ověřeny vlastnosti této technologie v souvislosti s jejím nasazením v programových aplikacích SCADA/HMI. Shrnutí zkušeností a poznatků je prezentováno v předchozí kapitole.

Jako vhodný objekt byl zvolen objekt realizující dvojrozměrný graf zobrazující závislost veličiny X na Y, který standardní prostředky programu InTouch neobsahují (viz obr. 3). Účel celého objektu a jednotlivé členy rozhraní objektu byly voleny tak, aby mohly být ověřeny všechny aspekty technologie ActiveX. Proto některé funkce celého objektu nejsou realizovány tím nejlogičtějším způsobem a pro plnou funkčnost a reálné použití by je bylo třeba upravit a doplnit. Svůj účel však objekt splnil.

Funkce objektu je následující. Při změně proměnné x nebo y se do grafu vykreslí nový bod o aktuálních souřadnicích [x, y]. Objektu lze nastavit, maximální počet bodů, které mají být zobrazeny na obrazovce. Při překročení tohoto počtu začne objekt nejstarší body z grafu umazávat. Kromě základního zobrazení grafu objekt umožňuje definovat ideální závislost y(x), která je lineární, a dále maximální povolenou odchylku od této lineární závislosti. Ideální závislost i limity pro maximální odchylku jsou v grafu vyznačeny. Pokud vzdálenost nového bodu od ideální závislosti je větší než maximální odchylka, objekt vyšle kontejneru událost OutOfInterval(x,y), kde parametry x a y udávají polohu přijatého bodu. Systém InTouch na tuto událost může reagovat například zobrazením varovného okna apod.

Obr. 3. Výřez části okna aplikace SCADA/HMI ukazující příklad použití objektu GrafXY.

Vytvořený objekt vystavuje metody pro manipulaci s grafem. Objekt obsahuje metody MoveHorizontal(deltaX) a MoveVertical(deltaY), které dovolují posun okna všemi směry. Pro změnu velikosti zobrazení slouží metody ZoomIn() a ZoomOut().

Pro nastavení inicializačních hodnot se s výhodou používají tzv. stránky vlastností (property page). Obecně takových stránek může mít ActiveX objekt více nebo i žádnou. Jednotlivé prvky na stránce jsou ve velké většině případů svázány s jednotlivými vystavenými vlastnostmi. Příklad vzhledu jednoduché stránky vlastností je na obr. 4. Inicializovat vystavené vlastnosti ActiveX objektu v jeho stránce vlastností má smysl jen tehdy, je-li k dané vlastnosti připojena proměnná kontejneru obousměrnou vazbou nebo vazbou z objektu do kontejneru nebo k vlastnosti není připojena žádná proměnná. V opačném případě je totiž inicializace provedena inicializační hodnotou proměnné kontejneru a k hodnotě nastavené ve stránce vlastností se nepřihlíží.

ActiveX objekt by měl být schopen zajistit, aby některá vlastnost byla v režimu "development" pro čtení i zápis, ale v režimu "runtime" pouze pro čtení. To je případ proměnných, které by v režimu "development" měly být inicializovány pomocí stránek vlastností, ale za běhu aplikace, by do nich kontejner neměl zapisovat. V našem objektu jsou to například vlastnosti Xmin, Xmax, Ymin, Ymax, které reprezentují rozměry os. Jejich hodnoty by měly být měněny prostřednictvím volání metod MoveHorizontal(deltaX), MoveVertical(deltaY), ZoomIn() či ZoomOut(), nikoliv přímo.

Některé vlastnosti ActiveX objektu jsou určeny pouze pro přenos dat od kontejneru do objektu. V našem případě jsou to vlastnosti Xvalue a Yvalue, které určují zobrazované body. Takový druh vlastností se při programování ActiveX objektu realizuje většinou pomocí vlastností typu notify.

Všechny vlastnosti, které mají měnit hodnoty připojených proměnnývh kontejneru, musí být při programování ActiveX objektu vytvořeny jako tzv. vázané (bindable). Jen tehdy ActiveX zajistí, že při změně vlastnosti v objektu o tom bude informován i jeho kontejner.

Obr. 4. Příklad vzhledu stránky vlastností.

Obecně platí, že směr vazby nastavené mezi ActiveX objektem a jeho kontejnerem (vyznačený pomocí šipek - viz obr. 2) nemusí určovat skutečný směr toku dat. Určuje pouze směr, kterým se data bude snažit přenášet ActiveX kontejner. To, jestli dojde ke změně vlastnosti i uvnitř ActiveX objektu, závisí samozřejmě na způsobu implementace vlastnosti v objektu.

7. Závěr

Technologie ActiveX rychle proniká do všech oblastí tvorby programového vybavení. Její použití je efektivní, přehledné, poměrně snadné a přináší možnost vícenásobného použití kódu. Ne jinak je tomu v oblasti systémů pro tvorbu aplikací typu SCADA/HMI. Výhody použití uvedené technologie právě v této oblasti se snažil ukázat tento příspěvek.

Jako největší přínos se jeví možnost moderním způsobem rozšířit stávající funkce a možnosti aplikací SCADA/HMI. Systémy pro tvorbu aplikací SCADA/HMI jsou nejčastěji koncipovány jako nástroje typu CASE, tedy s vlastním prostředím a programovacími nástroji. ActiveX objekty umožňují tuto sadu nástrojů rozšířit prakticky neomezeně.

Příspěvek rovněž uvádí některá omezení ActiveX objektů, způsobená určitými specifiky aplikací SCADA/HMI. Tyto informace mohou být užitečné pro programátory těchto objektů.

6. Literatura

LEWARNE, S. 1997. ActiveX Components and the FactorySuite. Irvine (USA) : Wonderware, 1997. 15 s.