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ánkaProduktyProgramový systém Control WebOvladače pro Control Web a OPC Server

Ovladač pro přístroje A.P.O. - ELMOS
 Ovladač je určen pro spojení systému Control Web s přístroji firmy A.P.O.-ELMOS přes sériové rozhraní RS-232 nebo RS-485.

Seznam sekcí:

Vlastnosti ovladače
Činnost ovladače
Parametry ovladače
Kanály ovladače
Procedury ovladače
Mapovací soubor ovladače a datové typy
Zpracování a stavy výjimek ovladače
Chybové kódy
Příklad použití ovladače

Vlastnosti ovladače

  • Ovladač umožňuje připojení jednoho nebo více přístrojů A.P.O. - ELMOS k systému Control Web.

  • Komunikace přes standardní sériové rozhraní počítače RS-232 resp. RS-485 s použitím vhodného převodníku.

  • Ovladač řídí komunikaci — pracuje v režimu master.

  • Čtení a zápis všech dostupných hodnot parametrů.

  • Komunikace se všemi typy přístrojů MRS 01, MRS 04 a APOSYS, popřípadě dalšími se shodným protokolem.

  • Při komunikaci s více regulátory je možno logicky odpojit regulátory, které jsou momentálně nedostupné.

Činnost ovladače

Ovladač slouží ke komunikaci systému Control Web s přístroji MRS 01, MRS 04 a APOSYS ve všech jejich modifikacích. Dále umožňuje komunikovat s novými přístroji, které mají shodný komunikační protokol s některým přístrojem z uvedených skupin. Pomocí ovladače je možno číst nebo zapisovat všechny dostupné hodnoty parametrů a aktuální data. Při komunikaci s přístroji A.P.O. - ELMOS ovladač používá následující komunikační služby:

  • Čtení identifikace přístroje

  • Čtení verze firmware

  • Čtení hodnoty

  • Zápis hodnoty

  • Čtení stavu přístroje

  • Čtení a zápis synchronizačních dat

  • Zápis dat do EEPROM

Ovladač interpretuje parametry a aktuální hodnoty přístrojů jako svoje kanály. Vždy se jedná o kanály číselného typu. Číselný rozsah je dán typem hodnoty v přístroji. Z hlediska aplikace mohou být všechny kanály definovány jako hodnoty typu real. Pokud některé kanály obsahují pouze hodnoty 0 a 1, je možno je v aplikaci definovat jako typ boolean. Ovladač se automaticky stará o převod na požadovaný typ na základě definice kanálů v souboru parametrů. Výjimku tvoří pouze kanály, ve kterých se vrací jméno výrobce, název a verze přístroje. Tyto kanály musí být typu string.

Počet kanálů ovladače není pevně definován a záleží pouze na tom, které hodnoty je třeba v aplikaci číst nebo zapisovat. Jednotlivé datové kanály ovladače, popřípadě celé jejich skupiny se konfigurují v souboru parametrů podle požadavků uživatele.

Existuje-li možnost připojení více zařízení — stanic na jedno sériové rozhraní (např. prostřednictvím sběrnice RS-485), ovladač se dá nakonfigurovat tak, aby při výskytu chyby komunikace s některým zařízením došlo k jeho logickému odpojení. Ovladač v tomto případě nebude se zařízením komunikovat. To zabezpečí plynulý běh zbytku aplikace. Po uplynutí nastaveného intervalu, popřípadě povelem z aplikace se dá znovu zažádat o spojení s právě odpojeným zařízením.

Parametry ovladače

Pomocí souboru parametrů je možno nastavit parametry komunikace a definovat kanály ovladače, popřípadě nastavit další doplňující parametry. Celý soubor parametrů je rozdělen do několika sekcí. Název sekce je uveden v hranatých závorkách. V sekci jsou uvedeny za jménem a znakem = jednotlivé parametry. Na jednom řádku může být definován jeden parametr.

Upozornění:

U názvů sekcí a parametrů je třeba dodržet správný zápis velkých a malých písmen.

Parametry pro základní nastavení ovladače — sekce [Settings]

Tato sekce obsahuje parametry, které slouží ke konfiguraci ovladače z hlediska komunikace. Způsob zápisu parametrů a jejich možné hodnoty:

[Settings]
ComDriver = <LinkDll> <ComId> 
NumRepeat = <N> 
Timeout = <N> 
InputBufferSize = <N> 
OutputBufferSize = <N> 
MaxExceptions = <N> 
Trace = none | log | xtrace | windows 
InterMessageDelay = <N> 
Readback = true | false
SrcAdr = <N>
GoodComReport = true | false
MaxPacketLength = <N>
FinalizeAfterEachBlock = true | false
DoNotCheck = true | false  

Základní syntaktické kategorie použité v konfiguraci ovladače:

ObjektPopis
LinkDll

řetězec obsahující jméno DLL knihovny linkového ovladače.

ComId

řetězec obsahující jméno komunikačního portu.

N

číselná hodnota. Může být zapsána dekadicky nebo hexadecimálně (ukončena znakem H).

Následuje výčet a popis jednotlivých parametrů:

ParametrVýznam
ComDriver

jméno knihovny ovladače sériového rozhraní (linkové vrstvy) a jméno komunikačního portu (COMx), který je nainstalován v prostředí Windows. Jméno standardního ovladače je 'CWCOMM.DLL'.

NumRepeat

počet opakování požadavků na komunikaci po výskytu chyby. Implicitní hodnota je 1.

Timeout

čas čekání na odezvu v milisekundách. Nedojde-li do této doby odpověď od zařízení, bude vrácena do aplikace chyba komunikace. Implicitní hodnota je 300 ms.

SrcAdr

vlastní adresa — adresa této stanice (počítače).

MaxPacketLength

maximální délka přenášeného bloku. Nastavuje se v bytech. Implicitní hodnota je 255.

InputBufferSize

velikost přijímacího komunikačního bufferu. Ovladač si zpravidla tuto hodnotu nastavuje sám. Implicitní hodnota je 255 byte.

OutputBufferSize

velikost vysílacího komunikačního bufferu. Ovladač si zpravidla tuto hodnotu nastavuje sám. Implicitní hodnota je 255 byte.

MaxExceptions

velikost fronty pro nezpracované výjimky od ovladače. Implicitní nastavení je 4 096.

Trace

zapnutí trasovacích výpisů komunikace. Je-li nutno sledovat komunikaci ovladače se zařízením, je možno zvolit tímto parametrem cíl trasovacích výpisů Povolené hodnoty nastavení parametru jsou popsány dále.

InterMessageDelay

minimální časová prodleva před následujícím požadavkem na komunikaci v milisekundách. Ovladač nezahájí další komunikaci dříve než uplyne nastavený čas od naposledy přijaté odpovědi zařízení. Implicitní hodnota se nastavuje podle komunikační rychlosti.

Readback

parametr slouží k automatickému filtrování zpráv, které se dostávají zpět na vstup přijímače při vysílání. To může nastávat například u některých starších typů převodníků RS-232/RS-485. Dále je možno tento parametr použít u zařízení, která přijatou zprávu vysílají nazpět (echo).

GoodComReport

je-li tento parametr nastaven na hodnotu true, bude se při obnovení komunikace po chybě generovat výjimka od ovladače. Stav výjimky bude 1 nebo 2 pro čtení resp. pro zápis a kód výjimky bude 0 (úspěšná operace).

FinalizeAfterEachBlock

pomocí tohoto parametru se zadává, jestli budou data předána do aplikace po každé komunikaci (hodnota parametru = true) nebo až po dokončení přenosu všech bloků, které se řeší v rámci daného časového kroku. Implicitní nastavení je false.

DoNotCheck

je-li nastaven na hodnotu true, eliminuje chybu ve firmware u některých regulátorů MRS 04, která způsobuje nesprávný výpočet kontrolního součtu při čtení stavu regulátoru.

Možné hodnoty nastavení parametru Trace jsou:

HodnotaVýznam
none

žádné trasovací výpisy

log

výpisy jsou nasměrovány do Okna zpráv záložky Ladicí výpisy systému Control Web

xtrace

výpisy jsou nasměrovány do souboru '\XTRACE.TXT'

windows

výpisy jsou nasměrovány do ladicího okna systému Windows

Upozornění:

Trasovací výpisy zpomalují činnost aplikace, popřípadě mohou vést ke zmenšování prostoru v paměti nebo na disku. Proto se nedoporučuje používat trasovací výpisy ve finální aplikaci.

Příklad parametrů v sekci [Settings]:

[Settings]
  ComDriver = CWCOMM.DLL COM1
  NumRepeat = 2
  Timeout = 250
  SrcAdr = 1
  MaxPacketLength = 260
  InputBufferSize = 522
  OutputBufferSize = 522
  DoNotCheck = true
  MaxExceptions = 1000
  Trace = none

Konfigurace kanálů ovladače — sekce [Channels]

Tato sekce definuje jednotlivé kanály nebo skupiny kanálů ovladače a jejich reprezentaci v paměti přístroje. Jednotlivé kanály resp. skupiny kanálů se definují jako bloky. Blok je definován intervalem kanálů, adresou přístroje, typem přístroje a jménem požadované funkce pro přenos dat. Funkce může vyžadovat doplňkové parametry pro bližší určení hodnoty. Tyto doplňkové parametry jsou pro přístroje MRS 04-1xxx a MRS 04-3xxx segment, index X, index Y a datový typ hodnoty. Pro ostatní přístroje jsou to čísla tabulek a jména datových struktur, které popisují typy dat v tabulkách a blocích se stavy přístrojů. Doplňkové parametry jsou závislé na dané funkci.

Dále je možné zadat v definici kanálů ovladače další rozšiřující parametry, které jsou nepovinné. V případě použití obousměrných kanálů je možno definovat parametr bidirect, který zamezí vzniku kolizí při současném čtení i zápisu stejného kanálu — pak jsou v ovladači vytvořeny dva zvláštní bloky, jeden pro čtení, druhý pro zápis. Další nepovinný parametr určuje prohození pořadí byte u typů zabírajících více než jeden byte v paměti přístroje. Každý blok může být dále opatřen vlastním identifikátorem. Jeho význam je popsán dále. Součástí definice bloku může být i komentář. Ten musí být uveden na samostatném řádku a musí začínat středníkem.

Z pohledu komunikace představuje jeden blok maximální celistvý úsek, který se dá přenést najednou v rámci jedné komunikace se stanicí. Použitý komunikační protokol resp. nižší komunikační vrstvy tuto hodnotu dále upravují. Bude-li definován delší blok než je možno přenést najednou a budou-li zadány požadavky na čtení nebo zápis všech kanálů bloku, rozpadne se komunikace na několik částí tak, aby byla všechna data přenesena.

Dále následuje popis zápisu parametrů a jejich možné hodnoty. Každé skupině (bloku) kanálů odpovídá v parametrickém souboru jeden řádek textu. V hranatých závorkách jsou uvedeny nepovinné nebo doplňující parametry:

[Channels]
  Block = <From>, <To>, <Con>, <Device>, <Function> [, Id:<ID>] [, Bidirect] [, Swapbytes]
  Block = ...
  ...

  Device = APOSYS02 | APOSYS10 | APOSYS20 | APOSYS30 | APOSYS40 |
           MRS01_1 | MRS04_1 | MRS04_3 | MRS04_4 | MRS04_5 | MRS04_D

  Function = IDENT | VERSION | STATUS <StructName> |
             VALUE, <Seg>, <Type> |
             MVALUE, <Seg>, <IX>, <IY>, <Type> |
             TC, <Table>, <StructName> |
             SYNC | SYNCREAD, <StructName> |
             EEPROM 

Význam jednotlivých parametrů:

ParametrVýznam
From

číslo prvního kanálu v bloku.

To

číslo posledního kanálu v bloku.

Con

identifikátor spojení (adresa přístroje).

Device

typ přístroje.

Function

kód komunikační služby přístroje s doplňujícími parametry.

Seg

číslo segmentu v regulátoru.

IX

Index X hodnoty z matice.

IY

Index Y hodnoty z matice.

Type

typ dat v oblasti.

StructName

jméno datové struktury, která popisuje typy dat v bloku. Jednotlivé datové struktury se definují v samostatné sekci [Structures].

Bidirect

příznak toho, že blok slouží jak pro zápis, tak pro čtení. Tento parametr je nepovinný.

SwapBytes

příznak, který určuje zda se prohazuje pořadí byte ve slovech v rámci definovaného bloku. Tento parametr je nepovinný. Tento parametr je automaticky nastaven u některých přístrojů, které mají byte ve slovech v pořadí MSB..LSB.

Id

Name je jméno identifikátoru bloku. Identifikátor slouží pro dynamickou změnu počáteční adresy (čísla prvku) definovaného bloku za běhu aplikace. Změna adresy se provádí pomocí procedur ovladače SetBlockId a SetBlockOffset. Délka identifikátoru může být max. 32 znaků. Tento parametr je nepovinný.

Možné hodnoty parametru Function jsou:

HodnotaVýznam
IDENT

Blok s tímto funkčním kódem může obsahovat tři nebo jeden řetězcový kanál. U přístrojů MRS 04-1x a MRS 04-3x obsahují tři kanály bloku název výrobce, název typu zařízení a název verze zařízení v pořadí, v jakém jsou zde uvedeny. U ostatních přístrojů blok obsahují pouze jeden kanál s názvem typu zařízení. Kanály tohoto bloku jsou určeny pouze pro čtení. Pro tento blok nejsou žádné doplňkové parametry.

VERSION

Blok obsahuje 1 řetězcový kanál, který obsahuje verzi firmware. Kanál tohoto bloku je určen pouze pro čtení. Pro tento blok nejsou žádné doplňkové parametry.

STATUS

Blok může obsahovat volitelný počet kanálů (podle typu přístroje), které obsahují stav přístroje. Jednotlivé typy kanálů bloku musí být popsány strukturou, která je definována v sekci [Structures] a je specifická pro každý typ přístroje. Počet kanálů bloku musí odpovídat počtu prvků ve struktuře. Velikost přijatého bloku dat musí souhlasit s velikostí struktury. Jméno struktury musí být uvedeno jako doplňkový parametr. Kanály tohoto bloku jsou určeny pouze pro čtení.

VALUE

Blok obsahuje definici kanálů, které zpřístupní jednoduchou hodnotu v regulátorech MRS 04-1xxx a MRS 04-3xxx. Platí pravidlo, že první kanál bloku obsahuje hodnotu prvku 0 (první okruh), druhý kanál hodnotu prvku 1 (druhý okruh) atd. Počet kanálů v bloku je tedy maximálně 4. Doplňkové parametry jsou číslo segmentu, ve kterém se hodnota nachází a číselný typ, který musí odpovídat dokumentaci k regulátoru.

MVALUE

Blok obsahuje definici kanálů, které zpřístupní jednu hodnotu z matice hodnot v regulátorech MRS 04-1xxx a MRS 04-3xxx. Opět platí pravidlo, že první kanál bloku obsahuje hodnotu prvního okruhu, druhý kanál hodnotu druhého okruhu atd. Počet kanálů v bloku je maximálně 4. Doplňkové parametry jsou číslo segmentu, ve kterém se hodnota nachází, index X, index Y a číselný typ podle dokumentace k regulátoru.

TC

Blok definuje kanály, které zpřístupní hodnoty z tabulek u přístrojů, které tuto funkci podporují. Dalším parametrem musí být číslo tabulky a jméno struktury, která popisuje datové typy u jednotlivých položek tabulky. Struktura musí být definována v sekci [Structures] a je specifická pro každou tabulku a každý typ přístroje. Počet kanálů bloku musí odpovídat počtu prvků ve struktuře.

SYNC

Blok obsahuje jediný kanál (boolean), který slouží k vyslání povelu pro synchronizovaný sběr dat. Pokud je adresa přístroje v definici bloku nastavena na hodnotu v intervalu 0 až 126, tak při zápisu do tohoto kanálu proběhne synchronizace pouze v přístroji, s touto adresou. Pokud je nastavena adresa na hodnotu 127, dojde k synchronizaci dat u všech přístrojů, které tuto funkci podporují. Ve druhém případě je třeba uvést jako parametr Device libovolný typ přístroje, který tuto funkci podporuje.

SYNCREAD

Podobně jako u služby (funkce) STATUS je i vtomto bloku volitelný počet kanálů. Kanály tohoto bloku slouží k načtení synchronizovaných hodnot, získaných předchozím zápisem do kanálu pro synchronizaci dat (služba SYNC). Také zde musí být typy kanálů bloku popsány strukturou, která je definována v sekci [Structures] a je specifická pro každý typ přístroje. Počet kanálů bloku musí odpovídat počtu prvků ve struktuře. Velikost přijatého bloku dat musí souhlasit s velikostí struktury.

EEPROM

Blok obsahuje jediný kanál (boolean), který slouží k vyslání povelu pro uložení aktuálních dat z paměti RAM dat do paměti EEPROM. To se provede zápisem hodnoty true do tohoto kanálu.

Možné hodnoty parametru Device jsou:

HodnotaVýznam
APOSYS02

přístroje APOSYS 02

APOSYS10

přístroje APOSYS 10

APOSYS20

přístroje APOSYS 20

APOSYS30

přístroje APOSYS 30

APOSYS40

přístroje APOSYS 40

MRS01_1

přístroje MRS 01

MRS04_1

přístroje MRS 04-1xxx

MRS04_3

přístroje MRS 04-3xxx

MRS04_4

přístroje MRS 04-4xxx

MRS04_5

přístroje MRS 04-5xxx

MRS04_D

přístroje MRS 04-DIN a MRS 04-DIN EKVI

Možné hodnoty parametru Type jsou:

HodnotaVýznam
uint8

8bitové číslo bez znaménka

int8

8bitové číslo se znaménkem

uint16

16bitové číslo bez znaménka

int16

16bitové číslo se znaménkem

uint32

32bitové číslo bez znaménka

int32

32bitové číslo se znaménkem

float32

32bitové desetinné číslo podle normy IEEE-754

Příklad parametrů v sekci [Channels]:

[Channels]
  Block  = 1100, 1102, 11, MRS04_1, IDENT
  Block  = 1200, 1203, 11, MRS04_1, VALUE,  3, float32
  Block  = 1204, 1207, 11, MRS04_1, VALUE,  4, float32
  Block  = 1208, 1211, 11, MRS04_1, VALUE,  1, float32
  Block  = 1300, 1303, 11, MRS04_1, VALUE,  0, float32
  Block  = 1400, 1419, 11, MRS04_1, STATUS, StatusMRS04_1
  Block  = 1500, 1503, 11, MRS04_1, VALUE,  3, float32
  Block  = 1504, 1507, 11, MRS04_1, VALUE,  4, float32
  Block  = 2100, 2100, 12, APOSYS30, IDENT
  Block  = 2101, 2101, 12, APOSYS30, VERSION
  Block  = 2400, 2401, 12, APOSYS30, STATUS, StatusAPOSYS30
  Block  = 2200, 2201, 12, APOSYS30, TC, 0, Table0
  Block  = 2202, 2206, 12, APOSYS30, TC, 1, Table1
  Block  = 2502, 2506, 12, APOSYS30, TC, 1, Table1
  Block  = 2207, 2208, 12, APOSYS30, TC, 2, Table2
  Block  = 2507, 2508, 12, APOSYS30, TC, 2, Table2
  Block  = 2209, 2209, 12, APOSYS30, TC, 5, Table5
  Block  = 2509, 2509, 12, APOSYS30, TC, 5, Table5

Definice struktur — sekce [Structures]

Tato sekce popisuje datové struktury, které jsou použity v sekci [Channels] v definici typů u bloků kanálů, které zpřístupňují stav přístrojů, data tabulek a synchronizovaná data (funkce STATUS, TC a SYNCREAD). Jinými slovy, jsou použity všude tam, kde se najednou přenášejí data různých typů. Každá struktura musí mít svůj jednoznačný identifikátor (jméno) a seznam jednotlivých jednoduchých typů všech položek tak, jak jsou přenášeny za sebou mezi přístrojem a počítačem resp. tak, jak jsou uloženy v paměti přístroje.

Následuje způsob zápisu struktur:

[Structures]
  <StructName> = <Type>, <Type>, ...
  <StructName> = ...
  ...

Význam paramterů pro definici struktur je následující:

ParametrVýznam
StructName

jméno datové struktury. Musí být jednoznačné a jeho maximální délka může být 32 znaků.

Type

datový typ položky struktury.

Možné datové typy v položce Type jsou:

HodnotaVýznam
uint8

8bitové číslo bez znaménka

int8

8bitové číslo se znaménkem

uint16

16bitové číslo bez znaménka

int16

16bitové číslo se znaménkem

uint32

32bitové číslo bez znaménka

int32

32bitové číslo se znaménkem

float32

32bitové desetinné číslo podle normy IEEE-754

Poznámka:

Pokud je za sebou více položek stejného typu, je možno použít zkrácený zápis, kdy se uvede jméno typu a v hrantých závorkách počet položek. Např. uint16[4]namísto uint16, uint16, uint16, uint16.

Příklad parametrů v sekci [Structures]:

[Structures]
  Status = float32,uint8
  Table0 = float32[2]
  Table1 = uint8[4], uint16
  Table2 = float32[2]
  Table3 = float32[3]
  Table4 = float32[2]
  Table5 = uint8
  Table6 = uint8
  Table7 = uint8

Parametry spojení s připojenými jednotkami — sekce [Unit_n]

Pokud ovladač komunikuje s více zařízeními, která jsou připojena na jedné sběrnici, může nastat případ, kdy je některé z nich nedostupné. To může být způsobeno buď poruchou zařízení, jeho vypnutím, či odpojením a pod. Jestliže tato situace nastane a aplikace požaduje po ovladači výměnu dat s tímto zařízením, může dojít ke zpomalení běhu celé aplikace vlivem čekání ovladače na odpověď od tohoto zařízení (po dobu definovanou parametrem Timeout). Aby se zabránilo těmto stavům, je ovladač vybaven možností nefungující zařízení logicky odpojit. To znamená, že se zařízení z pohledu ovladače uvede do vypnutého neboli odpojeného stavu. Nachází-li se zařízení v odpojeném stavu, požadavky aplikace na komunikaci s ním budou ovladačem ignorovány (budou ztraceny). Do odpojeného stavu může být zařízení uvedeno buď uživatelsky (povelem z aplikace) nebo automaticky po výskytu chyby komunikace (jestliže zařízení neodpovídá na požadavky od ovladače). Připojení zařízení, které je v odpojeném stavu se uskuteční automaticky po uplynutí předem definované doby (parametr ovladače) nebo opět uživatelsky — povelem z aplikace. Akce připojení nezpůsobí okamžitý požadavek na komunikaci, ale pouze nastaví pro zařízení stav, kdy s ním ovladač může opět komunikovat — zařízení přejde do stavu připojeno. Fyzicky se komunikace uskuteční až v důsledku následující žádosti aplikace na přenos dat. Je-li zařízení stále nedostupné, vznikne opět chyba komunikace a zařízení přejde znovu do stavu odpojeno.

Připojit nebo odpojit zařízení je možno prostřednictvím kanálů ovladače č. 28 a 29 nebo voláním procedur ovladače UnitConnect a UnitDisconnect.

Aby bylo možné využívat zmíněné vlastnosti ovladače, je třeba pro každé zařízení, ke kterému se má ovladač takto chovat, definovat zvláštní sekci v souboru parametrů. Název sekce je složen z klíčového slova Unit_ (se znakem podtržítko) a pořadového čísla sekce v souboru parametrů, např. Unit_1. Číslování sekcí musí začínat od jedničky a pokračovat v souvislé řadě. Číslo v názvu sekce nemá nic společného s adresou zařízení.

Způsob zápisu parametrů a jejich možné hodnoty:

[Unit_<N>]
  UnitAdr = <N>
  StatusChannel = <N>
  CheckTime = <N>

Následuje výčet a popis jednotlivých parametrů:

ParametrVýznam
UnitAdr

Adresa resp. identifikátor zařízení, které může být logicky odpojeno nebo připojeno. Tato adresa (identifikátor) musí souhlasit s identifikátorem spojení v definicích bloků kanálů, kde je odkaz na konkrétní připojené zařízení (fyzická adresa, IP adresa, jméno zařízení apod. ) .

StatusChannel

Číslo kanálu, pomocí kterého je možno zjistit stav zařízení. Typ kanálu je real. Je-li zařízení odpojeno kanál vrací hodnotu 0. V opačném případě vrací hodnotu 1.

CheckTime

Doba po které bude odpojené zařízení znovu připojeno. Udává se v sekundách.

Příklad zápisu parametrů:

[Unit_1]
  UnitAdr = 15
  StatusChannel = 1000
  CheckTime = 60

Parametry linkové komunikační vrstvy — sekce [comm]

Linková komunikační vrstva představuje prostředek pro přístup na standardní sériové rozhraní počítače. Tato vrstva umožňuje mimo jiné sdílet jedno sériové rozhraní více ovladači. V systému Control Web je linková komunikační vrstva reprezentována dvěma DLL knihovnami ('CWXLINK.DLL' a 'CWCOMM.DLL'). Pro její konfiguraci slouží v souborech parametrů ovladače sekce [comm]. V této sekci je možno buď přímo definovat parametry sériové komunikace nebo uvést odkaz (přesměrovaní) na samostatný konfigurační soubor s parametry sériové komunikace. V případě přesměrování obsahuje sekce [comm] pouze jediný parametr — file:

[comm]
  file=c:\cw\par\comm.par

Struktura parametrů linkové vrstvy:

[comm]
  file = <file>
  device = <comdevice>

Pokud je definován parametr device a existuje sekce jména comdevice, budou konfigurační parametry přednostně získány z této sekce, jinak budou použity parametry přímo ze sekce [comm].

Povinné parametry:

[comm]
  rx_frame_buffer = <N>
  tx_frame_buffer = <N>
  baudrate = <N>
  databits = <N>
  stopbits = one | 1 | oneandhalf | 1.5 | two | 2
  parity = none | no | even | mark | odd | space
  cts_flow = true | false
  dsr_flow = true | false
  dtr_control = disable | low | enable | high | handshake | toggle | toggle_neg
  rts_control = disable | low | enable | high | handshake | toggle | toggle_neg
  dsr_sense = low | high
  rx_interchar_timeout = <N>
  rx_char_timeout = <N> | 0
  rx_timeout = <N> | 0
  tx_char_timeout = <N> | 0
  tx_timeout = <N> | 0

Nepovinné parametry:

  priority = idle | low | below_normal | normal | above_normal | high | realtime
  mode = fullduplex | halfduplex
  pre_key = <N>
  hold_key = <N>
  rx_buffer = <N>
  tx_buffer = <N>
  tx_continue_xon_xoff = true | false
  tx_xon_xoff = true | false
  rx_xon_xoff = true | false
  xon_tresh = <N>
  xoff_tresh = <N>
  error_xlat = true | false
  discard_null = true | false
  xon_char = <N>
  xoff_char = <N>
  err_char = <N>
  eof_char = <N>
  evt_char = <N>

Syntaktické kategorie:

ObjektPopis
file

jméno souboru u parametru file

comdevice

název sekce u parametru device

N

číselná hodnota

Popis jednotlivých parametrů:

ParametrVýznam
file

soubor parametrů. Tento parametr je výhodné použít v případech, kdy více ovladačů používá jedinou linkovou vrstvu. Parametry lze potom udržovat v jediném souboru.

device

jméno zařízení, například COM1. Pokud je tento parametr uveden, bude použito zařízení tohoto jména. Pokud zároveň existuje sekce stejného jména, budou následující parametry získány z této sekce. Pokud sekce tohoto jména neexistuje, parametry jsou načteny z aktuální sekce [comm].

priority

priorita komunikačního threadu. Implicitní hodnota je normal.

mode

režim činnosti (obousměrná/jednosměrná komunikace). Implicitní hodnota je fullduplex.

pre_key

určuje prodlevu před zahájením přenosu. Stav signálů DTR/RTS, pokud pracují v toggle módu, je po dobu prodlevy již změněn na aktivní.

hold_key

určuje prodlevu po ukončení přenosu. Signály DTR/RTS, pokud pracují v toggle módu, zůstávají po tuto dobu prodlevy ještě aktivní.

rx_frame_buffer

velikost sekundárního bufferu pro vstup. Přípustný rozsah <96;65535>, parametr nemá implicitní hodnotu.

tx_frame_buffer

velikost sekundárního bufferu pro výstup. Přípustný rozsah <96;65535>, parametr nemá implicitní hodnotu.

rx_buffer

velikost bufferu pro vstup; rozsah <96;65535>, implicitně 4096.

tx_buffer

velikost bufferu pro výstup; rozsah <96;65535>, implicitně 4096.

baudrate

komunikační rychlost.

databits

počet data bitů.

stopbits

počet stop bitů.

parity

parita přenosu.

cts_flow

povoluje CTS řízení (handshake).

dsr_flow

povoluje DSR řízení (handshake).

dtr_control
rts_control

chování DTS a RTS, význam hodnot viz dále.

dsr_sense

určuje, je-li DSR aktivní v úrovni high nebo low (high = pozitivní handshake, low = negativní handshake).

tx_continue_xon_xoff

povoluje zastavení vysílání pokud je vstupní buffer plný a byl vyslán znak XOFF (xoff_char). Pokud je nastaveno true, vysílání pokračuje od okamžiku, kdy je ve vstupním bufferu nejméně xoff_tresh znaků volných a ovladač vyslal XOFF znak (xoff_char) pro přibrzdění příjmu. Pokud je nastaveno false, vysílání nepokračuje do okamžiku než je ve vstupním bufferu alespoň xon_tresh znaků volných a ovladač vyslal XON znak (xon_char) pro obnovení příjmu. Implicitní hodnota je false.

tx_xon_xoff

povoluje XON/XOFF (software) řízení pro výstup. Implicitní hodnota je false.

rx_xon_xoff

povoluje XON/XOFF (software) řízení pro vstup. Implicitní hodnota je false.

xon_tresh

minimální volná kapacita vstupního bufferu pro vyslání XON. Implicitní hodnota je 50 procent.

xoff_tresh

ovlivňuje maximální počet znaků ve vstupním bufferu pro vyslání XOFF. Maximální počet přípustných znaků lze spočítat odečtením uvedené hodnoty od velikosti vstupního bufferu (rx_buffer). Implicitní hodnota je 80 procent.

error_xlat

povoluje nahrazení znaků přijatých s chybou parity znakem err_char. Pokud je nastaveno true a kontrola parity povolena, dochází k nahrazení. Implicitní hodnota je false.

discard_null

povoluje odstranění prázdných (NULL) znaků. Pokud je nastaveno true, každý NULL znak je ihned po přijetí odstraněn ze vstupního bufferu. Implicitní hodnota je false.

xon_char

dekadický kód znaku XON.

xoff_char

dekadický kód znaku XOFF.

err_char

dekadický kód znaku, který je určen pro nahrazení znaků přijatých s chybou parity.

eof_char

dekadický kód znaku EOF.

evt_char

dekadický kód znaku EVT.

rx_interchar_timeout

meziznaková prodleva pro příjem v milisekundách.

rx_char_timeout

prodleva na jeden přijatý znak v milisekundách.

rx_timeout

konstantní prodleva pro příjem v milisekundách.

tx_char_timeout

prodleva na vyslání jednoho znaku v milisekundách.

tx_timeout

konstantní prodleva pro vysílání v milisekundách.

Hodnoty pro definici chování DTS a RTS (parametry rts_control a dtr_control):

HodnotaVýznam
disable

řízení vypnuto, trvale v úrovni low

low

stejně jako disable

enable

řízení vypnuto, trvale v úrovni high

high

stejně jako enable

handshake

pozitivní handshake

toggle

signál mění stav během přenosu dat na high (pozitivní klíč), jinak trvale v low

toggle_neg

signál mění stav během přenosu dat na low (negativní klíč), jinak trvale v high

Chování DTR/RTS v módech toggle/toggle_neg

Upozornění:

Parametry rx_interchar_timeout, rx_char_timeout a rx_timeout ovlivňují propustnost na vstupu. Zvýšením hodnoty rx_timeout lze dosáhnout zvýšení efektivity pro rozsáhlé přenosy dat (pozor na kapacitu vstupního bufferu!), ale dojde také k prodloužení prodlev při příjmu separátních bloků dat. Nulové hodnoty parametrů způsobí nastavení optimálních hodnot podle parametrů komunikace.

Parametry tx_char_timeout a tx_timeout ovlivňují propustnost na výstupu. Zvýšením hodnot lze docílit vyšší efektivity pro rozsáhlé přenosy dat, zvláště při povoleném handshake. Příliš malé hodnoty mohou způsobit problémy při vysílání, včetně potenciálně velkého počtu neúspěšných pokusů o vyslání. Nulové hodnoty parametrů způsobí nastavení optimálních hodnot podle parametrů komunikace.

Příklad parametrů v sekci [comm]:

[comm]
  baudrate = 9600
  databits = 8
  parity = even
  stopbits = 1
  rx_buffer = 512
  tx_buffer = 512
  rx_frame_buffer = 512
  tx_frame_buffer = 512
  cts_flow = disable
  dsr_flow = disable
  dtr_control = disable
  rts_control = disable
  dsr_sense = low
  rx_interchar_timeout = 0
  rx_char_timeout = 0
  rx_timeout = 0
  tx_char_timeout = 0
  tx_timeout = 0

Kanály ovladače

Ovladač může jednotlivé prvky různých datových oblastí připojených stanic interpretovat jako svoje kanály, což jsou číselné nebo logické hodnoty (bity). Definice kanálů se děje prostřednictvím souboru parametrů v sekci [Channels].

Vyhrazené kanály ovladače

Kromě uživatelsky definovaných kanálů, viz sekce [Channels], má ovladač skupinu kanálů, které jsou pevně definovány. Tyto kanály jsou vyhrazeny pro poskytování stavových informací o ovladači a pro řízení jeho činnosti. Jsou mapovány do intervalu 1 až 99. Proto kanály s těmito čísly nepoužívejte v definici bloků pro komunikaci:

č. 1 (real input)

stav výjimky od ovladače

č. 2 (boolean output)

povolení výjimky od ovladače

č. 3 (real input)

počet zpracovaných výjimek od ovladače

č. 4 (real input)

počet nezpracovaných výjimek, které má ovladač ve frontě

č. 5 (real input)

adresa stanice, která způsobila výjimku

č. 6 (real input)

chybový kód

č. 7 (string input)

popis chyby

č. 8 (real input)

číslo prvního kanálu bloku, při jehož přenosu vznikla chyba

č. 9 (real input)

číslo posledního kanálu bloku, při jehož přenosu vznikla chyba

č. 10 (real input), kód funkce, při jejímž přenosu vznikla chyba:
HodnotaVýznam
1

IDENT — přístroje MRS04_1, MRS04_3.

2

IDENT — přístroje APOSYS02, APOSYS10, APOSYS20, APOSYS30, APOSYS40, MRS01_1, MRS04_4, MRS04_5, MRS04_D.

3

VALUE — přístroje MRS04_1, MRS04_3.

4

MVALUE — přístroje MRS04_1, MRS04_3.

5

STATUS — přístroje MRS04_1, MRS04_3.

6

STATUS — přístroje APOSYS02, APOSYS10, APOSYS20, APOSYS30, APOSYS40, MRS01_1, MRS04_4, MRS04_5, MRS04_D.

7

VERSION — přístroje APOSYS02, APOSYS10, APOSYS20, APOSYS30, APOSYS40, MRS01_1, MRS04_4, MRS04_5, MRS04_D.

8

TC — přístroje APOSYS30, APOSYS40.

9

TC — přístroje APOSYS02, APOSYS20, MRS04_4, MRS04_5, MRS04_D.

10

TC — přístroje APOSYS10, MRS01_1.

11

SYNC — přístroje APOSYS02, APOSYS10, APOSYS20, MRS01_1, MRS04_4, MRS04_5, MRS04_D.

12

SYNCREAD — přístroje APOSYS02, APOSYS10, APOSYS20, MRS01_1, MRS04_4, MRS04_5, MRS04_D.

13

EEPROM — přístroje APOSYS10, APOSYS20, MRS01_1, MRS04_4, MRS04_5, MRS04_D.

č. 11 (real input)

počet chyb čtení

č. 12 (boolean output)

vynulování počítadla chyb čtení

č. 13 (real input)

počet chyb zápisu

č. 14 (boolean output)

vynulování počítadla chyb zápisu

č. 15 (real input)

celkový počet opakování požadavků na komunikaci

č. 28 (string/real output)

logické připojení zařízení. Zápisem adresy resp. identifikátoru zařízení do tohoto kanálu dojde k jeho připojení.

č. 29 (string/real output)

logické odpojení zařízení. Zápisem adresy resp. identifikátoru zařízení do tohoto kanálu dojde k jeho odpojení.

Automatická konverze typů

Při definování kanálů ovladače je nutno kromě zápisu bloků v souboru parametrů vytvořit také soubor '*.DMF', který obsahuje seznam kanálů a jejich typů pro aplikaci. Ovladač nevyžaduje striktní dodržování stejných typů v definici bloků a souboru '*.DMF'. Pouze doporučujeme aby kanály typu boolean (logické) v souboru '*.DMF' měly své protějšky v blocích v souboru '*.PAR' jako některý z bitových typů. Ostatní číselné typy se mohou kombinovat. Např. v souboru '*.DMF' mohou být všechny číselné kanály typu real a v blocích ovladače mohou být uvedeny třeba jako int16.

Příklad automatické konverze typu int16 na real.

Procedury ovladače

Aplikace může volat ovladači určité procedury, pomocí nichž je možno řídit chování ovladače nebo získat důležité informace. To se děje prostřednictvím systémové procedury:

core.DriverQueryProc( DriverName : string; Param1 : any; &Param2 : any )

Její parametry mají následující význam:

ParametrVýznam
DriverName

symbolické jméno ovladače, definované v aplikaci,

Param1

slouží k zadání povelu (jména procedury ovladače),

Param2

je použit jako parametr procedury nebo návratová hodnota procedury.

DriverName a Param1 se zadávají jako textové řetězce. Param2 je různého typu podle významu procedury. Některé procedury, sloužící k nastavení parametrů, mohou skončit chybou. Výsledek naposled vykonané procedury je možno získat voláním procedury GetResult.

Přehled a význam jednotlivých procedur ovladače (parametr Param1)

GetResult

Vrátí výsledek naposledy volané procedury ovladače. Výsledkem je některý z chybových kódů, popsaných v kapitole Chybové kódy. Tato procedura by se měla volat po volání těch procedur, u kterých může nastat chyba.

GetVersion

Vrátí v Param2 řetězec popisující jméno a verzi ovladače.

GetMajorVersion

Vrátí vyšší slovo verze produktu Control Web.

GetMinorVersion

Vrátí nižší slovo verze produktu Control Web.

GetAPIMajorVersion

Vrátí vyšší slovo verze API produktu Control Web.

GetAPIMinorVersion

Vrátí nižší slovo verze API produktu Control Web.

EnableException

Voláním této procedury se povolí další výjimka od ovladače.

GetErrorCode

Vrátí číslo chyby právě zpracovávané výjimky ovladače.

GetErrorString

Vrátí popis chyby právě zpracovávané výjimky ovladače.

GetExcStatus

Vrátí kód právě zpracovávané výjimky ovladače.

SetTraceOutput

Nastaví cíl trasovacích výpisů komunikace. Parametr udává cíl výpisů:

HodnotaVýznam
0

žádné trasovací výpisy

1

výpisy jsou nasměrovány do ladicího okna systému Windows

2

výpisy jsou nasměrovány do Okna zpráv záložky Ladicí výpisy systému Control Web

3

výpisy jsou nasměrovány do souboru '\XTRACE.TXT'

SetDevice

Nastaví jméno COM portu pro otevření pomocí procedury OpenCom.

GetDevice

Vrátí aktuální jméno COM portu (nemusí se shodovat se jménem nastaveným pomocí procedury SetDevice).

OpenCom

Otevře COM port definovaný procedurou SetDevice a vrací popis chyby.

CloseCom

Zavře aktuální COM port.

IsOpen

Vrátí aktuální stav COM portu — otevřen/zavřen.

SetComParams

Nastaví parametry COM portu. Parametr je ve tvaru: 'baud=n, data=n, parity=n, stop=n'.

GetComParams

Vrátí aktuální parametry COM portu.

SetBaudRate

Nastaví komunikační rychlost, např. 19200.

GetBaudRate

Vrátí aktuální komunikační rychlost.

SetDataBits

Nastaví počet datových bitů komunikace. Možné hodnoty jsou 5, 6, 7, 8.

GetDataBits

Vrátí počet datových bitů.

SetParity

Nastaví paritu přenosu:

HodnotaVýznam
0 (none)

bez parity

1 (odd)

lichá

2 (even)

sudá

3 (mark)

značka

4 (space)

mezera

GetParity

Vrátí aktuální paritu přenosu. Hodnoty jsou stejné jako u procedury SetParity.

SetStopBits

Nastaví počet stop bitů komunikace:

HodnotaVýznam
0

1 stop bit

1

1.5 stop bitu

2

2 stop bity

GetStopBits

Vrátí aktuální počet stop bitů komunikace.

SetTimeout

Nastaví timeout komunikace v milisekundách. Je to doba, kterou ovladač čeká po odeslání požadavku na odpověď od zařízení. Pokud odpověď do této doby nepřijde, vznikne chyba timeout.

GetTimeout

Vrátí aktuální hodnotu timeoutu komunikace.

SetBlockId

Nastaví identifikátor aktuálního bloku kanálů pro změnu adresy (offsetu) v paměti PLC. Parametr je typu string a předává se v něm identifikátor bloku (maximálně 32 znaků). Tento identifikátor musí být shodný s identifikátorem v definici bloků v souboru parametrů.

SetBlockOffset

Nastavuje adresu (offset) začátku bloku v paměti PLC. Blok je určen svým identifikátorem v souboru parametrů a vybrán pomocí procedury SetBlockId. Parametr udává adresu a může být libovolného číselného typu.

Upozornění:

Rozsah parametru se nehlídá.

UnitConnect

Připojí odpojené zařízení. Parametr udává adresu zařízení.

UnitDisconnect

Odpojí připojené zařízení. Parametr udává adresu zařízení.

Mapovací soubor ovladače a datové typy

Tento soubor obsahuje typy kanálů ovladače. Protože ovladač má jak pevnou množinu kanálů, tak proměnnou množinu kanálů, měl by tento soubor obsahovat vždy shodnou definici pro vyhražené kanály a různou (podle požadavků aplikace) pro kanály definované uživatelsky v souboru parametrů v sekci [Channels].

Typ dat Typ kanálu Popis
uint32 číslo 32bitová hodnota bez znaménka — 4 byte
int32 číslo 32bitová hodnota se znaménkem — 4 byte
float32 číslo 32bitová real hodnota — 4 byte
 
uint16 číslo 16bitová hodnota bez znaménka — 2 byte
int16 číslo 16bitová hodnota se znaménkem — 2 byte
 
uint8 číslo 8bitová hodnota bez znaménka — 1 byte
int8 číslo 8bitová hodnota se znaménkem — 1 byte

Přehled datových typů ovladače

Zpracování a stavy výjimek ovladače

Při výskytu chyby komunikace vznikne událost, kterou ovladač může přenést jako výjimku do aplikace. V aplikaci musí být definován objekt (virtuální přístroj), který má definován parametr driver_exception se symbolickým jménem tohoto ovladače. V tomto případě je takový přístroj výjimkou aktivován. V rámci jeho činnosti je třeba zapsat na kanál č. 2 hodnotu true nebo zavolat proceduru ovladače EnableException. Tím se povolí vyvolání další výjimky, jakmile nastane nebo pokud není fronta výjimek prázdná. Přečtením kanálu č. 1 je možno zjistit stav výjimky. Při použití kanálu č. 2 je třeba pamatovat na to, aby měl virtuální přístroj nastaven parametr send_same_data. Pokud aplikace výjimky nezpracovává, přidávají se do fronty, jejíž maximální velikost je určena parametrem MaxExceptions v sekci [Settings].

Kódy pro stavy výjimek ovladače

HodnotaVýznam
0

žádná výjimka od ovladače

1

výjimka signalizuje chybu při čtení dat. Její kód a popis je možno získat voláním procedury ovladače GetErrorCode nebo čtením kanálu č. 6.

2

výjimka signalizuje chybu při zápisu dat. Její kód a popis je možno získat voláním procedury ovladače GetErrorCode nebo čtením kanálu č. 6.

3

změna dat v zařízení. U asynchronních komunikací nebo v případě, že ovladač vystupuje jako podřízená stanice (slave), se takto signalizuje změna dat v zařízení.

4

chyba procedury ovladače. Vykonání některých procedur ovladače může zabrat poměrně dlouhou dobu. Proto běží zpravidla ve zvláštním threadu, aby nezdržovaly běh aplikace. Pokud procedura skončí chybou, způsobí generování výjimky s tímto kódem.

Chybové kódy

Ovladač generuje následující chybové kódy. Tyto kódy jsou k dispozici na kanále č. 6. Kód a popis chyby je také možno získat voláním procedur ovladače GetErrorCode a GetErrorString. Při vzniku chyby se současně vypíše hlášení do Okna zpráv systému Control Web.

Kódy definované systémem Control Web:

HodnotaVýznam
0

úspěšná operace

1

chyba timeoutu

2

neplatná hodnota

3

neexistující kanál

Obecné chybové kódy ovladače:

HodnotaVýznam
1000

vnitřní chyba

1001

chyba kontrolního součtu

1002

vstupní komunikační buffer je plný

1003

nesprávná adresa stanice

1004

nesprávný kód povelu (funkce)

1005

přijatá data mají nesprávnou délku

1006

chyba potvrzení

1007

nesprávná odpověď

1008

chyba otevření COM portu

1009

chyba zavření COM portu

1010

chyba nastavení zařízení

1011

chyba nastavení COM parametrů

1012

chyba nastavení rychlosti

1013

chyba nastavení délky slova

1014

chyba nastavení parity

1015

chyba nastavení stop bitů

1016

chyba nastavení timeoutu

1017

chyba zápisu bloku

1018

výstupní fronta je plná

1019

vstupní fronta je plná

1020

nesprávný parametr procedury

1021

data nejsou k dispozici

1022

neznámá procedura ovladače

1023

nesprávný identifikátor bloku

1024

neplatný offset bloku

1025

zařízení není připojeno

1026

datový element je určen pouze pro čtení

1027

neplatný číselný rozsah datového elementu nebo nesprávný formát dat v textovém tvaru

1028

neplatné záhlaví rámce

Příklad použití ovladače

Součástí instalace je několik příkladů použití ovladače. Tyto příklady naleznete v adresáři 'EXAMPLES\APOELMOS'. Součástí příkladů jsou také soubory '*.DMF' a '*.PAR'. Před spuštěním příkladů si nejprve tyto soubory upravte podle aktuální konfigurace.

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