| Timeout příjmu odpovědi | Jen pro seriovou linku. Má význam pouze pro zprávy typu Master. Čas (v milisekundách) po který bude ovladač čekat na odpověď při vyslání zprávy. Pokud do této doby nepřijde vyžádaná odpověď, přenos zprávy se ukončí (vyvolá se událost onEndOfTransfer s chybou 24 nebo 66). |
|---|---|
| Používat STX | určuje, zda daný protokol používá speciální znak pro začátek vysílání. Pokud je používání znaku začátku vysílání povoleno, je před uživatelem definovanými daty pro vysílání automaticky vysílán znak začátku vysílání. Naopak při každém příjmu dat se testuje, zda je na začátku znak začátku vysílání. V případě, že tomu tak není, komunikační zpráva končí s chybou. |
| Hodnota STX | určuje ASCII hodnotu znaku začátku vysílání (znak začátku vysílání má obvykle hodnotu 2). |
| Používat ETX | určuje, zda daný protokol používá speciální znak pro konec vysílání. Pokud je používání znaku konce vysílání povoleno, je za uživatelem definovanými daty pro vysílání automaticky vysílán znak konce vysílání. Naopak při každém příjmu dat se testuje, zda je na konci znak konce vysílání. V případě, že tomu tak není, komunikační zpráva končí s chybou. Použití znaku ETX optimalizuje rychlost příjmu v případě, že přijímáme zprávu proměnné délky (přijímáme do datového typu String). Systém okamžitě po příjmu znaku ETX považuje zprávu za ukončenou (popř. očekává již jen znaky kontrolní sumy) a rychle ukončí příjem místo, aby čekal na timeout mezi příjmem dvou znaků. |
| Hodnota ETX | určuje ASCII hodnotu znaku konce vysílání (znak konce vysílání má obvykle hodnotu 3). |
| Kontrolní suma | určuje způsob výpočtu kontrolní sumy: - žádná: komunikace bez kontrolní sumy. - XOR 1 byte:
je použita kontrolní suma typu XOR
(jedná se o tzv. vertikální paritu).
Má velikost 1 byte a matematicky je to XOR všech bytu, které jsou do kontroly zahrnuty.
- SUM 1 byte:
je použita kontrolní suma typu součet.
Má velikost 1 byte a matematicky je to aritmetický součet všech bytů,
které jsou do kotroly zahrnuty (ořezáno na 1 byte).
- SUM 2 byte: stejně jako "SUM 1 byte" ale má velikost 2 byte (ořezáno na 2 byte). - CRC 2 byte [polynomial x16+x12+x5+1]:
(Cyclical Redundancy Check) -
speciální kontrolní výpočet, který používá např. komunikace PmSBUS.
- CRC 2 byte [polynomial x16+x15+x2+1] (Modbus):
(Cyclical Redundancy Check) -
speciální kontrolní výpočet, který používá např. protokol Modbus.
- na konec zprávy (za ETX) - před ETX - Všechna data před kontrolní sumou - Všechna data před kontrolní sumou mimo první znak (mimo STX) - Všechna data před kontrolní sumou mimo poslední znak (mimo ETX) - Všechna data před kontrolní sumou mimo první a poslední znak (mimo STX a ETX) Výpočet kontrolní sumy lze provést také pomocí metody Pm.ArrayOper. |
| Používat záměnu znaků v přijatých datech |
lze povolit,
pokud v přijatých datech chceme zaměnit skutečně přijatý znak za nějaký jiný.
Nejčastěji se používá v případě, kdy chceme přijatá data ukládat do datového typu String
ale v přijatých datech se přitom může objevit znak 00hex (binární nula).
V tomto případě musíme znak 00hex zaměnit za jiný,
neboť znak 00hex se považuje za konec textu.
Viz popis dále.
Hodnota znaku se zadává decimálně, viz ASCII tabulka. |
| V 'Data-zaslání' je pouze HexaString | Pokud zatrženo,
pak se předpokládá že v záložce Data-zaslání je pouze jedna proměnná typu String.
Obsahem této proměnné je tzv. HexaString
pomocí něhož lze v typy String přenášet libovolné binární hodnoty následujícím způsobem:
Pokud se mají např. zaslat 4 bajty s binárními hodnotami 01 A0 00 B3 (hexadecimálně), pak do této proměnné typu String je nutno nastavit hodnotu "01A000B3" - tzn. text délky 2*4=8 znaků. Takto lze jednoduše zasílat data obsahující i binární nuly, které v hodnotě typu String nesmějí být. Pro přípravu vysílaných dat lze použít metodu Pm.TransformValue(240). |
|---|---|
| V 'Data-příjem' je pouze HexaString | Stejné jako předchozí konfigurátor, jen pro záložku Data-příjem. Pro zpracování přijatých dat lze pak použít metodu Pm.TransformValue(241). |
| Tato zpráva bude používat následující parametry (místo těch, které jsou definovány v parametrech protokolu) | (jen pro zprávy typu Master) Pokud zatrženo, pak se zobrazí stejné konfigurátory jako v parametrech protokolu, (zda používat znaky STX, ETX a zda používat kontrolní sumu). Tyto parametry po dobu přenosu této zprávy "přebijí" parametry protokolu. |
Poznámka: Části v hranatých závorkách jsou volitelné pomocí výše uvedených parametrů. Uživatel přitom v záložkách Data-zaslání a Data-příjem konfiguruje pouze část zde označenou jako "užitečná data".
Zjistí se délka přijaté zprávy a zjistí se délka požadovaných dat v objektech v záložkách Data-příjem. Přijatá zpráva se přiděli objektu, jehož požadovaná délka je rovna (nebo nejblíže větší) než délka přijaté zprávy. Pokud jsou dva objekty se stejnou délkou požadovaných dat, pak se přiděli prvnímu objektu - tento objekt se ale posune na konec a příště se pak stejná zpráva přidělí druhému objektu atd.
Pro položku typu String v záložce Data-příjem je nutno nastavit délku (aby ovladač při příjmu poznal na maximálně kolik znaků má čekat). To lze udělat dvěmi způsoby:
Pokud je položka typu String poslední položkou v záložce, přijímá se proměnný počet znaků až do výše uvedeným způsobem stanovené délky řetězce. Pokud položka typu String není poslední položkou v záložce, přijímá se do této položky počet znaků přesně odpovídající výše uvedeným způsobem stanovené délce řetězce.
Častý problém je přijem dat, kde se objevuje i binární hodnota 0 (dále 00hex). Přímý příjem takových dat do datového typu String nefunguje dobře, neboť String je vždy interpretován jako text ukončený znakem 00hex. Data se tehdy přijmou ale přístupné budou jen znaky do hodnoty 00hex. Jsou následující řešení: