Jindra Fučík

LocoNet vs. XpressNet

Tento článek jsem zařadil do rubriky Arduino. Udělal jsem to z několika důvodů. Jeden z nich je ten, že ho považuji za neužitečný, druhý je ten, že se mi nechce jej psát v angličtině.

Pro začátek se pokusím trochu porovnat tyto sběrnice mezi sebou. Rovnou napíši, že se jedná pouze o můj osobní názor a tak je potřeba toto srovnání chápat. Pokud máte názor jiný, pak vám pravděpodobně nezbývá, než si založit vlastní blog a tam si jej napsat.

Přenosová vrstva

Jako přenosovou vrstvu si XpressNet zvolil diferenciální sběrnici RS-485. Její přednost je velká rozšířenost a velká hardwarová podpora. Přenosovou rychlost Lenz stanovil na 62500 baud (bitů za vteřinu). Celková architektura je pak postavená jako single master, multi slave (PMP). Volbu této přenosové rychlosti považuji za poněkud podivnou, já bych spíše preferoval některou z notoricky známých rychlostí (například 57600/115200). Komunikace byla zvolená jak 9-bitová. To je celkem logický krok, který se často používá u sériových sběrnic tohoto typu. Devátý bit neslouží k přenosu informace, ale k označení "volacího znaku" (STX). Tím pochopitelně dochází ke snížení efektivity využití přenosového média, ale rozhodně to není ta největší degradace. Daleko větší je degradace způsobená tím, že centrála obvolává všechna připojená zařízení (ovladače) a pokud ovladač nemá co říci, tak neodpovídá a centrála čeká na uplynutí timeoutu, než osloví další ovladač. Ovladačů je v síti jen omezený a přesně definovaný počet (31), to bývá XpressNetu také často vytýkáno, nicméně ještě jsem se nesetkal s nikým, kdo by na toto maximum efektivně narazil. Vzhledem k tomu, že centrála přiděluje komunikační čas a periodicky obvolává všechna zařízení, je na sběrnici prakticky nepřetržitý provoz. To se dá v zásadě považovat za přednost, neboť každé zařízení má šanci poznat, že došlo k problémům v komunikaci.

LocoNet je co se týká přenosové vrstvy mnohem kreativnější. Zvolil si komunikaci na sdíleném médiu s detekcí chyby (CSMA/CD). To je vrstva, která je mnohem méně často popisovaná, ale přitom se s ní dnes setkáváme opravdu často. Jedná se o síťovou vrstvu, kterou používá například Ethernet. Efektivně by se dalo použít asi srovnání s tlustým Ethernetem 10Base5. Oproti Ethernetu však LocoNet nepoužil oddělovací transformátory ani komunikaci v přeneseném pásmu. Namísto toho definuje potřebu zdroj energie pro napájení přenosového média (proudový zdroj 15mA; typicky +12V max). Pro mne trochu překvapivé je to, že na rozdíl od běžně používaného synchronního Manchester kódování NRZ (Non Return to Zero) používá asynchronní sériové kódování 8N1 (stejné jako sériový port u počítače). Zásadní přednost zvoleného přenosového média spatřuji v tom, že je symetrické a je tedy jedno, jestli uživatel použije přímého a nebo krouceného kabelu. Komunikace je tím pádem volná a není definovaný žádný centrální bod. Komunikační rychlost byla stanovena na bajt za 60 µsec, tedy 16666 baud (Tady asi nevadí, že je komunikace mimo běžné komunikační rychlosti sériového portu 9600/19200). Komunikace je stanovena jako osmibitová, s tím že se osmý bit používá pouze k označení "opcode" - tedy příkazu sběrnice. Datové bajty jsou tedy sedmibitové a to je poměrně dost limitující, neboť velké množství procesorových systémů (včetně definice DCC) je nastaveno na 8 bit, takže se v protokolu často vyskytují bajty, které doplňují osmé bity jednotlivých bajtů. Dále je nutné vzít v úvahu, že se jedná o kolizní komunikaci, která není nikterak arbitrovaná, ale vzhledem ke komunikačním potřebám běžných kolejišť ke kolizím prakticky nedochází (až na výjimky). V původní definici nebylo zavedeno ani označování zařízení (MAC adresa u Ethernetu), ale později se zavedením individuálních konfigurací bylo částečně zavedeno unikátní sériové číslo. Pochopitelně, pokud na sběrnici není žádná komunikace, není možné poznat, jestli je tato komunikace vůbec možná. Součástí vedení jsou dva vodiče Rail Sync. Tyto vodiče mají obsahovat DCC signál, který mohou použít ovladače pro své napájení (jeden ovladač může spotřebovat maximálně 15mA) a nebo pro zesilovače (boostry), které jej používají pro vytvoření kolejového DCC signálu. Bohužel došlo k nepříjemnému rozpadu sběrnice na několik variant a dnes se často setkáme s označením LocoNetT (Throttle = ovladač), Která má místo Rail Sync pouze stejnosměrné napájení (většinou +12 až +15V), někdy se také setkáváme s označením LocoNetB (Booster = zesilovač), který naopak obsahuje Rail Sync, ale né vždy má aktivní datové vodiče. U signálů Rail Sync je také poněkud nelogické chování při přetížení DCC. V takovém případě se očekává, že nebude signál odpojen, ale bude připojen na kladné napájecí napětí. To je nutné proto, aby bylo i nadále možné napájet ovladače. Celkově potřeby napájení ovladačů vytvářejí potřeby různých zesilovačů a doplňovačů energie.

Logická vrstva

XpressNet se na logické úrovni spoléhá na velmi autoritativní centrálu. Protokol je přesně specifikovaný (specifikace je volně dostupná, aktuální verze je 3.6) a nepřipouští jinou komunikaci než ovladač <=> centrála. Protokol vymezuje pouze přesně vyjmenovanou sadu příkazů a prakticky nepřipouští žádné alternativy. To by bylo v pořádku, bohužel však protokol neumožňuje vytvářet žádné požadavky na speciální pakety, takže třeba rozšířený paket pro příslušenství na XpressNetu nevytvoříte ani náhodou. Protokol také neumožňuje vytvářet zařízení, které by chtělo doplňovat informace v centrále. Například informace o obsazení kolejí dokáže rozeslat pouze centrála a není možné k síti připojit nic jiného, co by bylo ochotné poskytovat další informace o obsazení.
Dobré je, že je popis protokolu v podstatě celkem dobře udržovaný a celkem přiměřeně reaguje na požadavky a potřeby modelářů. Vzhledem k pevné definici se také velice snadno ověřuje funkčnost zařízení používajících tuto sběrnici. Vzhledem k tomu, že centrála je v komunikaci nosným prvkem, nevzniká potřeba ověřovat funkčnost ovladačů nebo jiných prvků mezi sebou, pouze komunikace s centrálou. Je potřeba poznamenat, že XpressNet sám neřeší komunikaci s detektory obsazení (ani jiný zpětný ohlas). Tuto informaci zprostředkovává centrále jiná sběrnice (RS-bus/S88) a XpressNet jen odesílá informace k ovladačům

Jak již zaznělo, LocoNet se spoléhá na decentralizovanou strukturu. To v určité míře klade větší nároky na každou jednu komponentu v síti, neboť není úplně jednoznačné, od kterého dalšího prvku přijdou informace, které jsou pro něj relevantní. Proto v praxi mohou existovat instalace LocoNetu, které vůbec nepoužívají DCC centrálu (někdy se mluví o takzvaném pasivním LocoNetu). Digitrax sám asi nemá příliš rád nadměrné papírování, takže ani dokumentace není příliš detailní (Na stránkách LocoNetu je dostupná pouze verze 1.0 a mimo to ještě rozšíření v13 a pak ještě pár poznámek třeba v popisu Transponding s použitím modulu BDL168 a RX4). Naopak nechává velký prostor pro lidovou tvořivost. Navíc Digitrax vytvořil podivný systém licencování, který připouští komunitní tvorbu v diskuzní skupině LocoNet Hackers. Takže pokud chcete o nějakém zařízení prohlásit, že opravdu funguje správně, pak toho docílíte jedině tak, že jej vyzkoušíte proti všem ostatním produktům. Konec konců si všimněte na seznamu certifikovaných zařízení, že je u nich často uvedeno, proti jakým zařízením jsou testovaná. Vzhledem k otevřenosti komunikace si u LocoNetu vystačíte s jednou sběrnicí jak pro ovladače, tak pro sběr informací o obsazení kolejí a možná i další komunikaci. Bohužel Digitrax není příliš inovativní, takže spoustu věcí, které se v DCC začali používat později, tak norma neobsahuje a doplnila je lidová tvořivost a to ne vždy jednoznačným způsobem (všimněte si například používání funkcí F13-F28). LocoNet připouští, aby ovladač požádal centrálu o vytvoření vlastního datagramu. To vnáší do komunikace značnou dávku kreativity a dává to ovladačům velké možnosti. Otázka je, jak moc o to uživatelé stojí. Zajímavé z pohledu logické struktury je kombinování obou komunikačních směrů, které se dá zužitkovat například tak, že jedno zařízení v sobě kombinuje komplexní dekodér příslušenství (řekněme točna) a k němu i zpětný ohlas (točna se točí, točna stojí v pozici 3, ...). V těchto případech zase trochu pozor na již zmíněnou lidovou tvořivost - existuje komunikace, kterou propagují moduly LocoIO a zároveň komunikace příslušenství/zpětné hlášení. Obojí je velice podobné, ale podobné neznamená stejné.

Uživatelské shrnutí

XpressNet se (asi zejména díky spolupráci Lenz+Roco) etabloval do rozhraní vhodného a používaného u domácích kolejišť. U těchto kolejišť se považuje za výhodu, že je jednoznačně a čistě rozdělená hranice mezi tím, co je "uvnitř" kolejiště (pod kolejištěm) a co je vně kolejiště. Uvnitř se předpokládá rozvod DCC signálu v jednom směru a rozvod RS-Bus (alternativně S88) v druhém směru. U těchto rozvodů je praktické, že jsou vytvořené s ohledem na potřeby vnitřních rozvodů - takže propojování pomocí dvoudrátových kabelů, uchycených do šroubovacích svorek. Venku kolem kolejiště pak lehký a flexibilní rozvod XpressNet pro připojení ovladačů a ovládacích panelů. Proto také v portfoliu najdete velké množství univerzálních ovladačů, ale také celou řadu jednoúčelových udělátek, ovládacích panýlků a pomocných destiček. Pokud se tedy vžijeme do role uživatele kolejiště, pak poměrně praktické možnosti jednoduchého nákupu.

Na LocoNetu je naopak vidět jeho americký původ. Soustředí se na velká klubová kolejiště, kde je větší množství uživatelů, kteří zastávají jednoduché úlohy. Uživatelé nejsou příliš kreativní a zařízení používají pouze tak, jak jim napsal výrobce, že je používat mají a nikdy si nepoložili otázku, jestli se nedá to či ono zařízení použít ještě pro další funkce. Jednotný rozvod zajišťuje, že se uživatel nesplete v tom, co kam připojuje a nenutí uživatele k přemýšlení. To že je vnitřní rozvod proveden tenkým drátem a navíc drátem s poněkud komplikovaným konektorováním (Telefonní konektor vyžaduje jednoúčelový nástroj na nacvaknutí - krimplovací kleště), to vede k tomu, že uživatelé mají tendenci volit větší a komplexnější zařízení a musí k nim složitě přivádět napájení. U locoNetu je těžké si představit, že vznikne něco jako kolejivo interně vybavené dekodéry a detektory.
Ve své snaze zmonitorovat větší množství komerčně dostupných zařízení jsem narazil na jednu vlastnost, která opravdu hodně zhoršila můj pohled na LocoNet. Zjistil jsem, že existují zhruba tři skupiny uživatelů - jedna, u nás asi nejpočetnější, jsou uživatelé, kteří používají loconet na modulových kolejištích. Uznávají pouze ovladače FrED (Fremos Einfacher Drehregler - jednoduchý Fremo ovladač vyrobený v roce 1997), zesilovače SPAX a centrálu MiniBOX; na všechno ostatní říkají, že to není standard pro moduly. A pak jsou dvě skupiny a to dkupine Digitrax a Uhlenbrock. To je tak trochu dáno tím, že tito výrobci si každý vyložili normu po svém a jejich produkty se vydaly každý jiným směrem. Jsou tak trochu vzájemně nekompatibilní. To slovo "tak trochu" znamená, že třeba pro ovládání lokomotivy fungují funkce F0-F12 jednotně, ale pro funkce F13-F28 používá každý jinou sadu příkazů; Digitrax používá pro konfiguraci zařízení v síti takzvané SV (Setup Value), zatímco Uhlenbrock LNCV (LocoNet Configuration Value), které se každé chovají jinak. K Digitrax SV existuje alespoň částečná dokumentace, ale k LNCV existuje popis jen v rámci několika mailů s konferenci LocoNet Hackers. Není potřeba zdůrazňovat, že tyto metody konfigurace jsou navzájem neslučitelné. A aby se to nepletlo, tak se postupně objevvuje na trhu třetí výrobce s centrálou DR5000, která začala zavádět další lidovou tvořivost a nekompatibilitu.

Závěr

Pokud jste čekali nějaký jednoznačný závěr jako že třeba jedna sběrnice je lepší než druhá, tok to máte smůlu, nic takového si netroufám tvrdit. Je to jako svět Windows vs. Linux. Každý má svoje a každý si musí vybrat svou cestu.