.PAR - sekce [STATION]

V sekci [STATION] se uvádějí definice parametrů jednotlivých stanic.

Promos RT / RTm / RT40

- [STATION]
  počátek skupiny pro definici jedné stanice
- ADDRESS < bajt >
  její komunikační adresa
- RETRANSLATION < bajt >
  adresa, přes kterou se spojuje (u přímého spojení nutno zadat stejnou jako ADDRESS)
- IP < řetězec >
  IP adresa stanice protokolu TCP. Uvádí se pouze u ovladače DWPL2TCP.
- PORT < word >
  Port stanice protokolu TCP. Uvádí se pouze u ovladače DWPL2TCP.
- NAME < řetězec >
  název stanice (maximálně 40 znaků)
- NUM_BINAR_IN < 0-96 >
  počet binárních vstupů, 0-96
- NUM_BINAR_OUT < 0-96 >
  počet binárních výstupů, 0-96
- NUM_ANALOG_IN < 0-64 >
  počet analogových vstupů, 0-64
- NUM_COUNTER_IN < 0-48 >
  počet čítačových vstupů, 0-48
- NUM_MEMORY_IN < 0-50 >
  počet obecných parametrů čtených z paměti CMOS/RT, 0-50
- NUM_MEMORY_OUT < 0-100 >
  počet obecných parametrů zapisovaných do paměti CMOS/RT, 0-100
- BINAR_IN_XOR ( b1 b2 .. bn ) | NONE
  výčet pozic binárních vstupů, které budou po po příjmu zprávy negovány před rozesláním do jednotlivých kanálů CP/CW, NONE znamená bez definice
- BINAR_OUT_XOR ( b1 b2 .. bn ) | NONE
  jako BINAR_IN_XOR, ale pro binární výstupy
- DEF_ANALOG_IN_ADDR < adresa_hex | FROM_GLOBAL >
  adresa ADVYP, tj. počátku pole vypočtených analogových vstupů v CMOS/RT této stanice, při zadání FROM_GLOBAL se bere "default" z GLOBALu
- ANALOG_LIMITS
  pouze pro VARDIS/DIREGT, čtení AD kanálem 460 !
  (index AD, 1-64) (dolní mez - real) (horní mez - real) (korekce - bajt)
  např.

              1     0   255   0

              2    -30  50    0

              3     0   600   244

  ANALOG_LIMITS_END
- DEF_MEMORY_IN
  definice bloku pro čtení čísel
  moznosti:
  DEF_MEMORY_IN NONE ...není definováno
  DEF_MEMORY_IN
  (index) (adresa) [typ]
  [ARRAY]
  např.
  1 $0101
  2 $0102 WORD ...čtení/zápis hodnoty jako 2-byt
  3 $0205
  ...atd čte se po indexech
  nebo
  1 $0101 ARRAY čte se jako blok od 1.indexu (NUM_MEMORY_IN * 3BF)
  DEF_MEMORY_END ... konec definic DEF_MEMORY
  Pokud uvádíme typ (možnosti: REAL = 3BF, WORD = 16bit, BYTE = 8bit), je hodnota do systému Promos přenášena jako 1-3 bajty, ale v DMF-souboru je nutno zachovat typ LONGREAL ! Příslušné rozsahy jsou vždy automaticky omezeny na příslušný typ (REAL=cca +/-10^18, WORD=0-65535, BYTE=0-255).
  Pokud typ NEUVEDEME, tak se jedná o typ REAL.
  Pokud uvedeme klíčové slovo ARRAY (čtení MI jako celý blok najednou), tak se vždy MUSÍ jednat o typy REAL !
- DEF_MEMORY_OUT
  Pro 3bf-zápis do CMOS/RT - zadání viz předchozí. Pozor: klíčové slovo ARRAY u těchto typů nefunguje, je nutno definovat všechny požadované indexy.
- DEF_COUNTER_IN NONE
  zadání přepočtu čítačových vstupů, NONE = nedefinováno nebo
  DEF_COUNTER_IN
  (index, 1-48) (typ) (násobek - real) (start - real)
  index...číslo CTC
  typ.....způsob nulování:
  REAL ... nikdy
  HOUR ... každou hodinu
  SHIFT ... směnu
  DAY ... den
  WEEKEND ... týden
  MONTH ... měsíc
  QUARTER ... kvartál
  YEAR ... rok
  příklad: 1 REAL 1.0 0.0
  DEF_COUNTER_END ... konec definic DEF_COUNTER_IN
- END
  označení konce skupiny

Od verze 3.07:

Rozšíření čtení/zápisu dat do libovolné oblasti paměti systému Promos-RT/RTm/RT40.

Do sekce [STATION] lze připsat libovolný počet bloků MEMORY_BLOCK pro I/O přístup do paměti CMOS-RAM automatu.

Obecná definice

- MEMORY_BLOCK
  ADDR < adresa-počátku-bloku, 16-bit, xxxx=dekadicky, $xxxx=hex >
  CHANNEL < počáteční-kanal >
  CHANNEL_READ < číslo kanálu pro vyčtení >
  { v DMF je to BOOLEAN OUTPUT, změna způsobí vyčtení bloku }
  TYPES
  < typ proměnné > < smer >

            { možné typy: }
            { BYTE      8 bit bez znaménka,   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
              + < smer: INPUT, OUTPUT, BIDIR >, v DMF input, output, bidirectional }

  < typ promenne > < smer >
  ....
  < typ promenne > < smer >
  TYPES_END
  MEMORY_BLOCK_END

Ukázka:

       MEMORY_BLOCK
         ADDR $D61A          { pocatek stejny s ADVYP, tj. aktualni stav analog. vstupu }
         CHANNEL 10001       { blok bude prirazen ke kanalum od cisla 10001 }
         CHANNEL_READ 10000  { kanal boolan output, jeho zapsanim se zpusobi vycteni celeho bloku }
         TYPES               { zacatek definic jednotlivych kanalu "za sebou" }
           REAL INPUT        { kanal 10001, reprezentujici AD01 }
           REAL INPUT        { kanal 10002, reprezentujici AD02 }
           REAL INPUT        { kanal 10003, reprezentujici AD03 }
           REAL INPUT        { kanal 10004, reprezentujici AD04 }
           REAL INPUT        { kanal 10005, reprezentujici AD05 }
         TYPES_END
       MEMORY_BLOCK_END

       MEMORY_BLOCK
         ADDR $0301          { pocatek bloku, 1. regulator UT }
         CHANNEL 20001       { blok bude prirazen ke kanalum od cisla 20001 }
         CHANNEL_READ 20000  { kanal boolan output, jeho zapsanim se zpusobi vycteni celeho bloku }
         TYPES               { zacatek definic jednotlivych kanalu "za sebou" }
           REAL BIDIR        { kanal 20001, reprezentujici POSUN }
         TYPES_END
       MEMORY_BLOCK_END

       MEMORY_BLOCK
         ADDR $0302          { pocatek bloku, 1. regulator UT }
         CHANNEL 20003       { blok bude prirazen ke kanalum od cisla 20003 }
         CHANNEL_READ 20002  { kanal boolan output, jeho zapsanim se zpusobi vycteni celeho bloku }
         TYPES               { zacatek definic jednotlivych kanalu "za sebou" }
           REAL BIDIR        { kanal 20003, reprezentujici SKLON }
         TYPES_END
       MEMORY_BLOCK_END

       MEMORY_BLOCK
         ADDR $D001          { pocatek bloku, chod regulatoru TUV a UT }
         CHANNEL 30001       { blok bude prirazen ke kanalum od cisla 30001 }
         CHANNEL_READ 30000  { kanal boolan output, jeho zapsanim se zpusobi vycteni celeho bloku }
         TYPES               { zacatek definic jednotlivych kanalu "za sebou" }
           BYTE BIDIR        { kanal 30001, reprezentujici chod TUV, zapis 01 -> bezi, 00 -> nebezi }
           BYTE BIDIR        { kanal 30002, reprezentujici chod UT , zapis 01 -> bezi, 00 -> nebezi }
         TYPES_END
       MEMORY_BLOCK_END

Monitorování vyčtených hodnot a zápis řídících konstant do RT

Od verze 3.05: Vzhledem k nedostatku počtu kanálů 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).

- ORIGINAL_CHANNELS

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ř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ý: < klíčové slovo > < číslo kanálu >, návazně na to je nutno definovat v .DMF souboru příslušný typ a směr kanálu. V tabulce (viz níže) jsou ve sloupci default uvedena čísla kanálů, která budou k jednotlivým typů přiřazena, pokud v dané sekci [STATION] bude nalezeno klíčové slovo ORIGINAL_CHANNELS. Pozor ! Protože se jedná o stanice, není toto "defaultní" číslo konečné, ale jedná se o posun (offset) od 500-ti násobku pořadí stanice.

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.

Tabulka definic:

klíčové slovo | směr a typ (pro .DMF soubor) | default č. kanálu | popis
CHANNEL_BI | input boolean | 1 | binární vstupy, obsadí se následujících 96 kanálů
CHANNEL_BO | output boolean | 97 | binární výstupy, obsadí se následujících 96 kanálů
CHANNEL_AI | input real | 193 | analogové vstupy, obsadí se následujících 64 kanálů
CHANNEL_CT | input real | 257 | čítačové vstupy, obsadí se následujících 48 kanálů
CHANNEL_MO | bidir real | 305 | výstupy memory_out, obsadí se následujících 100 kanálů
CHANNEL_MI | input real | 405 | vstupy memory_in, obsadí se následujících 45 kanálů
ErrorNoAnswer | bidir real | 450 | počítadlo zpráv bez odpovědi *)
MsgCounter | bidir real | 481 | počítadlo požadavků na komunikaci, od 4.01i *)
ErrorInMess | input real | 451 | počítadlo zpráv příjatých s chybou
SilenceTime | input real | 452 | čas v sekundách bez komunikace
SleepTime | input real | 453 | zbývající čas "uspání" stanice
ErrCount | input real | 454 | počet aktuálních chyb, při překročení SLEEP_COUNT v sekci GLOBAL začne "SLEEP-mód" po dobu SLEEP_TIME
Video | input string | 456 | řádky displeje, obsadí se následující 4 kanály
out_read_AIvardis | output boolean | 460 | způsobí vyčtení AI z Vardisu a přepočet do AI dle ANALOG_LIMITS
out_read_CT | output boolean | 461 | způsobí vyčtení CT
out_write_BO | output boolean | 462 | způsobí zápis povelů
out_write_MO | output boolean | 463 | způsobí zápis MO
in_now_comm | input boolean | 464 | true=právě komunikuje
in_last_com_err | input boolean | 465 | true=chyba při poslední komunikaci
bi_new_BI | bidir boolean | 466 | vyčtení/nulování nových BI
bi_new_AI | bidir boolean | 467 | vyčtení/nulování nových AI
bi_new_CT | bidir boolean | 468 | vyčtení/nulování nových CT
bi_new_MI | bidir boolean | 469 | vyčtení/nulování nových MI
bi_new_err_control | bidir boolean | 470 | vyčtení/nulování chyby řízení Vardisu
out_write_restart | output boolean | 471 | zápis restartu pro Vardis
out_read_BI | output boolean | 472 | způsobí vyčtení BI
out_read_KI | output boolean | 473 | způsobí vyčtení KI, Diregt
out_write_KO | output boolean | 474 | způsobí zápis KO, Diregt
out_read_AI | output boolean | 475 | způsobí vyčtení AI (3bf hodnot)
out_connect_modem | output boolean | 476 | naváže spojení přes modem
in_connecting_modem | input boolean | 477 | právě navazuje spojení
in_connected_modem | input boolean | 478 | spojení přes modem navázáno
in_active_message | bidir boolean | 479 | vyčtení/nulování příznaku aktivního hlášení
out_write_all_BO_MO | output boolean | 480 | způsobí opětný zápis všech BO a MO
CallCode | bidir longcard | --- | 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).

*) Od verze 4.01i: Pro každou stanici (v sekci [STATION]) přibyla položka "MsgCounter", defaultně nastavena (při ORIGINAL_CHANNELS) jako offset-kanál č. 481 typu "real bidirectional". Obsahuje počet všech požadavků na komunikaci s danou stanicí. Stejně tak původní "ErrorNoAnswer" je také "real bidirectional", z důvodu možnosti zapsat zpět do ovladače jejich hodnoty, např. přístrojem "backup" pro zálohování. Poměrem "ErrorNoAnswer" a "MsgCounter" lze monitorovat úspěšnost komunikace.

U ovladače DWPL2TCP se spojení se stanicemi ovládá stejně jako u CWDRTMOD, tedy najednou lze spojit pouze jednu stanici, spojení se ovládá kanály definovanými klíčovými slovy out_connect_modem, in_connecting_modem a in_connected_modem.