Tt-odbocna Wikia
Bez shrnutí editace
značka: editace z Vizuálního editoru
Bez shrnutí editace
značka: editace z Vizuálního editoru
Řádek 1: Řádek 1:
  +
[[File:Tco-popisky.png|thumb|497x497px]]
 
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 '''[https://cs.wikipedia.org/wiki/RS-485 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ů.
 
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 '''[https://cs.wikipedia.org/wiki/RS-485 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ů.
   

Verze z 28. 10. 2018, 23:22

Tco-popisky

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.

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. 

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.

SAV

Uloží všechna data na FLASH.

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 viz níže

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

Přiřazení matice


Možné varianty zapojení

Současné zapojení se hodilo mně pro pult v modelářském klubu. Díky jednoduchému programování Arduina jde provést snadná uzpůsobení pro jiná zapojení vstupů a/nebo výstupů:


Samostatná tlačítka, bez matice

Zapojení lze změnit



Komunikační protokol


Komunikační protokol je sériový, asynchronní. 8bit, 9600 bit/s, žádná parita. Jak vysílač tak přijímač musí používat stejnou přenosovou rychlost.


Synchronizace vysílač - přijímač

Vysílání se zahájí pomocí speciální hodnoty "start byte" (0x7f - startByteChar, RS485Frame.ino). Přenášená data, pokud obsahují znaky s hodnotou 0x7d - 0x7f (včetně) jsou zakódovány pomocí dvojice 0x7d, (hodnota - 0x7d) takže ve vlastním přenosu se nikde "start byte" nemůže vyskytnout. Startovací bajt slouží jako synchronizační značka v přenášených datech pro případ, že se přijímač "rozjede" - ztratí možná jeden přenosový rámec, a pak se chytí pomocí startovacího byte a dál už ví, kde je začátek přenášených dat.


Po vyslání celého rámce vysílač uvolní médium, vyčkává potvrzení. Pokud nedostane potvrzení do stanoveného času, zařadí ztracený rámec zpět do fronty, opět obsadí linku a vysílá další rámec. Po určité minimální době vysílání zopakuje.


Pokud nesedí kontrolní součet, nebo se rámec přeruší nečekaným "start byte", nebo je prodleva před přijetím dalšího znaku nebo bitu příliš velká, částečně přijatá data se bez dalšího zahazují, není jasné jaká část z nich je správně - negativní potvrzení není definováno. 


Casovací konstanty viz RS485Frame.h.


Formát dat, potvrzování

Přenáší se rámec ve tvaru:

- startovací byte

- zbylá délka (jak vlastní data, tak služební údaje - hlavička)

- adresa cíle

- adresa odesílajícího

- vlastní přenášená data

- kontrolní součet

Kontrolní součet se vypočítává ze skutečně přenášených dat, včetně případného "escape" kódování speciálních znaků; počítá se jako prostý XOR. Je možné doprogramovat zabezpečení pomocí CRC16. 


Přijímač je povinen potvrdit příjem ve stejném formátu, vlastní data pak tvoří přijatý kontrolí součet potvrzovaného rámce. Pokud přijímač nepotvrdí příjem do určitého času, bere se rámec jako ztracený / poškozený a vysílání se opakuje.