PESdde KOMUNIKAÈNÍ DDE SERVER PRO AUTOMATY MICROPEL VERZE 2.3 POPIS ROZHRANÍ A OVLÁDÁNÍ 03.2002 1. Co je nového ve verzi 2.3 Proti verzi 2.1 jsou v této verzi dvì významná vylepšení: 1. Server nyní stále jistou malou èástí svého èasu monitoruje všechny sí ové adresy a aktualizuje si tabulku aktivních pøipojených stanic. Je-li tedy pøipojena nová stanice, DDE server ji bìhem nìkolika sekund (cca 4x "duty-period") vezme na vìdomí. 2. PESdde je od této verze uzpùsoben i pro bìh pod systémem Microsoft Windows2000 (s instalovanou podporou WIN2K - viz dále). 2. O programu PESdde je komunikaèní program, urèený pro provoz pod systémem Microsoft Windows 95/98/ME/2000, který umožòuje aplikacím v systému Windows (Excel, Control panel atd.) komunikovat se sítí automatù. Základem komunikace mezi aplikací v systému Windows a DDE serverem je standardní komunikaèní rozhraní systému Windows, rozhraní DDE. Komunikace mezi serverem a sítí automatù probíhá zcela samostatnì pøes sériový komunikaèní port COM. Jako fyzické rozhraní mezi COM portem a sítí automatù se pøedpokládá pøevodník rozhraní RS232/RS485 - PES-CA1 (nebo jiný vyhovující pøevodník tìchto rozhraní). Program PESdde.exe lze spustit z pøíkazového øádku, nebo jej nainstalovat napø. jako zástupce na plochu. Lze jej samozøejmì zaøadit i do složky "Po spuštìní" - pro aplikace, automaticky spouštìné po startu poèítaèe (viz kap. Tipy). Celý komplet DDE serveru zahrnuje soubory: PESdde.exe - vlastní program DDEini.cfg - konfiguraèní soubor Ver_En.dll - dynamická knihovna pro anglickou verzi Ver_Cz.dll - dynamická knihovna pro èeskou verzi UPOZORNÌNÍ - V systémovém adresáøi Windows musí být pøítomna dynamická knihovna DDEML.DLL (mìla by být standardnì souèástí Windows). 1 PESdde DDE server pro Windows 03.2002, 7 stran 1
3. Provoz pod OS Microsoft Windows 2000 Nejprve je tøeba nainstalovat podporu WIN2K pro bìh aplikací pod Windows2000 (instaluje-li se software z distribuèního CD, je automaticky pøekopírován i balíèek WIN2K, jinak lze balíèek nalézt na CD v adresáøi DATACZ). Pøed prvním spuštìním DDE serveru je ještì tøeba spustit instalaèní program CPesInst.exe (viz dokumentace k WIN2K na tomto CD). Tento úkon staèí provést jen jednou, DDE server už pak na daném poèítaèi bude vždy pod Windows 2000 pracovat. 4. Dialogové okno programu Po spuštìní aplikace se objeví hlavní okno obsahující nìkolik informaèních polí. Pole Hlášení o prùbìhu podává informaci o momentální aktivitì programu spolu s èasem, ve kterém událost nastala (toto pole má kapacitu 100 øádkù). Pole Zapojené automaty udává seznam adres automatù, které jsou momentálnì k dispozici. Tento seznam se aktualizuje po stisku tlaèítka Spustit. Tato operace dále také inicializuje komunikaèní port a dá systému Windows na vìdomí, že je k dispozici aplikace sloužící jako DDE server (tlaèítku Spustit odpovídá uvedení parametru /s na pøíkazové øádce pøi spuštìní programu). Komunikaèní port musí být pøedtím správnì nastaven v odpovídajícím poli. Dále je také tøeba nastavit položku Podíl PC na èase automatù. Protože automaty, zvláš jsou-li v síti, potøebují ponechat prostor pro vlastní operace, komunikace s PC probíhá v urèitých intervalech. Doba intervalu je standardnì nastavena na 2000 ms a lze ji zmìnit v konfiguraèním souboru v položce "duty-period" (tento èas nelze brát naprosto striktnì, jde o pøibližnou hodnotu). Z tohoto intervalu si PC "ukrojí" pro svoje potøeby podíl, jehož procentuelní velikost je uvedena právì v položce "Zatížení sítì". Mùže být v intervalu 5-100%. Pøenosová rychlost se nastaví automaticky na základì informací získaných z automatù. Tlaèítko Zastavit ukonèí všechna trvalá propojení (viz níže), DDE ale zùstane inicializováno. Je tøeba ho také použít pøed znovupoužitím tlaèítka Spustit (napø. pøi zmìnì nastavení zmínìného podílu PC na èase automatù). Tlaèítko Konec zastaví probíhající DDE operace, uloží nastavení do konfiguraèního souboru a aplikaci ukonèí. 5. Zpùsob komunikace PESdde pøi komunikaci využívá klasický komunikaèní standard DDE, jehož podrobný popis je možné nalézt v odpovídajících manuálech (napø. v helpu Microsoft Developer Studia 97, prostøedí C++). Na tomto místì se jím proto nebudeme zabývat a uvedeme pouze specifické informace pro tuto aplikaci. PESdde využívá vyšší verzi komunikace založenou na spolupráci se standardní knihovnou DDEML.DLL. V pøípadì komplikací se ujistìte, že knihovna je k dispozici v systémovém adresáøi Windows. 2 PESdde DDE server pro Windows 03.2002, 7 stran 2
V žádosti o DDE propojení je tøeba specifikovat tøi hodnoty: název služby, název tématu a název položky. V našem pøípadì je tøeba jako název služby zadat pesdde a jako název tématu var. Syntaxe položky je specifikována v kap. Pøíkazy. Zpùsob zadání tìchto hodnot pak už závisí na konkrétní aplikaci. Pøi komunikaci lze využít buï DDE službu REQUEST pro jednorázové ètení, službu POKE pro jednorázový zápis, nebo službu ADVISE pro ustanovení zasílání urèitého okruhu dat v pravidelných intervalech. Adresy promìnných Všude, kde je vyžadována adresa položky (bitu nebo wordu), se udává vždy tzv. absolutní adresa (viz dokument " Adresy promìnných v PLC"). Adresy položek na zásobníku (STACK) se udávají tak, jak je adresujeme napø. registrem POINTER v automatu. Pøíklad Ukázka zadání pøíkazu v Microsoft Excel, který bude v dané buòce obnovovat aktualizované hodnoty dvaceti bitù vyètených z automatu èíslo 30 poèínaje bitem na adrese 66 (bity M2..M21) : =pesdde var!'t[1000]b[30][66][20]' =... rovnítko (uvozuje volání pøíkazu DDE) pesdde... název služby... znak pro oddìlení názvu služby a tématu var... název tématu!... ukonèení specifikace služby a tématu 'xxxx'... název položky (MS Excel ji vyžaduje v apostrofech) Uvedený zápis pøíkazu v buòce je specifický pro MS Excel a mùže být v každé aplikaci øešen jinak. Syntaxe jednotlivých názvù položek je popsána v kap. Pøíkazy. 6. Pøíkazy Žádost o jednorázové ètení " r " Pøi žádosti o ètení je tøeba název položky specifikovat ve formátu: rx[automat][poèátek_bloku][poèet_položek] pøièemž místo X se uvádí znak : b BIT - ète se bit (promìnné X, Y, M, B) w WORD - ète se word (promìnné I, O, D, W) s STACK - ète se word ze zásobníku Žádost slouží k vyètení jedné položky nebo souvislého bloku položek. Je-li uveden pouze Poèátek_bloku, ète se jen jedna položka. 3 PESdde DDE server pro Windows 03.2002, 7 stran 3
Automat adresa automatu v síti (0..30) Poèátek_bloku adresa první položky (bit 0..318, word 0..255) Poèet_položek poèet položek (0..255) DDE server vrátí textový øetìzec ve formátu ##èíslo#èíslo#...#èíslo##. Pokud jde o jedinou položku, øetìzec nebude obsahovat znaky #, ale jen èíslo. Žádost o jednorázový zápis " s " Žádost o zápis má následující formát: sx[automat][poèátek_bloku]##èíslo#èíslo#...#èíslo## pøièemž místo X se uvádí znak : b BIT - zapisuje se bit (promìnné X, Y, M, B) w WORD - zapisuje se word (promìnné I, O, D, W) s STACK - zapisuje se word do zásobníku Žádost slouží k zápisu jedné položky nebo souvislého bloku položek. Je-li uveden pouze Poèátek_bloku, zapíše jen jednu položku, èíslo se pak neuvozuje znaky #. Automat adresa automatu v síti (0..30) Poèátek_bloku adresa první položky (bit 0..318, word 0..255) Byl-li zápis úspìšný, DDE server vrátí øetìzec "OK". Žádost o trvalé propojení " t " Realizuje trvalé vyèítání položek v zadaném intervalu. Od okamžiku zadání žádosti jsou pak žadateli periodicky zasílána data. V žádosti o trvalé propojení je tøeba název položky specifikovat ve formátu: t[perioda]x[automat][poèátek_bloku][poèet_položek]x[automat][poèátek_bloku]... kde místo X se uvádí znak: b BIT - ète se bit (promìnné X, Y, M, B) w WORD - ète se word (promìnné I, O, D, W) s STACK - ète se word ze zásobníku Perioda v milisekundách uvádí interval výètù. Jak je vidìt, je možno vyèítat najednou rùzná data. Položka s názvem t[2000]b[30][65][10]w[30][100][10] napøíklad ustanoví vyèítání 10 bitù a 10 wordù v dvouvteøinovém intervalu. Automat adresa automatu v síti (0..30) Poèátek_bloku adresa první položky (bit 0..318, word 0..255) Poèet_položek poèet položek (0..255) POZOR! Název položky mùže obsahovat maximálnì 255 znakù. 4 PESdde DDE server pro Windows 03.2002, 7 stran 4
Je-li syntaxe v poøádku, vrací server øetìzec v následujícím formátu: ##èíslo#èíslo#... #èíslo##èíslo#èíslo#...#èíslo## kde èíslo je hodnota dotazované promìnné, jednotlivé položky jsou oddìleny znakem # a dvojice ## znaèí vždy celistvý blok vztahující se k odpovídajícímu výètu. Má-li žádost tvar: t[perioda]x[automat][poèátek_bloku] bude vyètena jediná položka, která nebude uvozena znaky # (opìt vhodné tøeba pro velmi jednoduchou aplikaci vyèítání položek do buòky tabulky MS-Excel, nebo jakéhokoliv jiného produktu podporujícího výmìnu dat pøes DDE). Poznámka Nestaèí-li server pøi více žádostech o trvalé propojení (služba ADVISE) data pravidelnì vyèítat, jsou jednotlivé požadavky øazeny do fronty èítající 100 prvkù a postupnì odbavovány. Jednorázové ètení nebo zápis (služba REQUEST a POKE) je odbaveno okamžitì. Tolerance Funkce vyhodnocování tolerance doby platnosti dat slouží k optimalizaci pøístupù na komunikaèní linku. Mùže se totiž stát, že více aplikací bude od DDE serveru požadovat stejná data, nebo jedna aplikace generuje požadavky na data velmi èasto a pøitom skuteèné nároky na "èerstvost" tìchto dat nemusí být ve skuteènosti vysoké. V tomto pøípadì DDE server (pokud má data naètena do pamìti a jejich nastavená platnost ještì nevypršela) poskytne data pøímo z pamìti a nebude je vyèítat po sériové lince. Tolerance je hodnota v milisekundách a udává dobu od posledního výètu, bìhem níž jsou vyètená data stále ještì platná. Po uplynutí této doby provádí server pøi odpovídajícím požadavku nový výèet z pamìti automatù. Pøedpokládejme napøíklad, že parametr tolerance je nastaven na hodnotu 2000 a byla zadána žádost o trvalé propojení t[1000]w[30][65][10] (ve vteøinových intervalech se z automatu 30 vyèítá 10 wordù poèínaje od adresy 65). Je-li nyní provedeno jednorázové ètení rw[30][70][2] (výèet 2 wordù poèínaje od adresy 70), nebudou se tato data znovu vyèítat z automatu, ale použijí se naposledy vyètené hodnoty. Tato situace nastane proto, že pøi vteøinových výètech a dvouvteøinovém tolerovaném "stáøí" vyètených dat, jsou pøi jednorázovém požadavku o tatáž data hodnoty vždy dostateènì èerstvé, než aby je bylo nutno znovu vyèítat. Je-li hodnota tolerance nastavena na 0, data jsou vyèítána vždy znovu pøi každém požadavku. Základní hodnota tolerance je nastavena globálnì v konfiguraèním souboru DDEini (viz dále), nicménì každá aplikace si mùže zvolit i svoji vlastní hodnotu, která je zapomenuta v okamžiku ukonèení DDE propojení. Žádost o nastavení nové hodnoty má následující formát: tol[tolerance] 5 PESdde DDE server pro Windows 03.2002, 7 stran 5
Parametr Tolerance udává v milisekundách požadovaný èas. V MS-Excel by potom napøíklad pøíkaz =pesdde var!'tol[3000]' zapsaný do libovolné buòky provedl nastavení tolerance pro DDE propojení s Microsoft Excelem na 3 vteøiny. Po zavøení sešitù Excelu, jejichž buòky obsahovaly DDE pøíkazy smìrované na server, a DDE pøíkazu zadaném v novì otevøeném sešitu, bude znovu platit globální hodnota tolerance zadaná v konfiguraèním souboru. Poznámka: Program Microsoft Excel po zadání DDE pøíkazu zkusí zaslat daný øetìzec nejprve jako žádost o trvalé propojení (služba ADVISE) a pak jako žádost o jednorázové ètení (služba REQUEST). To je dùvod, proè se pøi komunikaci s Excelem vždy zobrazí v poli Hlášení o prùbìhu informace o chybné syntaxi, protože syntaxe jednorázových a trvalých pøíkazù se liší (viz výše). Komunikace DDE se pøesto ustanoví správnì, protože Excel zkouší rùzné druhy spojení až se "trefí". 7. Konfiguraèní soubor Konfiguraèní soubor je textový s názvem DDEini.cfg a lze ho editovat napø. programem WordPad, nebo editory programù NortonCommander, WinCommander atd. atd. Obsahuje 5 položek, z nichž první dvì lze nastavit pøímo v dialogovém oknì. port èíslo používaného sériového portu (uvádí se hodnota 1 až 4) peak-load podíl PC na èase automatù (uvádí se hodnota v procentech) duty-period délka èasového intervalu, z nìhož se odpoèítává podíl PC na èase automatù (v milisekundách) tolerance základní doba, po kterou se považují vyètená data za aktuální version urèuje jazykovou mutaci (hodnota Cz èeská a En anglická verze) 8. Chování programu v systému Windows Program PESdde.exe lze spustit z pøíkazového øádku, nebo jej nainstalovat napø. jako zástupce na plochu. PESdde lze v systému spustit jen jeden. Pøi pokusu o spuštìní další instance se aktualizuje okno již bìžící instance a pokus o nové spuštìní je ukonèen. Zavøení aplikace pøedchází výstražný dialog, upozoròující uživatele na to, že server mùže být používán jinou aplikací a uzavøením se poruší komunikace dané aplikace a sítì automatù. Poznámka: Toto výstražné upozornìní se objeví vždy, tedy i v pøípadì, že server již není využíván žádnou aplikací. 6 PESdde DDE server pro Windows 03.2002, 7 stran 6
Automatický start Pokud je program spuštìn s parametrem /s, pak se po jeho spuštìní automaticky provede inicializace komunikaèního portu a DDE propojení, pøesnì stejnì jako po ruèním spuštìní tlaèítkem Spustit. Vícejazyèná verze Aplikaci je také možno spustit v anglické mutaci. To, jaká jazyková mutace bude spuštìna, urèuje parametr "version=" v souboru DDEini.cfg. version=cz (spustí se èeská verze) version=en (spustí se anglická verze) Ochrana COM portu PESdde pøíslušný COM testuje, zda není užíván jinou aplikací. Pokud je, zobrazí upozornìní a další èinnost je ukonèena. Naopak, pokud je COM volný, je tento COM alokován a chránìn proti pøístupu jiné aplikace. Po ukonèení èinnosti PESdde serveru je tento COM opìt uvolnìn pro ostatní aplikace. Pokud se tedy objeví upozornìní, že "COMx: je užíván jinou aplikací..." nastaly tyto možnosti: 1) Je otevøeno okno, v nìmž bìží (bìžel) program, komunikující na volaném COMu. 2) Volaný COM není zapnut v aktivním Hardwarovém nastavení (viz nastavení Windows: "System-vlastnosti") 3) Je využíván hardwarem, napøíklad myší Poznámka: V pøípadì problémù je tøeba se ujistit, že používaný COM port nemá spoleèné hardwarové pøerušení s jiným COM portem. Pøípadnì toto pøerušení zmìnit na další volné. Viz System-vlastnosti. 9. Tipy Pokud je poèítaè využíván výhradnì na vizualizaci pøipojené aplikace, je vhodné nadefinovat spuštìní PESdde do Windows-nabídky Start -> Po spuštìní a ve vlastnostech programu zadat na pøíkazovém øádku parametr /s (ještì je vhodné nastavit vlastnosti programu tak, aby se spustil jako minimalizovaný). Server PESdde se tak po nastartování Windows sám spustí a zapojí do sítì automatù. Pro automatizované zpracování, nebo zaèlenìní do vlastních aplikaèních programù je vhodnìjší využívat blokové pøenosy (celá komunikace je pak mnohem efektivnìjší). Žádost o jedinou položku je naopak výhodná tehdy, potøebujeme-li celkovì málo položek, nebo nechceme-li se zabývat "rozkousáním" odpovìdi serveru pøi blokovém pøenosu (napø. zobrazení položky v buòce tabulky v MS-Excelu apod.). 7 PESdde DDE server pro Windows 03.2002, 7 stran 7