Integrace programových komponent pro realizaci úlohy řízení technologických procesů
Současné možnosti informačních technologií vytvářejí předpoklady pro implementaci komplexních řídicích algoritmů. Implementace komplexních algoritmů, jako jsou např. algoritmy optimálního řízení, algoritmy adaptivních a učících se systémů, algoritmy umělé inteligence (pravidla inferečních mechanismů znalostních systémů, neuronových sítí, fuzzy systémů a jiných systémových aproximátorů), však může v praxi způsobovat značné potíže. Jedna z cest řešení implementačních problémů při realizaci takových pokročilých řídicích systémů je integrace specializovaných programových komponent.
Variabilita řešení libovolné úlohy inteligentního řízení je určena mírou otevřenosti takového řešení vzhledem k jednotlivým programovým komponentám, které jsou předmětem integrace. Schopnost integrace programových komponent je přímo úměrná míře otevřenosti. Otevřenost řešení úlohy řízení umožňuje použít speciální funkce jednotlivých programových komponent. Řešení úlohy integrace vyžaduje navrhnout a implementovat mechanismy:
- vložení modulů programových komponent,
- propojení jednotlivých modulů,
- konfigurace modulů programové komponenty.
Schéma takového řešení je na obr. 1. Uvedené řídicí funkce (management) jsou zde zabezpečeny aplikací SysCoM (System Control Manager).
Aplikace SysCoM zabezpečuje řídicí funkce (management) potřebných komponent pro řízení technologických procesů, zejména v těch případech, kdy požadované řídicí funkce nelze zabezpečit jednotlivými komponentami řídicích systémů, resp. jejich programovým vybavením. Místo aplikace SysCoM je uvedeno na obr. 1.
Aplikace SysCoM je koncipována jako otevřený systém. Systém může být funkčně doplňován pomocí dynamicky připojovaných objektových modulů. Dynamicky připojitelný objektový modul představuje knihovnu dynamicky připojovanou v době běhu vlastní aplikace (kontejneru). Vývoj a udržování velkých programových aplikací kladou velké nároky na specifikace vnitřních vazeb, spolupráci jednotlivých částí, stanovení rozhraní. Aplikace je od počátku navrhována jako obecně rozšiřitelná, jak z pohledu programátora, tak z pohledu uživatele.
Aplikace se skládá z několika vzájemně spolupracujících částí (obr. 2).
V každé DRO.DLL je z pohledu kontejneru SysCoM umístěn jen jeden objekt úlohy, dědičně odvozený od určitých speciálních tříd, které jsou definovány v jádru CORESCM.DLL. Přes implementace těchto speciálních tříd v podobě dynamických objektů je vedena veškerá komunikace mezi kontejnerem SysCoM a objektovými moduly DRO(n).DLL.
Kontejner SysCoM může obsahovat libovolné množství instancí kteréhokoliv funkčního bloku implementovaného v knihovně DRO.DLL. V těch případech, kdy se předpokládá vysoká funkční variabilita funkčních bloků (implementovaných v DRO. DLL), budou pro zabezpečení jejich funkcí použity vložené dynamicky linkované knihovny (EDLL. DLL), které budou zpravidla připojovány explicitně do daných funkčních bloků (dynamicky linkovaných knihoven DRO.DLL).
Kontejner
Kontejner aplikace je uložen ve spustitelném souboru SYSCOM.EXE. Základní funkcí kontejneru je poskytnout prostředí pro evidenci a uživatelskou konfiguraci jednotlivých funkčních bloků. Kontejner obsahuje objekty umožňující realizovat tyto funkce:
- evidenci nalezených knihoven,
- řízení posloupnosti operací připojování vybraných funkčních bloků (dynamicky linkovaných knihoven) do procesu aplikace,
- zobrazení uživatelského rozhraní,
- distribuci událostí uživatelského rozhraní aplikace do operačního systému.
Jádro aplikace
Jádro aplikace SysCoM je implementováno v dynamicky linkovaných knihovnách CORESCM. DLL a FCDE.DLL. Jádro vykonává veškeré základní funkce potřebné pro činnost jednotlivých funkčních bloků. Jde zejména o funkce:
- vyhledávání dynamicky linkovaných knihoven obsahujících implementace funkční bloků a jejich registraci,
- implementaci funkcí zpracování pracovních událostí (hints) vznikajících v připojených funkčních blocích,
- implementaci funkcí propojení jádra aplikace s kontejnerem,
- implementaci funkcí definujících základní vlastnosti funkčních bloků,
- implementaci funkcí vzájemného propojení připojených funkčních bloků,
- přenos dat mezi jednotlivými funkčními bloky,
- deterministické řízení časových sekvencí volání řídicích funkcí připojených funkčních bloků.
Dynamicky připojované objektové moduly
Dynamicky připojované objektové moduly DRO(n).DLL tvoří systém funkčních bloků. Systém funkčních bloků je dále členěn na třídy, které zabezpečují specializované funkce aplikace. Kontejner aplikace může obsahovat libovolný počet instancí prvku třídy funkčních bloků. Funkční bloky DRO(n) budou zabezpečovat:
přístup k technologickým údajům, jejichž zdroje, resp. jímky jsou programové komponenty spolupracující prostřednictvím všeobecně používaných aplikačních protokolů (DCOM, popř. OPC, TCP/IP, Profibus apod.),
podporu pro připojení k aplikačním serverům pracujícím uvnitř procesu aplikace SysCoM v podobě dynamicky linkovaných knihoven i k aplikačním serverům (miniserverům nebo úplným serverům) pracujícím mimo proces běžící v aplikaci SysCoM,
připojení na datové zdroje a datové jímky prostřednictvím aplikačního protokolu ODBC pod databázovými servery (Informix, Oracle, Sybase SQLServer, Microsoft SQLServer, IBM DB2 a Ingres),
obecné funkce pro kompozici funkcí řídicích systémů (např. PID regulátory, modely lineárních dynamických systémů – stavová diferenciální nebo diferenční rovnice, spojitá nebo diskrétní přenosová funkce, modely nelineárních dynamických systémů a modely číslicových systémů – kombinační a sekvenční funkce),
speciální funkce pro realizaci optimálních řídicích systémů (lineární a kvadratické programování, metody řešení nelineárních nerovností, lineární a nelineární metody nejmenších čtverců),
speciální funkce pro realizaci adaptivních a učících se řídicích systémů, popř. inteligentních řídicích systémů (fuzzyfikační a defuzzyfikační algoritmy, algoritmy inferenčních mechanismů, neuronové, popř. fuzzyneuronové systémové aproximátory),
vizualizační funkce.
Příkladem dynamicky připojovaného objektového modulu je funkční blok nazvaný OPC_TCP_IP, který je implementován v knihovně OPC_TCP_IP.DLL. Funkční blok využívá služby aplikačního serveru OPC driver integrovaného do systému SCADA.
Vzhledem k aplikaci SysCoM blok realizuje OPC_ TCP_ IP dvě základní funkce: konfiguraci OPC driveru a přenos dat mezi klientem SysCoM a OPC komponenty řídicího systému prostřednictvím OPC driveru. Úloha funkčního bloku OPC_TCP_IP v řídicím systému je zobrazena na obr. 3.
Blok OPC_TCP_IP se chová vzhledem k OPC driveru jako obecný klient DCOM1). Umožňuje realizovat připojení na jeden nebo více ovládacích komponent OPC (OPC driverů) nainstalovaných na příslušném uzlu. Blok OPC_TCP_IP umožňuje konfigurovat vzdálené ovládací komponenty OPC. Konfigurovat OPC driver znamená nastavit parametry jeho jednotlivých objektů (kanálů, zařízení a datových bloků).
Nastavení parametrů kanálu vyžaduje realizovat tyto funkce:
- lokalizaci serveru, ke kterému je driver připojen,
- identifikaci kanálu,
- popis kanálu.
Nastavení parametrů zařízení vyžaduje realizovat tyto funkce:
- identifikaci zařízení,
- popis zařízení,
- nastavení zdroje dat,
- nastavení parametrů přenosu dat.
Nastavení parametrů datových bloků vyžaduje realizovat tyto funkce:
- identifikaci datového bloku,
- popis datového bloku,
- nastavení typů dat,
- přiřazení vstupu a výstupu funkčního bloku,
- přenos dat mezi funkčními bloky aplikace SysCoM a OPC serverem.
Funkční blok obsahuje diagnostické funkce stavu jednotlivých objektů OPC driveru. Součástí funkčního bloku je přednastavení parametrů jednotlivých objektů OPC driveru.
Vložené objektové moduly
V některých případech implementace funkčních bloků je potřebné integrovat funkce programových komponent přímo do aplikace SysCoM. V takovém případě bude vytvořen vložený objektový modul EDLL(n) nezávislý na jádru aplikace SysCoM, který bude explicitně připojen do příslušného dynamicky připojovaného modulu DRO(n). Do vloženého objektového modulu budou implementovány pouze funkce určité programové komponenty (např. Matlab).
Příkladem je funkční blok MIMO, který je implementován v knihovně MIMO.DLL. Pro snadnější údržbu knihovny funkčního bloku jsou veškeré matematické operace funkčního bloku MIMO implementovány ve vložené, explicitně připojované knihovně MLS.DLL. Funkce této knihovny byly vytvořeny v programovém prostředí 4-GL jazyka Matlab. Prostřednictvím nástroje Matlab C/C++ Compiler byly skripty všech potřebných funkcí převedeny do jazyka C++. Takto vytvořené funkce byly doplněny o funkce tvořící rozhraní pro API programového prostředí Microsoft. Postup vývoje vložené knihovny MLS.DLL je uveden na obr. 4.
Velmi jednoduchým příkladem užití aplikace SysCoM jako integračního nástroje je řízení hladiny kapaliny v rezervoáru. Funkce regulátoru (struktura a parametry řídicího systému) byla analyzována a navržena prostřednictvím analytického nástroje Matlab (MathWorks Inc.). V prostředí Matlab byl též simulován objekt řízení (vlastní rezervoár a čerpadlo).
Podle schématu uvedeného na obr. 4 byla vytvořena vložená knihovna MLS.DLL a připojena do funkčního bloku MIMO, realizovaného opět dynamicky připojovanou knihovnou MIMO.DLL. Implementace řídicího systému využívá v knihovně MLS.DLL funkce blokové algebry (sériové a paralelní řazení bloků, vertikální a horizontální připojení, zpětnovazební spojení) a řešení stavových rovnic popisujících pohyb lineárních dynamických systémů
Funkce uživatelského rozhraní je realizována prostřednictvím vizualizačního nástroje iFix (Intellution, Inc.). Programová komponenta iFix je připojena pomocí aplikačního protokolu OPC. Připojení je řízeno aplikačním OPC serverem prostřednictvím OPC driveru. K implementaci konfiguračních a komunikačních funkcí aplikace SysCoM s OPC serverem je použit blok OPC_TCP_IP.
Ing. Jiří Marek, CSc.
UNIS, spol. s r. o.
Jundrovská 33
624 00 Brno
tel.: 541 515 111
fax: 541 210 316
e-mail: unis@unis.cz
http://www.unis.cz
1) Aplikační protokol OPC (Object Linked and Embedded for Process Control) je podmnožinou aplikačního protokolu DCOM (Distributed Component Object Model) podle specifikace firmy Microsoft.
|