Loconet / DCC s použitím arduino

Vše pro digitální provoz - dotazy, praxe, návody, postupy, normy, kompatibilita atd.

Moderátoři: Michal Dalecký, Jarda H., Rudolf

Re: Loconet / DCC s použitím arduino

Příspěvekod fulda » sob 14 kvě, 2016 6:57 pm

Zdeno už tady několikrát napsal něco o prioritách komunikace v LocoNetu. Já se pokusím vložit obrázek kerej onehdá někde prezentoval Stefan Bormann když popisoval jednotlivé vrstvy LocoNetu. Tak tento obrázek popisuje časování paketů. Po ukončení vysílání paketu (posledního stop bitu z posledního bajtu), následuje čas CD (carrier detect), který definuje konec paketu. Následuje čas MD (Master Delay), to je čas, kdy může vysílat pouze master (centrála) a pak je čas PD (Priority Delay). To je čas který určuje důležitost zařízení. Ta zařízení, která se považují za důležitější, tak mají PD menší, ta, která jsou méně důležitá, tak mají větší PD. Podle normy má být PD ještě ovlivněno náhodným číslem.
Obrázek
Jenom pro doplnění čísla jsou násobky délky jednoho bitu (60μs).
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
Uživatelský avatar
fulda
 
Příspěvky: 5150
Registrován: pon 09 srp, 2010 8:08 am
Bydliště: Praha - Uhříněves

Re: Loconet / DCC s použitím arduino

Příspěvekod fulda » sob 14 kvě, 2016 7:05 pm

A teď zase něco praktického. Arduino má celkem dost času při detekci obsazení a pokud se podívám třeba na Uhlenbrock 63340, tak ten umožňuje definovat každému vstupu individuální adresu. To u RS bus ani S88 není moc běžné, tak to neumím používat. A tak se chci zeptat, k čemu to může být prakticky použitelné? Používá to někdo??
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
Uživatelský avatar
fulda
 
Příspěvky: 5150
Registrován: pon 09 srp, 2010 8:08 am
Bydliště: Praha - Uhříněves

Re: Loconet / DCC s použitím arduino

Příspěvekod HonzaM » sob 14 kvě, 2016 8:01 pm

fulda píše:A teď zase něco praktického. Arduino má celkem dost času při detekci obsazení a pokud se podívám třeba na Uhlenbrock 63340, tak ten umožňuje definovat každému vstupu individuální adresu. To u RS bus ani S88 není moc běžné, tak to neumím používat. A tak se chci zeptat, k čemu to může být prakticky použitelné? Používá to někdo??

K čemu myslíš? Každou jednotlivou detekci využívám samostatně, bez ohledu na umístnění na layoutu a bez ohledu z kterého prvku je snímána.
FREMO, Zababov N-scale
http://www.1ku160.cz
HonzaM
 
Příspěvky: 4362
Registrován: úte 05 úno, 2013 9:01 am
Bydliště: Praha

Re: Loconet / DCC s použitím arduino

Příspěvekod Jirka_US » ned 15 kvě, 2016 6:34 am

Jako "nahradu" LocoBufferUSB jsem vyzkousel zde publikovane a pomerne jednoduche zapojeni:
http://pgahtow.de/wiki/index.php?title= ... et_sch.png
V pripade Arduino Mega jsem pripojil LN_OUT na pin c.6 ( je treba zkontrolovat popr. zmenit i prirazeni v SW) a LN_IN na pin c.48. Je treba rovnez propojit CTS pin prevodniku CH340 s pinem c.9 Arduina.
S centralou od Digitraxu zatim funguje bez problemu. Takze dalsi celkem logicky krok bude propojeni LocoNetu s DCC++ centralou.
Jirka
Jirka_US
 
Příspěvky: 1155
Registrován: sob 08 kvě, 2010 5:56 am

Re: Loconet / DCC s použitím arduino

Příspěvekod zdeno » ned 15 kvě, 2016 7:18 am

fulda píše:Zdeno už tady několikrát napsal něco o prioritách komunikace v LocoNetu. Já se pokusím vložit obrázek kerej onehdá někde prezentoval Stefan Bormann když popisoval jednotlivé vrstvy LocoNetu. Tak tento obrázek popisuje časování paketů. Po ukončení vysílání paketu (posledního stop bitu z posledního bajtu), následuje čas CD (carrier detect), který definuje konec paketu. Následuje čas MD (Master Delay), to je čas, kdy může vysílat pouze master (centrála) a pak je čas PD (Priority Delay). To je čas který určuje důležitost zařízení. Ta zařízení, která se považují za důležitější, tak mají PD menší, ta, která jsou méně důležitá, tak mají větší PD. Podle normy má být PD ještě ovlivněno náhodným číslem.

Nic neni tak jednoduche, aby se to nedalo udelat slozitejsi. ;-) Zase je realita nekde jinde a jak je obvykle, nepise se vsechno.
---
Protoze stop-bit u UART prenosu je "1", tak nemuze byt pouzity jako presna reference. Musi se pouzit posledni start-bit, ktery ma vzdycky hodnotu "0". Ted je irelevantni, zda jsou dalsi datove bity v hodnote "0".
To znamena ze od posledni zmeny hodnoty UARTu se musi pricist minimalne 600uS, aby bylo zajistene odeslani celeho byte, ktery muze byt 255 a teda vsechno v "1". Tim je zajisteno, ze jine zarizeni neskoci do vysilaneho paketu.
Byva dobrym zvykem jeste pripocist 120uS na 100% zajisteni, ze nezacina dalsi start-bit.
V tomto okamziku muze zacit vysilat LocoBuffer, pripojeny na PC.
To je prvni priorita, 720uS az asi 1100uS.
---
Druha priorita je vysilani centraly v casech 1200 az 1380uS od posledni zmeny na UARTu. Ta musi vysilat drive, nez ostatni zarizeni, protoze nektere pakety jsou bezadresove a prednostnim vysilanim se to zajistuje.
---
Treti priorita je vsechno nad 1560uS, kde se k 1560uS pripocitava cas od 0us do asi 720uS. Tento cas neni zhora striktne omezeny a muze se pozit treba 5000uS, ale potom muze byt problem pro dane zarizeni, se pripojit.
Jsou tu tri zvlastnosti, ktere nutno dodrzet.
Pokud ma zarizeni vysokou prioritu a delsi dobu se nemuze dostat na sbernici, tak muze snizit prioritu o 60uS na dalsi pokus, az na zakladni hodnotu 1560uS.
Byva zvykem davat rozestup priorit po 2uS, aby bylo umozneno zarizeni poslat start-bit a nevznikaly kolize hned pri posilani start-bitu. To zase vyzaduje, aby od zjisteni moznosti vysilat, opravdu zarizeni poslalo start-bit do 2uS.
Vypocet priorit musi byt opravdu nahodny a to je nekdy problem, protoze zarizeni od jednoho vyrobcu zacinaji pocitat stejne. Stava se, ze pokud se setkaji dve zarizeni se stejne vypocitanou prioritou, tak se neprihlasi ani jedno.
Ja osobne pouzivam ID cislo u ovladacu, ktere aspon trosku zajistuje rozdilny zacatek vypoctu priority.
Uživatelský avatar
zdeno
 
Příspěvky: 3156
Registrován: pon 11 črc, 2011 8:54 am

Re: Loconet / DCC s použitím arduino

Příspěvekod fulda » ned 15 kvě, 2016 8:06 am

HonzaM píše:K čemu myslíš? Každou jednotlivou detekci využívám samostatně, bez ohledu na umístnění na layoutu a bez ohledu z kterého prvku je snímána.

Ptám se na číslovací plán. Ten Uhlenbrock (na rozdíl třeba od digikejs) umožňuje, aby každý vstup mněl své individuální číslo. Většinou se to dělá tak, že prvnímu vstupu se přidělí nějaké číslo - třeba 10, druhý vstup na stejném modulu automaticky dostane další v pořadí - takže 11, další 12, ...
Zatímco ten Uhlenbrock umožňuje aby každý vstup měl své vlastní číslo, třeba tak že první má 10, druhej má 15 a třetí 27. Ono to zní atraktivně, že si jako člověk může vytvářet individuální číslovací plány, ale je potřeba vzít v úvahu, jestli je ten člověk taky schopnej to do toho modulu naprogramovat, protože pochopitelně to pak znamená mnohem složitější konfiguraci.

Jirka_US píše:Jako "nahradu" LocoBufferUSB jsem vyzkousel zde publikovane a pomerne jednoduche zapojeni:
http://pgahtow.de/wiki/index.php?title= ... et_sch.png
V pripade Arduino Mega jsem pripojil LN_OUT na pin c.6 ( je treba zkontrolovat popr. zmenit i prirazeni v SW) a LN_IN na pin c.48. Je treba rovnez propojit CTS pin prevodniku CH340 s pinem c.9 Arduina.
S centralou od Digitraxu zatim funguje bez problemu. Takze dalsi celkem logicky krok bude propojeni LocoNetu s DCC++ centralou.
... takže jsi nakonec udělal to, co popisuju TADY s tím, že jsi použil tu metodu s pájením drátku přímo na převodník, kterou tady většina lidí odsoudila a proto jsem jí v textu zmínil jen okrajově ve fotodokumentaci?
---
BTW: píšeš, že používáš Arduino Mega, tak to mne zajímá, proč jsi pro čtení LocoNetu použil časovač Timer 5 a softwarovou tvorbu asynchronního sériového signálu a nepoužil jsi další tři dostupné hardwarové sériové porty, například RX1+TX1 na pinech 19+18???
Naposledy upravil fulda dne ned 15 kvě, 2016 9:11 am, celkově upraveno 1
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
Uživatelský avatar
fulda
 
Příspěvky: 5150
Registrován: pon 09 srp, 2010 8:08 am
Bydliště: Praha - Uhříněves

Re: Loconet / DCC s použitím arduino

Příspěvekod fulda » ned 15 kvě, 2016 9:05 am

zdeno píše:Nic neni tak jednoduche, aby se to nedalo udelat slozitejsi. ;-) Zase je realita nekde jinde a jak je obvykle, nepise se vsechno.
Už jsem se bál, že to nenapíšeš :mrgreen:

zdeno píše:Protoze stop-bit u UART prenosu je "1", tak nemuze byt pouzity jako presna reference. Musi se pouzit posledni start-bit, ktery ma vzdycky hodnotu "0". Ted je irelevantni, zda jsou dalsi datove bity v hodnote "0".
To znamena ze od posledni zmeny hodnoty UARTu se musi pricist minimalne 600uS....
(trochu to pokrátím, ty časy stejně nikoho nezajímají)

Ano, máš pravdu, tady narážíme na jeden problém, který zavedl Digitrax tím, že pro LocoNet sice hezky zvolil CSMA/CD, ale na rozdíl od běžně používaného kódování bitů synchronní metodou NRZ (manchester code) nahradil asynchronním přenosem a zároveň se snaží podporovat hot-plug (trochu víc podrobností je TADY v kapitole "Přenosová vrstva"). Takže jak správně popisuješ může dojít k tomu, že připojíš zařízení v době těsně za tím start bitem, takže si to konkrétní zařízení myslí, že je na sběrnici ticho a ono se přitom jedná o vysílání skupiny bitů "1" (vysílání bajtu 0xFF je v LocoNetu nelegální, ale stejně dobře se může jednat o legální znak 0x7F kontrolního součtu). A právě proto je hodnota CD stanovena na 20, protože maximum co teoreticky může procházet je 6+1 efektivních bitů hodnoty "1", takže se má za to, že 20 je bezpečně větší než 7. Nehledě na to, že je ještě doplněno MD s hodnotou 6, takže je téměř jisté, že se takové netrpělivé zařízení dostane až za centrálu, zejména proto, že pokud není centrála, pak není na sběrnici čitelná úroveň "1", ale spíš "0", takže tam se hot-plug problémy neočekávají.
(kosmetická vada toho, že Digitrax uvádí časy v násobcích délky bitu asi není podstatná, předpokládám, že většina lidí tady si dokáže spočítat, že 20×60μs = 1200μs a (20+6)×60μs = 1560μs).

zdeno píše:Vypocet priorit musi byt opravdu nahodny a to je nekdy problem, protoze zarizeni od jednoho vyrobcu zacinaji pocitat stejne. Stava se, ze pokud se setkaji dve zarizeni se stejne vypocitanou prioritou, tak se neprihlasi ani jedno.
Ano, já osobně si myslím, že tohle je také jeden z důsledků zjednodušení 10Base5, které Digitrax provedl a uvědomil si jej až později. Jedná se o absenci toho, čím je v Ethernetu MAC adresa (podrobnosti zase na ZNÁMÉM místě), protože tím přišel o "random seed", který Ethernet úspěšně používá právě pro stanovení té náhodnosti. Proto se v tom praštěném apendixu 13 pokouší definovat "výrobní číslo", které má MAC nahrazovat.
Já se pokouším tomuto jevu předcházet tak, že si vytvářím opravdu unikátní random seed pomocí jitteru dvou nepřesných časovačů. (popsal jsem to ZDE, ale ten web má namířeno od deseti k pěti a už je tak zhruba u čísla 3 a zrychluje, takže už je ten článek těžko čitelný).
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
Uživatelský avatar
fulda
 
Příspěvky: 5150
Registrován: pon 09 srp, 2010 8:08 am
Bydliště: Praha - Uhříněves

Re: Loconet / DCC s použitím arduino

Příspěvekod zdeno » ned 15 kvě, 2016 11:23 am

bylo by dobre, kdybys zapomenul na nejake "predky" nebo "zadky" Loconetu a bral Loconet takovy, jaky je.
Zbytecne s tim obkecavas veci. Koho zajima nejaka 10base5 ??
Sbernice Loconet je navrhnuta a pouzivana podle nejake normy, ktera muze a nemusi s necim jinym souviset.
Michat synchronni a asynchronni typ sbernice, to je trochu mimo misu.
---
Ten vypocet priority je zajimavy, ale neni potrebne to delat az tak slozite. Problem muze byt cas, kdyz casy vypoctu nad 1mS asi budou problematicke.
Jen je dulezite, to vysledne cislo omezit na rozsah 0 az 720 a to pricist ke konstante 1560 a jen s nasobkem 2, teda bud liche nebo sude cisla. To je 360 moznych priorit.
Jinak bezne pouzivam u prislusenstvi prioritu 1560 - 2040. Teda 125nS x 64 x 195 = 1560uS a 125nS x 64 x 255 = 2040uS. To je 60 priorit, ktere na prislusenstvi bohate staci, pokud se pouzije samostatna sbernice.
---
U centraly je to trosku jine, tam se pouziva pevna priorita, protoze nehrozi kolize s nicim. To same PC priorita.
Uživatelský avatar
zdeno
 
Příspěvky: 3156
Registrován: pon 11 črc, 2011 8:54 am

Re: Loconet / DCC s použitím arduino

Příspěvekod fulda » ned 15 kvě, 2016 12:27 pm

zdeno píše:bylo by dobre, kdybys zapomenul na nejake "predky" nebo "zadky" Loconetu a bral Loconet takovy, jaky je.
Zbytecne s tim obkecavas veci. Koho zajima nejaka 10base5 ??
Sbernice Loconet je navrhnuta a pouzivana podle nejake normy, ktera muze a nemusi s necim jinym souviset.
Michat synchronni a asynchronni typ sbernice, to je trochu mimo misu...
Kdo se při pokusech o pochopení nějakého systému "vykašle" na sledování historie a nebo na otázky "proč to tak udělali", ten si užije spoustu pěkné zábavy při "vynalézání kola".

U nás ve škole se říkalo, že: Chybami se člověk učí, to je axiom, ale inženýr se učí chybami druhých
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
Uživatelský avatar
fulda
 
Příspěvky: 5150
Registrován: pon 09 srp, 2010 8:08 am
Bydliště: Praha - Uhříněves

Re: Loconet / DCC s použitím arduino

Příspěvekod zdeno » ned 15 kvě, 2016 1:30 pm

ja tomu systemu rozumim a nepotrebujem berlicky jako ty.
Proste to porovnavat s necim jinym je blbost a kdyz se to jeste spoji s tim, ze jsi papezstejsi jako papez, tak je to iba smutne.
Pokud spojujes nestejne veci, tak to iba pokazis. Protoze Loconet neni Ethernet. Latina nebo latrina, to je taky podobne, ale neni to stejne ;-)
---
Jinak zapojeni se spolecnym kolektorem (OC) se pouzivalo omnoho drive nez nejaky Ethernet. Takze by bylo asi lepsi tvrdit, ze Ethernet se odkopiroval od Loconetu. ;-)
Je to vlastne hradlo NOR, ktere jsem pouzival uz v dobe, kdy jsi mozna jeste nebyl na svete (1975).
Uživatelský avatar
zdeno
 
Příspěvky: 3156
Registrován: pon 11 črc, 2011 8:54 am

Re: Loconet / DCC s použitím arduino

Příspěvekod BohousP » ned 15 kvě, 2016 1:45 pm

Zdeno, tady se musím Fuldu zastat. Loconet není Ethernet, ale pánové od Digitraxu ho opisovali. Bohužel, ne úplně, a proto jsou ty problémy, co jsou ... Musíš uznat, že ETH funguje už nějaký pátek celkem dobře, není problém připojovat další a další prvky. Nechci kritizovat Loconet, ale sám víš, že much má dost. Navíc, fůra věcí je nedokumentovaných, nebo nedostatečně. Proto si myslím, že hledat informace dopředu je cesta k úspěchu. Ty jsi sám psal, že máš za sebou mnoho slepých cest. Ono je někdy lepší předem si nastudovat mapu a naplánovat postup.

A mimochodem, nechci se hádat, ale zapojení se společným kolektorem není OC (open collector) ...
Naposledy upravil BohousP dne ned 15 kvě, 2016 2:25 pm, celkově upraveno 1
TT, DCC, NanoX-2017, TC8, ... http://masinky.info
Uživatelský avatar
BohousP
 
Příspěvky: 3031
Registrován: stř 12 kvě, 2010 9:17 am
Bydliště: Praha - Malešice

Re: Loconet / DCC s použitím arduino

Příspěvekod Jirka_US » ned 15 kvě, 2016 2:10 pm

takže jsi nakonec udělal to, co popisuju TADY s tím, že jsi použil tu metodu s pájením drátku přímo na převodník, kterou tady většina lidí odsoudila a proto jsem jí v textu zmínil jen okrajově ve fotodokumentaci?

Nikoliv, prave proto jsem pouzil Mega, ktere CTS pin ma primo vyveden na DPS (oznaceno jako X1), abych nemusel pajet na nozku prevodniku.... Jinak pouzivat Mega jako nahradu za LocoBuffer je trochu neekonomicke (jak financne, tak technicky). Arduino Mega je urceno pro projekt "Z21" popsan zde:
http://pgahtow.de/wiki/index.php?title=Z21_mobile
aby tech nekolik malo priznivcu Xpresnetu co znam melo moznost se pripojit vlastnim ovladacem, ale vetsina si oblibila "bezdrat", takze je to je spise pro uplnost.
Hlavni duvod pro Mega je DCC++ centrala s LocoNetem a pocet IO pinu, ktere mohou primo ovladat prislusenstvi. Idealni kombinace pro zacatecniky, kteri si chteji vyzkouset rizeni pocitacem a nechteji invstovat do komercni DCC centraly.
Jak uz jsem nekolikrat psal centrala DCC++ pouziva primo rozhrani USB a zadny LocoBufferUSB nepotrebuje, ta informace je pro ty co si to chteji vyzkouset a ten popis v nemcine neni uplne presny. Jinak nevidim zadny problem pripajet jeden vodic na soucastku za 2 dolary.....,
Naposledy upravil Jirka_US dne ned 15 kvě, 2016 2:27 pm, celkově upraveno 1
Jirka
Jirka_US
 
Příspěvky: 1155
Registrován: sob 08 kvě, 2010 5:56 am

Re: Loconet / DCC s použitím arduino

Příspěvekod zdeno » ned 15 kvě, 2016 2:20 pm

jasne, ze to byl preklep, ale to jsi mohl vydedukovat z uvedeneho.
---
Slepe cesty byly v necem jinem, napriklad sbernice Denet, kterou jsem kdysi vyvijel.
Nebo nevhodne pouzivane soucastky, navody, postupy, blbe rady.
Proste to je v kazdem z nas, to nejak okabatit a ono to neni az tak jednoduche.
---
Ja se snazim Fuldovi pomoci, aby nemusel odzkusovat kazdou blbost, kterou jsem kdy udelal.
Ale je to tezke, ono to je kazdemu asi dane, ze musi vyzkouset vsechny spatne cesty.
Uživatelský avatar
zdeno
 
Příspěvky: 3156
Registrován: pon 11 črc, 2011 8:54 am

Re: Loconet / DCC s použitím arduino

Příspěvekod fulda » ned 15 kvě, 2016 3:37 pm

Mno když už jde řeč o pitomostech, tak Digirax v dokumentu LocoNet Personal Use Edition 1.0 SPECIFICATION na začátku třetího odstavce uvádí kde a jak se inspiroval. A pokud jsi četl třeba na té stránce na kterou neustále odkazuji, tak jsi se dočetl třeba: "Manchester encoding (first published in 1949) is ..." Takže tolik z dnešního dějepisu.
Za pravopisné chyby v této zprávě může moje učitelka češtiny.
Uživatelský avatar
fulda
 
Příspěvky: 5150
Registrován: pon 09 srp, 2010 8:08 am
Bydliště: Praha - Uhříněves

Re: Loconet / DCC s použitím arduino

Příspěvekod zdeno » ned 15 kvě, 2016 4:35 pm

fulda píše:Mno když už jde řeč o pitomostech, tak Digirax v dokumentu LocoNet Personal Use Edition 1.0 SPECIFICATION na začátku třetího odstavce uvádí kde a jak se inspiroval. A pokud jsi četl třeba na té stránce na kterou neustále odkazuji, tak jsi se dočetl třeba: "Manchester encoding (first published in 1949) is ..." Takže tolik z dnešního dějepisu.

ale no, natolik anglicky umim, abych pochopil, ze to jen odkazuji na podobnost s Loconetem. Dokonce je tam napisane, ze porovnavat tyto sbernice neni snadne.
Napriklad je tam napisane, ze vybrali neco uplne nove, co nazvali Loconet.
---
Co sem pletes nejaky manchester encoding, ja jsem ho nikdy nevzpomenul. Ty opravdu nemas problem prekroutit kdeco ve svuj prospech.
Uživatelský avatar
zdeno
 
Příspěvky: 3156
Registrován: pon 11 črc, 2011 8:54 am

PředchozíDalší

Zpět na DCC v praxi

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 9 návštevníků