Kruhová sběrnice
19. června 2014 v 5:32 | Petr | RobotiKomentáře
10 měření / sec
1000 - 8 bitových hodnot
Mininálně 4 sonary - ergo 320 kbit/sec.
Nuto tahat po robotu - tedy max 1 metr.
Viděl jsem to jako UART na 1 MBIT/SEC.
Jedno z českých vydání knihy od Burkharda Kainky „Využití rozhraní PC” (taková útlá s modrým přebalem, nakladatelství HEL) popisovalo na RS232 „fintu” s využitím devátého bitu, kterým se tuším přepínalo jestli „adresa nebo data” (nevím přesně, nemám teď tu knihu po ruce, tak se nemůžu podívat), a dalo se tak tedy na RS232 adresovat několik zařízení.
[3]: Jo tohle umí i atmel AVR, kdysi se to jmenovalo multiprocessor communication mode. Xmega to taky umí. Ale žádný zázrak bych od toho nečekal.
[2]: Do 1m bych použil uart, kdyžtak do stíněného kablíku. Pro připojení k PC (příposlech)přes FT2232, ten to zvládne.
No ono je to jedno, protože autor čláknu stejně zřejmě myslel spojit fyzicky (hardware), i když mě teda taky zmátlo že je to v odstavci zvlášť. Bych se té RS232 tolik nebál, a asi bych ani neřešil víc zařízení na jedné lince - v době kdy jsou k dostání mikrokontroléry klidně třeba i se čtyřmi TTL RS232...
CAN není špatnej, Microchip na něj dělá v THT i SMD pěknej a relativně levnej převodník MCP2551 (a pokud by bylo potřeba oběma směry bez přepínání tak bych to klidně zdvojil), a nebo klasicky MAX485/75176... Ono to jinak nepůjde, pokud to má být diferenciální, tak buď zdvojit, nebo přepínat... o žádným duálním CAN transceiveru bohužel nevím.
Tak tu kruhovou sběrnici jsem nepochopil, jaká je hlavní výhoda? Že se data v jednom okamžiku šíří pouze mezi dvěmima zařízeními a nikoli po celém robotovi najednou?
Ono se říká, neber chlapa od rodiny, nejspíš to funguje i naopak. Neber ženskou od rodiny, páč to bude kráva a do deseti let si budeš muset najít jinou, mladší, krásnější a kdo se s tím má pořád srát.
[8]: když chcete "naivně" udělat sběrnici z UARTů tak "spojíte všechny piny RX - ty jsou vstupy a tak není problém, ale co s piny TX, které jsou výstupy ?
Spojení do kruhu s tím že paket krouží od modulu k modulu je jedna z cest jak spojení "point to point" udělat tak, že může fungovat jako "point to multipoint" - tedy klasická sběrnice, která tam ale nide není.
[9]: Zpravidla většina komunikací je typu master-slave a tak můžete s Tx udělat to samé jako s Rx - spojit je dohromady, akorád je třeba je udělat v provedení s otevřeným kolektorem. U zařízení master jsou samozřejmě potom vývody Rx a Tx do kříže, tj. Tx obsluhuje všechny Rx a Rx poslouchá všechny Tx. Další varianta je spojit naprosto všechny Rx a Tx na jeden drát a provozovat half duplex, pro menší objemy dat je to zkousnutelné řešení a z hardwarového hlediska se ušetříjeden drát. Jinak ta multiprocesorová komunikace o které se tu mluvilo, je celkem fajn věc a přibližuje to UART k té I2C sběrnici, protože to elegantně řeší adresování jednotlivých zařízení na sběrnici. Výhodu ve vašem spojení do kruhu vidím v tom, že není nutné zařízení master, data mohou běžet odkudkoliv kamkoliv a po cestě si je někdo vyzvedne, pokud ne, dojdou zpět k odesílateli a ten je stornuje. Daní za to je větší zpoždění dat a potřeba buferů v každém zařízení, pokud totiž průchozí zařízení zároveň vysílá a má Rx obsazen vlastní zprávou, musí zpráva předchozího modulu čekat na uvolnění Rx. Další krutá daň je opravdu ta seriovost, při jakékoliv poruše, či zatuhnutí komunikace u jednoho zařízení, se komunikace zhroutí, což se u robota rovná oslepnití, ohluchnutí a ochrnutí a to je dost fatální. Vzhledem k tomu, že je pro vás mohutnou inspirací biologické řešení a příroda se podle mě touhle cestou neubírá, nenajde to asi ve vašich robotech velkého uplatnění :-D.
Komentáře jsou uzavřeny.
Jakou komunikační rychlost potřebuješ a na jakou vzdálenost? Já tahám v zarušeném prostředí poblíž velkých motorů RS485 na cca 100m rychlostí 115200bps a bez problémů. Přepínání směru není až takový strašák jak se zdá.