O společnostiProduktyObchodPodpora
Moravské přístroje
Hlavní stránka
O společnosti
Stažení software
Stažení dokumentů
Produkty
Control Web
Strojové vidění VisionLab
Kamery DataCam a osvětlovače DataLight
Průmyslový počítačový systém DataLab
Vědecké kamery
Speciální technika
Ceník
Aktivace produktů
Služby
Školení
Zakázková řešení
Podpora
Volba kamery a objektivu pro Strojové vidění
Control Web - Ukázkové aplikace

Hlavní stránkaProduktyPrůmyslový počítačový systém DataLabJednotky vstupů a výstupů DataLab

Jednotky systému DataLab a ActiveX
 Technologie ActiveX se vyvíjela postupně během vcelku dlouhého časového období. Její základy byly položeny již v 16bitových operačních systémech MS Windows; a to je skutečně dávná doba. Tehdejší motivace ke vzniku něčeho, co se následně přetavilo až do podoby moderního ActiveX, byla v zásadě shodná s dnešními základními požadavky na objektové komponentové technologie.

Technologie ActiveX

Předchůdci ActiveX měli za cíl vyřešit dva okruhy problémů:

  • jak zajistit, aby se uvnitř programového systému dokázaly domluvit jeho jednotlivé části bez toho, aby se tyto části přesně (binárně) znaly. Vzájemná přesná znalost částí systému totiž znamená, že celý systém musí být vyroben a sestaven jako jeden monolit (i když je třeba rozdělen do více programových souborů). Monolitičnost je překážka údržbě a dalšímu vývoji systému; monolitičnost je také překážka spolupráci programů různých výrobců.

  • jak zajistit, aby se určitý programový systém (třeba vývojový nástroj) dal snadno doplňovat a rozšiřovat o nové funkce, o nové vlastnosti a o funkční kousky programů naprosto cizích autorů. Jak sloučit programovou část kreslící grafy s programovou částí, která dokáže pomocí měřicí karty sledovat teplotu?

Ukázalo se, že oba okruhy problémů vedou na totéž: jak vymyslet a standardizovat spojovací vrstvu programových částí — dnes rozhraní (interface) — které jediné se následně bude pro spolupráci a výměnu dat programových částí používat. Je-li určen způsob, jak se rozhraní vytváří a používá, je snadné splnit oba motivační cíle:

  • programy různých výrobců se domluví, budou-li mít pro stejný účel totéž rozhraní,

  • doplňky a rozšíření lze použít, jsou-li známa jejich rozhraní poskytující určitou funkci.

Princip použití rozhraní je v dnešních informačních technologiích naprosto zásadní. Platí to beze zbytku rovněž pro hlavní objektovou technologii operačních systémů Windows, kterou je Component Object Model (COM). COM sám o sobě je samozřejmě pouze prázdný rámec, který dokáže poskytnout rozhraní objektů a který dokáže zaručit jejich propojitelnost. Bez dalšího určení, jak a čím bude tento rámec naplněn, bez určení pravidel a naplánování rozhraní, nelze COM rozumně používat (a stejně tak ani žádnou jinou komponentovou technologii).

Objektový model technologie ActiveX je COM. To je hlavní a základní vlastnost ActiveX, která prakticky kompletně vysvětluje a popisuje, co a jak lze pomocí ActiveX vyřešit. Současně je tím však opět řečeno, že bez stanovení pravidel a naplánování rozhraní je ActiveX stejně neurčité, jako samotný COM.

Než se však o některých existujících pravidlech a blocích rozhraní zmíníme, je nutné učinit odbočku k Internetu. Technologie ActiveX má totiž důležitou vlastnost, která přímo s rozhraními a objekty nesouvisí. Při skládání jednotlivých objektových komponent nemusejí být všechny přímo dostupné (tj. například na místním disku), mohou být uchovány na cizích místech. Takové cizí místo může být například u výrobce komponenty, u poskytovatele určité služby (například u banky v případě elektronického bankovnictví) nebo to může být jen prosté skladiště užitečných komponent. ActiveX řeší, pomocí Internetu, jak takovéto vzdálené komponenty zpřístupnit natolik, aby je bylo možné jako komponenty použít. Důležité současně je, že tato vlastnost technologie ActiveX vůbec nijak neomezuje a nezakazuje čistě místní použití komponent.

Zpět k objektovým rozhraním. Stanovením pravidel a naplánováním rozhraní (skupiny rozhraní) vždy vznikne řešení pro nějaký konkrétní účel. V zásadě i tento samotný účel může být různě konkrétní, takže vznikají řešení různě obecná, různě rozšiřitelná a různě upravitelná; vznikají různé objektové a komponentové standardy. Příklad několika z nich bude nejnázornější:

OPC (OLE for Process Control)

Standard a technologie pro unifikovaný přístup k řízení, měření a regulaci průmyslových procesů. Sada rozhraní rozeznává OPC server a OPC klient.

OLE (Object Linking and Embedding)

Standard a technologie pro zařazování dokumentů dovnitř jiných dokumentů (příkladem je tabulka MS Excel vložená dovnitř dokumentu MS Word); uvnitř kancelářského balíku MS Office je OLE zcela skryté a automatické.

ActiveX controls

Standard především pro komponenty uživatelského rozhraní — pomocí ActiveX controls se sestavují aplikace, dialogová okna apod. Každý ActiveX control musí být vidět (musí mít rozhraní pro uživatelské ovládání a pro operace související se vzhledem), musí mít rozhraní pro programové ovládání, a pokud to má pro konkrétní ActiveX control smysl, může mít rozhraní pro poskytování svých událostí.

ActiveX automation object

Standard pro COM komponenty, které nejsou na obrazovce vidět. Každý ActiveX automation prvek musí mít rozhraní pro programové ovládání, a pokud to má pro konkrétní ActiveX automation prvek smysl, může mít rozhraní pro poskytování svých událostí.

Je vcelku zřejmé, že ActiveX automation prvek je ActiveX control zbavený rozhraní a funkčnosti související s uživatelským rozhraním. Obě varianty technologie ActiveX se často směšují, rozdíl je totiž velmi malý. Řekne-li se ActiveX, může se jednat o obojí druh komponenty.

Všechny komponenty vystavěné v objektovém modelu COM jsou ve všech nástrojích, které této technologii rozumějí, dostupné. Teoreticky by tak mělo být možné v každém nástroji libovolně spojovat funkce jakýchkoli standardů. Prakticky to není vždy možné. Platí zpravidla, že nástroje určené k programování (Visual Basic) dokáží COM využít skutečně obecně, zatímco jiné nástroje využívající COM využívají jen některý objektový standard (třeba OPC, nebo ActiveX).

Přestože je variabilita komponentových standardů velmi obecná a bohatá, používá se v praxi pro rozšiřování funcí a spojování komponent témeř výhradně ActiveX. Pravděpodobně proto, že bloky rozhraní ActiveX a pravidla pro jejich používání nejsou v ActiveX nijak komplikovaná a že ActiveX lze velmi snadno rozšiřovat a používat v prostředí Internetu.

Ovladače jsou prvky ActiveX

Skutečnost, že technologie ActiveX je pro rozšiřování vlastností a komunikaci s okolními programy základní a témeř výhradní, využívají i ovladače jednotek průmyslového měřicího a řídicího systému DataLab. Všechny ovladače jednotek DataLab tak lze použít jedním ze třech způsobů:

v aplikaci Control Web

Zde se jedná o nativní způsob využití ovladače, kdy jsou data vstupů a výstupů dostupná jako kanály aplikace. Bez instalovaného systému Control Web nelze tímto způsobem ovladač použít.

v Univerzálním OPC Serveru

Tento způsob využití ovladače předpokládá instalaci produktu Univerzální OPC. Data vstupů a výstupů, případně komunikace jednotek jsou dostupné prostřednictvím OPC serveru jakémukoli OPC klientovi.

jako ActiveX automation prvek

Způsob využití, který nepředpokládá instalaci žádného produktu (samozřejmě kromě toho, v němž má být ovladač jako ActiveX prvek použit); způsob, kdy samotná knihovna ovladače nabízí všem COM klientům svá ActiveX rozhraní.

Pro široké použití a univerzální zapojení jednotek DataLab do všech cizích produktů je tento způsob využití ovladače nejjednoušší a automaticky nejpřímější.

Použije-li se ovladač jako ActiveX automation prvek, není kromě samotné knihovny ('DLL' soubor) ovladače třeba nic více dodávat. Co je však vždy třeba, je registrace ovladače jako ActiveX prvku. Má-li totiž být ActiveX prvek cizím programovým systémům dostupný, musí o něm vědět operační systém — technicky to nutné není, protože i jen s pomocí DLL lze COM využít; prakticky však všechny produkty používající ActiveX získavají data o komponentách jen z operačního systému.

Nejjednodušší způsob registrace je s využitím programu 'regsvr32.exe' příkazové řádky operačního systému — příkazový řádek operačního systému je program 'cmd.exe'; spustit tento program lze například příkazem Spustit... nabídky Start operačního systému. Příklad registrace ovladače DataLab IO/USB:

c:\Documents>cd \Directory\With\DLL

c:\Directory\With\DLL>regsvr32 dldrv.dll

c:\Directory\With\DLL>

Opačná operace, zrušení registrace, se provede velmi podobně. Pouze se volání programu regsvr32 rozšíří o volbu /u (uninstall):

c:\Documents>cd \Directory\With\DLL

c:\Directory\With\DLL>regsvr32 /u dldrv.dll

c:\Directory\With\DLL>

Je evidentní, že pro jiné ovladače systému DataLab (například DataLab IF/EIB) je třeba registrovat jinou DLL (například 'dleibdrv.dll').

Sama registrace, tak jak je zde popsána, nemusí být nutná v případě, kdy již ovladač jako ActiveX registroval někdo jiný (například instalátor ovladače). Tak či tak se případnou druhou registrací nic nepokazí a lze ji bez obav provádět i opakovaně.

Okamžikem registrace komponenty ji lze použít ve všech programech rozumějících ActiveX. Záleží pak na konkrétním programu a jeho zvyklostech (či dokonalosti), jak se k ActiveX prvku ovladačů propracují. Pravděpodobně však většina programů bude požadovat buď unikátní identifkátor ActiveX prvku (GUID), nebo symbolické jméno ActiveX prvku (ProgId). Například pro ovladač DataLab IF/EIB je tato dvojice GUID a jména následující: {5D9DAB98-D82D-4090-984A-C017768BE03C} a ControlWeb.DrvAxDlIfEib. Navíc většina nástrojů pro výběr komponenty nabízí nějaký vizuální nástroj (dialogové okno apod.), takže výběr správného ActiveX prvku skutečně není složitý.

Příklady použití

Ovladače systému Control Web lze jako ActiveX použít na mnoha místech. Všechna možná místa použití proto nelze dostatečně dobře podchytit. Protože je však ActiveX standard, budou i nepodchycená místa v principu podobná uvedeným příkladům.

Každé použití ovladače jako ActiveX předpokládá, že pro konkrétní jednotku systému DataLab bude existovat správně sestavený konfigurační (parametrický) soubor. Tento konfigurační soubor lze umístit kamkoli, protože při rozběhu ActiveX prvku může být cesta k němu uvedena kompletní.

Obsah konfiguračního souboru se liší ovladač od ovladače, a přestože soubory mají formálně stejný zápis (dělí se na sekce a klíče), je jejich zápis nutné vždy konzultovat s dokumentací ovladače (dokumentace je součástí každého ovladače). Jako základ konfiguračního souboru lze vždy vzít nějaký existující (například ukázkový) konfigurační soubor.

Ukázka kódu VBScript pro komunikaci s DataLab IO/USB uvnitř HTML dokumentu

<html>

<head>
  <title>DataLab IO ActiveX sample</title>
  <object
   id="DataLab"
   classid="clsid:45D4DCAF-DCE7-4484-9321-8E12C7B7E8DB">
</head>

<script language="VBScript">
sub Init()
  window.SetInterval "OnInterval", 10
  DataLab.LoadPARFile "SOMEWHERE\dl.par", ""
end sub

sub OnInterval()
  ReadAnalog()
end sub

sub ReadAnalog()
  DataLab.MarkInput 500
  DataLab.ReadInputs()
end sub

sub DataLab_OnInputRead( CS, Index, EC, Value )
  AnalogBar.style.width =
    CLng( Value ) / 32768 * 500
end sub

Init()

</script><body>

<p>Read analog value:
   <span
    id="AnalogBar"
    style="background: red;"></span></p>

</body></html>

Uvedený krátký HTML dokument pomocí jednotky DataLab IO/USB načítá údaj z analogového vstupu a zobrazuje jej jako proměnlivě široký červený pásek. V ukázce je v místě volání procedury DataLab.LoadPARFile použit konfigurační soubor 'SOMEWHERE\dl.par', který, samozřejmě, musí být nahrazen cestou se správným umístěním souboru (cestou na místním disku). V ukázce je dále použito číslo kanálu 500 (DataLab.MarkInput 500), toto číslo musí odpovídat definovanému číslu kanálu v konfiguračním souboru. Bude-li v tomto souboru vstupu přiřazeno jiné číslo, bude i volání MarkInput obsahovat jiné číslo.

Použití ActiveX v MSVisual Studio

ActiveX komponentu pro DataLab IO/USB je možné uvnitř vývojového prostředí stejně jako každou jinou komponentu. V zásadě je nutné učinit následující kroky:

  • zařadit komponentu do projektu,

  • definovat komponentu, případně včetně jejích událostí,

  • použít komponenty v programu.

Zařazení komponenty do projektu

Komponenta se zařadí po výběru ze záložky COM. Tato záložka zobrazuje COM komponenty známé operačnímu systému, přičemž se nemusí vždy jednat o ActiveX prvky — přestože jich velká většina je právě taková. Obrázek ukazuje nalezený ActiveX prvek ovladače DataLab IF/EIB již po té, co byl do projektu zařazen (tlačítkem Add).

Vybraný a přidaný ActiveX prvek ovladače DataLab IF/EIB

Definice objektu a připojení jeho událostí

Definice komponenty je odlišná podle jazyka a platformy, která se používá. Tedy například, takhle nějak může vypadat vytvoření objektu v C#:

...
  private dldrv_ax.dldrv_ax DataLab = null;
  ...
  DataLab = new dldrv_ax.dldrv_ax();
...

nebo ve jazyku Visual Basic:

...
  Private DataLab As dldrv_ax.dldrv_ax = null
  ...
  DataLab = New dldrv_ax.dldrv_ax()
...

Stejně tak se velmi může lišit spojení objektu s jeho událostmi — od jednoduchého zápisu události až po komplikovanější tvorbu spojujích objektů. To vše je nicméně dobře v každém vývojovém nástroji popsáno včetně průvodců a dokumentace.

Vlastní použití komponenty

Použití komponenty již je potom jednoduché, tak jak to je koneckonců uvedeno v ukázce skriptu v HTML dokumentu. Princip práce ActiveX prvku je podrobně popsán v dokumentaci, je však velmi jednoduchý, takže nic nebrání popsat jej stručně v následující sekci.

Princip práce ActiveX prvků

Operace čtení (neboli přenos dat z technologie či hardware do počítače — programu) i operace zápisu (opačný přenos dat z počítače — programu do technologie či hardware) vždy probíhají ve třech krocích:

  1. shromáždění a připravení seznamu dat, která se mají číst nebo zapsat,

  2. zahájení čtení nebo zápisu a průběh těchto operací,

  3. zpracování informací o dokončení čtení nebo zápisu.

Tyto tři kroky komunikace probíhají dávkově. Po shromáždění požadavků se zahájí komunikace a dokud tato probíhající komunikace neskončí není možné zahájit komunikaci novou. Neboli, dokud nejsou dokončeny (přečteny nebo zapsány) všechny komunikace v dávce, nelze zahájit dávku novou; dovnitř jedné dávky nelze vsunout jinou. Avšak — jednotlivá čtení i zápisy lze i uvnitř běžící dávky připravovat pro dávku novou.

Všechny jednotlivé měřené či zapisované body označeny číslem (indexem), pomocí kterých se identifikují. V principu je možné pro identifikaci použít jakákoli čísla, technicky jsou však všechna možná čísla omezena aktuálním nastavením, které je přesně zapsáno v konfiguračním souboru (soubor má obyčejně příponu 'PAR').

Procedury ActiveX komponenty lze rozdělit do třech skupin — procedury pro nastavení a řízení, procedury pro zahajování komunikace a procedury pro zpracování výsledků komunikace. Procedury pro nastavení a řízení se typicky použijí jednou, procedury pro zahajování a řízení komunikace pak násobně — tak, jak je třeba data zapisovat nebo číst.

Na závěr

Co říci na závěr? Snad jen tolik, že všechny dostupné informace, které jsou v tomto textu například jen zmíněny, je možné velmi pohodlně získat buď na CD s ovladači dodávaném s produkty DataLab, anebo, rovněž velmi pohodlně, na internetových stránkách společnosti Moravské přístroje — http://www.mii.cz.

 
 | O společnosti | Produkty | Podpora | Stažení software | Stažení dokumentů | 
Moravské přístroje, a.s., Masarykova 1148, Zlín-Malenovice, 76302