Úpravy a opravy v posledních verzích

- 5.016 - 22.08.2006
  Opravena chyba, která způsobila pád ovladače při využívání kanálu [STATION] / out_connect_modem u ovladače CWDRT485 pro výmaz fronty požadavků a současně při výpadcích komunikace (timeout/sleep).
- 5.015 - 15.04.2006
  Dialogové okno ovladače rozšířeno o zobrazení stavových informací v reálném čase (připojení - COM, rychlost, formát, dále interval hlavní programové smyčky, velikost fronty požadavků, statistika komunikačních zpráv, logování a velikost alokované paměti)
- 5.014 - 19.01.2006
  Doplněna položka PARu - zapnutí/vypnutí zvuku při vyslání a příjmu komunikačního packetu (lze také měnit aplikací pomocí kanálu č. 65398 / boolean output).
- 5.013 - 17.01.2006
  Doplněn kanál č. 65399, typu "real input", který obsahuje aktuální dobu trvání jednoho průchodu hlavním komunikačním threadem ovladače v milisekundách.
- 5.012 - 4.1.2006
  Doplněn kanál č. 486 typu real bidirectional, který obsahuje počet vyslaných zpráv ovladačem. Pozor ! Pokud jste číslo tohoto kanálu použili v aplikaci, bude třeba jej předefinovat (a také v .DMF).
- 5.011 - 2.11.2005
  Při pakování požadavků QQ-zpráv pro stanice PL2 je cyklicky omezen jejich počet v jedné zprávě na 59 až 61 kvůli synchronizaci dotazů a odpovědí při výpadcích (timeoutech).
- 5.010 - 29.09.2005
  Nalezena a opravena chyba, která způsobovala ztrátu komunikačních požadavků na čtení QQ-itemů z PL2 při vzniku stejné události pro více stanic.
- 5.009 - 21.8.2005
  Pribyla moznost zadani nazvu LOG-souboru ovladace.
- 5.005 (22.4.2005) až 5.007 - 25.03.2005
  Pro PL2 doplněna komunikace s bankou HDB (viz help pro ProgWin - moduly v sekci Adv.System: HDBmain, HDBa, HDBb)
- 5.004 - 03.12.2004
  Odladěno pro CWVardis, CWD9x01 (Diregt).
- 5.004 - 25.11.2004
  Odladěno pro CWDRTMOD.
- 5.003 - 12.11.2004
  Licence přes Init-error ve funkci "INIT" ovladače. Zadaní licence se provádí přes speciální program CwLic.exe.
- 5.002 - 11.11.2004
  Běh v CW5 je ok!
- 4.106 - 19.07.2004
  Doplněno řízení přístupu k frontě požadavků na komunikaci mezi procesy (thready) ovladače z důvodu občasné kolize na rychlých strojích.
- 4.105 - 17.06.2004
  Všechny verze - Požadavek pro čtení PL2 (QQ-zpráva) je před zařazením do fronty hledán v bafru, a to i mezi již zapakovanými zprávami (oprava hromadění zpráv při výpadku komunikace). Přibyl kanál 487 (boolean output) - zápisem log. 1 do tohoto kanálu se vypne zařazování požadavků pro čtení do fronty a ovladač vrací hodnotu aniž by následně způsobil komunikaci.
  Cwdrtmod - Zpráva s aktivním hlášením z PL2 je zpracována jen pokud dojde k aktivnímu spojení, řízeném vzdáleným modemem.
- 4.104 - 16.06.2004
  Všechny verze - Požadavky na čtení dat se pro PL2 zařazují do fronty pouze pokud daná stanice není ve SLEEP_MODu.
- 4.103 - 14.05.2004
  Všechny verze - doplněny vlastní konverzní rutiny pro číselný typ FLOAT (4-byte-real).
- 4.102 - 26.03.2004
  Cwdrtmod - přidáno vyprázdnění příjm. fronty po ukončení spojení.
- 4.101 - 03.02.2004
  Licencování přes www.elsaco.cz, ovladač je tedy volně ke stažení s 30-tidenní volnou licencí.
- 4.100 - 19.11.2003
  Cwdrtmod - opraven AH-hazard při rychlém dotazu u spojení ze stany PL2 (aktivní hlášení).
- 4.03f - 04.11.2003
  Opravena chyba při vyhodnocení STAY_IN_QUEUE v sekci GLOBAL.
- 4.03e - 22.10.2003
  Oprava čtení "string itemu" QQ -> do kanálu se dostaly jen první 4 bajty (znaky).
- cwdrtmod - v.4.03d - 14.10.2003
  Přibyla proměnná v sekci [Global] - STAY_IN_QUEUE_ON_TIMEOUT. Jejím uvedením (bez dalších parametrů) se zablokuje nulovaní zprávy z fronty požadavků, pokud požadavek neprojde (v počtu za sebou dle zadaní proměnné "NUM_VARDIS_ERR"). Fronta bude snulována až po zavěšení modemové linky.
- cwdrtmod - v.4.03c - 3.10.2003
  Přičítání kanálu ErrorCounter (implicitně č. 454) i pro RT/PL2 modemy a rs485
- cwdrtmod/485 - v.4.03b - 18.08.2003
  Vyhozeno TValue.kind := ValueNothing při vyčítání kanálů, které nejsou v .PAR definovány, neboť to způsobylo zhroucení Control Webu.

- cwdrtmod/485 - v.4.03a - 30.07.2003
  Oprava čtení MI_block při definici ARRAY v DEF_MEMORY_IN

- cwdrtmod/485 - v.4.03 - 3.4.2003
  Implementace čtení itemu typu STRING ze systémů PL2 (32 znaků = 8 x QQ-zpráva)

- cwdrtmod - v.4.02i - 24.3.2003
  Úprava pro modemy Zyxel, které při vytáčení tel. čísla posílají na kom. linku zprávu "RINGING" zpět do PC.

- cwdrtmod - v.4.02h - 11.3.2003
  Oprava chyby CallCode, když tam bylo, jiné stanice nekomunikovaly ! Doplněno spojení více stanic se stejným tel. číslem na jedno navázání spojení. Opravena chyba - při chybném uvedení syntaxe QQ-položky v PAR-souboru ovladač dělal nedefinovatelné akce !!!

- cwdrtmod - v.4.02g - 6.3.2003
  Odstraněn hazard při zavěšování modemové linky

- cwdrtmod - v.4.02f - 31.10.2002
  Přidáno vyhodnocení proměnné CallCode aktivního hlášení z PL2.
  Definicí CallCode < číslo-kanálu > v sekci [STATION] se definuje "longcard bidirectional" kanál. Vyčtením se zjistí aktuální stav proměnné CallCode z objektu MODEM systému PL2. Hodnotu lze dále zpracovat systémem CW, např. rozebráním na jednotlivé bity. Zápisem hodnoty do kanálu lze poslední stav CallCode v ovladači nastavit.
  Hodnota CallCode se změní přenosem aktivního hlášení ze stanice, pokud se kanál in_active_message (implicitně kanál č. 479 pro 1. stanici) změní do log. 1 (true).

- cwdrtmod/cwdrt485 - v.4.02e - 16.10.2002
  Doplnění kanálů pro VZORKY - CUC soubory (kompatibilní s programem WZORKY)
  - 60018 boolean input = true, když probíhá čtení vzorků
  - 60021 boolean output = změna provede zápis aktualních vzorků do souboru .CUC
  - 60022 boolean bidirectional = čtení: true = poslední zápis .CUC byl OK, zápis: false = pro shození příznaku zápisu
  Cestu .CUC souboru lze zadat do proměnné v .PAR souboru, sekce [GLOBAL], proměnná CUC_PATH. Způsob zadávání je shodný, jako u všech textových proměnných.
  např.

      [GLOBAL]
        CUC_PATH "C:\Control Web 2000\Application\Data\CUC" ""
      END

  Název souboru bude vytvořen podle poslední vyčtené banky vzorků, ve tvaru AaBYMMDD.CUC, kde

          Aa = adresa stanice, 01-99, nebo
               pokud je vetší než 100,
               tak se použije nasledující vzorec:
                    od adresy se odečte 100.
                    A=písmeno od "A", určující po odečtení desítky
                    a=jednotky po odečtení
               např. adresa 137: 137-100=37, tedy 3 odpovídá C a zbyde 7, tedy C7.

          B = číslo banky (1-4)
          Y = poslední číslice roku
          MM = měsíc
          DD = den

- cwdrtmod - v.4.02d - 14.10.2002
  Doplněno vyhodnocení aktivního hlášení z PL2. Způsob vyhodnocení je stejný jako u RT, tedy definicí
  in_active_message < číslo-kanálu >
  V sekci [STATION] se definuje "boolean bidirectional" kanál. Vyčtením log. 1 (true) se zjistí, že právě přišlo aktivní hlášení z příslušné stanice. Zápisem hodnoty log. 0 (false) do kanálu se příznak shodí.
  Pokud uvedete klíčové slovo ORIGINAL_CHANNELS, je implicitne nastaveno na kanál c. 479 + (pořadí_stanice-1)*500

- cwdrtmod - v.4.02c - 11.10.2002
  Přidány kanály:
  - 60293 - boolean output - zapis log. 1 (true) způsobí inicializaci modemu
  - 60294 - boolean input - log. 1 (true) = inicializace proběhla v pořádku
  - 60295 - boolean output - zapis log. 1 (true) způsobí zavěšení linky (bez ohledu na to, která stanice byla připojena)

- verze 4.02 - uvolněna 15.2.2002
  Doplněn kanál č. 60292 (boolean output) pro nastavení přenosu vzorků ze stanic typu Promos RT-40. Tyto stanice mají uloženy historické vzorky v jiných bankách. Tímto kanálem (zápisem hodnoty TRUE) se nastaví typ přenosu vzorků pro RT-40.

- verze 4.01k - uvolněna 27.11.2001
  Oprava komunikačních threadů u ovladače CWDRTMOD, která se projevovala nepřijímáním aktivního hlášení, pokud bylo definováno více stanic.

- verze 4.01j - uvolněna 19.11.2001
  Oprava komunikace s PL2 (QQ-protokol). Stanice PL2 s BIOSem od tohoto data vrací odpověď ve formátu QX/Qx z důvodu rozlišení dotazu/odpovědi. Hazard mohl nastat na síti RS485, kde by omylem bylo definováno více stanic se shodnou komunikační adresou. Tato úprava je zpětně kompatabilní, tj. ovladač umí chytat jak zpávy QQ, tak i QX, aby se při změně ovladače nemusel nahrávat do všech stanic nový BIOS.

- verze 4.01i - uvolněna 12.10.2001
  - Doplněna grafická informace (v okně ovladače pod logem firmy), která zobrazuje text "klid", pokud jsou prázdné fronty požadavků na komunikaci, nebo ukazuje pohyblivou linku, když komunikace probíhá.
  - Vyhozen mód "Suspend" (uspávání ovladače při nečinnosti) z důvodu neustálého běhu vnitřních časovačů ovladače pro jejich monitorování aplikací
  - Doplněny výpisy do okna ovladače při vyhodnocení příjmu dat
  - Pakování QQ-zpráv (pro PL2) upraveno na čtení až 60-ti položek najednou
  - Doplněn kanál pro počítadlo vysílaných zpráv (v .PAR položka "MsgCounter", přednastaven jako kanál 481 pro RT v případě uvedení ORIGINAL_CHANNELS). Poměrem kanálu "ErrorNoAnswer" a tohoto kanálu lze zjistit úspěšnost komunikace.
  - Soubor .LOG s průběhem činnosti ovladače je s každým zápisem otvírán a opět zavírán, aby bylo možné ho sedovat i během činnosti ovladače / aplikace (start se provádí zápisem { $DIAGS } do .PAR souboru.
  - Veškeré výpisy v okně ovladače jsou předělány do češtiny
  - Kanály "MsgCounter" a "ErrorNoAnswer" jsou typu "real bidirectional", tj. obousměrné, aby bylo možné je zpětně nastavit aplikací, např. z důvodu jejich zálohování přístrojem "backup"

- verze 4.01b - 18.9.2001
  Oprava cteni PL2-objektu - Chyba byla zpusobena prevodem rutiny pro kompresi pozadavku do jedne komunikacni zpravy do knihovny ovladace CW a chybne nastavenym prostredim pro preklad (v mem ovladaci je jedna komun. zprava typu string a behem te komprese vystupovala omylem jako longstring, tj. nebyla omezena delkou 255 znaku ale 64KB, dalsim zpracovanim se pak zprava "orezala" na tech 255 a tim se vyslal chybny pozadavek - neuplna zprava). Doplnen vypis do okna ovladace - vysledek komprese (viz vyse) Ve spodni casti okna ovladace je zobrazen aktualni pocet zprav ve frontach pozadavku na komunikaci (Primary=fronta pro zapis, Secondary=fronta pro cteni).

- verze 4.01 - 28.5.2001
  Pro zapisovane kanaly byla vytvorena specialni fronta pozadavku, ktera ma prednost pred pozadavky na cteni a vlastnim automatickym ctenim (SELF_READING). Toto se tyka zprav: Promos RT/RTm/RT40 - BO (zapis povelu), MO (zapis konstant), MB_write (obecny dat. blok), Promos PL2 - veskery zapis itemu typu "write" a "bidirectional". Podobne jako existuje pevne adresovany kanal 490 (real) - pro pocet zprav ve vysilaci fronte pozadavku, vznikl kanal 497 (real input), ktery ukazuje pocet zprav pro zapis. Jeho kontrolou lze zjistit, zda byl zapis proveden.

- verze 4.00 - 22.5.2001
  - totalne predelany vnitrni thready ovladace tak, aby byly uplne casove nezavisle na hlavni aplikaci Control Webu (synchronizace s hlavnim VCL procesem je pouze u nutnych rutin, napr. u zmen fronty pro vyrizovani pozadavku z aplikace CW)
  - pokud ovladac nic nedela (nema zadne pozadavky na komunikaci), tak se jeho thread pro casovani komunikace uplne zastavi, coz ma za nasledek take zastaveni obnovy hodnot tech kanalu, ktere ukazuji nejaky vnitrni cas, napr. cas od posledni komunikace se stanici, takze namisto toho, kdy pri ztrate komunikace tento cas bezel do nekonecna, tak se po uspesnem spojeni se stanici a vyrizeni vsech aktualnich pozadavku z aplikace toto pocitadlo zastavi na hodnote, ktera urcuje dobu odezvy stanice.
  - Pokud neni definovana polozka [GLOBAL] - STOP_SELF_READING, tak thread bezi neustale, nebot sam ridi obnovu vsech vstupnich dat (BI, AI, CT, MI). Pri definici alespon jedne stanice typu Promos PL2 (QQ-zpravy) se toto automaticke cteni po startu nerozbehne a musite monitorovani ridit aplikaci, stejne jako pri definici STOP_SELF...
  - v sekci [GLOBAL] v .PAR souboru je mozno definovat polozku
    IDLE_TIME (ms)
    kde (ms) je interval volani hlavniho threadu ovladace, resp. cas v milisekundach, kdy je pozastavovan (tedy pokud vubec neco dela, jinak stoji uplne). Defaultne je nastaven (kdyz polozku IDLE_TIME neuvedete) na 10 ms.
  - tyto zmeny (pokud je predtim nadrizena aplikace vyuzivala), lze nahradit vlastnimi pocitadly primo v aplikaci tim, ze je budete ridit monitorovanim a zpetnym nastavovanim kanalu, ktere urcuji vyhodnoceni odpovedi na prisl. typ dat a stanici (v predchozich navodech oznaceny jako "bi_new_XX", kanaly 466-470 pri ORIGINAL_CHANNELS).
  - aplikace vyuzivajici predch. verzi (3.08) budou behat s novym ovladacem bez uprav.
- verze 3.07 - 28.2.2001
  - Vzhledem k nedostatku počtu kanálu pro jednotlivé stanice byla změněno automatické číslování kanálů pro jednotlivé stanice na "ručně" definované a plně ovlivnitelné programátorem.
  - Programátor tak má možnost definovat, kde je který kanál umístěn (definovat pro jednotlivé čtené a zapisované hodnoty čísla kanálů, a to i včetně diagnostických kanálů, ovlivňujících průběh komunikace).
  - Pro zachování zpětné kompatability zůstaly pevně definované pouze kanály, týkající se celé sítě připojených stanic, a to tyto:

         65533 - 65535 testovací kanály
         65532         kanál typu BUFFER pro "vzorky"
         60000 - 60017 kanály pro obsluhu a vyčítání jednotlivých vzorků
         60100 - 60291 dtto

           488         časovač hlavní programové smyčky ovladače
           489         časovač pro sériovou linku
           490         počet zpráv ve vysílací frontě požadavků
           491         kód typu právě zpracovávané zprávy
           492         "total sleep", hodnota > 0 sec -> ovladač po tuto dobu nekomunikuje
           493         počítadlo přijatých prefixů
           494         číslo stanice, se kterou se právě komunikuje
           495         kód stavu kom. linky (vysílání/příjem/...)
           496         velikost paměti alokované ovladačem
           498         počítadlo přijatých zpráv
           499         čas od poslední vyslané / přijaté zprávy

  - Změny se týkají sekce [STATION] v parametrickém souboru:
    1. pokud do sekce uvedete klíčové slovo
    ORIGINAL_CHANNELS
    tak bude stanice používat původní čísla kanálů, jako u ovladače starší verze. Takže pokud chcete rozšířit nějakou stávající aplikaci CW, postačí do .PAR souboru u všech stanic uvést toto klíčové slovo a aplikace se s novým ovladačem bude chovat stejně jako se starší verzí. POZOR ! Pokud vyměníte ovladač za verzi 3.05 a vyšší a ponecháte původní .PAR/DMF soubor i aplikaci, tak se z/do aplikace do/z ovladače nedostanou žádné hodnoty !
    příklad: stanice v .PAR souboru, definovaná jako třetí v pořadí s definicí ORIGINAL_CHANNELS, bude používat kanály 1001-1096 pro binární vstupy, 1097-1192 pro binární výstupy (povely), 1193-1256 pro analogové vstupy, atd.
    2. Při "ruční" definici přístupových kanálů pro stanici je nutno definovat v sekci [STATION] všechny typy a přístupové kanály, které hodláte používat. Jejich seznam je uveden níže.
    Způsob zápisu do .PAR je jednoduchý: <číslo kanálu>, návazně na to je nutno definovat v .DMF souboru příslušný typ a směr kanálu.
    Tabulka definic:
    poznamka: na velikosti pismen klicovych slov nezalezi.

        klíčové slovo        směr       typ         popis
                             (pro .DMF soubor)
        ----------------------------------------------------------------------------------
        CHANNEL_BI           input      boolean     binární vstupy,
                                                    obsadí se následujících 96 kanálů
        CHANNEL_BO           output     boolean     binární výstupy,
                                                    obsadí se následujících 96 kanálů
        CHANNEL_AI           input      real        analogové vstupy,
                                                    obsadí se následujících 64 kanálů
        CHANNEL_CT           input      real        čítačové vstupy,
                                                    obsadí se následujících 48 kanálů
        CHANNEL_MI           input      real        vstupy memory_in,
                                                    obsadí se následujících 45 kanálů
        CHANNEL_MO           bidir      real        výstupy memory_out,
                                                    obsadí se následujících 100 kanálů
        ErrorNoAnswer        input      real        počítadlo zpráv bez odpovědi
        ErrorInMess          input      real        počítadlo zpráv příjatých s chybou
        SilenceTime          input      real        čas v sekundách bez komunikace
        SleepTime            input      real        zbývající čas "uspání" stanice
        ErrCount             input      real        počet aktuálních chyb, při překročení
                                                    SLEEP_COUNT v sekci GLOBAL začne "SLEEP"
        Video                input      string      řádky displeje
                                                    obsadí se následující 4 kanály
        out_read_AIvardis    output     boolean     způsobí vyčtení AI z Vardisu a přepočet
                                                    do AI dle ANALOG_LIMITS
        out_read_CT          output     boolean     způsobí vyčtení CT
        out_write_BO         output     boolean     způsobí zápis povelů
        out_write_MO         output     boolean     způsobí zápis MO
        in_now_comm          input      boolean     true=právě komunikuje
        in_last_com_err      input      boolean     true=chyba při poslední komunikaci
        bi_new_BI            bidir      boolean     vyčtení/nulování nových BI
        bi_new_AI            bidir      boolean     vyčtení/nulování nových AI
        bi_new_CT            bidir      boolean     vyčtení/nulování nových CT
        bi_new_MI            bidir      boolean     vyčtení/nulování nových MI
        bi_new_err_control   bidir      boolean     vyčtení/nulování chyby řízení Vardisu
        out_write_restart    output     boolean     zápis restartu pro Vardis
        out_read_BI          output     boolean     způsobí vyčtení BI
        out_read_KI          output     boolean     způsobí vyčtení KI, Diregt
        out_write_KO         output     boolean     způsobí zápis KO, Diregt
        out_read_AI          output     boolean     způsobí vyčtení AI (3bf hodnot)
        out_connect_modem    output     boolean     naváže spojení přes modem
        in_connecting_modem  input      boolean     právě navazuje spojení
        in_connected_modem   input      boolean     spojení přes modem navázáno
        in_active_message    bidir      boolean     vyčtení/nulování příznaku aktivního hlášení
        out_write_all_BO_MO  output     boolean     způsobí opětný zápis všech BO a MO

    3. Rozsireni cteni/zapisu dat do libovolne oblasti pameti systemu Promos-RT/RTm/RT40 Do sekce [STATION] lze pripsat libovolny pocet bloku MEMORY_BLOCK pro I/O pristup do pameti CMOS RAM.
    Obecna definice:

          MEMORY_BLOCK
            ADDR
            CHANNEL
            CHANNEL_READ
                   { v DMF je to BOOLEAN OUTPUT, zmena zpusobi vycteni bloku }
            TYPES

              { mozne typy: }
              { BYTE      8 bit bez znamenka,   v DMF  shortcard
                WORD      16 bit bez                   cardinal
                INTEGER   16 bit s                     integer
                CARDINAL  32 bit bez                   longcard
                LONGINT   32 bit s                     longint
                REAL      3bf float                    real
                + , v DMF input, output, bidirectional }

              ....

            TYPES_END
          MEMORY_BLOCK_END

    Pokud budete chtit cist/zapisovat boolean-promenne, pouzijte typ BYTE, ktery lze v aplikaci rozebrat na jednotlive bity pomoci bitovych operaci.
    priklad:

          MEMORY_BLOCK
            ADDR $0001 { lze uvadet i adresy indexovych promennych systemu Promos,
                         zde adresa $0001 znamena pozici AD1 }
            CHANNEL 1000
            CHANNEL_READ 2000
            TYPES
              REAL INPUT { 3bf, bude to kanal 1000, v DMF "real input" }
              REAL INPUT { 3bf,         kanal 1001 }
              REAL INPUT { 3bf,         kanal 1002 }
              REAL INPUT { 3bf,         kanal 1003 }
            TYPES_END
          MEMORY_BLOCK_END