Analog TCO

TCO je ovladač **ANALOGOVÉHO** kolejiště do ovládacího pultu, pracuje s tlačítky (spínači) nebo přepínači. Čte stav tlačítek, sleduje změny a pomocí sběrnice **RS485** odesílá jednotlivým výkonným zařízením pod kolejištěm. Sběrnice nahrazuje samostatné spínací / povelové vodiče vedoucí z pultu k jednotlivým servům, přestavníkům apod. TCO si vystačí se 3 vodiči (U+, U- a GND) a dokáže po nich přenést velké libovolné množství povelů.

Běžné "analogově řízené" kolejiště využívá jednoduchého spínání, tedy na každé zařízení (přestavník, lampa, světlo návěstidla atd) padne jeden vodič. Jejich množství může lehce vyčerpat vodiče v kabelu propojující ovládací panel s kolejištěm.

**POZOR!** jedná se stále o ovládání **analogového** kolejiště, u digitálního kolejiště pomocí **XPressNet** je pro komunikaci s centrálou použitá sice stejná kabeláž ale jiný, standardizovaný, protokol ! Komunikace a možnosti mého "analogového TCO" v žádném případě nedosahuje robustnosti a šíře protokolu XpressNet nebo LocoNet.

TCO se konfiguruje pomocí integrovaného USB portu v Arduinu, zapojeného do PC.

Začlenění Analog TCO do řízení kolejiště je vysvěleno s obrázky na samostatné stránce.

## Popis funkce

TCO neustále sleduje stav připojených spínačů (přepínačů). Zjistí-li změnu, zjistí, podle nastavení, kterému řadiči v kolejišti má poslat pokyn, a jaký pokyn to má být. Převodní tabulka se nastavuje pomocí USB - viz Analogove TCO - Konfigurace.

V případě, že řadič nepotvrdí příjem příkazu, pokouší se TCO poslat povel ještě několikrát - přenos může být chybný, cílový řadič může zrovna něco provádět a povel nezachytí atd.

TCO dokáže obsloužit matici 16x8 = 128 vstupů, rozšířít jde (piny jsou vyvedeny) až na 16x16 = 256 vstupů. Dokáže adresovat až 30 "řadičů" (výkonných zařízení v kolejišti), z nichž každému může poslat až 255 různých povelů.

Prozatím lze k 1 tlačítku přisoudit jen 1 povel.

Další funkce TCO nemá.

## Popis zapojení

Srdcem zapojení je Arduino Nano, které poskytuje USB port pro konfiguraci a diagnostiku. Ovladač pracuje s maticí tlačítek podobně jako TCO ovladač pro digitální kolejiště Paco Canady a Jindřicha Fučíka. Každé tlačítko musí být připojené přes usměrňovací diodu. Na stránkách J. Fučíka jsou doporučená zapojení tlačítek, včetně zapojení, kdy tlačítko ovládá více funkcí.

Poznámka: není třeba se bát cen v Českých eshopech. Číňané dokaží vyrobit a dodat poměrně obstojné kopie za méně než 50Kč.

Připojení řádků a sloupců je vyvedeno na šroubovací svorkovnice (ve schématu **X5**, **X6** - řádky, **X7** - sloupce), takže do každé svorky jde zapojit několik vodičů od jednotlivých tlačítek. Já jsem použil pomocné "maticové" desky, které obsahují oddělovací usměrňovací diody, a každé tlačítko se zapojí do "své" pozice pomocí 2pinového konektoru (spojeno, rozpojeno). Maticové desky mám pro rastr 4x4 tlačítek, jako propojovací konektor slouží pinová lišta.

Připojení napájení (konektor **POWER**) doporučuji konektorem s klíčem, aby se zamezilo přepólování. Deska je však vybavená jednoduchou ochranou (schottky dioda).

Připojení komunikační sběrnice "SBUS" (Simple Bus; nedaří se mi vymyslet dobrý název a XBUS, RBUS apod jsou už "zabrané") je pomocí konektoru RJ12, ve kterém jsou zapojené jen 3 vodiče (U+, U-, GND) a pomocí Jumperu lze přivést i napájení.

Konektor **JP2** je vyvedený kvůli alternativnímu připojení tlačítek (viz dále). V základním zapojení jej lze vynechat. **POZOR** - propojka **SJ1** by měla být v základním zapojení propájená. Propojka **JP5** umožní napájení obvodů ze stabilizátoru Arduina (+5V). **V žádném případě se nesmí nechat spojená při zapojení hlavního napájení.**

U cílového řadiče / ovladače pod kolejištěm je třeba zařídit dekódování protokolu (viz popis dále). Pro případ řadiče ServoPoint jsem připravil pomocnou desku, která se napojí na pinovou lištu namísto maticové klávesnice a úpravu software ServoPointu, takže je možné je připojit ke sběrnici *SBUS*.

Pro rozbočení *SBUS* pod kolejištěm je možné použít standardní rozbočku *XpressNet* (také používá RS485), nebo jednoduchou rozbočku, který má jen plošky pro připájení vodičů.

#### Připojení maticových klávesnic

Je možné zapojovat vodiče přímo do svorkovnic podle návodu J. Fučíka (odrolovat níže, za výčet součástek).

Pro účely konfigurace (viz níže) se používá "souřadnicový systém" **řádek, sloupec.**

Pro účely pultu v klubovém kolejišti jsem připravil návrh DPS maticové klávesnice pro 16 (4x4) tlačítek. DPS obsahuje nezbytné usměrňovací diody a 2pinové konektory, na něž se zapojují tlačítka. Deska se spojuje s TCO pomocí plochých kabelů nebo 4vodičových kablíků (4 řádky, 4 sloupce). Zároveň jsem připravil adaptéry do svorkovnic se 4pin konektory, pro snadné připojení plochých vodičů.

Po zkušenostech však doporučuji volit jiné zapojení: Vždy max 8 tlačítek (řádek) pospojovat jedním kontaktem, případně tyto kontatky svést na společnou rozvodnou destičku připevněnou zespoda ke krycí desce. Dále na krycí desku umístit pinové lišty pro 1-pinové konektory jednotlivých tlačítek a plochým kabelem vést celých 8 sloupců do svorkovnice. Plochý kabel by se připojoval ke krycí desce. Důvod pro změnu zapojení je snížení množství vodičů mezi krycí deskou a elektronikou na dně pultu. Budu-li stavět další analogový pult, provedu zapojení podle tohoto popisu.

## Konfigurace

Nastavení se provádí pomocí **USB portu Arduina** připojeného k PC. Je možné použít sériový monitor **Ardiuno IDE**, nebo terminálový program (Hyperterminál ve Windows, Minicom v Linuxu) v nastavení 115200 bit/s, 8bit, 1 stop bit, žádná parita.

Příkazy se zadávají každý na samostatném řádku, parametry se oddělují navzájem dvojtečkou (:). Příkaz se vykoná okamžitě po odeslání (ENTER).

Dokud se neprovede **SAV** jsou všechny prováděné změny jen v operační paměti. Vypnutí napájení, nebo RESET je zruší a obnoví se nastavení uložené na FLASH. V případě poškození konfigurace je tak nejjednodušší náprava Arduino resetovat.

### Obecné příkazy

Obecné příkazy nemají žádné parametry. Slouží ke správě konfigurace jako celku.

#### **RST**

Provede reset Arduina. Neuložená nastavení se smažou.

Příklad:

```
@ > RST

```

```
Analog Control Panel, version 0.1
Copyright (c) 2018, belgarat@klfree.net; licensed under Apache License 2.0

```

```
@ >

```

#### **CLR**

Vymaže všechna data ve *FLASH* paměti, obnoví se základní konfigurace. Restartuje Arduino.

#### **XDR**

Nastaví adresu ovladače na sběrnici; standardně je nastavená na 1. Není zapotřebí měnit u TCO, ale u podřízených řadičů ano.

#### **EED**

Slouží pro diagnostiku. Vypíše obsah EEPROM - části, kam se ukládají data v HEX formátu. Použijte v případě hlášení o chybě, umožní to přesně obnovit stav pro ladění / hledání chyby.

#### **DMP**

Vypíše současnou konfiguraci. Může sloužit pro **zálohování** - po výmazu a následném odeslání **stejné sekvence příkazů** jako vypíše **DMP** se obnoví původně nastavené funkce.

### Konfigurační příkazy

Konfigurační příkazy provádějí změny v nastavení nebo s nastavením jinak pracují a mohou mít **parametry**.

#### **KMAP**

Nastaví překlad tlačítek na příkazy cílového výkonného zařízení. Podrobný popis Analog TCO - Přiřazení tlačítek

#### **KEYS**

Zobrazí jednotlivá přiřazení tlačítek. Výpis je téhož formátu jako v případě **DMP**, ale obsahuje jen tlačítková přiřazení.

#### **DMAP**

Smaže jedno vybrané přiřazení tlačítek. Syntaxe příkazu je:

```
DMAP:pozice

```

Tedy například

```
@ > DMAP:1

```

```
Deleted: m:1,1:16,8:2:0

```

vymaže první insturkci pro přiřazení spínačů (po odeslání příkazu se vypíše potvrzení). Následující instrukce se "posunou" o 1 vzhůru, tedy instrukce s pořadovým číslem "pozice + 1" dostane číslo "pozice" atd.

#### **PRES**

Simuluje stisk určitého tlačítka - jako by byl zjištěn pomocí čtení tlačítkové matice. Do podřízeného výkonného zařízení se odešle příslušný příkaz.

Syntaxe:

```
PRES:souradnice:stav

```

Například:

```
@ > pres:2,1:1

```

```
Pressed: 1,0=1
Key 0,1 => 2:8

```

provede simulovaný stisk (1, obvod spojen) tlačítka na pozici 2,1 (2. řádek, 1. sloupec). Podle instrukcí KMAP (viz níže) se pozice tlačítka převede na příkaz pro konkrétní řadič a odešle se. V daném případě žádný řadič povel nepřevzal, tak se vypsala ještě chyba přenosu:

```
Retry failed: From:1 to:2 len:3 retr:4

```

Povel slouží k testování, ale také k nouzovému ovládání nebo administrativním úkonům. Popis překladu viz níže.

### Přiřazení tlačítek příkazům

Příkaz **KMAP** je jediný opravdu důležitý, tedy patřičně složitý a zašmodrchaný. Jeho účelem je převést stisky tlačítek na dvojice *<cílové zařízení, příkaz>*, které se potom posílají po komunikační sběrnici.

Při návrhu jsem se opřel o domněnku, že tlačítka na ovládacím pultu, která jsou "*blízko sebe*" zpravidla ovládají zařízení v určité oblasti, a tak je výhodné je nějakým způsobem spojit a zpracovat najednou. Tlačítka se nejlépe zapojují buďto v maticích (pomyslná čtvercová síť s řádky a sloupci, v každé buňce sedí tlačítko), nebo jako posloupnost tlačítek na řádku (několika řádcích). Proto má příkaz **KMAP** dvě formy:

1. přiřazení posloupnosti tlačítek příkazům pro určité výkonné zařízení,
2. přiřazení obdélníkového "útvaru" (podmatice) z matice tlačítek

Podrobnosti jsou vysvětleny na samostatné stránce Analog TCO - Přiřazení tlačítek.

## Další dokumentace

* Analog TCO - Schema a DPS
* Analog TCO - Prirazeni tlacitek
* Analog TCO - Komunikacni Protokol
* Rozbočka XPressNet