ChnEB JEDNOTKA DEFINUJÍCÍ KOMUNIKAČNÍ PROTOKOL E-BISYNC. Příručka uživatele a programátora

Podobné dokumenty
ChnModB JEDNOTKA DEFINUJÍCÍ KOMUNIKAČNÍ PROTOKOL MOD-BUS. Příručka uživatele a programátora

PCKEYB JEDNOTKA PRO OBSLUHU KLÁVESNICE TYPU PC AT. Příručka uživatele a programátora

udspt10r JEDNOTKA IMPLEMENTUJÍCÍ DISPLEJ VZDÁLENÉ VARIANTY TERMINÁLU TERM10 Příručka uživatele a programátora

uioflex JEDNOTKA PRO KONFIGURACI DESKY IOFLEX01 Příručka uživatele a programátora

LZ77 KNIHOVNA PRO KOMPRESI A DEKOMPRESI DAT POMOCÍ ALGORITMU LZ77. Příručka uživatele a programátora

umenugr JEDNOTKA PRO VYTVÁŘENÍ UŽIVATELSKÝCH GRAFICKÝCH MENU Příručka uživatele a programátora

usimt03 JEDNOTKA IMPLEMENTUJÍCÍ OBJEKTY PRO SIMULACI TERMINÁLU TERM03 NA PC Příručka uživatele a programátora

uioct01 JEDNOTKA PRO MĚŘENÍ FREKVENCE (OTÁČEK) DESKOU IOCT01 Příručka uživatele a programátora

ucomm JEDNOTKA ZPROSTŘEDKOVÁVAJÍCÍ SLUŽBY BIOSU KITV40 PRO SÉRIOVOU KOMUNIKACI Příručka uživatele a programátora

usimt03r JEDNOTKA PRO SIMULACI VZDÁLENÉ VARIANTY TERMINÁLU TERM03 NA POČÍTAČI PC Příručka uživatele a programátora

uioadda1 JEDNOTKA PRO OVLÁDÁNÍ DESEK IOADDA01, IOADDA02 A IODA01 Příručka uživatele a programátora

usimt10 JEDNOTKA IMPLEMENTUJÍCÍ OBJEKTY PRO SIMULACI TERMINÁLU TERM10 NA PC Příručka uživatele a programátora

Bitmaps SPRÁVCE BITMAP A POMOCNÉ FUNKCE PRO PRÁCI S BITMAPAMI. Příručka uživatele a programátora

upct01 SIMULÁTOR TERMINÁLU TERM01 NA POČÍTAČI PC Příručka uživatele a programátora

usimt01 JEDNOTKA IMPLEMENTUJÍCÍ OBJEKTY PRO SIMULACI TERMINÁLU TERM01 NA PC Příručka uživatele a programátora

DiskIO JEDNOTKA PRO PRÁCI S RAM, ROM A FLASH DISKY. Příručka uživatele a programátora

uterm03r JEDNOTKA IMPLEMETUJÍCÍ VZDÁLENÝ TERMINÁL TERM03 Příručka uživatele a programátora

TEDrv OVLADAČE KLÁVESNICE, MYŠI A DISPLEJE EMULÁTORU TERMINÁLU PRO MS WINDOWS. Příručka uživatele a programátora

uflx2pos JEDNOTKA PRO PRÁCI S INKREMENTÁLNÍMI ČIDLY V DESCE IOFLEX02 Příručka uživatele a programátora

TKeypad KNIHOVNY DEFINIC KLÁVESNIC PRO TERMINÁLY TOUCH. Příručka uživatele a programátora

utermchr JEDNOTKA PRO PRÁCI SE ZNAKOVÝM TERMINÁLEM Příručka uživatele a programátora

uaterm JEDNOTKA PRO PRÁCI S ABSTRAKTNÍM TERMINÁLEM Příručka uživatele a programátora

ChnMonitor PROGRAM PRO MONITOROVÁNÍ KOMUNIKAČNÍ LINKY S VOLBOU PROTOKOLŮ I FYZICKÉHO PŘENOSU. Příručka uživatele a programátora

KitKing POPIS VIZUALIZAČNÍCH KNIHOVEN PRO ŘÍDICÍ SYSTÉM KIT. Příručka uživatele a programátora

Programovací jazyk Pascal

NumToStr JEDNOTKA PRO PŘEVODY ČÍSEL, DATUMU A ČASU A JINÝCH DATOVÝCH STRUKTUR NA ŘETĚZCE A ZPĚT. Příručka uživatele a programátora

Pascal. Katedra aplikované kybernetiky. Ing. Miroslav Vavroušek. Verze 7

urtotemp JEDNOTKA PRO PŘEVODY ODPORU ČIDLA NA TEPLOTU Příručka uživatele a programátora

Canon Controller. Komunikační protokol. Řídicí jednotka k objektivům Canon EF/EF-S

Knihovna EpsnetLib TXV první vydání září 2012 změny vyhrazeny

Komunikační protokol snímače rel. vlhkosti SV-xxx-x

COUDP KNIHOVNA PROTOKOLU UDP. Příručka uživatele a programátora

1.1 Struktura programu v Pascalu Vstup a výstup Operátory a některé matematické funkce 5

Změny knihoven ZMĚNY NOVÝCH KNIHOVEN PRO PROSTŘEDÍ BP. Příručka uživatele a programátora

LdrLib KNIHOVNY PRO TVORBU ZAVADĚČE (LOADERU) ŘÍDICÍCH APLIKACÍ. Příručka uživatele a programátora

ChnMonitor PROGRAM PRO MONITOROVÁNÍ KOMUNIKAČNÍ LINKY S VOLBOU PROTOKOLŮ I FYZICKÉHO PŘENOSU. Příručka uživatele a programátora

Obsah. Popis funkcí. RS485/MODBUS-RTU ver Komunikace s převodníkem probíhá na principu MASTER - SLAVE. Protokol MODBUS mát tuto strukturu:

Knihovna DataBoxLib TXV první vydání prosinec 2010 změny vyhrazeny

Software pro grafické terminály TERM10 a TERM03

NAPOJENÍ ZAŘÍZENÍ S KOMUNIKACÍ BELIMO MP-BUS NA SÍŤ AUTOMATŮ MICROPEL

G240x128 a G128x64 JEDNOTKY IMPLEMENTUJÍCÍ GRAFICKÉ OPERACE VE VIDEOPAMĚTI. Příručka uživatele a programátora

Knihovna DMX512lib Komunikace protokolem DMX512. TXV prvé vydání srpen 2010 změny vyhrazeny

PES lib (C + PASCAL) KNIHOVNY KOMUNIKAÈNÍCH FUNKCÍ 03/ PESlib KOMUNIKAČNÍ KNIHOVNY C, PASCAL 03/ stran 1

Programovací jazyk. - norma PASCAL (1974) - implementace Turbo Pascal, Borland Pascal FreePascal Object Pascal (Delphi)

Uživatelský manuál. KNXgw232

PROTOKOL RDS. Dotaz na stav stanice " STAV CNC Informace o stavu CNC a radiové stanice FORMÁT JEDNOTLIVÝCH ZPRÁV

BASPELIN CPM. Popis komunikačního protokolu verze EQ22 CPM EQ22 KOMPR

Nastavení konstant regulátoru PID

Činnost: 1) Vyhodnotí se výraz E. 2) Jeho hodnota se uloží do proměnné V.

NPRG030 Programování I, 2017/18 1 / :22:16

Popis funkcí a parametrů programu. Reliance External communicator. Verze 1.5.0

umenuchr JEDNOTKA PRO VYTVÁŘENÍ ZNAKOVÝCH UŽIVATELSKÝCH MENU Příručka uživatele a programátora

Aplikovaná informatika. Podklady předmětu Aplikovaná informatika pro akademický rok 2006/2007 Radim Farana. Obsah. Obsah předmětu

Kódování signálu. Problémy při návrhu linkové úrovně. Úvod do počítačových sítí. Linková úroveň

RS485/MODBUS-RTU ver. 4 s rozšířením pro R24

SNÍMAČOVÝ EXPANDÉR TB8.1x2 RS232 - ASCII

Čtvrtek 8. prosince. Pascal - opakování základů. Struktura programu:

Sada 1 - Základy programování

SPINEL. Komunikační protokol. Obecný popis. Verze 1.0

BASPELIN CPM. Popis komunikačního protokolu verze EQ3 CPM EQ3 KOMPR

- znakové konstanty v apostrofech, např. a, +, (znak mezera) - proměnná zabírá 1 byte, obsahuje kód příslušného znaku

Protokol DF1 pro MORSE Allen-Bradley

Uživatelský manuál. KNX232e / KNX232e1k

Sada 1 - Základy programování

Konstruktory a destruktory

Algoritmizace prostorových úloh

PROMĚNNÉ, KONSTANTY A DATOVÉ TYPY TEORIE DATUM VYTVOŘENÍ: KLÍČOVÁ AKTIVITA: 02 PROGRAMOVÁNÍ 2. ROČNÍK (PRG2) HODINOVÁ DOTACE: 1

Vyučovací hodina. 1vyučovací hodina: 2vyučovací hodiny: Opakování z minulé hodiny. Procvičení nové látky

Protokol S-BUS pro MORSE Popis protokolu

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

2) Napište algoritmus pro vložení položky na konec dvousměrného seznamu. 3) Napište algoritmus pro vyhledání položky v binárním stromu.

MQL4 COURSE. By Coders guru -3 DATA TYPES. Doufám, že předchozí lekce SYNTAX se vám líbila. V té jsme se pokoušeli zodpovědět:

Tematický celek Proměnné. Proměnné slouží k dočasnému uchovávání hodnot během provádění aplikace Deklarace proměnných

Knihovna XmlLib TXV druhé vydání říjen 2012 změny vyhrazeny

Více o konstruktorech a destruktorech

CODEWARE. Nastavovací příručka. pro snímače CipherLab 1500/1560/1562

type Obdelnik = array [1..3, 1..4] of integer; var M: Obdelnik;

ROUTPRO FX Programovatelný převodník RS485 na RS232. Katalogový list. prosinec Komunikační převodníky

Obsah. Předmluva 13 Zpětná vazba od čtenářů 14 Zdrojové kódy ke knize 15 Errata 15

VYSOKÉ UČENÍ TECHNICKÉ V BRNĚ Fakulta informačních technologií

Knihovna MeteoGiom3000Lib TXV první vydání Prosinec 2010 změny vyhrazeny

Uživatelský manuál. KNXgal. řízení zabezpečovacích ústředen. Galaxy ze sběrnice KNX. napájeno ze sběrnice KNX. indikace komunikace na KNX

Termíny a definice TERMÍNY A DEFINICE POUŽÍVANÉ V MANUÁLECH FIRMY SOFCON. Příručka uživatele a programátora

Datové typy a struktury

Komunikační protokol

Object Pascal je přísně typový procedurální jazyk, který umožňuje jak strukturované, tak objektově orientované programování.

Formát rámce MODBUS pro MORSE

SML 33 / SMM 33 / SMN 33

Nastavovací příručka pro snímače CCD

dovolují dělení velkých úloh na menší = dekompozice

Telemetrický komunikační protokol JETI

Základy programovacího jazyka Turbo Pascal

NPRG030 Programování I, 2010/11

Bitové operátory a bitová pole. Úvod do programování 2 Tomáš Kühr

7. OBJEKTOVĚ ORIENTOVANÉ PROGRAMOVÁNÍ

Algoritmizace prostorových úloh

Formátová specifikace má tvar (některé sekce nemají smysl pro načítání) %

NPRG030 Programování I, 2016/17 1 / :58:13

Objektové programování

Komunikace AMREG s řídicími systémy AMiT (DB-Net)

Transkript:

JEDNOTKA DEFINUJÍCÍ KOMUNIKAČNÍ PROTOKOL E-BISYNC Příručka uživatele a programátora SofCon spol. s r.o. Střešovická 49 162 00 Praha 6 tel/fax: +420 220 180 454 E-mail: sofcon@sofcon.cz www: http://www.sofcon.cz Verze dokumentu 1.20

Informace v tomto dokumentu byly pečlivě zkontrolovány a SofCon věří, že jsou spolehlivé, přesto SofCon nenese odpovědnost za případné nepřesnosti nebo nesprávnosti zde uvedených informací. SofCon negarantuje bezchybnost tohoto dokumentu ani programového vybavení, které je v tomto dokumentu popsané. Uživatel přebírá informace z tohoto dokumentu a odpovídající programové vybavení ve stavu, jak byly vytvořeny a sám je povinen provést validaci bezchybnosti produktu, který s použitím zde popsaného programového vybavení vytvořil. SofCon si vyhrazuje právo změny obsahu tohoto dokumentu bez předchozího oznámení a nenese žádnou odpovědnost za důsledky, které z toho mohou vyplynout pro uživatele. Datum vydání: 05.04.2004 Datum posledního uložení dokumentu: 05.04.2004 (Datum vydání a posledního uložení dokumentu musí být stejné) Upozornění: V dokumentu použité názvy výrobků, firem apod. mohou být ochrannými známkami nebo registrovanými ochrannými známkami příslušných vlastníků. Copyright 2003, SofCon spol. s r.o., Adam Wild

Obsah : 1. O dokumentu 5 1.1. Revize dokumentu 5 1.2. Účel dokumentu 5 1.3. Rozsah platnosti 5 1.4. Související dokumenty 5 2. Termíny a definice 5 3. Úvod 6 4. Konstanty a typy 6 4.1. Konstanty řídících znaků protokolu 7 4.2. Konstanty výsledků přijímacího automatu 7 4.3. Struktury přijímacích a vysílacích bufferů 7 5. Objekty 8 5.1. t 8 5.1.1. Položky 8 5.1.2. Metody 9 5.1.2.1. Init konstruktor 9 5.1.2.2. ChInitParam konstruktor 9 5.1.2.3. Done destruktor 9 5.1.2.4. ChSetOneParam procedura 9 5.1.2.5. ChGetParam funkce 10 5.1.2.6. ChConnect procedura 10 5.1.2.7. ChDisConnect procedura 10 5.1.2.8. ChSend procedura 10 5.1.2.9. ChReceiveReady funkce 10 5.1.2.10. ChReceive procedura 11 5.1.2.11. ChReceiveFlush procedura 11 5.1.2.12. ChGetNode procedura 11 5.1.2.13. ChReceiveTick procedura 11 5.2. tadd 11 5.2.1. Metody 11 5.2.1.1. ChInit funkce 11 6. Popis protokolu E-BISYNC 12 6.1. Struktura zpráv a odpovědí pro čtení dat 12 6.2. Struktura zpráv a odpovědí pro zápis dat 13 7. Příklad 14

1. O dokumentu 1.1. Revize dokumentu Verze dokumentu Verze SW Autor Datum vydání 1.00 1.XX Wi První vydání. Popis změn 1.10 4.XX Tu 22.05.2003 Úprava dokumentu dle ISO9000. 1.20 4.XX Wil 05.04.2004 Přidány konstanty res_errframe, res_errlen. 1.2. Účel dokumentu Tento dokument slouží jako popis jednotky definující komunikační protokol E YNC. 1.3. Rozsah platnosti Určen pro programátory a uživatele programového vybavení SofCon. 1.4. Související dokumenty Pro čtení tohoto dokumentu je potřeba seznámit se s manuálem ChnVirt popisujícím základní rodičovský prvek pro tvorbu komunikačních objektů. Pro zabezpečení dat protokolu se používá algoritmu definovaném v knihovně XOR8. Popis formátu verze knihovny a souvisejících funkcí je popsán v manuálu LibVer. 2. Termíny a definice Používané termíny a definice jsou popsány v samostatném dokumentu Termíny a definice. file:_v0120 05.04.2004 v1.20 5 / 15

3. Úvod Knihovna definuje komunikační objekt t, který je dědicem od rodičovského komunikačního objektu tchnvirt. Instance objektu t representuje vyšší komunikační vrstvu v komunikačním kanálu. Transformuje předávaná data mezi komunikačními objekty nižších vrstev, které provádějí fyzický přenos, a aplikací nebo případně další vyšší komunikační vrstvou. Objekt t definuje formát protokolu používaného při komunikaci se zařízeními EUROTHERM a obstarává zabezpečení dat, vkládání a vyjímání nadbytečností, tak jak to tento protokol předepisuje. Fyzický přenos dat je zajištěn prostřednictvím nižší komunikační vrstvy. Určení, přes jakou fyzickou komunikační vrstvu bude komunikace probíhat, je voleno až parametry nastavovací metody ChSetParam. Knihovna rovněž definuje objekt tadd, který je dědicem od rodičovského objektu taddchnvirt. Objekt tadd zajistí, aby daný komunikační objekt (objekt t) byl k aplikaci připojen a popřípadě zajistí vytvoření instance tohoto objektu. Po přilinkování této jednotky do aplikace (příkazem "uses "), se jméno objektu t automaticky vloží do seznamu správců komunikačních objektů pro případné použití. Protože je objekt t dědicem rodičovského komunikačního objektu tchnvirt, jsou v této příručce popsány jen odlišnosti a speciality pro tento druh sériové komunikace. Ostatní naleznete v příručce ChnVirt. Některé použité konstanty a typy jsou předdefinované v jednotce ChnTypes. 4. Konstanty a typy cverno = např. $0251; { BCD formát } cver = např. '02.51,07.08.2003'; Číslo verze jednotky v BCD tvaru a v textové podobě včetně datumu změny. cname = 'EB'; Konstanta cname definuje jméno komunikačního objektu t. tmesstype = (tpread, tpwrite, tpack, tpnak, tpbs); Výčtový typ tmesstype definuje několik základních typů zpráv. Typ tpread je pro zprávu pro čtení dat od Master stanice nebo pro odpověď na tuto zprávu od Slave stanice. Typ tpwrite je pro zprávu pro zápis dat od Master stanice. Typ tpack je pro krátké pozitivní potvrzení na zápis dat od Slave stanice nebo pro požadavek na čtení dalšího parametru od Master stanice po úspěšném čtení libovolného parametru. Typ tpnak je pro krátké negativní potvrzení na zápis dat od Slave stanice nebo pro požadavek na čtení téhož parametru od Master stanice po úspěšném čtení libovolného parametru. Typ tpbs je pro požadavek na čtení předešlého parametru od Master stanice po úspěšném čtení libovolného parametru. tparam = (tpwrongcode, tpfloat, tphexa); Výčtový typ tparam definuje několik základních datových formátů. Typ tpwrongcode nedefinuje žádný datový formát, znamená pouze, že Slave stanice nerozpoznala parametr zadaný mnemonickým kódem. file:_v0120 05.04.2004 v1.20 6 / 15

Typ tpfloat definuje formát maximální délky 6 bytů pro reálná a celá čísla a to jak kladná tak i záporná v jejich ASCII representaci (čísla '0' až '9', desetinná tečka '.', a znaménko '-' popřípadě i '+'). Typ tphexa definuje formát pevné délky 5 bytů pro celá kladná čísla v hexadecimální podobě v jejich ASCII representaci (čísla a všechny znaky anglické abecedy) a úvodním znakem '>', který odlišuje tento formát od všech ostatních datových formátů. 4.1. Konstanty řídících znaků protokolu STX = $02; ETX = $03; EOT = $04; ENQ = $05; ACK = $06; NAK = $0F; BS = $08; Konstanty STX, ETX, EOT, ENQ, ACK, NAK a BS definují kódy kontrolních a zabezpečovacích znaků protokolu. 4.2. Konstanty výsledků přijímacího automatu V této kapitole jsou popsány definice chybových kódů, které může vracet metoda ChReceiveResult v průběhu přijímacího automatu. res_errframe = $20; Výsledek res_errframe indikuje chybu rámce přijaté zprávy. res_errsum = $21; Výsledek res_errsum indikuje chybu kontrolního součtu při přijmu zprávy. res_errlen = $22; Výsledek res_errlen indikuje chybu délky zprávy. res_errval = $23; Výsledek res_errval indikuje chybu při převodu čísla na textový řetězec a naopak. 4.3. Struktury přijímacích a vysílacích bufferů psendrecord = ^tsendrecord; tsendrecord = record case MessType : tmesstype of tpread, tpwrite : (Code : String[2]; case Par : tparam of tpwrongcode : (); tpfloat : (Float : Real;); tphexa : ); tpack, tpnak, tpbs : ( ); (Dummy1_1 : array[1..1]of byte; Hex : Word;); file:_v0120 05.04.2004 v1.20 7 / 15

end; TSendRecord je typ variantního záznamu, který svou strukturou odpovídá datům protokolu E-Bysinc pro zasílání zpráv, přičemž je zbaven nadbytečností, které jsou při vysílání doplněny. Položka MessType udává typ zprávy (čtení, zápis dat apod.). Při čtení a zápisu dat se používají položky Code a Par pro stanici Master i Slave. Položka Code obsahuje mnemonický kód čteného či zapisovaného parametru v podobě textového vyjádření číslic a znaků anglické abecedy, přičemž se rozlišují malá a velká písmena. Položka Par udává datovou strukturu čteného či zapisovaného parametru (Slave stanice může také tuto položku místo datové struktury parametru nastavit na typ udávající špatně zadaný mnemonický kód - viz. výčtový typ tparam). Master stanice používá navíc při zápisu dat položku Hex (číslo v hexadecimálním formátu) nebo Float (číslo ve formátu celého či reálného čísla a to jak kladné tak i záporné), kdežto Slave stanice používá tyto položky naopak při čtení dat. Položka Dummy1_1 nemá žádný zvláštní význam, v záznamu je definována pouze pro zarovnání položky Hex na adresu dělitelnou dvěma. trecrecord = tsendrecord; precrecord = ^trecrecord; TRecRecord je typ variantního záznamu, který svou strukturou odpovídá datům protokolu E-Bysinc pro příjem zpráv, přičemž je zbaven nadbytečností, které jsou při příjmu odstraněny. Svou vnitřní strukturou je shodný s typem TSendRecord. 5. Objekty 5.1. t 5.1.1. Položky CH_RTick CH_SBuff : Boolean; Položka CH_RTick označuje, že je vykonávaná činnost přijímacího automatu. Tato položka se používá pro ladění. : Pointer; Položka CH_SBuff definuje ukazatel na vysílací buffer. CH_MSBuff : Word; Položka CH_MSBuff definuje délku vysílacího bufferu. CH_LRMess : Word; Položka CH_LRMess definuje délku přijímané zprávy. CH_RSum CH_SSum : txor8; Položka CH_RSum se používá pro počítání kontrolního součtu přijímače. : txor8; Položka CH_SSum se používá pro počítání kontrolního součtu vysílače. CH_Master : Boolean; Položka CH_Master definuje, je-li stanice zapojena v síti jako nadřazená jednotka (Master) nebo jako podřízená jednotka (Slave). file:_v0120 05.04.2004 v1.20 8 / 15

5.1.2. Metody 5.1.2.1. Init konstruktor constructor Init; Konstruktor Init slouží k vytvoření a inicializaci instance komunikačního objektu. Ve svém těle je nejprve zavolána zděděná metoda Init (inherited Init) od rodičovského objektu tchnvirt a poté jsou inicializovány položky objektu. Tělo konstruktoru vypadá následovně: inherited Init; CH_Type := cname; CH_Name := CH_Type; CH_NumName := ChNumName(CH_Type); CH_RTick := false; CH_SBuff := nil; CH_MSBuff := 0; CH_LRMess := 0; CH_Master := true; CH_RDNodeS := '00'; CH_FlRecSTX:= false; CH_FlAdrOk := false; CH_ss := ''; 5.1.2.2. ChInitParam konstruktor constructor ChInitParam(const S: tparamstr); Konstruktor ChInitParam slouží ke zkrácenému vytvoření instance komunikačního objektu s definovaným nastavením parametrů kanálu. Ve svém těle nejprve volá konstruktor Init a poté metodu ChSetParam. 5.1.2.3. Done destruktor destructor Done; Destruktor Done slouží ke zrušení instance komunikačního objektu. Pokud je alokován vysílací buffer, je odstraněn z paměti. Na konci destruktoru je volána zděděná metoda Done od přímého rodičovského objektu pro uzavření podřízené komunikační vrstvy. 5.1.2.4. ChSetOneParam procedura function ChSetOneParam(const S: twordstring; var CmdL: tcmd) : tchresult; Metoda ChSetOneParam slouží k dekódování a nastavení jednoho konkrétního parametru, který je zadán v parametru S. Tato metoda se volá v aplikaci prostřednictvím metody ChSetParam. Metoda ChSetOneParam komunikačního objektu t dekóduje tyto parametry: MAS=MASTER / SLAVE Parametrem MAS ("Master or Slave") se určuje, zda je jednotka v komunikační síti jako Master (nadřízená) nebo jako Slave (podřízená). LSB=Size Parametrem LSB ("Length of Send Buffer") je alokován nový vysílací buffer CH_MSBuff dané velikosti Size. file:_v0120 05.04.2004 v1.20 9 / 15

NOD=Node Parametrem NOD ("Node") se určuje číslo (adresa) stanice CH_Node v komunikační síti. Node může nabývat hodnot <0..254>. Adresa 255 je určena protokolem implicitně pro všechny stanice společně. DNO=DNode Parametrem DNO ("Destination Node") se určuje číslo (adresa) stanice CH_DNode v komunikační síti, které budou zprávy určeny. Tuto položku je možno také definovat prostřednictvím metody ChDestNode. DNode může nabývat hodnot <0..254>. Adresa 255 je určena protokolem implicitně pro všechny stanice společně. 5.1.2.5. ChGetParam funkce function ChGetParam(const S: TParamStr): TParamStr; Metoda ChGetParam navrací nastavené hodnoty parametrů komunikačního objektu. Nejprve vrátí nastavení parametrů rodičovského komunikačního objektu tchnvirt a poté k nim připojí seznam svých parametrů. Seznam parametrů je uveden výše u popisu metody ChSetOneParam. 5.1.2.6. ChConnect procedura procedure ChConnect; Metoda ChConnect zavolá zděděnou metodu ChConnect od přímého rodičovského objektu a pokud nenastala žádná chyba, nastaví automat přijímače CH_RCtrl do počátečního stavu pro příjem zprávy v protokolu E-Bysinc. 5.1.2.7. ChDisConnect procedura procedure ChDisConnect; Metoda ChDisConnect zavolá zděděnou metodu ChDisConnect od přímého rodičovského objektu a pokud nenastala žádná chyba, nastaví automat přijímače CH_RCtrl do neaktivního stavu, aby se nepřijímaly žádné zprávy. 5.1.2.8. ChSend procedura procedure ChSend(Buff : Pointer; Len : Word); Metoda ChSend způsobí započetí vysílání zprávy podle protokolu E-Bysinc na podkladu záznamu typu tsendrecord, na který ukazuje parametr Buff. Parametr Len udává délku vysílacího bufferu pro vysílání. Tento parametr není nutno správně naplnit skutečnou délkou zprávy, jelikož protokol umí tuto délku získat automaticky podle vyplněného záznamu vysílacího bufferu. Před voláním této metody se musí záznam správně naplnit daty (viz níže). 5.1.2.9. ChReceiveReady funkce function ChReceiveReady: tchstate; Metoda ChReceiveReady způsobí provedení kroku přijímacího automatu na základě volání metody ChReceiveTick. Jako svoji funkční hodnotu vrací aktuální stav automatu přijímače komunikačního kanálu, který je uložen v položce CH_RCtrl. Zpravidla se provádí test pouze na stabilní stav CHS_ReceiveReady (který znamená, že byla přijata nějaká zpráva), protože ostatní stavy jsou stavy probíhajícího příjmu. file:_v0120 05.04.2004 v1.20 10 / 15

5.1.2.10. ChReceive procedura procedure ChReceive(var Len: Word); Metoda ChReceive provede přijmutí celé zprávy a její uložení do přijímacího bufferu, který svou vnitřní strukturou odpovídá datům záznamu typu trecrecord a byl definován metodou ChReceiveBuffer. Metoda naplní buffer pouze patřičnými položkami typu trecrecord, úvodní a zakončovací řídicí znaky a kontrolní součet ze zprávy metoda vyhodnotí a pro uživatele odstraní. Odpověď na zprávu, ať došla v pořádku nebo porušená, generuje uživatel sám pomocí metody ChSend. 5.1.2.11. ChReceiveFlush procedura procedure ChReceiveFlush; Metoda ChReceiveFlush způsobí vyprázdnění přijímacích bufferů a nastavení stavu automatu přijímače na počátek příjmu zpráv v protokolu E-Bysinc. 5.1.2.12. ChGetNode procedura procedure ChGetNode(var SNode, DNode : tnode); Po volání metody ChGetNode je do proměnné SNode uloženo číslo (adresa) stanice, která zprávu odeslala, a do proměnné DNode číslo (adresa) stanice, pro kterou byla zpráva určena. Tuto metodu má smysl volat po přijetí zprávy metodou ChReceive. 5.1.2.13. ChReceiveTick procedura procedure ChReceiveTick; Metoda ChReceiveTick způsobí provedení jednoho či více kroků automatu přijímače. Je nutné ji periodicky volat při přijímání. Metoda ChReceiveTick je rovněž automaticky volána v metodě ChReceiveReady. 5.2. tadd Typ tadd je typem objektu, který slouží k definování prvku v seznamu správců komunikačních objektů (tzv. správce komunikačního objektu t v seznamu správců). Objekt tadd je dědicem od rodičovského objektu taddchnvirt. 5.2.1. Metody 5.2.1.1. ChInit funkce function ChInit: pchnvirt; Metoda ChInit slouží k vytvoření instance komunikačního objektu t a ukazatel na instanci tohoto objektu vrací jako svoji funkční hodnotu. file:_v0120 05.04.2004 v1.20 11 / 15

6. Popis protokolu E-BISYNC Tento protokol, udávaný též pod názvem SIC800, používá firma Eurotherm u regulátorů řady 800 a 900. Uvedený protokol je popsán v normě ANSI-X3.28-2.5-A4. Pro přenos jednotlivých znaků po sériové lince se používá toto nastavení: 7 datových bitů, sudá parita a 1 stopbit. 6.1. Struktura zpráv a odpovědí pro čtení dat Master stanice posílá požadavek na čtení dat následujícího formátu: EOT GID GID UID UID CODE ENQ MessType := tpread; Code :=... např. 'PV'; délka zprávy = 4 Pokud Slave stanice rozeznala CODE posílá zpět požadovaná data. STX CODE DATA... ETX BCC MessType := tpread; Code := stejný jako při vysílání Master stanicí např. 'PV'; Par := tphexa nebo tpfloat; pokud Par = tphexa: Hex :=... např. $0123; délka zprávy = 8 pokud Par = tpfloat: Float :=... např. -10.58 délka zprávy = 11 Pokud Slave stanice nerozpoznala CODE posílá zpět zprávu následujícího formátu: STX CODE EOT MessType := tpread; Code := stejný jako při vysílání Master stanicí např. 'PV'; Par := tpwrongcode; délka zprávy = 5 Pokud Master stanice přečetla úspěšně nějaká data může pro čtení následujících, předchozích nebo těch samých dat použít některou z těchto zkrácených zpráv na které je stejná odpověď od slave stanice jako v případě dlouhé čtecí zprávy. ACK - Čtení následujících dat. Tato zpráva má stejný význam jako kdyby se vyslala předchozí zpráva pro čtení dat, ale s CODE zvětšeným o 1. MessType := tpack; délka zprávy = 1 file:_v0120 05.04.2004 v1.20 12 / 15

NAK - Čtení těch samých dat. Tato zpráva má stejný význam jako kdyby se vyslala předchozí zpráva pro čtení dat se stejným CODE. MessType := tpnak; délka zprávy = 1 BS - Čtení předchozích dat. Tato zpráva má stejný význam jako kdyby se vyslala předchozí zpráva pro čtení dat, ale s CODE zmenšeným o 1. MessType := tpbs; délka zprávy = 1 Význam položek: EOT, ENQ, STX, ETX, ACK, NAK a BS - řídící znaky protokolu (viz. příslušné konstanty těchto znaků) GID - identifikátor skupiny daného zařízení = CH_DNode div 10 + Ord ('0') UID - identifikátor jednotky daného zařízení = CH_DNode mod 10 + Ord ('0') CODE- mnemonický kód daného parametru - 2 ASCII číslice nebo znaky anglické abecedy (malá a velká písmena se rozlišují) DATA- datové pole zprávy podle datového formátu parametru (viz. výčtový typ tparam) BCC - kontrolní (bytový) součet zprávy = CODE xor DATA xor ETX 6.2. Struktura zpráv a odpovědí pro zápis dat Master stanice posílá zprávu pro zápis dat následujícího formátu: EOT GID GID UID UID STX CODE DATA... ETX BCC MessType := tpwrite; Code :=... např. 'PV'; Par := tpfloat nebo tphexa pokud Par = tphexa: Hex :=... např. $0123; délka zprávy = 8 pokud Par = tpfloat: Float :=... např. -10.58 délka zprávy = 11 Slave stanice odpovídá některou z následujících zpráv: ACK - Zápis dat proběhl úspěšně. MessType := tpack; délka zprávy = 1 NAK - Zpráva byla přijata, ale zápis nelze provést. file:_v0120 05.04.2004 v1.20 13 / 15

MessType := tpnak; délka zprávy = 1 7. Příklad Následující příklad ukazuje způsob vyslání zprávy pro zápis dat ve formátu tphexa s čekáním na odpověď. Fyzický přenos se realizuje prostřednictvím knihovny ChnCom. uses ustring, ChnVirt, ChnCom, ; const ParamStr : tparamstr = 'NAM=EB LSB=500 NOD=1 DNO=2 ' + 'NAM=COM COM=1 IRQ=4 BD=9600 BIT=7 STOP=1 PAR=E '+ 'LRB=1000'; var Chn : pchnvirt; SMess : pmasendrecord; RMess : pmarecrecord; LSMess: word; LRMess: word; begin... New(SMess); New(RMess);... { vytvoření instance Chn } Chn:=ChnCollection^.ChNewInit(ChnTecom.cName); with Chn^ do begin { nastavení parametrů komunikace } ChSetParam(ParamStr); ChOpen; repeat until ChReady=CHS_Open; { definování místa, kam se má přjatá zpráva uložit } ChReceiveBuffer(RMess,SizeOf(RMess^)); if ChReceiveResult<>res_Ok then WriteLn('Chyba'); ChConnect; repeat until ChReady=CHS_Connect;... { naplnění zprávy daty (např. zpráva Connect)} with SMess^ do begin MessType:=tpWrite; Code :='PV'; Par :=tphexa; Hex :=$0102; LSMess :=0; { pro tuto knihovnu není povinné } end; { vyslání zprávy } file:_v0120 05.04.2004 v1.20 14 / 15

if ChSendReady=CHS_SendReady then begin ChSend(SMess, LSMess); { čekání na odvysílání zprávy } repeat if ChSendResult<>res_Ok then WriteLn('Chyba'); until ChSendReady=CHS_SendReady; if ChSendResult<>res_Ok then WriteLn('Chyba');... end;... { čekání na příjem zprávy } while not ChReceiveReady=CHS_ReceiveReady do begin if ChReceiveResult<>res_Ok then WriteLn('Chyba'); end; { příjem zprávy } ChReceive(LRMess); if ChReceiveResult<>res_Ok then WriteLn('Chyba') else { dekódování správné odpovědi (např. odpověď na Connect)} with RMess^ do begin if MessType = tpack then writeln('ok') else writeln('chyba'); end;... { ukončení } ChDisConnect; repeat until ChReady=CHS_DisConnect; ChClose; repeat until ChReady=CHS_Close; end; { zrušení instance Chn } Dispose(Chn,Done);... end. file:_v0120 05.04.2004 v1.20 15 / 15