Ovladač zprostředkovává aplikaci systému Control Web data systémové instalační sběrnice EIB (European
Installation Bus) pro řízení budov připojené pomocí modulu rozhraní
DataLab IF/EIB.
Obsah sekce: - Instalace ovladače
- Instalace systémového USB ovladače
- Instalace vlastního ovladače pro systém Control Web
- O EIB
- EIB skupiny, EIS a ovladač
- Skupinové adresy
- Datové typy
- Rychlost EIB
- Chování ovladače
- Datové objekty
- Čtení z EIB
- Zápis do EIB
- Stav rozhraní DataLab IF/EIB,
výjimka ovladače
- Nevyžádaná data
- Specifické chybové kódy ovladače
- Parametrický soubor
- Sekce [device]
- Sekce [interface]
- Sekce [read_on_start] a sekce [read_during_run]
- Sekce [behaviours]
- Sekce [objects]
- Sekce [blocks]
- Sekce [<block_name>]
Instalace ovladače
Ovladač DataLab IF/EIB lze použít
v systémech Control Web 5 a Control Web 2000 vždy v prostředí operačních systémů
Windows NT v5.0 a vyšší, což odpovídá současným operačním
systémům Windows 2000, Windows XP a Windows 2003.
Upozornění: Jiné operační systémy, jako například Windows ME nebo
Windows NT 4.0, neobsahují systémová volání nutná pro běh
ovladače, a ovladač v nich proto není schopen pracovat.
Vzhledem k požadavkům na robustnost průmyslových aplikací je
použití bezpečných systémů s jádrem Windows NT v5.0 v každém
případě nanejvýš žádoucí a tak podpora pouze systémů Windows 2000
a Windows XP v praxi nepředstavuje omezení.
Ovladač komunikuje s rozhraním DataLab IF/EIB pomocí USB, což znamená:
ovladač nepotřebuje žádnou konfiguraci portů, komunikační
rychlosti ani adresování jednotek,
ovladač pro svou práci vyžaduje, aby operační systém
znal rozhraní DataLab IF/EIB. To
je zajištěno pomocí speciálního systémového USB ovladače, který
je nutné do operačního systému nainstalovat. Po instalaci se
tento systémový ovladač stane vnitřní součástí operačního
systému (podobně jako například ovladač grafické
karty).
Instalace systémového USB ovladače
Systémový USB ovladač je možné instalovat dvěma
způsoby, automaticky a ručně. Automatická instalace je velmi
jednoduchá, neboť ji řídí operační systém:
připojte rozhraní DataLab IF/EIB,
operační systém Vás informuje o připojení nového
zařízení a v průvodci Vás vyzve k zadání cesty
k instalační informaci (soubor
'dleib.inf'),
soubor 'dleib.inf' se nachází na
instalačním CD v adresáři '\dleibdrv';
stejně dobře ale můžete nechat systém prohledat jednotku
CD-ROM automaticky,
po nalezení ovladače a dokončení průvodce bude
systémový USB ovladač nainstalován.
Ruční instalace je v zásadě podobná: na instalačním CD
v jednotce CD-ROM naleznete v adresáři
'\dleibdrv' soubor 'dleib.inf', pravým
tlačítkem myši otevřete nad souborem kontextové menu (místní
nabídku) a volbou povelu Instalovat... (Install...) ovladač nainstalujete.
Tip: Instalace z adresáře na CD-ROM není nezbytná. Oba
soubory je možné okopírovat na jakékoliv médium. Pokud např.
cílový počítač nemá mechaniku CD-ROM, je možné ovladač
okopírovat na pevný disk nebo na USB Flash Disk a instalovat
jej z této kopie.
Upozornění: Ovladač 'dleib.sys' není vybaven
digitálním podpisem a systém Windows na to upozorní a dotáže
se, zda-li v instalaci přesto pokračovat. Chcete-li ovladač
nainstalovat, zvolte Ano. Přítomnost či
nepřítomnost digitálního podpisu je pouze formální záležitost
mající zajistit používání pouze ovladačů prověřených firmou
Microsoft a na funkci ovladače ani systému nemá žádný další
vliv.
Instalace vlastního ovladače pro systém Control Web
Ovladač samotný se instaluje pomocí programu
'setup.exe' v kořeni instalačního CD. Po
spuštění tohoto programu Vás provede celou instalací průvodce.
Doporučujeme zvolit úplnou instalaci.
Součástí ovladače je rovnež tato dokumentace. Při běžné
instalaci je dokumentace umístěna do adresáře '\Program
Files\Moravian Instruments\Drivers\DataLab IF
EIB\Doc'.
O EIB
Systémová instalační sběrnice EIB (European Installation Bus)
se začíná velmi rychle rozšiřovat a není divu — s její pomocí lze velmi snadno integrovat
všechny požadované funkce budov (a nejen jich) do ucelených,
přehledných a velmi snadno udržovatelných systémů.
Počátky této sběrnice sahají až k roku 1991, kdy ji
v rané podobě společnost Siemens vyvinula specializací svého
průmyslového komunikačního protokolu ProfiBUS. Vzniklo konsorcium
EIBA (European Installation Bus Association), do kterého se
postupně zapojily stovky společností. Přibližně od roku 2002
získává sběrnice EIB navíc užitečný přesah, kdy pod střechou
konsorcia EIB-KNX dochází ke standardizaci a spojení
s dalšími řídicími systémy budov.
EIB je velmi silně standardizována, počínaje vnitřním chováním
základních mikroprocesorových stavebních modulů (BAU, BCU), přes
přesnou specifikaci přenosu dat (EIB communication stack) a
možných datových typů (EIS = EIB Internetworking Standard) až
k abstraktnímu logickému uspořádání parametrů a konfigurací
jednotek sběrnice. Tato standardizace umožňuje výrobcům části
sběrnice rychle a snadno vyrábět a uživatelům sítě EIB unifikovaně
a snadno sestavovat a konfigurovat (pomocí ETS, EIB Tool
Software).
Z pohledu informačních technologií lze EIB rozdělit na dvě
části. První z nich je distribuovaný systém
jednotek, kdy každá část systému (jednotka, aktor, zařízení,
modul, ...) je plně samostatná a schopná
vykonávat určitou činnost. Tomuto dílu odpovídají části EIB jako
přenosové médium (TP = kroucený dvoudrát, PL = rozvod NN 230
V či iETS = přenos pomocí UDP), komunikace, konfigurace
komunikačního zásobníku, chování jednotek při výpadku napájení
apod. Druhý díl EIB je mnohem zajímavější — obsahuje skupiny a jejich vazby.
Skupiny a jejich vazby jsou totiž to hlavní, co EIB dává její
obrovskou jednoduchost a eleganci.
Skupina je vysoce abstraktní pojem, který je v zásadě
ovšem velmi jednoduchý. Skupina má datový typ (je-li to číslo či
logický údaj), typu odpovídající hodnotu (velikost teploty) a
adresu. To je vše. Skupina tak může nést veličiny, vnitřní stavy
sběrnice, případně může sloužit jen jako procesní nástroj (třeba
zvýšení jasu), vždy se nachází jakoby nad sítí jednotek.
Do skupiny může být (pomocí adresy skupiny) zapojena každá
jednotka sítě (přesněji její jeden či více komunikačních bodů =
SAP = Service Access Point). Každá jednotka sítě tak získává svůj
obraz skupiny, který si pamatuje a se kterým operuje. Jedna
abstraktní skupina takto existuje ve všech jednotkách
v konkrétní podobě. Celá EIB potom vlastně řeší pomocí
komunikací jednu jedinou věc — jak zajistit,
aby tyto konkrétní obrazy skupin v jednotkách byly shodné,
aby si jejich hodnoty navzájem odpovídaly.
EIB skupiny, EIS a ovladač
Skupinové adresy
EIB skupina je označena adresou. Adresa skupiny (skupinová
adresa, group address) je 15bitové číslo, což dává možnost
definice až 32768 různých
skupin.
Skupinové adresy se zapisují dvojím způsobem (je to
věcí volby tvůrce EIB nasazení) jako čísla oddělená
lomítky:
pomocí dvou čísel, hlavní skupiny (main group) a
podskupiny (subgroup), přičemž hlavní skupina může být
v rozsahu 0–15 a podskupina
v rozsahu 0–2047. Zápis
skupinové adresy v této podobě může vypadat například
takto: 4/1225.
pomocí třech čísel, hlavní skupiny (main group),
střední skupiny (middle group) a podskupiny (subgroup),
přičemž hlavní skupina může být v rozsahu 0–15, střední skupina v rozsahu
0–7 a podskupina v rozsahu
0–255. Skupinová adresa
v této podobě může vypadat například takto: 2/2/173.
Ovladač DataLab IF/EIB samozřejmě
s adresami skupin pracuje a podporuje jejich oba možné
zápisy. V parametrickém souboru (viz sekce Parametrický soubor) ovladač přirozeně používá
uvedeného zápisu s lomítky, v mapovacím souboru
(většinou automaticky vytvořeném) a v aplikaci systému
Control Web však zápisu adres s lomítky
nelze použít.
Pro mapovací soubor a aplikaci se proto používá
poziční zápis skupinové adresy, kdy jednotlivé
části skupinové adresy jsou zapsány do desítkových řádů
výsledného čísla:
skupinová adresa ve tvaru g/s je
zapsána jako číslo ve tvaru: 1gg0ssss, adresa
4/1225 proto bude zapsána jako 10401225,
skupinová adresa ve tvaru g/m/s je
zapsána jako číslo ve tvaru: 0ggmmsss, adresa
2/2/173 proto bude zapsána jako 202173.
Je vcelku zřejmé, že zápis dvoudílné skupinové adresy
začíná jedničkou v řádu desítek milionů a že zápis hlavní
skupiny a skupiny dvoudílné i třídílné skupinové adresy
si navzájem odpovídají.
Skupinová adresa v pozičním zápise (neboli
v aplikaci či v mapovacím souboru) znamená přímo
číslo kanálu ovladače (a používá se proto například přímo
v zápise atributu driver_index kanálů),
takže je při vývoji aplikace na první pohled jasné, které
skupině který kanál odpovídá.
Datové typy
Kromě adresy je se skupinou spojen i její datový
typ. Datový typ skupiny, jako části systému EIB, je
přesně dán EIB standardem (EIS) a v ovladači se proto
definuje právě jako tento EIB (EIS) typ. Control Web ale používá jiné datové typy, takže je třeba mezi
EIS typy a typy systému Control Web zavést
převodní pravidla.
Control Web disponuje řadou různých typů,
takže provázání s EIS typy je přirozené. Ovladačem
podporované EIS typy, jim odpovídající datové typy systému
Control Web a případný význam hodnot definuje
tabulka .
EIS číslo |
EIS funkce |
typ Control Web |
význam hodnot |
1 |
switch |
boolean |
|
2 |
dimming/control |
shortint |
+/-0–100%
přírůstku jasu |
3 |
time |
longcard |
0–85399 sekund ve dni + 0–7 × 100000 pro den v týdnu |
4 |
date |
real |
Juliánské datum |
5 |
value |
real |
|
6 |
scaling |
shortcard |
0–100%, nebo 0–255 |
7 |
drive control |
boolean |
up, open = true |
9 |
float |
real |
|
10 |
16bit counter |
cardinal |
|
11 |
32bit counter |
longcard |
|
13 |
ASCII character |
string |
|
14 |
8bit counter |
shortcard |
|
15 |
character string |
string |
nejvýše 23 znaků |
Vzájemný převod EIS typů a datových typů systému
Control Web
Pro správné použití EIS typů v aplikaci dále
poslouží několik doporučení: EIS2 | EIS definuje tento typ jako přírůstek či pokles
hodnoty o zlomek 1/1, 1/2–1/64 její velikosti, což odpovídá
číselně změně o 100%,
50%–1,6%. Změny
tedy nemohou být plynulé a možný interval +/-0–100% (viz
tabulka) bude při zápisu do skupiny vždy převeden na
nejbliží zlomek podle tabulky Převod procent na zlomky velikosti hodnoty pro
EIS2. Znaménko
+ či –
čísla určuje, zdali se jedná o přírůstek hodnoty nebo
o její pokles. | EIS3 | Počet sekund ve dni lze v aplikaci získat
nesnadněji čtením systémové proměnné sec_in_day.
Den v týdnu (který je součástí EIS3 poněkud paradoxně) se následně
k této hodnotě přidá jako počet statisíců. Je-li
hodnota zapsána jen jako prostý počet sekund (tedy bez
jakýchkoli statisíců), použije ovladač vždy aktuální den
v týdnu. Příklad: 43200 odpovídá
poledni (12:00:00) aktuálního dne (den v týdnu se určí
automaticky), 430917 odpovídá čtvrtku
8:35:17. | EIS4 | Juliánské datum, které je pro tento datový typ
předepsáno, lze získat (a lze s ním pracovat) pomocí
nativních procedur systémového přístroje date
(např. date.GetDateJD()). | EIS6 | EIS definuje tento typ jako rozsah 0–100%,
vnitřně je tento údaj vždy převáděn na interval 0–255 (takto jej například pojímá
i ETS). Mimo takto standardem vymezený procentuální
rozsah ovladač nicméně poskytuje také přístup nepřepočítaný
(tedy k celému intervalu 0–255). |
Control Web výstup |
EIS2 |
Control Web vstup |
+/-67–100% |
+/-1/1 |
+/-100% |
+/-34–66% |
+/-1/2 |
+/-50% |
+/-18–33% |
+/-1/4 |
+/-25% |
+/-9–17% |
+/-1/8 |
+/-13% |
+/-5–8% |
+/-1/16 |
+/-6% |
+/-3–4% |
+/-1/32 |
+/-3% |
+/-1–2% |
+/-1/64 |
+/-2% |
+/-0% |
+/-0 |
+/-0% |
Převod procent na zlomky velikosti hodnoty pro
EIS2
Rychlost EIB
Nejčastěji používané (a tedy základní) přenosové médium pro
EIB je kroucený dvoudrát (TP), pomocí něj se k EIB
připojuje i rozhraní DataLab IF/EIB. Toto přenosové médium používá přenosovou
rychlost 9600bps, což při započtení délky nejkratšího
možného EIB TP telegramu (8 byte), prodlevy a potvrzení
telegramu (ACK) dává komunikační rychlost 64 EIB telegramů za
sekundu.
To není nijak moc, pokud bychom chtěli komunikovat
bezhlavě. Pro technologie budov to však bohatě stačí, protože
rychlosti sledovaných a řízených dějů jsou v řádech
desítek a stovek sekund.
Control Web jako obecný vizualizační a
řídící nástroj pracuje svým tempem a vzhledem k jeho
mohutnému výkonu je velmi snadné neopatrnou (či špatnou)
aplikací EIB sběrnici zcela zahltit. Velmi proto doporučejeme
dodržet v aplikaci EIS standard, z něhož část
(v překladu do češtiny) vyjímáme:
Upozornění: EIBA Handbook Series, Internetworking standards,
2.3 General Requirements for Interworking, 2.3.1
Busload: Rychost opakování — rychlost opakování by měla být volena velmi
obezřetně, neboť značně ovlivňuje provoz na sběrnici a hrozí
zde riziko zahlcení. Předpokládaná zátěž sběrnice by měla být
již součástí plánu instalacen EIB sítě. Doporučují se následující pravidla:
pro uživatelské (ruční) operace by vzdálenost mezi
odesílanými telegramy měla být nejméně 200
milisekund,
pro automatické operace by vzdálenost mezi
odesílanými telegramy měla být v řádech sekund či
minut.
Poznámka: Vě většině případů automatických operací
je postačují rychlost opakování v řádech minut — například meření teploty, jasu, času apod. vždy
měří veličiny, které se mění pomalu.
Chování ovladače
Datové objekty
S pojmem datový objekt se lze v EIB setkat ve
funkčních jednotkách. Každá jednotka má určitou funkci,
většinou násobnou (například dva stmívané kanály), a
s každou funkcí je spojeno pro účely ovládání a změn
chování několik datových objektů.
Datový objekt v jednotce je zapojen do skupiny (pomocí
skupinové adresy) a pokud je zapojen pouze do jedné skupiny,
je tento datový objekt (jak je psáno výše) konkrétním obrazem
abstraktní skupiny.
Datové objekty nicméně lze zapojovat do více skupin
najednou, jeden datový objekt potom shrnuje data ze všech
těchto skupin. Z principu komunikace EIB je pak jasné, že
datové objekty patřící do více skupin mají vždy hodnotu
naposledy upravené skupiny.
Udržování konkrétních obrazů skupiny
v datových objektech je podle standardu EIB možné
ovlivňovat následujícími volbami:
- objekt se komunikuje
je-li volba nastavena, pak datový objekt reaguje na
změny skupiny, není-li volba nastavena, je objekt zcela
pasivní (a pro EIB nefunkční). Ovladač DataLab IF/EIB tuto volbu nenabízí — , všechny datové objekty ovladače se
komunikují
- objekt lze číst z jiných jednotek (read
flag)
je-li volba nastavena, lze hodnotu datového objektu
číst zevnitř EIB sítě
- do objektu lze zapisovat z jiných jednotek
(write flag)
je-li volba nastavena, lze hodnotu datového objektu
zapisovat zevnitř EIB sítě — neboli,
takovýto objekt sleduje změnu hodnoty
skupiny
- objekt zapisuje do EIB sítě (transmit
flag)
je-li volba nastavena, zapíše se hodnota zapsaná
(třeba z aplikace) do datového objektu rovněž do EIB
sítě a tím i do skupiny
- objekt lze měnit nevyžádanou komunikací (update
flag)
volba znamená, že odpověď s přečtenou hodnotou
datového objektu z jiné jednotky ovlivní datový objekt
v této jednotce. Tato volba je ve všech BCU1 zařízeních zapnuta (a nelze vypnout),
ve všech BCU2 zařízení a
stejně i v ovladači DataLab IF/EIB je tato volba nastavitelná
Kombinací popsaných voleb se dosahuje různých chování
datových objektů.
Ovladač DataLab IF/EIB pro
Control Web výše popsané volby plně
podporuje, přičemž pro snazší práci s objekty chování
vzniklá různými kombinacemi objektů pojmenovává.
Navíc, jak je popsáno v sekci o souboru
s parametry, chování (tedy kombinace voleb) lze určit
i vlastní, přesně podle požadovaného chování objektu.
Datový objekt v ovladači potřebuje některá další
nastavení (protože Control Web má
i jiné možnosti, než definuje EIS); v současné
době to jsou tyto rozšiřující volby:
- objekt bude při čtení vždy přečten z EIB sítě (ze
skupiny) (communicate_on_read)
princip práce EIB sítě je jasný — abstraktní skupina, je-li upravena, zajistí
pomocí EIB komunikace rozšíření své nové hodnoty do všech
jednotek. Každá jednotka se proto vždy dozví, že skupina
byla změněna. Datový objekt proto má vždy správnou hodnotu
skupiny. Chce-li ovladač (aplikace) použít údaj
z datového objektu, přečte jej. Pokud objekt pracuje
normálním v EIB běžným způsobem, získá aplikace vždy
správný údaj. Avšak, například, je-li skupina pasivní
(neboli její hodnoty se nikdy nezapisují do sítě, protože
nastavující datový objekt nemá nastaven transmit
flag), může být nutné z takové skupiny hodnotu
přečít explicitním čtením, — což je
ovšem něco navíc vůči prostému převzetí hodnoty místního
datového objektu ovladače. Takový způsob práce se skupinou
není v EIB příliš běžný (ale i tam se občas
použije), ovladač jej nicméně musí podporovat.
- objekt bude po startu ovladače přečten z EIB
(provede se iniciální čtení) (read_on_start)
v okamžiku startu ovladače jsou veškeré objekty
uvnitř něj prázdné, obsahují počáteční hodnoty (což
jsou zpravidla nuly). Samozřejmě, takové počáteční hodnoty
neodpovídají skutečnému stavu EIB sítě a aplikace, která by
na tento fakt nebrala ohled, by pracovala chybně (dokud by
se postupně data uvnitř ovladače změnami v EIB
neustavila). Control Web pro řízení a
měření dat po startu nabízí standardní prostředky (a všechna
data by bylo možné z EIB po startu načítat běžnými
postupy aplikace). EIB je však schopna pracovat s daty
i svébytnými postupy, které nabízejí komfortnější
způsob inicializace vnitřních hodnot datových
objektů. Chce-li ovladač, aby datový objekt po startu
řízeně přečetl data z EIB sítě, musí datovému objektu
tuto volbu (read_on_start) nastavit. Nebude-li
volba nastavena, ovladač do svého datového objektu hodnotu
získá buď po změně v EIB síti anebo aktivitou aplikace
systému Control Web. Počáteční čtení
objektu z EIB lze ovlivnit parametry sekce Sekce [interface] parametrického souboru read_on_start_delay
a read_on_start_repeat_count. Ovladač počáteční
čtení opakuje dle nastavení druhého parametru (a opakuje se
vždy jen čtení těch objektů, u nichž se to dosud
nepodařilo) a vždy před zahájením nového opakovaného bloku
komunikací čeká po dobu určenou prvním parametrem.
Jména, která pro chování objektů ovladač
DataLab IF/EIB používá, jsou (spolu
s odpovídající kombinací voleb):
- reader
update + communicate_on_read
- tracker
update + write
- tracker_init
update + write + read_on_start
- transmitter
transmit
- transmitter_with_status
update + write + transmit
- transmitter_with_status_init
update + write + transmit + read_on_start
- server
read
- concentrator
update + write + read
- source
transmit + read
Datové objekty, jsou-li zapojeny do více skupin, jsou
v aplikaci dostupné pod více čísly
kanálů — každé skupinové adrese
odpovídá jedno číslo kanálu. Protože všechny skupinové adresy
patří jednomu komunikačnímu objektu, lze pro použití objektu
v aplikaci zcela rovnocenně použít jakýkoli jeho
kanál (jakékoli číslo kanálu).
EIB spojuje s datovým objektem jeho
důležitost, která má praktický dopad zejména při přenosech
dat v EIB síti. Důležitost, neboli třída
objektu (či priorita), může být
následující: Hodnota | Význam |
---|
normal | základní důležitost, velká většina datových objektů
má právě tuto důležitost. Je to zároveň hodnota, která je
v datových objektech ovladače přednastavena (tedy,
použije se, pokud není zadána nějaká jiná
důležitost). | high | vysoká důležitost | alarm | výstražná důležitost, druhá důležitost, která se
občas objeví. Typické použití je pro hlášení krizových
stavů: vstup do objektu, porušení okna či odejmutí
sundavatelné části EIB prvku. | system | systémová důležitost; je de facto vyhrazena pouze pro
konfigurační komunikace, normální provoz
v nakonfigurované EIB síti by neměl tuto důležitost
používat. V ovladači DataLab IF/EIB ji není možné definovat. |
Důležitost datového objektu je v ovladači
DataLab IF/EIB spojena s chováním
objektu a v parametrickém souboru se definuje na stejném
místě (jako by se jednalo o volbu chování datového
objektu), viz sekci Sekce [behaviours].
Control Web při definici kanálů používá
směry, což je jednoduché vyjádření smyslu toku dat
(výstupní kanál přenáší data ven z aplikace do
technologie a naopak).
Control Web 5 (a také jeho následníci)
zjišťuje směry kanálů přímo z ovladače, takže při tvorbě
aplikace v těchto systémech není možné směr kanálu
přiřadit chybně. Systém Control Web 2000 tuto
vlastnost neobsahuje a správné směry kanálů je nutné zapsat
do samostatného 'DMF' souboru ovladače.
Pro správnou funkci kanálů (datových objektů)
v systému Control Web 2000 lze doporučit
následující přiřazení směrů kanálů v DMF souboru a
v aplikaci (v případě použití jiných směrů se může
stát, že Control Web 2000 zbytečně zamezí
použít kanál ve všech směrech, kterými je kanál schopen
komunikovat):
- datový objekt pouze s volbou
transmit
směr výstupní (output)
- datový objekt bez volby transmit
směr vstupní (input)
- datové objekty s volbou transmit
současně s jinými volbami
směr obousměrný (bidirectional)
Čtení z EIB
Čtení dat z EIB může v ovladači probíhat
dvojím způsobem: čtením místní hodnoty | Tento způsob čtení hodnoty ze skupiny je základní a
je doporučen. Předpokládá, že skupiny v EIB síti jsou
aktivní, že pracují a že do nich příslušné jednotky zapisují
údaje. Datový objekt v ovladači proto vždy při zápisu
do skupiny údaj automaticky obdrží. Ovladač při tomto
způsobu čtení nekomunikuje, pouze poskytne data
aplikaci. Čtení hodnoty datového objektu proto nijak
nezatěžuje EIB síť. Ovladač při tomto způsobu čtení
vrací údaje okamžitě, a nemá proto pro něj smysl
řízení komunikace pomocí prodlev (input_timeout). Je-li
datový objekt spojen s více skupinami, způsobí změnu
hodnoty datového objektu zápis do jakékoli jeho skupiny.
Například — je-li objekt spjat se
skupinami 3/1/0 (světlo A) a 3/1/255
(všechno zhasnout), získá objekt hodnotu pří zápisu do
kterékoli ze skupin. Datový objekt čte data z EIB
tímto způsobem, nemá-li nastavenu ve svém chování
volbu communicate_on_read. | komunikací z EIB | Tento způsob čtení ze skupiny je rozšiřující a je
doporučen pouze pro použití ve vyjímečných
případech — například je-li třeba
v určité situaci číst z určité jednotky nějaký
speciální (třeba chybový či stavový) datový objekt. Lze jej
nazvat vyžádané čtení. Ovladač při tomto
způsobu čtení komunikuje, vyžádá si novou hodnotu
z EIB sítě a teprve po zpětném získání hodnoty skupiny
poskytne tuto novou hodnotu aplikaci. Komunikací dochází
k zatěžování EIB sítě. Ovladač při tomto
způsobu čtení vrací data zpožděně (až je získá), a
má proto pro něj smysl řízení komunikace pomocí
prodlev (input_timeout). Je-li datový
objekt spojen s více skupinami, komunikuje ovladač data
z první skupiny objektu (z první adresy
objektu), pokud není pro čtení označena jiná adresa
(viz Sekce [objects] parametrického
souboru). Datový objekt čte data z EIB tímto
způsobem, má-li nastavenu ve svém chování volbu
communicate_on_read. Je-li současně
s volbou communicate_on_read v chování
objektu přítomna i volba update nebo
write, dochází ke změně hodnoty objektu i mimo
vyžádaná čtení. Pokud aplikace v takové situaci nepočká
na dokončení komunikace (viz dokumentaci systému
Control Web), přečte aplikace poslední
místní hodnotu datového objektu. Vyžádané čtení lze
ovlivňovat sadou parametrů (prodlevou dokončení čtení,
počtem opakování a prodlevou mezi čteními); zvlášť pro
počátační čtení a zvlášť pro čtení za chodu
ovladače — viz Sekce [read_on_start] a sekce [read_during_run] parametrického souboru. |
Kanály aplikace, které jsou s datovým objektem
spojeny, musejí být vstupní (input) nebo
obousměrné (bidirectional). Platí
současně (viz výše), že hodnotu datového objektu lze
v aplikaci získat čtením jakéhokoli kanálu datového
objektu (komunikuje-li se kanál, komunikuje se vždy pomocí
prvé skupinové adresy bez ohledu na číslo kanálu, které bylo
pro přístup k datům objektu použito).
Zápis do EIB
Zápis dat do EIB probíhá v ovladači jediným
způsobem — hodnota z aplikace je
zapsána do datového objektu a je-li v chování objektu
zapnuta volba transmit, je tato nová hodnota zapsána
do EIB sítě do první skupiny objektu (do první adresy
objektu).
Zápis dat do EIB proto typicky komunikuje a zatěžuje proto
EIB síť.
Jelikož se při zápise komunikuje, lze zápis a jeho výsledek
řídit a sledovat pomocí mechanizmů aplikace (komunikační
prodlevy output_timeout apod.).
Kanály aplikace, které jsou s datovým objektem
spojeny, musejí být výstupní (output)
nebo obousměrné (bidirectional). Platí
současně (viz výše), že hodnotu datového objektu lze
z aplikace zapsat pomocí jakéhokoli kanálu datového
objektu (vždy se přitom zapisuje do prvé skupinové adresy bez
ohledu na číslo kanálu, které bylo pro přístup k datům
objektu použito).
Stav rozhraní DataLab IF/EIB,
výjimka ovladače
USB rozhraní, pomocí kterého ovladač komunikuje, může být
bez ohledu na běh aplikace a bez ohledu na stav ovladače
připojeno či odpojeno, totéž platí pro EIB síť
(zapojeno/nezapojeno). Tyto stavy mohou být pro aplikaci velmi
důležité, proto je ovladač aplikaci poskytuje ve svém
stavovém kanále.
Číslo stavového kanálu je volitelné (v souboru
s parametry). Změna stavu ovladače (neboli změna
stavového kanálu) je vždy aplikaci systému Control Web hlášena pomocí výjimky ovladače
(parametr driver_exception přístrojů), takže
aplikace má možnost asynchronně reagovat na jakékoli
nesrovnalosti.
Stavový kanál je dvaatřicetibitové číslo (longcard),
v němž mají jednotlivé bity následující
význam: Hodnota | Význam |
---|
0 (USB_connected) | bit je nastaven, pokud ovladač nalezl připojené
rozhraní DataLab IF/EIB
s odpovídající identifikací a úspěšně s ním
komunikuje | 1 (EIB_connected) | bit je nastaven, pokud je k rozhraní
DataLab IF/EIB připojena EIB síť a
ovladač je tak schopen komunikovat EIB data | 2 (init_read_pending) | bit je nastaven, pokud ovladač dosud nedokončil
počáteční načítání hodnot objektů z EIB sítě | 3 (queue_overflow) | bit je nastaven, pokud počet zaznamenaných a
nezpracovaných změn dat mimo pořadí (viz sekci ) dosáhl limitu určeného
parametrem input_queue_length | 4-31 (reserved) | rezervováno pro budoucí použití |
Příklad reakce na změnu stavu ovladače (v systému
Control Web lze rovněž použít
i událostní proceduru OnDriverException()):
program EIBStatus;
driver_exception = EIBDriver;
procedure OnActivate( Time, Instrument, Driver, Data : boolean );
begin
if not Driver then
stop;
end;
if bitget( StatusChannel, 0 ) = 1 then
(* we have device *)
else
(* we did not find any device yet *)
end;
if bitget( StatusChannel, 1 ) = 1 then
(* we have EIB connection *)
else
(* EIB is not connected *)
end;
end_procedure;
end_program;
Nevyžádaná data
Upozornění: Komunikaci nevyžádaných dat nelze použít
v systému Control Web 2000. Podpora
komunikace nevyžádaných dat je k dispozici až
v systému Control Web a
vyšších.
EIB síť je již z definice prostředí, ve kterém
jednotlivé jednotky vykonávají přikázanou činnost zcela
samostatně. To znamená, že každá jednotka může upravit hodnotu
skupiny kdy se jí zamane, podle své potřeby. Z pohledu
jiných jednotek (a tedy i z pohledu ovladače
DataLab IF/EIB) se ovšem taková změna
skupiny jeví jako zcela asynchronní a
nepředpověditelná — jednotka dostane
data (novou hodnotu skupiny) aniž by o ně žádala.
Zápis do skupiny (úprava hodnoty skupiny) lze proto na
všech jednotkách pojmout jako asynchronní událost
(událostmi v programech se obyčejně rozumí aktivity
vzešlé odjinud, nikoli z programu samého). Výrazové
prostředky systému Control Web pro
asynchronní události nabízejí událostní procedury.
Protože se při komunikaci pracuje s kanály
(s datovými elementy spjatými s ovladačem), použijí
se pro zpracování nevyžádaných dat událostní procedury
sekce, ve které jsou patřičné kanály definovány.
Komunikace nevyžádaných dat je zcela automatická. Jakmile
ovladač zpracuje nevyžádanou událost, informuje
Control Web a ten zajistí komunikaci
nevyžádaných dat mimo pořadí běžným komunikačním mechanizmem.
To znamená, že nevyžádaná komunikace se v tomto ohledu
uvnitř aplikace projevuje stejně jako komunikace
vyžádaná — po jejím dokončení je
zavolána událostní procedura On*Communicated (viz
popis událostních procedur datových sekcí v dokumentaci)
a dále, došlo-li komunikací ke změně hodnoty elementu, rovněž
událostní procedura On*Change.
Mechanizmus přijímání nevyžádaných dat respektuje
aplikaci — . Pokud aplikace
(v příslušné datové sekci) neobsahuje žádnou
z uvedených procedur, žádná data mimo pořadí nezpůsobí
žádnou aktivitu aplikace (samozřejmě, přijatá hodnota je
v ovladači uchována; jen se o ní aplikace bez
vlastní komunikace nedozví).
Protože je (viz sekce Datové objekty) s každým datovým
objektem spojeno potenciálně více skupinových adres, bylo by
při zpracovávání nevyžádaných dat možné použít jakýkoli kanál.
Z praktických důvodů je ovšem stanoveno, že nevyžádaná
data jsou v událostních procedurách On*Communicated
a On*Change vždy nabízena v kanálu, který
odpovídá prvé skupinové adrese objektu. Neboli, prvá skupinová
adresa datového objektu má výjimečné postavení nejen na straně
EIB (je použita k zápisu a k vyžádanému čtení), ale
i na straně aplikace systému Control Web — je jako jediná používána
při oznamování nevyžádaných komunikací.
Následující jednoduchý příklad ukazuje proceduru, která
zpracuje všechny události skupiny 3/2/13
(EIS2 dimming/control) a uchová
uvnitř proměnné Level aktuální stav jasu stmívače (procedura
tak uskutečňuje část funkce stmívače). Vždy, když v EIB
síti někdo zapíše do skupiny 3/2/13, přenesou se
nevyžádaná data z EIB do systému Control Web, což vyústí ve volání událostní procedury
(v ukázce specifické pro jeden datový element):
data
var LIGHTS;
Level : shortcard;
end_var;
channel {driver = eib; direction = input};
DimmingControl = shortint {driver_index = 302013};
procedure On_DimmingControl_Communicated( Status : longcard );
begin
if Status <> 0 then (* communication error *)
stop;
end;
Level = min2( 100, Level + DimmingControl );
(* limiting Level to 0 is not neccessary, as shortcard data type
cannot contain numbers lower than zero *)
end_procedure;
end_channel;
end_data;
Uvedená ukázka je elementární, zcela se nezabývá například
násobným využitím procedury pro více elementů apod.; nicméně
úkolem dokumentace ovladače není opakovat informace, které
jsou pečlivě popsány v dokumentaci k systému
Control Web. Pro více poznatků proto
doporučujeme právě hlavní dokumentaci k systému.
Nevyžádaná data musejí být (aby měla smysl) v ovladači
skladována po dobu od vzniku události (přijetí hodnoty
v datovém objektu) až do jejího zpracování
v událostní proceduře. Přebytek výkonu systému
Control Web vůči EIB je obrovský, přesto by
se však mohlo (třeba na starých či velmi zatížených
počítačích) stát, že by se bez skladování sem tam něco
ztratilo (pro stmívání by to asi nevadilo, ale záleží-li někde
na počtu zápisů (třeba hodnoty true), mohlo by to
způsobovat potíže. Skladování nevyžádaných dat se
v ovladači děje automaticky a pro jistotu je omezeno
parametrem input_queue_length (viz sekci Parametrický soubor). Dojde-li případně
k zaplnění fronty, informuje ovladač aplikaci pomocí
výjimky ovladače a nastavení bitu 3
(queue_overflow) stavového kanálu. V takovém případě lze upravit
(zvětšit) délku fronty nevyžádaných dat z počátečních 256
událostí na větší číslo.
Specifické chybové kódy ovladače
Ovladač používá následující specifické chybové kódy
(tyto chybové kódy se objevují jednak v Okně
zpráv a jednak jsou obsahem atributů error
a write_error): Hodnota | Význam |
---|
1 (ecDeviceUnplugged) | jednotka odpojena — DataLab IF/EIB buď nemá
připojené napájení (je rozpojen USB kabel) anebo sériové
číslo správně zapojené jednotky neodpovídá nastavení
parametru id parametrického souboru. | 2 (ecNoEIBConnection) | není připojena EIB sběrnice — DataLab IF/EIB nemá
spojení s EIB sítí. | 4 (ecUnACKed) | odeslaný EIB paket nebyl žádnou přijímací jednotkou
potvrzen. | 5 (ecReadResponseTimeout) | požadavek na řízení čtení hodnoty z EIB vypršel,
zařízení neodpovědělo do uplynutí stanovené doby. | 6 (ecLineBusy) | zápis dat se nezdařil, neboť EIB síť je
zaneprázdněna | 7 (ecTransceiverFault) | zápis dat se nezdařil, neboť se nepodařilo odeslat
data do EIB sítě | 8 (ecOutputQueueOverflow) | zápis dat se nezdařil, neboť vymezená délka výstupní
fronty byla naplněna (chyba se může objevit pouze pokud je
délka výstupní fronty omezena) |
Parametrický soubor
Ačkoli bude většina konfigurací ovladače učiněna pomocí
nástroje systému Control Web (viz sekci ), je nutné parametrický
soubor podrobně popsat.
Parametrický soubor obsahuje nastavení závislé na druhu
ovladače, takže parametrický soubor pro ovladač DataLab IF/EIB nelze použít pro ovladač jiný (jednotek ADAM
apod.).
Parametrický soubor ovladače DataLab IF/EIB je textový, uspořádaný do sekcí,
s konfiguračními parametry zapsanými na řádcích ve formátu
klíč = údaj. Sekce slouží k hlavnímu členění, zatímco klíče
představují vlastní nastavení. Ovladač DataLab IF/EIB používá ve svém parametrickém souboru
následující předdefinované sekce: Hodnota | Význam |
---|
device | sekce pro konfiguraci USB rozhraní DataLab IF/EIB na straně počítače | interface | sekce pro konfiguraci EIB komunikačního
zásobníku | read_on_start read_during_run | sekce pro konfiguraci časování čtení při počátečním čtení
a za běhu ovladače | behaviours | sekce pro definici chování datových objektů | objects | sekce pro definici jednotlivých samostatných datových
objektů | blocks | sekce pro definici bloků datových objektů, které sdílejí
určitá nastavení | [<block_name>] | sekce pro definici datových objektů, které sdílejí určitá
nastavení |
Uvnitř těchto sekcí se používají další (rovněž předdefinovaná)
klíčová slova pro zápis EIS datových typů a pro zápis
přednastavených chování (o chování datových objektů pojednává
sekce Datové objekty, o zápisu
chování v parametrickém souboru sekce Sekce [behaviours]).
Pojmenování datových typů v ovladači je
trojí — číslem a dvěma symbolickými
jmény: EIS1 | typ se uvede jako 1, nebo jako switch,
nebo jako eis1 | EIS2 control | 2, nebo increase, nebo eis2 | EIS3 | 3, time, eis3 | EIS4 | 4, date, eis4 | EIS5 | 5, value, eis5 | EIS6 | 6, scaling, eis6 — rozsah 0–100% | EIS6 | scaling255 — rozsah
0–255 | EIS7 | 7, updown, eis7 | EIS9 | 9, float, eis9 | EIS10 | 10, counter16, eis10 | EIS11 | 11, counter32, eis11 | EIS13 | 13, char, eis13 | EIS14 | 14, counter8, eis14 | EIS15 | 15, string, eis15 |
Sekce [device]
Sekce [device] obsahuje následující
klíče: Parametr | Význam |
---|
id | každé rozhraní DataLab IF/EIB
je vyrobeno s jednoznačnou identifikací, která je jako
výrobní číslo uvedena na štítku na krabičce rozhraní. Tuto
identifikaci používá ovladač pro USB spojení
s rozhraním. N — esouhlasí-li
identifikace, ovladač se s rozhraním
nespojí. Příklad: [device]
id = 2401406 Klíč je povinný. | status_channel | číslo stavového kanálu ovladače. Bez zadání tohoto
parametru nebude možné v aplikaci použít stavový kanál.
Číslo musí být nezáporné a je libovolně volitelné se zřejmým
omezením: číslo stavového kanálu musí být vybráno tak, aby
nebylo shodné s žádnou ze skupinových adres
použitých v ovladači. Příklad: [device]
status_channel = 1 Klíč je nepovinný, jeho počáteční hodnota není
definována. | input_queue_length_channel | číslo kanálu ovladače s aktuální délkou vstupní
fronty (fronty dat přijímaných mimo pořadí). Bez zadání
tohoto parametru nebude možné kanál s délkou vstupní
fronty v aplikaci použít. Číslo musí být nezáporné a je
libovolně volitelné se zřejmým omezením: číslo musí být
vybráno tak, aby nebylo shodné s žádnou ze
skupinových adres použitých
v ovladači. Příklad: [device]
input_queue_length_channel = 2 Klíč je nepovinný, jeho počáteční
hodnota není definována. | output_queue_length_channel | číslo kanálu ovladače s aktuální délkou výstupní
fronty (fronty dat připravených k odeslání). Bez zadání
tohoto parametru nebude možné kanál s délkou výstupní
fronty v aplikaci použít. Číslo musí být nezáporné a je
libovolně volitelné se zřejmým omezením: číslo musí být
vybráno tak, aby nebylo shodné s žádnou ze
skupinových adres použitých
v ovladači. Příklad: [device]
output_queue_length_channel = 2 Klíč je nepovinný, jeho počáteční
hodnota není definována. |
Sekce [interface]
Sekce [interface] obsahuje následující
klíče: Parametr | Význam |
---|
address | fyzická adresa rozhraní, adresa, kterou se bude
rozhraní hlásit v EIB síti. Adresa je fyzická, první
dvě její části (area a line) by proto měly odpovídat linii,
do níž je rozhraní DataLab IF/EIB
zapojeno. Příklad: [interface]
address = 14.1.255 | input_queue_length | počet nevyžádaných komunikací (EIB paketů), které
ovladač udržuje až do okamžiku zpracování aplikací (pomocí
událostních procedur). Protože aplikace v systému
Control Web má vůči EIB komunikaci
několikařádový přebytek výkonu, nebude nejspíše třeba vůbec
tento parametr upravovat. Příklad: [interface]
input_queue_length = 1000 Klíč je nepovinný, jeho počáteční
hodnota je 256. | output_queue_length | počet paketů připravených k odeslání, které
ovladač udržuje v paměti v případě, že se nedaří
data dostatečně rychle odesílat. Protože aplikace
v systému Control Web má vůči EIB
komunikaci několikařádový přebytek výkonu, může se stát, že
EIB síť nedokáže požadavky dostatečně rychle přijímat a
mohlo by tak docházet ke ztrátě dat. Výstupní fronta pozdrží
požadavky až do okamžiku uvolnění sítě. Je zřejmé, že
aplikace může stále ovladač zahlcovat, aniž by byl prostor
pro kompletní odeslání dat (neboli aplikace bude zapisovat
rychleji, než EIB dokáže komunikovat) — neboli výstupní fronta bude stále růst.
Parametr output_queue_length délku fronty
limituje. Dojde-li pak k zaplnění fronty, ovladač
ukončí danou komunikaci chybou komunikace 8
(ecOutputQueueOverflow). Příklad: [interface]
output_queue_length = 10000 Klíč je nepovinný, jeho počáteční
hodnota je 4 294 967 295 (neboli
maximum). | ACK_method | způsob chování rozhraní DataLab IF/EIB při přijímání EIB paketu. Každý paket
v EIB komunikaci by měl být potvrzen (ACK =
adknowledge), přičemž v normálně instalovaných EIB
sítích tomu tak i vždy je. V každé skupině se
obyčejně nacházejí jak zdroje (vysílače) hodnot tak jejich
přijímače (aktory apod.), takže potvrzení paketu má vždy kdo
zajistit. Není-li paket potvrzen, EIB jej obyčejně
opakuje, což zvyšuje zatížení sítě. Použije-li se
ovladač DataLab IF/EIB především pro
vizualizaci, je pravděpodobné, že EIB síť a její skupiny
vždy budou mít příjemce, který paket potvrdí. Použije-li se
však Control Web v EIB síti více
výkonně, pro řešení logických spojení apod., může se stát,
že některá ze skupiny nebude mít jiného příjemce, než
ovladač DataLab IF/EIB. Pak je ovšem
správné, aby se o potvrzení takovýchto paketů postaral
právě ovladač. Parametr ACK_method může
nabývat dvou hodnot: none a all.
Při prvé volbě rozhraní žádné pakety nepotvrzuje, při druhé
volbě rozhraní potvrzuje všechny
pakety. Příklad: [interface]
ACK_method = all Klíč je nepovinný, jeho počáteční hodnota je
none. | ACK_timeout | prodleva čekání ovladače na potvrzení (kladné
i záporné) odeslání paketu. Vyprší-li tato prodleva,
ovladač čekání na potvrzení ukončí a odešle do sítě další
připravený paket. Příklad: [interface]
ACK_timeout = 750 Klíč je nepovinný, jeho počáteční hodnota je
500. Jednotka údaje je milisekunda. | BUSY_delay | prodleva, po kterou ovladač čeká před opakováním
požadavku, byla-li EIB síť v okamžiku jeho odeslání
zaneprázdněna. Ovladač opakuje požadavek nejvýše
třikrát. Příklad: [interface]
BUSY_delay = 500 Klíč je nepovinný, jeho počáteční hodnota je
200. Jednotka hodnoty jsou milisekundy. | read_on_start_delay | prodleva, po kterou ovladač čeká při počátečním čtení
hodnot objektů před opakováním čtení (ovladač pak opakovaně
čte pouze objekty, jejichž hodnotu dosud nezískal). Ovladač
čtení opakuje podle nastavení parametru read_on_start_repeat_count. Příklad: [interface]
read_on_start_delay = 15000 Klíč je nepovinný, jeho počáteční
hodnota je 5000. Jednotka hodnoty jsou milisekundy. | read_on_start_repeat_count | počet opakování počátečních čtení hodnot objektů.
Ovladač počáteční čtení opakuje pouze pro objekty, jejichž
hodnotu dosud nezískal. Mezi jednotlivé pokusy přečíst
hodnoty objektů ovladač vkládá prodlevu stanovenou
parameterem read_on_start_delay. Příklad: [interface]
read_on_start_repeat_count = 5 Klíč je nepovinný, jeho počáteční
hodnota je 3. |
Sekce [read_on_start] a sekce [read_during_run]
Obě sekce obsahuje nastavení chování vyžádaného
čtení dat z EIB sítě. To se při startu ovladače týká
počátečního čtení (sekce [read_on_start]) a za
běhu ovladače všech vyžádaných čtení (sekce[read_during_run],
platí pro objekty s chováním
communicate_on_read). Čtení ovlivňují následující
klíče platné shodně pro obě sekce: Parametr | Význam |
---|
timeout | prodleva, po kterou ovladač čeká na odpověď EIB
zařízení (neboli na čtenou hodnotu objektu). Uplyne-li tato
prodleva, ukončí ovladač čtení s chybou komunikace
5
(ecReadResponseTimeout). Příklad: [read_on_start]
timeout = 2500 Klíč je nepovinný, jednotka jeho údaje je
milisekunda. V sekci [read_on_start] je
počáteční hodnota klíče 1500, v sekci [read_during_run]
2500. | repeat_count | počet opakování čtení. Ovladač požadavky na čtení
opakuje, pokud čtení skončí chybou (nebo pokud zařízení
neodpoví). Příklad: [read_on_start]
repeat_count = 3 Klíč je nepovinný. V sekci [read_on_start]
je počáteční hodnota klíče 1, v sekci [read_during_run]
rovněž 1. | delay | prodleva, kterou ovladač vkládá mezi dva za sebou
následující požadavky na čtení. Příklad: [read_on_start]
delay = 250 Klíč je nepovinný, jednotka jeho údaje je
milisekunda. V sekci [read_on_start] je
počáteční hodnota klíče 150, v sekci [read_during_run]
0. |
Sekce [behaviours]
Sekce [behaviours] obsahuje
následující klíče: Parametr | Význam |
---|
behaviour | klíč, který slouží k definici vlastního chování
datových objektů; chování se zapisuje jako jméno
chování následované kombinací voleb chování
oddělených čárkami. Pořadí voleb není povinné. Klíč se
v sekci může neomezeně opakovat. |
Volby vycházejí z voleb komunikace datových
objektů (viz sekci Datové objekty);
takže do klíče lze zapsat seznam vybraný
z následujících klíčových slov: Hodnota | Význam |
---|
readable | pro volbu objektu read | writable | pro volbu objektu write | transmit | pro volbu objektu transmit | updateable | pro volbu objektu update | communicate_on_read | pro zapnutí vyžádaného čtení | read_on_start | pro zapnutí čtení pro získání počáteční
hodnoty | high | volba pro nastavení důležitosti high (viz
sekce Datové objekty) | alarm | volba pro nastavení důležitosti alarm (viz
sekce Datové objekty) |
Příklad:
[behaviours]
behaviour = all, readable, updateable, transmit, communicate_on_read, writable
behaviour = my_transmitter, transmit, alarm
Jména chování (v příkladu all a my_transmitter)
lze v ovladači použít kdekoli, kde se vyžaduje zápis
jména chování, což je buď v klíčích object a
objects v sekci objects a
v klíči behaviour v sekci [<block_name>].
Kromě takto uživatelsky definovaných chování ovladač
rozeznává předdefinovaná chování, takže je pravděpodobné, že
v běžných EIB nasazeních vůbec nebude třeba sekce [behaviours]
využít. Předdefinovaná chování jsou (více včetně jejich
vysvětlení viz sekce Datové objekty):
reader, tracker, transmitter,
transmitter_with_status, server,
source a concentrator.
Sekce [objects]
Sekce [objects] obsahuje následující
klíče: Parametr | Význam |
---|
object | klíč, který slouží k definici jednoho
komunikačního objektu, objekt přitom lze zapojit do několika
skupin | objects | klíč, který slouží k definici více komunikačních
objektů najednou, objekty jsou přitom zapojeny každý do
jedné skupiny. |
Jak klíče object, tak klíče objects
se mouhou v sekci neomezeně opakovat. Každý objekt (nebo
objekty) jsou tak pomocí těchto klíčů zapsány na jednotlivých
řádcích.
Formát zápisu klíčů je následující:
object/objects = <behaviour>, <EIS type>, <address_list>
Jednotlivé části v řádku znamenají: Parametr | Význam |
---|
<behaviour> | jméno chování; jako jméno může být zapsáno některé
z předdefinovaných chování (transmitter)
nebo jakékoli chování definované pomocí klíče behaviour
v sekci behaviours. | <EIS type> | EIB datový typ objektu, číslo nebo klíčové slovo;
možné hodnoty jsou zapsány výše. | <address_list> | Skupinová adresa, seznam skupinových adres, případně
rozsah skupinových adres. |
Vše nejlépe demonstruje opět příklad:
[objects]
object = transmitter_with_status, switch, 3/1/9, 3/0/9
objects = transmitter, scaling, 3/3/0..3/3/13, 3/3/24
object = transmitter, 5, 4/0/0
...
První řádek definuje jeden objekt zapojený do dvou
skupin (3/1/9 a 3/0/9), podle
pravidel popsaných v sekci Chování ovladače má přitom první
skupinová adresa (3/1/9) výsadní postavení a
používá se pro zápis hodnot, oznamování přijetí nevyžádaných
dat a vyžádané čtení hodnot, pokud není pro vyžádané čtení
určena jiná skupinová adresa.
Druhý řádek definuje 15 objektů s adresami
3/3/0, 3/3/1, ..., 3/3/13 a 3/3/24.
Třetí řádek definuje opět samostatný objekt,
tentokrát s typem 5, tj. value,
objekt je zapojen jen do jediné skupiny.
Definice objektu s více skupinovými adresami (neboli
definice pomocí object =) umožňuje určit,
která z adres objektu má být použita, čte-li
ovladač data přímo z EIB sběrnice (vyžádané čtení). Volba
nemusí být u žádné ze skupin zapsána a pak se
pro vyžádané čtení použije první skupinová adresa
objektu. Výběr skupinové adresy pro vyžádané čtení se provede
snado zápisem písmene r či R
přímo (bez mezery) před skupinovou adresu. Mírně upravený
předchozí příklad takový zápis demonstruje:
[objects]
object = transmitter_with_status, switch, 3/1/9, r3/0/9
...
Neboli, v ukázce zapsaný objekt bude skupinovou adresu
3/1/9 používat pro zápis a pro
oznamování přijetí nevyžádaných dat; skupinovou adresu 3/0/9
pro vyžádané čtení a obě adresy pro příjem
dat z EIB sběrnice.
Sekce [blocks]
Sekce [blocks] obsahuje následující
klíče: Parametr | Význam |
---|
block | opakovaný klíč, který slouží ovladači pouze jako
informace, jaké všechny sekce [<block_name>]
s hromadnými definicemi objektů má v parametrickém
souboru hledat. Klíče odkazují na jiné sekce, které
teprve definují datové objekty. Příklad: [blocks]
block = Lights
block = Presence
block = Temperatures |
Sekce [<block_name>]
Sekce [<block_name>]
v parametrickém souboru slouží pro snadný zápis mnoha
datových objektů pouze zápisem jejich skupinové adresy. Jméno
sekce může být libovolné. Pro použití těchto sekcí existuje
pouze jediná podmínka: jméno sekce (neboli <block_name>)
musí být ovladači známo z některého klíče block
sekce blocks.
Sekce [<block_name>] obsahuje
následující klíče: Parametr | Význam |
---|
behaviour | chování datových objektů, které má platit pro všechny
datové objekty definované uvnitř této sekce. Jako jméno může
být zapsáno některé z předdefinovaných chování (transmitter)
nebo jakékoli chování definované pomocí klíče behaviour
v sekci behaviours. Parametr je
v sekci povinný. | type | EIS typ datových objektů této sekce (možné hodnoty
viz výše). Parament je v sekci povinný. | object | klíč, který slouží k definici jednoho
komunikačního objektu, objekt přitom lze zapojit do několika
skupin | objects | klíč, který slouží k definici více komunikačních
objektů najednou, objekty jsou přitom zapojeny každý do
jedné skupiny |
Parametry object a objects se zapisují podobně jako
v sekci Sekce [objects] s tím
rozdílem, že ani chování ani EIS typ se již v zápisu
klíče neuvádějí. Následující příklad ukazuje definici několika
sekcí <block_name>:
[Lights]
behaviour = transmitter
type = switch
objects = 10/5/20..10/6/20, 11/1/0..11/1/15, 1/1/5
object = 1/1/6, r1/1/7
[Presence]
behaviour = tracker
type = switch
objects = 2/0/1, 2/1/1, 2/2/1, 2/3/1, 2/4/1, 2/5/1
[Temperatures]
behaviour = tracker
type = eis5
objects = 3/4/128..3/4/143
objects = 3/5/64..3/5/95
|