Witam!
Posiadam moduł radiowy Radiometrixa BiM2-433-64-5V.
Oto link do specyfikacji w *.html:
http://www.radiometrix.co.uk/products/bim2.htm
Jeden moduł pracuje w trybie odbioru a kilkanaście innych w trybie nadawania. Czy jeśli nadajniki (moduły w trybie nadawania) wysyłają równocześnie dane (ramke dwudziesto bajtową) to odbiornik może poprawnie te dane odebrać? Czy będzie może tak że wszystkie dane (bity w ramkach) sie poprzeplatajai wyjdą śmieci...?
Dodam że każda ramka składa się z bajtu &h55, &hFF, adres odbiornika, adres nadajnika, dane...
Proszę kolegów o podpowiedź. Pozdrawiam ŻUBR
Aktyw Forum
Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.
Sprawdź punkty Zarejestruj sięModuł radiowy 433MHz. Czy da sie odbierać równocześnie...?
Moderatorzy:Jacek Bogusz, Moderatorzy
W ogólnym przypadku sygnały pochodzące z dwóch nadajników nałożą się a Rx odbierze sieczkę. Wprawdzie może się zdarzyć, że odbierane sygnały będą się znacznie różnić poziomem i sygnał z jednego nadajnika całkowicie "przykryje" sygnał z drugiego, ale i tak stracisz transmisję z co najmniej jednego źródła. Zatem musisz kierować ruchem w sieci radiowej.
Możesz to zrobić na kilka sposobów, np:
1)
Przydzielając jednej stacji funkcję mastera dyrygującego ruchem, rozsyłającego znacznik uprawniający wybranego slave'a (jedną z pozostałych stacji) do nadawania. Taki znacznik miałby ściśle określony czas ważności. Jeżeli slave nie odpowie z zadanym czasie to traci prawo głosu. A może nie odpowiedzieć z kilku przyczyn, np:
- znacznik uległ zniekształceniu w torze radiowym i nie został poprawnie rozpoznany przez slave'a
- slave nie działa
- odpowiedź nadana przez slave'a została zakłócona i nie dotarła w rozpoznawalnej postaci do mastera.
2)
W przypadku, gdy ruch w sieci jest niewielki a tym samym niewielkie prawdopodobieństwo kolizji to można pomyśleć o jakiejś uproszczonej wersji CSMA/CD:
( http://pl.wikipedia.org/wiki/CSMA/CD )
- Każdy NADAWCA, przed nadawaniem, sprawdza na wyjściu CD modułu (Carrier Detect) czy właśnie nie odbywa się jakaś transmisja. Jest to pierwszy krok zmniejszający prawdopodobieństwo kolizji (Carrier Sense).
- Jeżeli łącze jest wolne to NADAWCA wysyła swoją ramkę z dodanym identyfikatorem (adresem odbiorcy, zwrotnym adresem nadawcy, kolejnym numerem ramki, kodem wiadomości... i co tam jeszcze bedzie potrzebne) oraz CRC.
- ODBIORCA odbiera ramkę, weryfikuje CRC i krótkim komunikatem skierowanym do NADAWCY potwierdza przyjęcie poprawnej wiadomości.
- Jeżeli oryginalny pakiet został zniekształcony (na skutek kolizji lub zakłóceń spoza sieci) to ODBIORCA go nie rozpozna i w zadanym czasie nie potwierdzi odbioru. W takim przypadku NADAWCA po odczekaniu _losowego_ czasu opóźnienia powtarza swoją transmisję. Jeżeli zakłócenie było skutkiem kolizji (mimo kontroli stanu CD dwaj nadawcy jednak zaczęli nadawać równocześnie) to po wprowadzeniu dodatkowego, losowego opóźnienia retransmisje nie powinny się już nałożyć.
Różnica wobec klasycznego "ethernetowego" CSMA/CD polega na tym, że nie masz możliwości wiarygodnego monitorowania własnej transmisji (odbiornik ustawiony obok nadajnika i tak odbierze tylko ten jeden sygnał gubiąc wszelkie inne źródła o niższym poziomie). Dlatego pozostaje jedynie weryfikacja poprawności za pomocą komunikatów zwrotnych.
Ogólnie rzecz biorąc łącze radiowe jest zawodne i nigdy nie masz pewności czy komunikat dotrze bez zakłóceń. Dlatego pomijając najprostsze zastosowania (np. dzwonek bezprzewodowy) w każdym przypadku trzeba wziąć pod uwagę kontrolę integralności wiadomości (sumy kontrolne) i potwierdzanie odbioru.
Hint:
Może się przyda (HTH SNAP): http://www.hth.com/snap .
--
MDz
Możesz to zrobić na kilka sposobów, np:
1)
Przydzielając jednej stacji funkcję mastera dyrygującego ruchem, rozsyłającego znacznik uprawniający wybranego slave'a (jedną z pozostałych stacji) do nadawania. Taki znacznik miałby ściśle określony czas ważności. Jeżeli slave nie odpowie z zadanym czasie to traci prawo głosu. A może nie odpowiedzieć z kilku przyczyn, np:
- znacznik uległ zniekształceniu w torze radiowym i nie został poprawnie rozpoznany przez slave'a
- slave nie działa
- odpowiedź nadana przez slave'a została zakłócona i nie dotarła w rozpoznawalnej postaci do mastera.
2)
W przypadku, gdy ruch w sieci jest niewielki a tym samym niewielkie prawdopodobieństwo kolizji to można pomyśleć o jakiejś uproszczonej wersji CSMA/CD:
( http://pl.wikipedia.org/wiki/CSMA/CD )
- Każdy NADAWCA, przed nadawaniem, sprawdza na wyjściu CD modułu (Carrier Detect) czy właśnie nie odbywa się jakaś transmisja. Jest to pierwszy krok zmniejszający prawdopodobieństwo kolizji (Carrier Sense).
- Jeżeli łącze jest wolne to NADAWCA wysyła swoją ramkę z dodanym identyfikatorem (adresem odbiorcy, zwrotnym adresem nadawcy, kolejnym numerem ramki, kodem wiadomości... i co tam jeszcze bedzie potrzebne) oraz CRC.
- ODBIORCA odbiera ramkę, weryfikuje CRC i krótkim komunikatem skierowanym do NADAWCY potwierdza przyjęcie poprawnej wiadomości.
- Jeżeli oryginalny pakiet został zniekształcony (na skutek kolizji lub zakłóceń spoza sieci) to ODBIORCA go nie rozpozna i w zadanym czasie nie potwierdzi odbioru. W takim przypadku NADAWCA po odczekaniu _losowego_ czasu opóźnienia powtarza swoją transmisję. Jeżeli zakłócenie było skutkiem kolizji (mimo kontroli stanu CD dwaj nadawcy jednak zaczęli nadawać równocześnie) to po wprowadzeniu dodatkowego, losowego opóźnienia retransmisje nie powinny się już nałożyć.
Różnica wobec klasycznego "ethernetowego" CSMA/CD polega na tym, że nie masz możliwości wiarygodnego monitorowania własnej transmisji (odbiornik ustawiony obok nadajnika i tak odbierze tylko ten jeden sygnał gubiąc wszelkie inne źródła o niższym poziomie). Dlatego pozostaje jedynie weryfikacja poprawności za pomocą komunikatów zwrotnych.
Ogólnie rzecz biorąc łącze radiowe jest zawodne i nigdy nie masz pewności czy komunikat dotrze bez zakłóceń. Dlatego pomijając najprostsze zastosowania (np. dzwonek bezprzewodowy) w każdym przypadku trzeba wziąć pod uwagę kontrolę integralności wiadomości (sumy kontrolne) i potwierdzanie odbioru.
Hint:
Może się przyda (HTH SNAP): http://www.hth.com/snap .
--
MDz
Wow. Jeste, b. wdzieczny za wyczerpującą odpowiedź.
JA rozwiąząłem problem w tren sposób.
Jest 800 hostów (nadajników) i jeden odbiornik.
Hosty mają adresy od 1 właśnie do 800. I teraz, każdy HOST ma określoną chwile na sekunde lub kilka sekund w której wysyła swoją ramkę. Nastęnie jest szczelina czasowa czyli przerwa w nadawaniu (żaden z hostów nie nadaje), po niej kolejny host o innym adresie wysyła swoją ramke. Odbiornik jest zawsze w trybie odbierania (bez potwierdzenia transmisji) i uruchamia podprogram odbioru jak tylko nastąpi przerwanie na CD.
Możliwości modułów radiowych pozwoliły na zmieszczenie w jednej sekundzie 80 hostów, czyli wysłanie ramek z 800 hostów zajmie 10sekund. W przeciogu tego czasu każdy host tylko raz wyśle swojaramkę. Po tym czasie sytuaxcja siepowtarza i tak 3 razy.
W tym rozwiazaniu nie ma możliwości "najechania" na inną ramke. Nie ma potrzeby wysyłania potwierdzenia, tym bardziej że przełączenie w tryb nadawania, wysłąnie potwierdzenia i przełączenia w tryb odbioru zajmuje troche cennego czasu w napiętym terminarzu ODBIORNIKA
JA rozwiąząłem problem w tren sposób.
Jest 800 hostów (nadajników) i jeden odbiornik.
Hosty mają adresy od 1 właśnie do 800. I teraz, każdy HOST ma określoną chwile na sekunde lub kilka sekund w której wysyła swoją ramkę. Nastęnie jest szczelina czasowa czyli przerwa w nadawaniu (żaden z hostów nie nadaje), po niej kolejny host o innym adresie wysyła swoją ramke. Odbiornik jest zawsze w trybie odbierania (bez potwierdzenia transmisji) i uruchamia podprogram odbioru jak tylko nastąpi przerwanie na CD.
Możliwości modułów radiowych pozwoliły na zmieszczenie w jednej sekundzie 80 hostów, czyli wysłanie ramek z 800 hostów zajmie 10sekund. W przeciogu tego czasu każdy host tylko raz wyśle swojaramkę. Po tym czasie sytuaxcja siepowtarza i tak 3 razy.
W tym rozwiazaniu nie ma możliwości "najechania" na inną ramke. Nie ma potrzeby wysyłania potwierdzenia, tym bardziej że przełączenie w tryb nadawania, wysłąnie potwierdzenia i przełączenia w tryb odbioru zajmuje troche cennego czasu w napiętym terminarzu ODBIORNIKA
Nie timer jest ważny a _źródło_ z jakiego się go taktuje. Z jakiego kwarcu go popędzasz? Jakiegoś taniego kwarcu "do uC"? No to nie spodziewaj się stabilności lepszej niz 1e-6 i zgodności pomiędzy kwarcami z jednej szuflady lepszej niż 1e-5.uK na którym, pracuje ma dokładny timer o rozdzielczości 16bitów, po przepełnieniu jest ładowany tąsamawartością co wczesniej. To znakomity wzorzecz czasu.
A co bedzie jeżeli N (N=0...800) z tych 800 odbiorników owego broadcastu nie odbierze? (To jest łącze radiowe więc zawsze ma prawo pojawić się jakieś zakłócenie z obcego źródła.)Jeśli chodzi o synchronizacje to broadcast załątwia sprawe (wysłanie do wszystkich nadajników jednoczesnie informacji o synchronizacji).
Nie mając aktualnej synchronizacji wyłączą się? Czy zaryzykują nadawanie w ciemno i rozsynchronizowanie całej sieci?
IMHO:
Synchronizacja jest ważna przez ściśle określony czas od ostatniego broadcastu. Prawo do nadawania może mieć tylko nadajnik posiadający aktualny "certyfikat". Ten, który aktualnego broadcatu "synchro" nie dostanie, może jeszcze przez jakiś rezerwowy czas nadawać ramki z ustawioną flagą NO-SYNC (informującą MASTERA o konieczności powtórzenia broadcastu). A jeżeli nadal tego "synchro" nie dostanie to pozostaje mu tylko wyłaczyć się i czekać na synchronizację.
Zresztą jeżeli nadajniki mają pracować cyklicznie to już po jednym obiegu MASTER będzie wiedział który z nadajników nie działa (lub został zakłócony). Jeżeli brak ramki z danego nadajnika się powtórzy, to będzie to dobra przesłanka do powtórzenia synchronizacji.
--
MDz
CCC
transmisja z potwierdzniami bedzie trwałą zbyt długo
liczenie odebranych hostow jest dobrym rozwiazaniem>
apropos niedotarcia broadcastu< mozna kilka razy powtorzyc broadcast dla pewnosci ( nadajnikom juz zsynchronizowanym to nie przeszkodzi)
dziekuje za wyczerpujace odpowiedzi
jesli moj projekt wypali< klatka browara dla ciebie
liczenie odebranych hostow jest dobrym rozwiazaniem>
apropos niedotarcia broadcastu< mozna kilka razy powtorzyc broadcast dla pewnosci ( nadajnikom juz zsynchronizowanym to nie przeszkodzi)
dziekuje za wyczerpujace odpowiedzi
jesli moj projekt wypali< klatka browara dla ciebie
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 12 gości