Aktuální vydání

celé číslo

12

2018

Automatizační technika v energetice a teplárenství

celé číslo

Rozhraní Win32 API v průmyslové automatizaci

číslo 4/2002

Rozhraní Win32 API v průmyslové automatizaci

Programátorské rozhraní Win32 API používá velká většina programátorů z celého světa, a to jak v aplikacích pro kancelářské prostředí, tak i v průmyslu pro řízení výrobních procesů, simulace a měření nebo v lékařství. Obecná znalost tohoto rozhraní zajišťuje přenositelnost a univerzálnost zdrojových textů programů v široké komunitě vývojových pracovníků a zajišťuje tak ochranu investic vložených do vývoje softwaru. Aplikační programátorské rozhraní Win32 API je postupně portováno na stále více typů hardwaru, od zařízení s procesory ARM, MIPS, PPC nebo SuperH až ke „klasice“ řady IBM x86.

Úvod

Mnohý z programátorů ve Windows – a myslím tím alespoň Windows NT 3.5 a výše, tedy již s preemptivním multitaskingem – zažil zpočátku zklamání, když dal některé programové vlákno své brilantní aplikace spát: suspendoval běžící proces funkcí sleep na určitou dobu vyjádřenou v milisekundách a ono „přišlo k sobě“ až za dobu několikrát delší. Situace nemusí být o moc lepší ani v případě, kdy programové vlákno čeká na synchronizační událost, takže proces není zcela suspendován. I tehdy nemusí být „probuzení“ ze stavu wait okamžité. Důsledkem jsou ztráty dat kvůli zmeškané obsluze sériové komunikace nebo např. časově nepřesná obsluha hardwarové vstupně-výstupní karty. První „spásnou“ myšlenkou, jak se dostat z této nepříjemné situace, je použít hrubou sílu. Nemyslím hned kladivo (které také někdy přijde vývojáři programů na mysl), ale nákup silnějšího počítače. Naneštěstí, jak dále ukážu, tento nápad vzniklý problém nevyřeší. Problém zcela nevyřeší ani další myšlenka – zvyšovat prioritu procesu a prioritu konkrétního vlákna. Nejen že si většinou přivodíme jiné, sekundární potíže, ale stejně zcela nevyloučíme občasné časové selhání. Čím rychleji a přesněji budeme potřebovat reagovat, tím budou naše potíže větší a zmíněné postupy méně efektivní.

Může se zdát, že jsme dospěli k patové situaci, kdy nezbývá než hodit programátorskou „flintu do žita“ a uchýlit se k pomocnému řešení v podobě externího hardwaru (koprocesory, vstupně-výstupní desky s vlastní inteligencí). Výhody, které Win32 API přináší, nelze využít, protože Win32 API s Windows je pro řešení časově kritických aplikací nepoužitelné. Řešením by mohl být návrat zpět k operačnímu systému DOS anebo příklon k programátorskému rozhraní podle normy POSIX. Jenže konkurenční tlak na efektivnost a kvalitu nového vývoje v průmyslové automatizaci nutí vývojové pracovníky používat Win32 API. Uživatelé očekávají přínosy, které nabízejí Windows, ale současně mají požadavky na exekutivní prostředí s rysy operačního systému reálného času: vysoký výkon, spolehlivost a determinovanost chování.

Rozšíření MS Windows NT/2000/XP na operační systém reálného času

V současné době jsou dostupná programová vybavení pracující pod OS Windows, jež jsou vhodná např. pro integraci řídicích systémů na tovární úrovni (řízení technologických procesů, robotizace apod.). Jde ale o hotové produkty a jejich cena odpovídá velikosti vyřešeného problému – zavedení deterministických rysů do hotového produktu běžícího pod Windows. Zabývejme se dále zajímavějším tématem: jak dodat rysy operačního systému reálného času do samotných Windows tak, aby byly použitelné jako nástroj pro vývoj programů časově kritických aplikací.

Před několika lety byl na trh uveden produkt RTX (Real-Time eXtending; VentureCom) – doplněk, který dodá OS Windows chybějící rysy reálného času. Přidávané rozšíření RTX má svůj vlastní model programových vláken se svým plánovačem a implementuje své vlastní objekty synchronizace. Subsystém tvrdého reálného času, který doplňuje existující vlastnosti prostředí Windows NT/2000/XP, je schopen:

  • vynuceně kdekoliv přerušit chod operačního systému (mimo kritický kód obsluhy zpracovávaného přerušení NT),
  • odložit přerušení a obsluhu chyby „normálních“ Windows NT při vykonávání úkolů reálného času,
  • zpracovávat přerušení reálného času v průběhu vykonávání úkolů reálného času.

Pro rozšíření reálného času ve Windows je nutné dodržet preemptivní činnost ovladačů na vysoké úrovni aktivity obsluhy přerušení, a to po neomezenou dobu činnosti procesu reálného času. Z pohledu Windows NT je činnost RTSS (Real-Time SubSystem), který „krade“ své cykly, ekvivalentní s odebíráním a vracením z přerušení. Takovou událost lze v operačním systému zpravidla dobře řešit, a to bez ohledu na dobu jejího trvání. Potřebné funkce subsystému reálného času obsahuje blok IPC (InterProcess Communication Object) se subsystémem Win32 a s přístupem k funkcím jádra NT (řízení přerušení, vstupně-výstupní porty, obsluha úkonů vypnout nebo havárie) a – což je velmi důležité – s kompatibilitou s Win32, alespoň na úrovni zdrojového kódu.

Tab. 1. Paměťové požadavky jádra Realtime ETS Kernel

Komponenta Kód (ROM) Data (RAM)
základní jádro ETS (single task): min. (kB) max. (kB) min. (kB) max. (kB)
– ETS Monitor
– knihovny jádra ETS
16
32
32
50
12
5
24
10
celkově pro základ jádra ETS 48 82 17 34
podpora multithread 1) 28 16
podpora strukturovaných výjimek < 3 < 1
emulátor plovoucí čárky 23 < 1
lokální souborový systém 42 28
zavaděč DLL 10 4
podpora PC Card 32 16
podpora M-Systems Flash 20 4
TCP/IP 2):
– minimální zásobník (dvě rozhraní)
– typická konfigurace (deset rozhraní)
– serverový zásobník (50 rozhraní)

100
100
100

68
100
260
sériový řadič SLIP/PPP 20 6,5
Ethernet Driver (přibližně) 4 1

1) minimální velikost k vytvoření mnohovláknového jádra Realtime ETS je 103 kB
2) implicitní počet rozhraní (sockets) je deset

RTX přidává plánování úloh v reálném čase a zkracuje rozlišitelnou jednotku času z 5 ms na přibližně 20 µs. Nezávislý plánovač vláken v RTSS může být používán na jednoprocesorovém i na symetrickém víceprocesorovém stroji beze změny stávajícího jádra Windows NT a ovladačů zařízení. Řídicí program z RTX nemusí při startu počítače čekat, než se spustí operační systém, ale nabíhá za méně než 3 s od startu počítače. Rysy deterministického chování přinášejí i schopnost obsloužit systémovou výjimku – známou „blue screen“ – a umožňují řídicí aplikaci pracovat i v této situaci.

RTX lze použít např. v komunikačních zařízeních, systémech s požadavky na vysokou průchodnost, při testování a měření, v průmyslové automatizaci, při řízení pohybů v robotizaci, simulaci nebo ve vojenství a letectví. Nejnovější verze RTX 5.1.1 podporuje Windows XP, obsahuje nástroje na kalibraci použitého hardwaru pro reálný čas, nástroje ke sledování posloupnosti událostí reálného času, ale i rozšíření na komunikaci v reálném čase RT TCP/IP a datovou výměnu DCX.

Operační systémy reálného času s Win32 API pro vestavné aplikace

Podstatným faktorem volby operačního systému s Win32 API pro vestavné (embedded) aplikace bývá typ zvoleného procesoru. Jestliže je projekt založen na procesoru z řady IBM x86, je možné použít např. operační systémy Windows NT/XP Embedded, Windows CE nebo PharLap ETS. Používá-li realizovaný projekt jiný procesor, jako např. ARM nebo MIPS, je možné využít např. Windows CE. Operační systémy Windows NT/XP Embedded nejsou systémy reálného času a pro nabytí deterministického chování vyžadují nainstalovat doplněk RTX.

Obr. 1.

PharLap ETS je hardwarově nenáročný operační systém reálného času. Jde o produkt s dlouhou historií vývoje, kterému již od roku 1986 předcházel PharLap DOS Extender.

Jádro operačního systému PharLap ETS je deterministické, mnohovláknově implementované, včetně spolehlivé ochrany inverze priorit. Cyklicky obsluhovaný plánovač má proměnné časové sdílení. K dispozici je robustní síťové rozhraní TCP/IP, knihovny WinSock1.1 a Ethernet, knihovny pro sériové síťové ovladače, knihovna SNMP agent včetně síťových informací SNMP MIB-II, knihovna API WinInet FTP client a dynamicky připojované knihovny (DLL). Systém souborů kompatibilní s MS-DOS podporuje formáty FAT 12, FAT 16 a FAT 32 stejně jako širokou škálu typů disků, včetně IDE (oba formáty CHS i LBA), disketové mechaniky, PC Card ATA (obě verze: flash i rotační média), M-Systems Flash a RAM-disk. V uživatelském rozhraní (GUI) reálného času jsou ovladače videa, myši a klávesnice. Z dalších význačných předností lze jmenovat např. to, že v systému je knihovna plovoucí řádové čárky, knihovna pro HTML Server a knihovna HTML-on-the-fly, podpora knihoven C/C++ runtime a vybraných funkcí Win32 API, 32bitový linker-lokátor LinkLoc a interaktivní nástroj pro konfiguraci jádra Visual System Builder.

Cena runtime-licence závisí na tom, s jakými komponentami jádra je nabízen vyvinutý produkt. Výsledný programový kód může být spouštěn při použití systému souborů (file system) jako program exe, ale pro mnohé hardwarové platformy může být operační systém PharLap ETS spuštěn i bez systému BIOS napsáním vlastního spouštěcího kódu (pro převod procesoru do chráněného modu) a „slinkováním“ vyvíjené aplikace s jádrem pro spuštění od adresy 0x0000 jako soubor hex. V rámci dodávky PharLap ETS je k dispozici množství příkladů, které je možné využít jako startovací blok zdrojových textů pro většinu vyvíjených aplikací. Také zdrojové kódy k existujícím ovladačům zařízení lze snadno upravit pro vlastní použití.

PharLap ETS je jednoprocesní operační systém, takže má malou časovou režii pro přepínání kontextů úloh (programových vláken), protože potřebuje malé množství registrů a dalších informací, jež musí být ukládány a obnovovány v průběhu přepínání mezi úlohami. Jako vývojové prostředí používá PharLap ETS Microsoft Visual Studio, pro psaní zdrojových textů a pro kompilaci Visual C++. K linkování používá ETS svoji komponentu Linker/Locator, která se po nainstalování SDK stane spolu s ladicím programem Crossdebuger součástí MS Visual C++, takže projekty ETS využívají všechny nástroje Visual Studia automaticky, stejně jako při psaní aplikace pro Windows.

Aplikace se ladí v hostitelském počítači a cílový strojový kód je při ladění přenesen po mocí sériového nebo paralelního portu (brzy již i Ethernetem) do cílového počítače. Aplikace je laděna pomocí tzv. křížového ladění – cross debugging interaktivně v cílovém počítači, ale na obrazovce hostitelského počítače, tedy úplně stejně jako programy pro Windows. PharLap ETS umožňuje i přímé vkládání kódu assembleru do zdrojových textů programu (makra ASM_BEGIN, ASM_END). Po přechodu procesoru o chráněného módu dává k dispozici 4 GB přímo dostupného adresovatelného prostoru.

BootNIC – distribuované Win32 API

BootNIC je zatím jediná technologie pod systémem Windows NT/2000/XP nebo Windows Embedded NT/XP, která umožňuje zavádět operační sytém (boot) po síti z centra a současně poskytuje technické zabezpečení připojených bezdiskových klientských stanic. Tímto způsobem se distribuuje rozhraní Win32 API do klientských stanic, pro které lze produktivně vyvíjet programy s použitím Win32 API.

BootNIC přenáší běžné funkce lokálního pevného disku do obrazu souborů na síťovém serveru. Operační systém, data a programy jsou ukládány na pevném disku serveru, ale aplikace se zpracovávají na klientu nebo připojeném zařízení. Tato technologie dovoluje vykonávat bezpečnou a efektivní správu všech klientských obrazů nastavení, neboť má centralizované virtuální lokální disky a umožňuje řídit všechna klientská nastavení z jednoho místa. Přitom lze např. plně využívat interní sloty karet a sériové a paralelní porty.

Aby mohlo lokální zařízení používat technologie BootNIC, vyžaduje standardní PXE boot ROM nebo programové vybavení 3Com MBA. Stanice serveru vyžaduje licenci Windows NT/2000/XP Workstation nebo Server (Server není podmínkou) přiměřenou aplikačnímu softwaru na klientech. Správní programy usnadňují centralizovanou správu virtuálních řadičů se soubory obrazů klientů, mapování klientů a mohou také zřídit klientské obrazy souborů jako přenosné médium a provozovat na něm dávkové procesy.

Použití technologie BootNIC přináší tyto výhody:

  • Redukuje náklady na hardware. S technologií BootNIC hostuje na serveru celý obsah klientských disků – data i aplikace. Tím se eliminují nároky na lokální ukládací zařízení (pevné disky nebo paměti flash) klientských stanic a snižují se náklady na hardware. Klient přitom zajišťuje veškerá zpracování aplikací.

  • Zvyšuje spolehlivost. Selhání paměťových médií je běžnou příčinou nestability a časových prostojů systému. Síť založená na technologii BootNIC řeší tento problém nabídkou výkonného prostředí bez potřeby nadbytečných lokálních disků a paměťových médií flash.

  • Šetří čas. Centralizace operačního systému a softwaru spoří čas při správě, konfiguraci, sledování a aktualizaci kompletního distribuovaného prostředí z jediného serveru. Systémy přístupné díky BootNIC poskytují klientské prostředí nenáročné na údržbu.

  • Zlepšuje výkon. BootNIC překračuje omezení daná předchozími řešeními tím, že kombinuje uložení souborového systému na serveru se spouštěním aplikací na klientském počítači. To představuje další krok v komunikaci klient-server mezi distribuovanými inteligentně propojenými zařízeními.

  • Zdokonaluje zabezpečení. Protože klienty nemají možnost ukládat svá data lokálně, nemohou si osvojit trvalou identitu. Veškerý klientský software i data jsou umístěny na síťovém serveru, který je uzamčen a chráněn škálou zabezpečovacích opatření.

  • Skutečné „plug and play“. V případě, že klientský počítač nebo část vybavení selže, je do sítě jednoduše zaveden nový stroj a činnost je rychle obnovena. Díky nepřítomnosti lokálních pevných disků v podstatě neexistuje potřeba instalace a konfigurace stanice klientu.

Do poloviny letošního roku bude uvolněna nová verze BootNIC 2.0, která bude obsahovat mnohá vylepšení, např. profesionální nástroje SDK pro psaní klientských aplikací s využitím všech dostupných funkcí.

Ideální kandidáti pro použití BootNIC jsou výrobci pokladních systémů, průmyslové automatizace a telekomunikačních zařízení nebo herních zařízení, stejně tak jako společnosti, které potřebují snížit náklady na hardware, zvýšit bezpečnost, usnadnit ovladatelnost rozmístěných a propojených zařízení a zlepšit spolehlivost zrušením diskových mechanik a médií flash v klientských stanicích. Spouštění a provoz celých systémů z centrálního disku přináší úspory času i financí.

BootNIC zajistí zabezpečení vzdálených systémů IP i utajení informací prostřednictvím systému souborů NTFS, které jsou zvlášť důležité v armádě a ve finanční správě.

Závěr

Operační systém Windows NT společnosti Microsoft je v současné době nejpoužívanějším operačním systémem v oblasti průmyslové automatizace a velká většina zdrojových textů řídících programů je napsána s použitím programového rozhraní Win32 API. Skutečnost, že je Win32 API ve Windows NT možné doplnit rozšířením na reálný čas, že Windows CE nebo PharLap ETS jsou operační systémy reálného času s Win32 API a že Win32 API je distribuovatelné do stanic tenkých klientů, otevírá další možnosti použití a stabilizuje dosavadní investice vložené do vývoje programů.

Ing. Ladislav Reisner, dataPartner

dataPartner s. r. o.
Dukelská 64
370 01 České Budějovice
tel.: 038/610 43 11, 0724/25 77 99
fax: 038/610 43 19
e-mail: kontakt@datapartner.cz
http://www.datapartner.cz

Inzerce zpět