1. Nelíbí se ti reklamy? Zaregistruj se a přihlaš se na fóru!

Projekt Binární síť

Vlákno v 'Stavby a projekty' založil ThatMineMac 13. dubna 2018.

  1. ThatMineMac

    ThatMineMac Registered

    Offline
    Registrován:
    21. prosince 2016
    Nedávno jsem vylepšoval systém na kontrolu farem u nás v MineFactory. Fungoval tak, že v každé z automatických farem byl dropper, který dropnul item na pressure plate pokaždé, když farma něco vyprodukovala. Signál z pressure platu byl poté redstoune drátem vedený do centrály, kde byl pevně napojený na lampu, která indikovala jeho stav. Tedy pokud farma nic 5 minut (despawn time itemu) nevyprodukovala, lampa zhasla, což idnikovalo závadu. Ačkoliv tato stavba byla velmi jednoduchá, měla za výsledek obrovské redstone dálnice pod továrnou.
    Zde je výstup poze ze 4 farem, ostatní dráty vedou jinde. 2018-04-13_19.45.14.png
    A tak mě napadlo: co kdyby bylo všechno vedeno jedním drátem? Řešení: binární soustava.
    Plán byl takový: každá farma bude mít své ID, které pokaždé, když něco vyprodukuje odešle přes pouze jeden redstounový kabel centrále.
    U farmy jsem tedy postavil kodér, který pokaždé když byl spuštěn, vyslal první startovací signál a poté své binární ID. Jedničky znamenaly zapnutý signál a nuly vypnutý. V centrále se nacházel dekodér, který přijatý kód dekódoval a rozsvítil příslušnou lampu. A povedlo se. Systém je už nainstalovaný a plně funkční.
    2018-04-13_20.01.12.png 2018-04-13_20.01.41.png
    A tak mě zase něco napadlo: vždyť přece binárním kódem můžu posílat mnohem víc něž jen status o farmách!
    A tak jsem zasedl k mému redstone testovacímu světu a dal se do práce. Vytvořil jsem mašinu, která převedla binární kód na písmena.
    2018-04-13_20.08.22.png
    V abecedě (bez diakritiky a CH) je celkem 26 písmen, kterým jsem přiřadil čísla. 1 pro A, 2 pro B, 3 pro C a tak dále až do 26 pro Z (viz tabulka). Pokud alespoň trochu znáte binární soustavu, tak víte, že pětimístný kód složený z jedniček a nul může mít až 31 kombinací. Proto jsem čísla 27 - 31 přiřadil speciálním znakům, z toho např. 28 pro END, tedy zank který pošlete na konec vaší zprávy.
    A co budeme potřebovat k tomu abychom poslali zprávu? Nějakou podobně velkou příšernost?
    Vůbec ne. Stačí vám:
    1. připojení k mému přístroji (do sítě která by mohla vzniknout)
    2. jednoduchý odesílač zpráv (pokud jste zběhlí v redstounu, můžete si postavit třeba nějaký složitější, kam nebudete muset zadávat kód, ale můžete zadávat rovnou písmenka. Je to opravdu jen na vás :) )
    3. moje tabulka
    2018-04-13_20.47.04.png 2018-04-13_20.47.13.png
    Jak už vám asi došlo, po stisknutí tlačítka vlevo, bude odeslán signál 01010 tedy J (10). Pod blokem písku se nachází jednoduchý píst, směřující nahoru.
    A tak mě opět napadlo:
    co takhle si udělat na Majncraftu menší síť, do které by se mohl každý připojit a poslat jakoukoli zprávu, kterou bych poté mohl třeba opsat na fórum, abyste věděli, že přenos byl úspěšný? Bohužel je jen pár věcí k čemu je to dobré:
    • Pro zábavu
    • V případě nejvyšší nouze, kdyby minecraft chat přestal fungovat (co kdyby náhodou :D)
    • Nebo si můžete postavit vlastní síť třeba, jako já pro kontrolu farem
    Když se do sítě připojíte můžete nejen zprávy odesílat, ale také přijímat, pokud si postavíte podobnou příšernost jako plánuju já.

    Nejlépe bych to přirovnal asi k radioamatérství (až na to že tohle by bylo po drátě). Radioamatérství je z velké části jen pro zábavu ale v nouzových situací (kdy např. nefunguje telefón, internet atd.) je toto jediná cesta jak komunikovat na dlouhé vzdálenosti. (samozřejmě tohle by nefungovalo bez internetu protože je to pořád v minecraftu a minecraft je jen hra a né realita takže se na server bez internetu prostě nepřipojíte a hotovo.)

    O co tedy vlastně žádám?
    Pokud vám to připadá jako zajímavý nápad, můžeme se domluvit kudy by vedl hlavní drát (připomínám: pouze 1x2 bloků i s nezbytnou podstavou pro redstone). No a pak se můžete jednoduše připojit a zaslat nějaké to psaní.

    Za každý dotaz/připomínku/radu budu velmi rád.
     

    Přiložené soubory:

    Poslední úprava: 15. dubna 2018
    • Kreativní příspěvek Kreativní příspěvek x 9
    • Líbí Líbí x 3
  2.  
  3. FrostbiteMan

    FrostbiteMan Registered

    Online
    Registrován:
    09. října 2012
    Mě napadlo na podobném principu postavit automatické metro (Zpráva kam vozík jede by putovala o kousek dřív než vozík, a tak by se podle toho nastavovaly výhybky). Ale prý by to bylo moc nákladné...
     
    • Souhlasím Souhlasím x 1
  4. Potkan8

    Potkan8 Registered

    Offline
    Registrován:
    04. září 2013
    @FrostbiteMan Přesně toto mě také napadlo. Ono tím RS by šlo posílat více věcí. Na začátku signálu by mohl být jakýsi preprocesor a za ním konkrétní informace. Pak by se mohla jednoduše na mapě vybudovat jednoduchá síť, do které by se mohl zapojit kdokoliv s čímkoliv. Jediné, co nás vlastně omezuje, je rychlost přenosu. Nicméně nepředpokládám, že by s aktuální aktivitou na serveru nastalo přetížení. Možné omezení k částečné eleminaci přetížení by mohlo být např. omezení posílání informací farem s časovým intervalem (např.) 10 minut, či omezení zpráv na počet znaků. Mně takhle také napadlo vybudovat síť hopperů, kdy by do hopperových uzlů přicházela informace o cílové destinaci (nicméně otázkou je, co by to udělalo s TPS...), alternativou by pak mohly být vozíky s bedničkou, ale zase otázkou je, jak moc spolehlivé by to bylo.
     
  5. FrostbiteMan

    FrostbiteMan Registered

    Online
    Registrován:
    09. října 2012
    Nejrychlejší a zároveň nejmíň náročný na sever je přenos přes redstone koleje
     
    • Líbí Líbí x 1
    • Souhlasím Souhlasím x 1
  6. RoyalDonut

    RoyalDonut Moderátor

    Offline
    Registrován:
    08. dubna 2012
    Ja to nechapu, na me to je moc slozity :D
     
    • Zábavné Zábavné x 2
  7. weltar

    weltar Registered

    Offline
    Registrován:
    01. listopadu 2011
    Že vám do toho kecám ... jak se na majn zachová RS signál v neaktivním chunku, cestou?

    EDIT offtopic: Když už nonascii charset, tak mi to cosi připomnělo. Pokud budete chtít i cifry, tak to stejně půjde přes 32, tak proč to neudělat stylově :)

    P.P.S.: A těch 5bit jsem už také někde viděl (ale jen viděl, aktivně použil jen párkrát), Resp. toto.
     
    Poslední úprava: 15. dubna 2018
    • Souhlasím Souhlasím x 1
  8. ThatMineMac

    ThatMineMac Registered

    Offline
    Registrován:
    21. prosince 2016
    No nevěděl sem že existuje i nějaký petibitový charset proto sem tam už "naprogramoval" vlastní. A čísla jsou řešená tak, že dáš NUM pak třeba B I a zase NUM a rozumí se tim 29.
    Zjednodušeně: pomocí přiložené tabulky převedeš zprávu na signály, pošleš je po drátě a můj systém na druhém konci drátu z toho zase udělá zprávu.
     
  9. ThatMineMac

    ThatMineMac Registered

    Offline
    Registrován:
    21. prosince 2016
    Systém na přijímání zpráv je hotový!

    Nyní by bylo na čase určit si pár pravidel pro odesílání zpráv:

    1. Pokaždé když budete chtít vysílat, napište do global chatu, aby se zabránilo rušení.
    2. Kvůli tomu jak systém na zapisování zpráv funguje, je potřeba mezi každým znakem nechat chvíli mezeru (pro jistotu třeba 15 vteřim) aby znaky nepřišly pomíchané.
    3. Za každou zprávou dejte znak END (11101) aby se zprávy oddělily
    Teď bych se asi zeptal na jaké úrovni chcete postavit kabel, a kdo k němu chce být připojený.
    Předloha jednoduchého odesílače bude postavena v centrále.
     
  10. FrostbiteMan

    FrostbiteMan Registered

    Online
    Registrován:
    09. října 2012
    Někdy před půl rokem jsem to testoval a v neaktivních chuncích fungoval bez problému
     
  11. ThatMineMac

    ThatMineMac Registered

    Offline
    Registrován:
    21. prosince 2016
    Došel jsem k závěru:
    Kabel by vedl na úrovni brenchmajnu takže asi 12 nebo 13, což by mohlo ušetřit kopání.
    Sít by fungovala tak, že by se po světě rozmístily rozvodny, kam by se každý mohl připojit ze své base. Drát z rozvoden by vedl do hlavní centrály.

    První veřejný binární drát na serveru by vedl z centrály do rozvodny v Majnově. Plánek:
    Bez názvu.jpg

    Rozvodna by bylo jen krytí pro žebřík do podzemí. Byla by používána hráči co by se chtěli přpojit - slezli by po žebříku až dolu ke drátu a prokopaly odsud cestu až k sobě domů. Také by sloužila mně pro otestování spojení. Z rozvodny bych vyslal signál centrále a kdyby nepřišel, věděl bych že je drát poškozený. Drát od rozvoden do centrály bych kontroloval já, o zbytek kabeláže by se staral ten co ji postavil. Nějak takto by mohla vypadat:
    2018-04-15_16.34.16.png
    2018-04-15_16.34.39.png

    Tak co vy na to? Schvalujete? A jaký návrh rozvodny se Vám líbí více?
     
    • Líbí Líbí x 1
  12. $kill

    $kill Registered

    Offline
    Registrován:
    26. července 2014
    Dobry napad na projekt mohl by se z toho udelat takovy mini intranet po majnu a propojovat datovou linkou ruzne projekty, ale. Trosku me teda zarazi prvni pravidlo odesilani zprav ktere efektivne zabranuje automatizovanemu pouziti na globalnim meritku coz je strasna skoda, jelikoz prave tohle je asi nejlepsi a snad i jediny use case takove site.
    Problem kolizi na siti by se muselo resit nejakym zpusobem podobneho na CSMA/CD z dávných dob ethernetu na sbernicovych topologiich. Jedna z moznosti by bylo data kodovat pred odeslanim po drate a zajistit aby pripadne vysilani dvou ucastniku zaroven bylo danym kodovanim rozpoznatelne co nejrychleji - opet je dobrym prikladem ethernet a to 8b/10b kodovani.
    Dulezite je hlavne udelat dobry protokol aby toto slo dobre vyuzivat.
     
    • Souhlasím Souhlasím x 1
  13. weltar

    weltar Registered

    Offline
    Registrován:
    01. listopadu 2011
    Vzhledem ke zpoždění RS signálu na delší trase IMHO žádné (jednoduché) automatizované rozpoznávání kolize (natož její oprava) fungovat nebude.

    Jeden z typů rozpoznání kolize je ten, že, pokud si myslíte že linka je volná, pošlete své unikátní ID a zpětně odposloucháváte, zda se do toho nenamixovalo něco jiného. To předpokládá minimální zpoždění, jinak to nefunguje. (Mmch. podobný způsob využívá i ethernet, který měl buď omezenou délku koaxu, anebo v případě twisted pair řeší kolize z více míst (plus delší vzdálenosti) aktivní prvek (switch).

    Další možností je token přístup - tedy že má každý přidělen svůj (časový/logický) výsek a v něm může psát. Je spousta různých typů (arcnet / token ring / ...) v závislosti na spolehlivosti HW, ale vše je celkem technicky náročné (i na časování) a z RS bych to tedy dělat nechtěl, skoro nemožné vzhledem ke spolehlivosti (navíc náchylný i na chybu jediného hw bodu v síti který zablokuje veškerý provoz, pokud neexistuje aktivní server a hvězdicová topologie).

    ---

    Zmiňované kódování, tedy možnost checksum/crc/whatever na packet - tím u příjemce poznáte, jestli nedošlo k chybě během přenosu (libovolné chybě) ... ale to už znamená složitější handshake (ACK/NAK - např. i primitivní přímý (nekolizní) xmodem není až tak primitivní na naprogramování, pokud řešíš i automatizované recovery) a neřeší se tímto způsobem kolize v síti (protože větší objemy dat než jen ID, došlo by brzy k zahlcení), ale slouží jen k jednoduché opravě chyb stylem požadavku na opakování celého packetu.
     
    Poslední úprava: 15. dubna 2018
    • Souhlasím Souhlasím x 1
  14. $kill

    $kill Registered

    Offline
    Registrován:
    26. července 2014
    Ano je pravda že collision detection je na dlouhé RS síti nereálný. Muselo by se vymyslet něco jiné.
     
  15. weltar

    weltar Registered

    Offline
    Registrován:
    01. listopadu 2011
    Bez chatu? Složitě
    - Jedině hvězdicová topologie, ID stanic a aktivní server "uprostřed" s dostatečnou pamětí (na uložení / zpoždění zprávy v případě kolize stejného cílového klienta) a obrovským výkonem (pokud bych nechtěl mít paměť extrémně velkou a bufferovat každou zprávu, tak by musel zvládat paralelní spojení více nekolizních klientů najednou). Extrémně náročné na server.
    - Kruhová topologie by selhala, jakmile by i jen jediný prvek selhal. To by na MC imho bylo skoro pořád, při větším počtu (desítky+)
    - A vlastně obojí celkem náročnější i na klienty (klient by navíc řešil packety, své ID, cílové/příchozí ID).
    Vše by šlo třeba u computercraft, ale vanilla RS asi těžko.
     
    Poslední úprava: 16. dubna 2018
  16. ThatMineMac

    ThatMineMac Registered

    Offline
    Registrován:
    21. prosince 2016
    Zdrvím, potřeboval bych prosím potvrdit tu stavbu kabelu a návrh rozvodny.
     

Sdílej tuto stránku