RF komunikace

Základní principy, funkce, rovnice, zapojení - t.j. vše, co byste měli vědět, než se pustíte do praktické realizace elektronického zařízení

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
marzou
Příspěvky: 130
Registrován: 24 čer 2007, 02:00

RF komunikace

#1 Příspěvek od marzou »

Zdravím všechny Bastlíře, zejména odborníky na rádiovou komunikaci!

Pracuji teď na vývoji dvou zařízení, které spolu komunikuji rádiově.
Potřeboval bych vyřešit algoritmus jejich komunikace.

Nadřízené zařízení (Master=>Mástr) vždy pošle příkaz podřízenému zařízení (Slave=>Slávek), to vykoná nějakou činnost a výsledek své práce pošle zpět nadřízenému zařízení.

Problém je v tom, že nelze zaručit, že pokud jedno zařízení vyšle zprávu druhé ji 100% přijme ve správné podobě nebo že ji přijme vůbec (správnost zprávy je samozřejmě zajištěna kontrolním součtem).

Je proto nutné, aby např. Mástr vysílal příkaz opakovaně, ale jak dlouho? Než tuto zprávu Slávek přijme a pošle mu odpověď. Ale tuto odpověď je opět nutno vysílat opakovaně, než jí přijme Mástr. Ale jak se o příchodu odpovědi k Mástrovi dozví Slávek aby přestal vysílat? Mástr mu opět pošle zprávu? Takhle by se to ale mohlo opakovat do nekonečna což není moc dobré:)


1. přístup:
Mástr začne vysílat opakovaně příkaz Slávkovi a zároveň začne poslouchat odpověď od Slávka. Slávek přijme příkaz, zjistí co má dělat a začne vykonávat danou činnost. Po vykonání činnosti začne Slávek vysílat Mástrovi odpověď a zároveň poslouchá, zda-li mu Mástr neposílá další příkaz. Pokud Mástr zachytí odpověď o vykonání činnosti Slávkem, přestane vysílat příkaz na tuto činnost a může vysílat příkaz k jiné činnosti. Slávek samozřejmě vysílá odpověď dokud mu nepřijde příkaz k jiné činnosti, jedině tak se doví, že Mástr výsledek jeho činnosti obdržel………………..

Tento přístup je docela fajn, ale problém je v tom, že se neustále něco vysílá. Pokud je Slávek „lenoch“, Mástr může vyslat několik stovek, tisíců…………stejných příkazů, neboť nemůže vědět, jestli Slávek zprávu dostal, nebo už činnost vykonává, ale ta trvá více času.

Mástr bude brát energii ze sítě, ale Slávek pouze z baterií, takže by se měl šetřit a vysílat co nejméně.


Vylepšený 1. přístup:
Poté co Mástr obdrží zprávu od Slávka, okamžitě mu pošle nějaký příkaz, aby Slávek vysílat přestal a začal pracovat, ten příkaz může být i ve stylu „zatím nic nedělej, jen naslouchej, pokud bych něco potřeboval“. To by spotřebu Slávka snížilo. Další snížení spotřeby by mohlo být příkazem „Slávku, x sekund, minut….. mi nenaslouchej, zkus to třeba za x sekund, minut….“


Pokud má někdo lepší nápady jak Slávkovi co nejvíce ušetřit baterie, nechť se ozve, budu moc rád :)

Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 02:00

#2 Příspěvek od Andrea »

Tak ať Slávek potvrdí okamžitě Mástrovi, že příkaz obdržel a pak ho může vykonávat jak je třeba dlouho. Totéž zprávu Slávka o dokončení příkazu ať Mástr ihned potvrdí.
Na to potvrzování se dá použít podobný algoritmus jako je použit na USB:
Stanice A pošle paket stanici B, ta ho ihned potvdí stanici A. Pokud se ztratí nebo poškodí paket na cestě od A k B, B nic nepotvrdí a stanice A pošle po nastavené době (timeout) paket znovu. Pokud se ztratí potvrzení od stanice B k A, tak stanice A pošle paket znovu (stejně jako když se ztratil od A k B, protože z pohledu A je to totéž, nepřišlo potvrzení). Stanice B ho už jednou dostala v pořádku, takže ho jen potvrdí stanici A a pokračuje v jeho vykonávání.
Počet pokusů o poslání je dobré omezit a indikovat nedosažitelnost stanic.
(Datové pakety jsou na USB číslovány 0 a 1. To stačí k zaručení, že se nepomíchají ani nevezmou dvakrát)

Uživatelský avatar
Crifodo
Příspěvky: 14471
Registrován: 11 říj 2005, 02:00

#3 Příspěvek od Crifodo »

Strategie dost závisí na faktických podmínkách.
1) Je možné nebo nutné dodržovat pro komunikaci nějaká časová okénka nebo může nastat kdykoliv? pokud se dá komunikovat v oknech, dá se udržet dlouhodobě u obou synchronní hodiny?
2) vysíláš na jediné frekvenci nebo duplexně?
3) lze předpokládat lepší výkon a antény u Mástra nebo je to jedno?
4) máš nějaký předpoklad že v komunikaci jsou pravděpodobné výpadky?
podle toho je pak možné uvažovat dál o účinném a úsporném protokolu.
O filozofii komunikace by mohli vyprávět konstruktéři meziplanetárních sond, je fakt že někdy dokázali úplný zázraky...
Třeba se stupněm neúspěšných pokusů měnit četnost poměrů p/v nebo modifikovat výkon, monitorovat rušení atd.

Uživatelský avatar
marzou
Příspěvky: 130
Registrován: 24 čer 2007, 02:00

#4 Příspěvek od marzou »

Andrea píše:Tak ať Slávek potvrdí okamžitě Mástrovi, že příkaz obdržel a pak ho může vykonávat jak je třeba dlouho. Totéž zprávu Slávka o dokončení příkazu ať Mástr ihned potvrdí.
Na to potvrzování se dá použít podobný algoritmus jako je použit na USB:
Stanice A pošle paket stanici B, ta ho ihned potvdí stanici A. Pokud se ztratí nebo poškodí paket na cestě od A k B, B nic nepotvrdí a stanice A pošle po nastavené době (timeout) paket znovu. Pokud se ztratí potvrzení od stanice B k A, tak stanice A pošle paket znovu (stejně jako když se ztratil od A k B, protože z pohledu A je to totéž, nepřišlo potvrzení). Stanice B ho už jednou dostala v pořádku, takže ho jen potvrdí stanici A a pokračuje v jeho vykonávání.
Počet pokusů o poslání je dobré omezit a indikovat nedosažitelnost stanic.
(Datové pakety jsou na USB číslovány 0 a 1. To stačí k zaručení, že se nepomíchají ani nevezmou dvakrát)
Díky za odpověď, zamyslel sem se nad tím:


Mástr…..…………………………………………..........Slávek

………………………<Mástr chce uvařit oběd>
vysílá, přijímá …..………………………………….nevysílá, přijímá
uvař……………….----------------------------->


…………………<Slávek odpovídá, že rozumněl>
vysílá, přijímá ……………………………………….vysílá, přijímá
………….<----------------------------- …..OK, uvařím


……………………...<Mástr děkuje Slávkovi>
vysílá, nepřijímá……………………………………..vysílá, přijímá
díky za ochotu ……----------------------------->
za 5 minut se ozvu
a požádám tě o jídlo


……………………….<Slávek obdržel poděkování>
vysílá, nepřijímá………………………………...…….nevysílá, nepřijímá


….o 5 minut později
…………….se algoritmus opakuje, místo odpovědi „OK, uvařím“ Slávek pošle jídlo


Výsledek výše uvedeného algoritmu:

Jediná činnost během 5-ti minutového čekání je vysílání Mástra, protože ten nezjistí, zda Slávkovi došlo poděkování. Slávek to ovšem ví a proto přestane odpovídat Mástrovi, že rozumněl . Od Mástra se také dozvěděl, že ho kontaktuje až za 5 minut, proto přestane naslouchat. Ale od kdy je těch 5 minut? Vždyť Slávek neví, po jaké době zaslechl Mástra, že se mu za 5 minut ozve! Pokud ho zaslechnul po 4min 59s, Mástr bude poté 4min 59s žádat o jídlo, než se Slávek po 5 minutách ozve. Což není na závadu Mástr, stejně vysílá neustále.

Jiný případ:

Mástr tedy posílá Slávkovi zprávu, že se za 5 minut ozve a požádá ho o jídlo. Tuto zprávu ale vysílá pouze 5 minut, protože pak ho bude žádat o jídlo. Slávek zprávu s 5 minutovým čekáním neobdrží, zprávu se žádostí o jídlo obdrží zaručeně, ta se bude vysílat neustále.
Slávek ovšem nepřestane naslouchat i během přípravy oběda, což ho snad tolik zdržovat nebude:)


Doufám, že moje myšlenkové pochody jsou i v této večerní době správné:). S tím neustálým vysíláním Mástra se asi nedá nic dělat?

Uživatelský avatar
marzou
Příspěvky: 130
Registrován: 24 čer 2007, 02:00

#5 Příspěvek od marzou »

Strategie dost závisí na faktických podmínkách.
1) Je možné nebo nutné dodržovat pro komunikaci nějaká časová okénka nebo může nastat kdykoliv? pokud se dá komunikovat v oknech, dá se udržet dlouhodobě u obou synchronní hodiny?

Možné to je, nutné to není. Důležitá je jenom úspora energie Slávka – měl by co nejméně přijímat a ještě méně vysílat. Synchronní hodiny nejsou.


2) vysíláš na jediné frekvenci nebo duplexně?

Na jedné frekvenci.


3) lze předpokládat lepší výkon a antény u Mástra nebo je to jedno?

Nepředpokládal sem to, ale v případě nutnosti by se to dalo zajistit.


4) máš nějaký předpoklad že v komunikaci jsou pravděpodobné výpadky?
podle toho je pak možné uvažovat dál o účinném a úsporném protokolu.

V komunikaci výpadky určitě jsou, samozřejmě jejích četnost stoupá se vzdáleností mezi Mástrem a Slávek či s překážkami, které jsou mezi nimi, nebo s rychlostí přenosu dat. Zatím nemám představu při jaké četnosti výpadků (vzdálenosti mezi nimi, rychlosti přenosu) bych to chtěl provozovat.


Zatím je vše v oblasti experimentu momentálně mám vyzkoušeno, že z budovy do otevřeného prostoru na vzdálenost asi 50m při rychlosti přenosu 4.8kbps to pracuje průměrně s 50% úspěšností, měřeno po dobu 1s, např. během 0.01s ta úspěšnost v % může být několikanásobně menší.

Další zajímavost je ta, že se to do určité vzdálenosti drží téměř na 100% a pak to rychle klesá. Do nějakých 40m jsem tam měl téměř 100%, na 60m asi 10%. I když je taky fakt, že mi tam potom clonil ještě barák souseda, takže uplně optimální podmínky nebyly:)


Výrobce RF transceiveru uvádí 1.2kbps na 300m v otevřeném prostoru, ale nevím jestli je to důvěryhodná informace. Jinak to pracuje na 868MHz, anténu mám zatím pouze kus drátu s délkou 85mm.


Jinak ještě pokukuju po RF transceiveru co má 1.2kbps na 3km, kdyby bylo potřeba něco silnějšího:)

Uživatelský avatar
Bernard
Příspěvky: 3614
Registrován: 27 kvě 2005, 02:00

#6 Příspěvek od Bernard »

Ten přístup 1 mi silně připomíná tónovou signalizaci v analogové telefonní síti, tzv. vázaný R2 kód. Zprávu tvoří dvojtónový signál a postup je:

1. Nikdo nic nevysílá - klid
2. M -> S: Mástr začne a trvale vysílá svoji zprávu
3. S -> M: Slávek začne a trvale vysílá svoji potvrzovací zprávu
4. M : Slyší potvrzovací zprávu a přestane vysílat
5. S : Slyší, že Mástr přestal, tak přestane taky.
Následuje bod 1 nebo 2.

Je to jen pro inspiraci, v RF přenose se to může komplikovat, chce to úplný duplex.

Uživatelský avatar
marzou
Příspěvky: 130
Registrován: 24 čer 2007, 02:00

#7 Příspěvek od marzou »

Bernard píše:Ten přístup 1 mi silně připomíná tónovou signalizaci v analogové telefonní síti, tzv. vázaný R2 kód. Zprávu tvoří dvojtónový signál a postup je:

1. Nikdo nic nevysílá - klid
2. M -> S: Mástr začne a trvale vysílá svoji zprávu
3. S -> M: Slávek začne a trvale vysílá svoji potvrzovací zprávu
4. M : Slyší potvrzovací zprávu a přestane vysílat
5. S : Slyší, že Mástr přestal, tak přestane taky.
Následuje bod 1 nebo 2.

Je to jen pro inspiraci, v RF přenose se to může komplikovat, chce to úplný duplex.
Tohle by bylo celkem ucházející, zde je ale problém, že když Mástr přestane vysílat, Slávek se o tom nedoví. Respektive, co když Mástr vysílá, ale Slávek ho jen neslyší.

Uživatelský avatar
Zmije
Příspěvky: 1513
Registrován: 30 čer 2005, 02:00
Bydliště: Pardubický kraj

#8 Příspěvek od Zmije »

Tak musí mastr udržovat komunikaci, jednou za uherský rok poslat zprávu. ps: co se inspirovat metodou CSMA/CD jako na ethernetu po koaxu?

Uživatelský avatar
Bernard
Příspěvky: 3614
Registrován: 27 kvě 2005, 02:00

#9 Příspěvek od Bernard »

Když Mástr vysílá a Slávek neslyší, po časovém dohledu se vyhodnotí chyba přenosové cesty a někam se hlásí. Slávek, když nic neslyší, je spokojen, má klid.

Uživatelský avatar
marzou
Příspěvky: 130
Registrován: 24 čer 2007, 02:00

#10 Příspěvek od marzou »

Zmije píše:Tak musí mastr udržovat komunikaci, jednou za uherský rok poslat zprávu. ps: co se inspirovat metodou CSMA/CD jako na ethernetu po koaxu?
To co sem uváděl ve druhém příspěvku, by se dalo považovat za určitou inspiraci CSMA. CSMA je ale navržená pro co nejvyšší využití přenosového pásma, já potřebuji co nejvyšší využití baterií Slávka (neříkám, že to spolu v určitých bodech nesouvisí).

Dalším otázkou je velikost toho uherského roku, asi by se jeho délka měla měnit v závislosti na úpěšnostech přenosu. Pokud přenos není úspěšný rok prodloužím, nebo ho prodloužím třeba po 10 pokusech o přenos. Asi by měl mít nějakou maximální dobu.

Ale podle jaké strategie délku roku stanovit?

Například vyšlu 10 příkazů v době 10s, nedorazí žádná odpověď, vyplatí se na 10s vysílání přerušit? Bude pak větší pravděpodobnost, že příkaz dorazí? než kdybych poslal hned 11-tý bez čekání?

Bernard píše:Když Mástr vysílá a Slávek neslyší, po časovém dohledu se vyhodnotí chyba přenosové cesty a někam se hlásí. Slávek, když nic neslyší, je spokojen, má klid.
Chyba se vyhodnotit může, ale co s takovým vyhodnocením dělat?
Slávek asi spokojenej bude, ale Mástr ne, protože má pro něj nejspíše práci:)

Odpovědět

Zpět na „Teorie“