# Jak napojit aplikaci na reálný svět

K uschování i předávání dat v systému Control Web slouží proměnné a kanály, společně nazývané datové elementy. Datový element je vyhrazené místo v paměti počítače, ve kterém je umístěna nějaké hodnota. Všechny datové elementy je v rámci aplikace nutné nejprve deklarovat (zapsat jejich jméno, typ, apod.) a teprve poté je možno je používat. Hodnoty datových elementů je možno číst i zapisovat. Virtuální přístroje si tedy mohou předávat data prostě tak, že jeden virtuální přístroj hodnotu datového elementu zapíše a druhý ji přečte.

Každá proměnná má nějaký datový typ — druh dat, které proměnná uchovává. Dvoustavovou logickou hodnotu nelze ukládat do číselné proměnné a číselnou proměnnou zase nelze ukládat to do proměnné uchovávající text. V rámci systému Control Web existují následující typy datových elementů:

- Typ boolean : Velikost 1B. Dvoustavový datový element, může nabýt hodnot true (pravda) nebo false (nepravda).
- Typ shortint : Velikost 1B. Umožňuje přenášet hodnoty -128–127.
- Typ shortcard : Velikost 1B. Umožňuje přenášet hodnoty 0–255.
- Typ integer : Velikost 2B. Umožňuje přenášet hodnoty -32768–32767.
- Typ cardinal : Velikost 2B. Umožňuje přenášet hodnoty 0–65535.
- Typ longint : Velikost 4B. Umožňuje přenášet hodnoty -2147483648–2147483647.
- Typ longcard : Velikost 4B. Umožňuje přenášet hodnoty 0–4294967295.
- Typ shortreal : Velikost 4B. Umožňuje přenášet hodnoty ±1.2E-38– 3.4E+38.
- Typ real : Velikost 8B. Umožňuje přenášet hodnoty ± 2.3E-308 –1.7E+308.
- Typ string : Velikost 256B. Libovolný řetězec znaků (maximálně 256 znaků).
- Typ buffer : Blok obecných dat.

O proměnných, jejich typech a výrazech se více dočtete v kapitole Datové elementy a výrazy.

Práce s kanály se podobá práci s proměnnými s tím rozdílem, že zápis do kanálu způsobí přenos zapsané hodnoty přes ovladač do vstupně/výstupního zařízení a čtení z kanálu naopak přenese hodnotu ze vstupně/výstupního zařízení přes ovladač do aplikace. Vzhledem k tomu, že rychlosti operací čtení a zápisu do vstupně/výstupních zařízení jsou ve srovnání s rychlostí procesoru počítače velmi nízké, nelze při každém přístupu ke kanálu vyvolávat komunikaci. Proto se vždy shromažďují požadavky od všech přístrojů aktivovaných v rámci jednoho časového kroku. Komunikace se vstupně/výstupními zařízeními má ovšem řadu dalších aspektů, podrobněji se o ní můžete dočíst v kapitolách Podrobněji o časování, aplikacích reálného času a datově řízených aplikacích, Běh datově řízené aplikace, Časování aplikací reálného času a Komunikace, ovladače a kanály.

## Kanály

Do kanálů můžete zapisovat nebo je číst. Pokud se čte hodnota proměnné, stačí přečíst data z paměti, která je s proměnnou spojena. U kanálu je to poněkud složitější. Má-li být přečtena hodnota z kanálu, vyrozumí o tom jádro systému Control Web ovladač, který je s kanálem spojený. Ovladač potom nastaví do kanálu hodnotu. Podobně je tomu i při zápisu do kanálu.

I když je v principu možné kanály číst i do nich zapisovat, ne všechna vstupně/výstupní zařízení dokáží předávat data oběma směry. Proto je možné i kanály omezit podle směru přenosu dat.

- Vstupní kanály přenášejí data ze vstupně/výstupního zařízení do aplikace. Vstupní kanály lze pouze číst, pokus o zápis do vstupního kanálu způsobí chybu.
- Výstupní kanály přenášejí data z aplikace do vstupně/výstupního zařízení. Do výstupních kanálů lze samozřejmě zapisovat, ale lze je i číst. Čtení výstupních kanálů ale nezpůsobí žádnou komunikaci, pouze je vrácena naposledy zapsaná hodnota.
- Obousměrné kanály slouží ke čtení i zápisu dat z/do ovladače.

Při vývoji aplikace lze přidávat, odebírat a editovat kanály buď v textovém módu nebo pohodlněji v datových inspektorech.

## Ovladače

Ovladač je programová komponenta, která spojuje aplikaci v systému Control Web s konkrétním vstupně/výstupním zařízením. Aplikace může využívat služeb neomezeného počtu ovladačů současně. Ovladač dostává požadavky na čtení nebo zápis dat prostřednictvím kanálů. Tento požadavek přetransformuje do takové podoby, aby mu bylo schopno porozumět vstupně/výstupní zařízení.

Příklad: Přečtení údaje o teplotě. Mějme zařízení schopné měřit okolní teplotu a komunikovat s počítačem přes sériové rozhrani. Dále mějme v aplikaci kanál s názvem Teplota_vzduchu a proměnnou T. Zápis T = Teplota_vzduchu způsobí následující kroky:

1. Jádro systému informuje ovladač o tom, že má číst kanál Teplota_vzduchu.
2. Ovladač sestaví požadavek odpovídající komunikačnímu protokolu vstupně/výstupního zařízení.
3. Ovladač odešle požadavek do vstupně/výstupního zařízení.
4. Vstupně/výstupní zařízení pošle ovladači odpověď.
5. Ovladač dekóduje zprávu a získá hodnotu teploty.
6. Ovladač informuje jádro o tom, že získal požadovanou hodnotu.
7. Jádro přiřadí nově získanou hodnotu do kanálu Teplota_vzduchu.
8. Výpočet výrazu v přístroji přiřadí nově získanou hodnotu kanálu do proměnné T.

Z časového hlediska jsou zřetelně nejnáročnější body 3 a 4 — komunikace ovladače a vstupně/výstupního zařízení. Proto většina ovladačů spojuje více požadavků do jedné komunikace. Kdyby tomu tak nebylo, tak by při větším počtu kanálů získání dat trvalo neúnosně dlouho. Je důležité si uvědomit, že ve většině případů vyvolá každý odkaz na kanál celou komunikaci popsanou předchozími kroky. Podrobnosti jsou popsány v kapitole Časování aplikace reálného času.

## Soubory '*.par' a '*.dmf'

Každý ovladač potřebuje ke své činnosti informace o své konfiguraci. K tomu slouží parametrické soubory (soubory s příponou 'par').

Podoba nebo struktura parametrických souborů není nijak předepsána a je čistě záležitostí daného typu ovladače, jakou podobu parametrického souboru použije. Typicky obsahují parametrické soubory konfigurařní data:

- Nastaveni komunikace se vstupně/výstupním zařízením.
- Mapování kanálů do paměti vstupně/výstupního zařízení.
- Další informace ovlivňující funkčnost ovladače.

Zpravidla bývají parametrické soubory obyčejné textové sobory. Lze je editovat libovolným textovým editorem, pohodlnější je ale použít editoru, který je k dispozici v datových inspektorech v záložce ovladače. Způsob zápisu parametrického souboru záleží na ovladači a je vždy popsán v dokumentaci ovladače.

V mapovacích souborech (soubory '*.dmf') je uložena informace o typech a směrech všech kanálů, které jsou spojeny s daným ovladačem. Mapovací soubory jsou vždy textové a dají se editovat v datových inspektorech v záložce ovladače.

Definice ovladače v systému Control Web vypadá následovně:

       Jméno ovladače       ovladač     DMF soubor   Parametrický soubor
       Modelový_ovladač = 'model.dll', 'model.dmf', 'model.par';

Tímto způsobem byl nadefinován ovladač se jménem Modelový_ovladač používající knihovnu 'model.dll'. Je mu přidělen parametrický soubor 'model.par' a mapovací soubor 'model.dmf'.

Definice kanálu, který je spojený s tímto ovladačem je:

       Jméno kanálu   typ kanálu  číslo kanálu  ovladač            druh kanálu
       Vstup1       = real,       1,            Modelový_ovladač,  input;

Takto byl nadefinován vstupní kanál ovladače Modelový_ovladač se jménem Vstup1, typu real s číslem 1.

Správná definice ovladačů a kanálů může být poměrně složitá. Nejjednodušší způsob jak přidat nový ovladač, a kanály, nebo jak měnit stávající konfiguraci, je využít služeb "Průvodce přidáním a konfigurací ovladačů".

## Průvodce přidáním a konfigurací ovladačů

### Úvodní obrazovka průvodce

- Volba "Přidat nový ovladač" vám umožní vybrat ovladač ze seznamu všech naistalovaných ovladačů a přidělit mu jméno. Dále vám umožní vybrat mapovací a parametrické soubory a nakonec zařadit nově vytvořený ovladač do aplikace.
- Volba "Změnit konfiguraci stávajících ovladačů" vám umožní měnit konfiguraci ovladačů v aplikaci. To znamená změnu jména a mapovacího nebo parametrického souboru.
- Volba "Konfigurovat kanály" vám umožní měnit konfiguraci kanálů v aplikaci. Kanály lze libovolně přidávat, ubírat nebo lze měnit jejich typ a směr. Průvodce po ukončení editace automaticky příslušné mapovací soubory upraví.

  ### Obrazovka s výběrem ovladače a jména

  V dolní části obrazovky je seznam všech naistalovaných ovladačů. Vyberte ovladač ze seznamu a potom do horní části obrazovky napište jméno nového ovladače.

  ### Obrazovka s výběrem mapovacího a parametrického souboru

  V této části průvodce se vybranému ovladači musí přidělit příslušný mapovací a parametrický soubor. Průvodce nabízí soubory z adresářů tak, jak jsou nadefinovány v sekci directories. Adresář je možno změnit kliknutím na tlačítko "Procházet..." Pokud je u DMF souborů vybraná možnost "Vytvořit nový", tak průvodce vytvoří nový mapovací soubor, pokud ne tak použije vybraný soubor. Tlačítko "Sériový port" umožňuje pohodlně měnit konfiguraci sériového portu v parametrickém souboru ovladače( pouze pokud ovladač tuto možnost podporuje). Tlačítko "Editovat" umožní měnit parametrický soubor pomocí externího editoru (rovněž pouze pokud ovladač tuto možnost podporuje).

  ### Obrazovka se seznamem všech kanálů v aplikaci

  V dolní části obrazovky je seznam všech kanálů které jsou v aplikaci použity. Kliknutím na tlačítko "Nastavení kanálů" se zobrazí "Editor kanálů".

  ### Editor kanálů

  "Editor kanálů" vám umožní kanály pohodlně přidávat, odebírat a měnit jejich konfiguraci. V levé části je výběr mezi jednoduchými kanály, polem kanálů, nebo kanály typu buffer. Pravá část editoru slouží k nastavení jména, směru, typu a dalších vlastností kanálu. Na rozdíl od editoru kanálů v datových inspektorech máte zde možnost měnit nastavení kanálů úplně libovolně nezávisle na mapovacím souboru. Průvodce po skončení editace sám upraví mapovací soubor podle aktuálního konfigurace kanálů.

  ## Shrnutí

  - Aplikace s vnějším světem komunikuje prostřednictvím kanálů. Kanály jsou zvláštní druh datových elementů, jejichž čtení nebo zápis způsobuje komunikaci se vstupně/výstupním zařízením.
  - Práce s kanály v aplikaci naprosto nezávisí na druhu vstupně/výstupního zařízení. Způsob komunikace se vstupně/výstupnim zařízením je odstíněn ovladačem. Ovladač je programová komponenta, která na jedné straně odpovídá protokolu systému Control Web a na druhé straně realizuje specifickou komunikaci se vstupně/výstupním zařízením.
  - Každý kanál je určen svým typem (např. kanály logické -- boolean nebo číselné -- real) a směrem komunikace (vstupní, výstupní, obousměrné).
  - Kanál je vždy spojen s nějakým ovladačem, kanál bez ovladače neexistuje.
  - Je čistě záležitostí ovladače, jaké kanály dá systému k dispozici (to je popsáno v patřičném konfiguračním souboru '*.dmf', odpovídajícím danému ovladači) a také co ovladač se zapsanými daty udělá. Existuje řada ovladačů, které se žádnými vstupně/výstupními zařízeními nekomunikují -- například Virtuální ovladač generuje řadu průběhů (sinus, obdélník, pila, šum, ...) a tím simuluje data, která mohou přicházet z konkrétního vstupně/výstupního zařízení.
  - V aplikaci je kanál identifikován svým jménem, stejně jako např. proměnné nebo konstanty. Kanál je nutno deklarovat (zapsat jméno, ovladač, číslo, typ apod.) vždy dříve, než je možno jej použít.
  - Způsob čtení a zápisu kanálů se velmi podstatně liší v závislosti na módu aplikace. Tyto rozdíly jsou podrobně vysvětleny v kapitolách Podrobně o časování, aplikacích reálného času a datově řízených aplikacích, Běh datově řízené aplikace a Časování aplikace reálného času.
  - Se zavedením ovladače do aplikace, určením jeho parametrickéha a mapovacího souboru a s deklarací jeho kanálů vám velmi pomůže "Průvodce přidáním a konfigurací ovladačů".
  - Pokud zápis nebo čtení kanálů způsobí komunikaci přes ovladač, doba této komunikace se sice může blížit době přečtení jednoduché proměnné (např. pokud se pouze vyčítá port měřicí karty), ale zpravidla bývá podstatně delší. Proto je v systému Control Web použita řada optimalizačních technik -- např. slučování požadavků na komunikaci od všech přístrojů v rámci jediného časového kroku, stanovení maximálního přípustného časového zpoždění čtení a zápisu apod. Blíže se se všemi aspekty komunikací seznámíte v kapitole Komunikace, ovladače a kanály.