=?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwanie_?=



Masz problem? Zapytaj na forum elektroda.pl

Poprzedni Następny
Wiadomość
Spis treści
From: Sebastian Bialy <heby_at_nospam_poczta.onet.pl>
Subject: =?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwanie_?=
Date: Wed, 29 Dec 2004 21:44:54 +0100


Witam!

Jest taki problem:

Jest sieć typu jeden master wiele slave. Podłaczone są wszystkie
równolegle 2 przewodową skrętką w half-duplex (zapewne RS485, tu jeszcze
się wacham). Każdy slave posiada unikatowy adres (coś jak MAC w sieciach
komputerowych).

Chciałbym aby master był w stanie zgadnąć ile ma slave i o jakich
adresach. Wyobrażam sobie to tak, że master rozsyła komunikat broadcast
i oczekuje odpowiedzi od slave. Ale nie jestem pewny jak zrealizować ich
odpowiedzi.

W grę wchodzi sieć kolizyjna. Np. slave po usłyszeniu komunikatu
broadcastowego odczekuje przypadkowy czas (ze zdefiniowanego zakresu) i
następnie odpowiada. Jednocześnie kontroluje, czy aby nie wszedł w drogę
innemu (coś jak ethernet). Tu wydaje mi się, że można by zrezlizowac to
tak, że jesli zanim nastąpi nadawanie jeśli usłyszy na lini jakikolwiek
znak uznaje się za przegranego.

Master po usłyszeniu paru slave wysyła im komunikat "nie gadać więcej" i
ponownie rozsyła broadcasta. Znowu wykrywa 1-2-3 slave i tak w kółko.
Problem jest taki że w najgorszym wypadku może nie wykryć paru ...

Ponadto do sieci można w trakcie działania podłaczyć nowych i wyłaczyć
starych...

MAC urządzenia jest duży (8 bajtów) i nie wchodzi w grę przeszukiwanie
całej przestrzeni adresów ...

Nie mam sensownego pomysłu jak to zrobić. Zakładam, że mam UART do
dyspozycji i w zasadzie nic więcej. Procki raczej jakieś AVR po pare mipsów.

Ma ktoś jakiś pomysł jak to można lepiej rozwiązać ? Bo przymierzam się
do rozwiązania kolizyjnego które opisalem.

PS. Z tym przeszukiwaniem przestrzeni adresów to jednak da się zrbić,
ale to niesłychanie pracochłonne:

Master wysyła zapytanie: czy jest ktoś, z ustawionym 63 bitem ? Uzyskuje
odpowiedź (albo nie). Czy jest ktoś ze zgaszonym 63 bitem ? Uzyskuje
odpowiedź (albo nie). Jesli uzyskał odpowiedź w jednym z tych 2 wypadków
rozpoczyna wyszukiwanie o poziom niżej (rekurencyjnie): czy jest ktoś z
ustawionym bitem 63 i zgaszonym 62 ? ...

Poprzedni Następny
Wiadomość
Spis treści
From: "Michał" <michallo4_at_nospam_wp.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Wed, 29 Dec 2004 23:56:41 +0100


Cześć,
Ja w bardzo podobnej sieci (mozna obejrzec jej foto na www.michallo.ll.pl ),
zrobilem tak:
Master wysyla w petli zapytanie do kazdego slave, jak sleve rozpozna swoj
adres odpowiada masterowi,
Jesli nie odpowie master pyta kilka razy to ocznacza ze umarl, wlacza
sygnalizacje odciecia slava i idzie dalej.
Tyle ze ja wiem ile mam slaveow, tzn moge ktoregos programowo wylaczyc jesli
faktycznie padnie, zeby master nie wyl mi w kolo.
Nie wiem jak zrobic przy nie wiadomej ilosci slavo, A co do szybkosci to mi
nie zalezy zbytnio,
7 slavow jest odpytywanych od 3s do 30s zalezy czy zgubi jakies ramki i musi
powtarzac,tyle ze siec jest dosyc rozlegla,
z kabla starego telefonicznego, dlugosc sieci to ok 200m.
Jesli chcesz miec obsluge zmiennej ilosci slavow to trzeba sie zaglebic w
jakies bardziej skompikowane protokoly i tam szukac pomyslow.
(moja siec jest pierwsza siecia jaka zrobilem, sporo napracowałem sie przy
komunikacji, najpierw w jedna strone,
no i zrobilem ja w Bascom AVR)
Pzd Michał



Poprzedni Następny
Wiadomość
Spis treści
From: Sebastian Bialy <heby_at_nospam_poczta.onet.pl>
Subject: Re: =?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwani?=
Date: Thu, 30 Dec 2004 09:35:35 +0100


Michał wrote:
Master wysyla w petli zapytanie do kazdego slave, jak sleve rozpozna swoj
adres odpowiada masterowi,
Jesli nie odpowie master pyta kilka razy to ocznacza ze umarl, wlacza
sygnalizacje odciecia slava i idzie dalej.

( Niestety u mnie adres może się składać z 10 bajtów (jeszcze nie
zdecydowałem dokładnie w każdym razie nie mniej jak 6) i dlatego
przeszukanie wszystkich slave (a mogą mieć dowolny adres z tej
przestrzeni) nie wchodzi w grę.

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 00:02:21 +0100



Sebastian Bialy wrote:

PS. Z tym przeszukiwaniem przestrzeni adresów to jednak da się zrbić,
ale to niesłychanie pracochłonne:

Master wysyła zapytanie: czy jest ktoś, z ustawionym 63 bitem ? Uzyskuje
odpowiedź (albo nie). Czy jest ktoś ze zgaszonym 63 bitem ? Uzyskuje
odpowiedź (albo nie). Jesli uzyskał odpowiedź w jednym z tych 2 wypadków
rozpoczyna wyszukiwanie o poziom niżej (rekurencyjnie): czy jest ktoś z
ustawionym bitem 63 i zgaszonym 62 ? ...

A czy w momencie ustalania adresow koniecznie musisz pracowac
w trybie transmisji pakietowej? Bo powyzszy algorytm zadziala
bardzo dobrze w jednobitowej "pamieci dzielonej" opartej na
linii TXD na zasadzie przypominajacej "iloczyn na drucie". Z mastera
wysylasz do slave'ow pakiety z zapytaniami jak powyzej. Po
odebraniu odpowiedzi wylaczaja one port szeregowy i programowo
steruja stanem TXD. Jesli slave chce udzielic odpowiedzi twierdzacej,
to wymusza na TXD stan niski. W przeciwnym przypadku przelacza
TXD na _wejscie z wlaczonym_ pull-upem. Master odczytuje
programowo stan RXD i w jednym kroku poznaje wynik rownolegle
obliczonej odpowiedzi. I tak odpowiednio wiele razy. BTW, to
nie jest "nieslychanie pracochlonne", wymaga co najwyzej log(M)*K
zapytan, gdzie M jest liczba roznych adresow, a K liczba slave'ow.

Pozdrawiam
Piotr Wyderski


Poprzedni Następny
Wiadomość
Spis treści
From: Sebastian Bialy <heby_at_nospam_poczta.onet.pl>
Subject: Re: =?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwani?=
Date: Thu, 30 Dec 2004 09:31:08 +0100


Piotr Wyderski wrote:
A czy w momencie ustalania adresow koniecznie musisz pracowac
w trybie transmisji pakietowej? Bo powyzszy algorytm zadziala
bardzo dobrze w jednobitowej "pamieci dzielonej" opartej na
linii TXD na zasadzie przypominajacej "iloczyn na drucie". Z mastera
wysylasz do slave'ow pakiety z zapytaniami jak powyzej. Po
odebraniu odpowiedzi wylaczaja one port szeregowy i programowo
steruja stanem TXD. Jesli slave chce udzielic odpowiedzi twierdzacej,
to wymusza na TXD stan niski. W przeciwnym przypadku przelacza
TXD na _wejscie z wlaczonym_ pull-upem. Master odczytuje
programowo stan RXD i w jednym kroku poznaje wynik rownolegle
obliczonej odpowiedzi.

Hmmm. Magistrala musi być "długa" więc raczej coś róznicowego jak RS485.
Wobrażam sobie po drodze "koncentrator" którego zadaniem jest
zrobienie rozgałęzienia w magistrali - powinien on na siebie przejąć
część zadań odpowiedzialnych za szukanie slave po swojej stronie druta.
W każdym razie iloczyn na drucie będzie cieżko wykonać na RS485 z
zakladaniem dodatkowych koncentratorów, choć jeszcze pomyślę.

I tak odpowiednio wiele razy. BTW, to
nie jest "nieslychanie pracochlonne", wymaga co najwyzej log(M)*K
zapytan, gdzie M jest liczba roznych adresow, a K liczba slave'ow.

Problem pojawia się kiedy podłączam nowe slavey w trakcie pracy
magistrali. Należało by cyklicznie wywolywac ten agorytm, co może przy
prędkościach 9600 mieć znaczenie i zakłucac normalną komunikację.

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 12:52:55 +0100


Sebastian Bialy wrote:

W każdym razie iloczyn na drucie będzie cieżko wykonać na RS485 z
zakladaniem dodatkowych koncentratorów, choć jeszcze pomyślę.

No to albo ja nie rozumiem idei rownoleglego polaczenia wyjsc
nadajnikow (wowczas prosze o lepsze wyjasnienie), albo Ty
bedziesz musial miec iloczyn (albo sume, wszystko jedno) na
drucie, co najmniej w formie przechodzenia K-1 nadajnikow
w tryb wysokiej impedancji, tylko jeszcze tego nie zauwazasz.
Pisales, ze chcesz zasymulowac Ethernet, a jak zamierzasz
wykrywac konflikt na szynie nie majac operacji na drucie?
Jesli jej nie masz, to zrobisz zwarcie... :-)

Wymyslilem znacznie lepszy algorytm odtwarzania identyfikatorow,
ktory obywa sie bez udzialu mastera -- na podstawie ruchu na
szynie kazdy uklad slave sam "domysli sie" identyfikatorow reszty.
Wymaga on jednak iloczynu (sumy) na drucie i obywa sie bez
konfliktow (a wlasciwie konflikty we wlasciwym czasie i miejscu
sa dla niego kluczowe). Jesli bedziesz mial taka operacje, to Ci go
opisze.

Problem pojawia się kiedy podłączam nowe slavey w trakcie pracy
magistrali. Należało by cyklicznie wywolywac ten agorytm, co może przy
prędkościach 9600 mieć znaczenie i zakłucac normalną komunikację.

Mozna wyslac do wszystkich ukladow wiadomosc "czy zostales
juz zidentyfikowany" i -- ponownie wykorzystujac iloczyn na drucie
-- w razie potrzeby przeprowadzic identyfikacje tylko nowo
dolaczonych ukladow.

Pozdrawiam
Piotr Wyderski


Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Gałka" <piotr.galka_at_nospam_CUTTHISmicromade.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 13:41:26 +0100



Użytkownik "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl> napisał w
wiadomości news:cr0q6p$1cu$1_at_nospam_news.dialog.net.pl...

No to albo ja nie rozumiem idei rownoleglego polaczenia wyjsc
nadajnikow (wowczas prosze o lepsze wyjasnienie), albo Ty
bedziesz musial miec iloczyn (albo sume, wszystko jedno) na
drucie, co najmniej w formie przechodzenia K-1 nadajnikow
w tryb wysokiej impedancji, tylko jeszcze tego nie zauwazasz.

RS485 łączyło się, łączy się i będzie się łączyło równolegle.

Na pewno zauważa, bo pytanie dotyczy sytuacji jednoczesnego wchodzenia
na linię kilku nadajników.
P.G.




Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 13:51:56 +0100


Piotr Gałka wrote:

RS485 łączyło się, łączy się i będzie się łączyło równolegle.

No to tam musi byc wired OR albo wired AND...

Pozdrawiam
Piotr Wyderski


Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Gałka" <piotr.galka_at_nospam_CUTTHISmicromade.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 14:16:12 +0100



Użytkownik "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl> napisał w
wiadomości news:cr0tln$44r$1_at_nospam_news.dialog.net.pl...
Piotr Gałka wrote:

RS485 łączyło się, łączy się i będzie się łączyło równolegle.

No to tam musi byc wired OR albo wired AND...

Nie ma. Jest wchodzenie na linię i jej zwalnianie (wysoka impedancja),
a scalaki odporne na zderzenia (wymaga tego standard RS485).
P.G.



Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 15:09:16 +0100


Piotr Gałka wrote:

Nie ma. Jest wchodzenie na linię i jej zwalnianie (wysoka impedancja),
a scalaki odporne na zderzenia (wymaga tego standard RS485).

No to algorytm w wersji podstawowej wyglada
nastepujaco. Slave dzialaja rownolegle.

----------------8<-------------

Faza wstepna:

1. Master ustawia TDX na 0 i wysyla do slave polecenie przejscia
do trybu identyfikacji.

2. Slave ustawiaja swoje czasomierze na generowanie przebiegu
o tym samym czasie trwania (kilkadziesiat mikrosekund) i czekaja
na przejscie RXD w stan 1. Master czeka chwile i ustawia TXD na
1. Slave zeruja czasomierze.

Faza identyfikacji:

Jedynym zadaniem transceivera mastera jest natychmiastowe
przenoszenie na swoja linie TXD stanu linii RXD.
Przerwania z czasomierza numerujemy 0,1,2,3,...,2*K-1,
gdzie K jest dlugoscia identyfikatora. Podczas przyjscia
przerwania o numerze parzystym slave wystawiaja na
TXD jeden bit swojego adresu (np. zaczynajac od najbardziej
znaczacego). Jesli bit ten ma wartosc 0, slave wymusza na
TXD 0. Jesli ma on wartosc 1, slave ustawia TXD w stan
wysokiej impedancji. Na przerwaniach nieparzystych slave
odczytuja stan RXD. Jesli nie zgadza sie on z wartoscia
nadanego bitu, slave wypada z gry i czeka na zakonczenie
obecnej tury identyfikacji (majacej K rund). Jesli sie zgadza,
to przechodzi on do nastepnej rundy, tj. powtarza powyzsza
procedure.

Po wykonaniu K rund tura sie konczy. W tym momencie z gry
nie wypadl dokladnie jeden slave (o najmniejszym identyfikatorze).
Od tej chwili milczy on i czeka na koniec fazy identyfikacji.
Pozostale uklady slave rozpoczynaja kolejna ture w sposob
opisany powyzej. Identyfikacja konczy sie, gdy wygrywa
identyfikator zlozony z samych jedynek, ktory jest zarezerwowany.
Slave przechodza w tryb standardowej komunikacji pakietowej.

Podczas trwania kazdej rundy master czyta stan linii RXD
w tych samych momentach co slave, poznajac identyfikatory
w kolejnosci od najmniejszego (leksykograficznie) do najwiekszego,
a na koncu wspomniany identyfikator specjalny (wszystkie
slave maja TXD w stanie wysokiej impedancji, bo kiedys
musialy wygrac). Wowczas master zna identyfikatory wszystkich
ukladow.

----------------8<-------------

Teraz mozna troche poprawic zlozonosc komunikacyjna, np.
wymagajac, by po zakonczeniu tury slave wyslaly identyfikator
pozycji, na ktorej wykryly kolizje (w ten sam sposob jak
swoje bity adresu, dzieki czemu minimalny identyfikator wygra)
i kolejna ture rozpoczynac nie od poczatku, lecz od wskazanej
pozycji (co wyeliminuje wspolne prefiksy adresow).

Pozdrawiam
Piotr Wyderski


Poprzedni Następny
Wiadomość
Spis treści
From: Sebastian Bialy <heby_at_nospam_poczta.onet.pl>
Subject: Re: =?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwani?=
Date: Thu, 30 Dec 2004 17:04:21 +0100


Piotr Wyderski wrote:
> [...]
Jedynym zadaniem transceivera mastera jest natychmiastowe
przenoszenie na swoja linie TXD stanu linii RXD.
> [...]

Niestety jest pewien podstawowy problem: linia TX i RX w przypadku
połaczenia RS485 jest współdzielona, tzn można mieć tylko half-duplex.
Jest rozwiązanie RS422 które ma osobne skrętki na TX i RX, ale z pewnych
względów konstrukcyjnych nie mogę tego użyć.

Żeby sprawę wyklarować to pomińmy problem że jest to RS485 i wyobraźmy
sobie taką głupią magistralę:

1) urządzenia połaczone jednym drutem (+masa)
2) kazde urządzenie może:
1) wystawić silną jedynkę (tranzystor do plusa)
2) wystawić silne zero (tranzystor do masy)
3) wystawić wysoką impedancję
3) zakładam, że gdy wszyscy wystawią wysoką impedancję, to w magiczny
sposób wszyscy odczytaja jakiś konkretny stan logiczny (fail-safe w
RS485). Można załozyć że np jest to jedynka. Jest to jakaś namiastka
iloczynu montażowego.

Gdyby pominąć "loopback" mastera i po prostu zmusić slave do machania
między zerem a wysoką impedancją w sposób synchroniczny - mogło by to
zadziałać.

Dziękuję za pomysł, zobacze czy uda mi się go jakoś przemyśleć,
przetrawić i zaimlementować - choć strasznie mnie kusi podejście
kolizyjne (poprzez przypadkowe odstępy czasowe i wykrywanie kolizji w
sumach kontrolnych).


--
Sebastian Bialy - heby_at_nospam_poczta.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 19:03:18 +0100



Sebastian Bialy wrote:

Niestety jest pewien podstawowy problem: linia TX i RX w przypadku
połaczenia RS485 jest współdzielona, tzn można mieć tylko half-duplex.

Spokojnie wystarczy, jest to niejawnie rozwiazane w mojej
propozycji na zasadzie TDMA:

takt a) wszystkie slave'y nadaja (0 albo Z), master slucha

takt b) wszystkie slave'y sluchaja, master wystawia to (silne 0 albo 1),
co odebral w takcie (a).

goto takt (a) odpowiednio wiele razy.

Żeby sprawę wyklarować to pomińmy problem że jest to RS485 i wyobraźmy
sobie taką głupią magistralę:

1) urządzenia połaczone jednym drutem (+masa)
2) kazde urządzenie może:
1) wystawić silną jedynkę (tranzystor do plusa)
2) wystawić silne zero (tranzystor do masy)
3) wystawić wysoką impedancję

Musi jeszcze umiec sprawdzic stan widoczny na magistrali w trakcie swojego
nadawania.

Gdyby pominąć "loopback" mastera i po prostu zmusić slave do machania
między zerem a wysoką impedancją w sposób synchroniczny - mogło by to
zadziałać.

A to bedzie proste, bo w kazdym ukladzie i tak musisz miec
generatory o tej samej czestotliwosci dla baud rate generatora
RS-a. Wystarczajaco dokladne zsynchronizowanie ich w tej
architekturze systemu bedzie trywialne. BTW, sposob synchroniczny
w tym przypadku oznacza "mniej wiecej rownomiernie", a nie z
dokladnoscia do cyklu maszynowego. Stan linii i tak wystawia
sie na poczatku pierwszego interwalu czasomierza, sciaga na
koncu drugiego, a bada na poczatku drugiego, wiec niedokladnosc
wystawiania bitu moze bezpiecznie osiagnac nawet 2/3 tego
okresu. Jesli wynosi on kilkadziesiat mikrosekund, to CPU ma
mnostwo czasu na zmieszczenie sie w tym okienku.

choć strasznie mnie kusi podejście kolizyjne

Wyprobuj wszystkie pomysly, choc IMO moze byc tylko gorzej
-- "strzyka mnie w kosciach", ze moj algorytm jest optymalny,
choc dowodu teraz nie podam, bo sie mocno nie wyspalem i mi
w szumi w glowie... :-/

Pozdrawiam
Piotr Wyderski


Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Wyderski" <wyderskiREMOVE_at_nospam_ii.uni.wroc.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 19:53:56 +0100


Piotr Wyderski wrote:

choc dowodu teraz nie podam

Podam. Do układu master należy przesłać N różnych liczb
K-bitowych. Ponieważ są one dowolne, potrzeba do tego
co najmniej N*K wiadomości jednobitowych. Ograniczenie
dolne złożoności problemu jest więc równe Omega(N*K),
tj. istnieje taka stała C >= 1, że dla odpowiednio dużych
N i K potrzeba co najwyżej C*K*N wiadomości.

1. Łatwo sprawdzić, że mój algorytm wymaga przesłania
O(N*K) wiadomości, a więc spełnia asymptotyczne
ograniczenie minimalne z równością, a więc jest
asymptotycznie optymalny. QED.

2. Mimo wykazania optymalności asymptotycznej wyznaczmy
ile razy gorszy jest mój algorytm od teoretycznie najlepszego.
Ponieważ wartość C nie jest znana bez bardziej wnikliwej analizy
problemu, przyjmuję najgorszą możliwość, czyli C = 1. Mój algorytm
wymaga przesłania N*K + A wiadomości, gdzie stała A jest liczbą
wiadomości wymaganą przez protokół wstępny. Stąd
jest on gorszy od najlepszego

lim{N->oo, K->oo} (N*K + A) / (C*N*K) =

= 1 + lim{N->oo, K->oo} A/(N*K) = 1 + 0 = 1 razy.

Mój algorytm jest więc optymalny.

choć strasznie mnie kusi podejście kolizyjne

Jak pokazałem powyżej, lepiej być nie może. Ponieważ
w podejściu "kolizyjnym" może wystąpić co najmniej
jedna kolizja, to może być tylko gorzej.

Pozdrawiam
Piotr Wyderski



Poprzedni Następny
Wiadomość
Spis treści
From: Sebastian Bialy <heby_at_nospam_poczta.onet.pl>
Subject: Re: =?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwani?=
Date: Thu, 30 Dec 2004 20:07:21 +0100


Piotr Wyderski wrote:
> [ciach]
Mój algorytm jest więc optymalny.
> [ciach]

) ok. Skoro udowodnione to nie będę się już spierał tylko czas
implementować ;)

--
Sebastian Bialy - heby_at_nospam_poczta.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Gałka" <piotr.galka_at_nospam_CUTTHISmicromade.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Fri, 31 Dec 2004 10:06:10 +0100



Użytkownik "Sebastian Bialy" <heby_at_nospam_poczta.onet.pl> napisał w
wiadomości news:cr1jsn$2fj$1_at_nospam_nemesis.news.tpi.pl...
Piotr Wyderski wrote:
[ciach]
Mój algorytm jest więc optymalny.
[ciach]

) ok. Skoro udowodnione to nie będę się już spierał tylko czas
implementować ;)

Algorytm jest może optymalny (się nie znam), ale nie bierze pod uwagę
podstawowych, oczywistych rzeczy (zupełnie nie rozumiem dlaczego).
Fail-save dobrze zadziała, gdy nadajnik po wysłaniu 0-a choć na chwilę
wystawi 1-kę i dopiero potem zrobi hi-Z.
Jak od razu zrobi hi-Z (wszyscy naraz zrobią hi-Z) to na linii
pozostanie jeszcze 0 przez znacznie dłuższy czas niż normalnie
dostępny czas bitu.
Kabel RS485 (na przykład 1 km) ma sporą pojemność (dla uproszczenia
pomijam czasy propagacji) i jak się go silnie wysteruje z -3V na +3V
to szybko przejdzie przez stan około -100mV (próg przy fail save), ale
jak się go nie wysteruje - czyli zmierza on od -3V do 0V ze stałą
czasową wynikającą z oporników dopasowujących to do poziomu -100mV
dojdzie znacznie wolniej. Czas reakcji komparatora też zależy od
"przesterowania" - przy sygnale bardzo powoli przekraczającym
próg -100mV czas propagacji zmiany stanu przez odbiornik też będzie
większy niż w katalogu. Ogólnie odbiornik zobaczy jeszcze kilka zer
zamiast jedynek.
W CANie cały czas jest praca typu silny stan/hi-Z - i właśnie dlatego
próg jest oddalony od 0V (szczegółów nie znam).
Dopuszczalna prędkość transmisji w RS485 jest 2..3 razy większa niż w
CANie przy tej samej długości kabla bo w CANie bit musi się
przepropagować w obie strony, zanim może być wystawiony następny, a w
RS485 można nadawać już 2-gi, 3-ci, czy 4-ty bit, gdy 1-szy jeszcze
nie doleciał do końca linii.
CAN gwarantuje 100% wykorzystania łącza (żadnych nie udanych ramek),
ale przy mniejszej prędkości. RS485 daje większą prędkość, ale kosztem
możliwych zderzeń i związanych z tym problemów.
Nie znam się na algorytmach stosowanych w RS485, ale nie słyszałem, o
przechodzeniu z normalnej transmisji na działanie typu otwarty
kolektor ze zmniejszeniem prędkości rzędu 10x w dół na ten czas.
P.G.



Poprzedni Następny
Wiadomość
Spis treści
From: "peters" <peters_at_nospam_poczta.onet.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 14:13:58 +0100


Witam.
Powiedz mi, czy mozesz zagwarantowac, ze urzadzenia SLAVE beda w stanie
natychmiast
zareagowac na broadcast? Najsensowniejszy wydaje mi sie sposob wykrywania
kolizji taki jak na magistrali CAN.
Czyli iloczyn na drucie (tak jak CAN na pseudo RS-485).
Nadanie zera dominuje nad jedynka. Po uslyszeniu broadcastu wszystkie SLAVEy
musialyby rozpoczac nadawanie dokladnie w tym
samym momencie. Na poczatku nadawalyby swoj numer, bit po bicie -zaczynajac
od najbardziej znaczacego. Jesli podczas nadawania 1 na
magistali byloby 0 to urzadzenie przegrywa.
Musialbys zrealizowac mechanizm powtarzania broadcastow dla pozostalych
urzadzen (bez tych co juz sie odmeldowaly).
Zastosowanie koncentratorow jest mozliwe, to one musza przejac role mastera
dla obslugiwanego fragmentu sieci.

Az sie prosi aby zastosowac CAN. Bez problemu osiagniesz odleglosci rzedu
kilku kilometrow.
Koncentratory musialyby calkowicie oddzielac fragmenty sieci. Do adresowania
mialbys 29 bitow.
Jedyny problem to dlugosc ramek-do 8 bajtow.

peters




Poprzedni Następny
Wiadomość
Spis treści
From: Sebastian Bialy <heby_at_nospam_poczta.onet.pl>
Subject: Re: =?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwani?=
Date: Thu, 30 Dec 2004 17:09:54 +0100


peters wrote:

Witam.
Powiedz mi, czy mozesz zagwarantowac, ze urzadzenia SLAVE beda w stanie
natychmiast
zareagowac na broadcast? Najsensowniejszy wydaje mi sie sposob wykrywania
kolizji taki jak na magistrali CAN.

Tu jest mały problem. Otórz nie wiem, jakie będą mikrokontrolery i
jakimi zegarami taktowane, wpięte w tą magistralę. Co prawda można
założyć jakieś parametry, które można łatwo spełnić, ale nie wiem czy
choćby budowa sprzętowa uC nie spowoduje problemów typu opóźnienia paru
taktów. To jescze do przemyslenia.

Czyli iloczyn na drucie (tak jak CAN na pseudo RS-485).

Raczej nie chciałbym iloczynu na drucie - zazwyczaj wtedy do plusa
podciąga rezystor - na długich kablach musi przeładować takie
pojemności, że dużych szybkości nie dam rady uzyskać.

Az sie prosi aby zastosowac CAN. Bez problemu osiagniesz odleglosci rzedu
kilku kilometrow.

A z jaką predkością ? 9600 to minimum. Aż się prosi o 2x-4x więcej ...

--
Sebastian Bialy - heby_at_nospam_poczta.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "peters" <peters_at_nospam_poczta.onet.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 17:13:04 +0100


Raczej nie chciałbym iloczynu na drucie - zazwyczaj wtedy do plusa
podciąga rezystor - na długich kablach musi przeładować takie pojemności,
że dużych szybkości nie dam rady uzyskać.

Az sie prosi aby zastosowac CAN. Bez problemu osiagniesz odleglosci
rzedu kilku kilometrow.

A z jaką predkością ? 9600 to minimum. Aż się prosi o 2x-4x więcej ...

Od lat stosuje CAN po RS485 (iloczyn na druce).
Szybkosci 125kbps do kilkuset metrow, 25kbps nawet do kilku kilometrow.

peters



Poprzedni Następny
Wiadomość
Spis treści
From: "peters" <peters_at_nospam_poczta.onet.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 17:23:36 +0100


Tu jest mały problem. Otórz nie wiem, jakie będą mikrokontrolery i jakimi
zegarami taktowane, wpięte w tą magistralę. Co prawda można założyć jakieś
parametry, które można łatwo spełnić, ale nie wiem czy choćby budowa
sprzętowa uC nie spowoduje problemów typu opóźnienia paru taktów. To
jescze do przemyslenia.

Przepraszam, ze tak na raty odpisuje.
Dla CANa nie ma to za bardzo znaczenia. Do CAN-a i tak stosujesz
specjalizowane kontrolery (podpiete pod magistrale albo po SPI -chyba takie
widzialem) albo uC z CAN. Kontroler zalatwia Ci tyle, ze procesor jest
znacznie mniej obciazony niz w przypadku RS485 -moze wiec byc slaby.

peters



Poprzedni Następny
Wiadomość
Spis treści
From: =?ISO-8859-2?Q?=A3ukasz_Sok=F3=B3?= <el_es_at_nospam_p0cz74.0n37.pl>
Subject: Re: =?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwani?=
Date: Thu, 30 Dec 2004 00:11:37 +0100


U=BFytkownik Sebastian Bialy napisa=B3:
Witam!

C=F3=B6 podobnego widzia=B3em w pdfie One-Wire Dallasa - mo=BFe to co=B6 =
pomo=BFe...=20
Oni tam przeszukiwali sie=E6 one-wire, te=BF szeregowo, pod k=B1tem do=B3=
=B1czenia=20
jakiej=B6-tam ilo=B6ci uk=B3ad=F3w. I chyba wcale nie by=B3o to takie sko=
mplikowane.

Ja bym zrobi=B3 tak, =BFeby od MAC-a zale=BFa=B3o, KIEDY slave odpowie - =

szczelina czasowa _dok=B3adnie_ okre=B6lona dla jednego i tylko jednego u=
k=B3adu.

--=20
| W T F |
| O M F G |
| I HATE 1337 |
|speak so damn|
|much it hurts|

Poprzedni Następny
Wiadomość
Spis treści
From: Sebastian Bialy <heby_at_nospam_poczta.onet.pl>
Subject: Re: =?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwani?=
Date: Thu, 30 Dec 2004 09:33:16 +0100


Łukasz Sokół wrote:
Cóś podobnego widziałem w pdfie One-Wire Dallasa - może to coś pomoże...
Oni tam przeszukiwali sieć one-wire, też szeregowo, pod kątem dołączenia
jakiejś-tam ilości układów. I chyba wcale nie było to takie skomplikowane.

Pozerkam, ale jestem pewny, że korzystają z jakiejś wersji iloczynu
montażowego.

Ja bym zrobił tak, żeby od MAC-a zależało, KIEDY slave odpowie -
szczelina czasowa dokładnie określona dla jednego i tylko jednego układu.

Troche duzo kombinacji :) 2^(10*8) ;) Ale na pewno pomoże w jakims
stopniu równo rozkładać odpowiedzi równo w szczelinie czasowej
(aczkolwiek nie tyle sam adres, co jakiś jego skrót-hash).

Poprzedni Następny
Wiadomość
Spis treści
From: =?ISO-8859-2?Q?=A3ukasz_Sok=F3=B3?= <el_es_at_nospam_p0cz74.0n37.pl>
Subject: Re: =?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwani?=
Date: Thu, 30 Dec 2004 09:55:29 +0100


U=BFytkownik Sebastian Bialy napisa=B3:

Pozerkam, ale jestem pewny, =BFe korzystaj=B1 z jakiej=B6 wersji iloczy=
nu=20
monta=BFowego.
=20
Owszem... korzystaj=B1 :(

Ja bym zrobi=B3 tak, =BFeby od MAC-a zale=BFa=B3o, KIEDY slave odpowie=
-=20
szczelina czasowa _dok=B3adnie_ okre=B6lona dla jednego i tylko jedneg=
o=20
uk=B3adu.
=20
=20
Troche duzo kombinacji :) 2^(10*8) ;) Ale na pewno pomo=BFe w jakims=20
stopniu r=F3wno rozk=B3ada=E6 odpowiedzi r=F3wno w szczelinie czasowej =

(aczkolwiek nie tyle sam adres, co jaki=B6 jego skr=F3t-hash).

Jeszcze co=B6 mi chodzi po g=B3owie zeby wykorzystac cos a'la DHCP ;) ale=
to=20
przynajmniej CDMA|CD/ethernet potrzebuje ;)

eL eS
--=20
| W T F |
| O M F G |
| I HATE 1337 |
|speak so damn|
|much it hurts|

Poprzedni Następny
Wiadomość
Spis treści
From: Sebastian Bialy <heby_at_nospam_poczta.onet.pl>
Subject: Re: =?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwani?=
Date: Thu, 30 Dec 2004 10:04:38 +0100


Łukasz Sokół wrote:
Jeszcze coś mi chodzi po głowie zeby wykorzystac cos a'la DHCP ;) ale to
przynajmniej CDMA|CD/ethernet potrzebuje ;)

Odpada - DHCP (nawet w jakiejś prymitywnej formie tylko powiadamiania o
istnieniu) wymaga inicjatywy ze strony slave a to natychmiast wymusza
rozwiązanie kolizyje sieci (bo jest na 2 drutach i nie mogę dać więcej).
Niestety w moim rozwiązaniu sensowne jest tylko nadawanie komunikatów
prze mastera i kontrolowana odpowiedz slave, żeby unikać kolizji.

Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Gałka" <piotr.galka_at_nospam_CUTTHISmicromade.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 11:22:25 +0100



Użytkownik "Sebastian Bialy" <heby_at_nospam_poczta.onet.pl> napisał w
wiadomości news:cr0gir$m54$1_at_nospam_nemesis.news.tpi.pl...
Łukasz Sokół wrote:
Jeszcze coś mi chodzi po głowie zeby wykorzystac cos a'la DHCP ;)
ale to
przynajmniej CDMA|CD/ethernet potrzebuje ;)

Odpada - DHCP (nawet w jakiejś prymitywnej formie tylko
powiadamiania o
istnieniu) wymaga inicjatywy ze strony slave a to natychmiast
wymusza
rozwiązanie kolizyje sieci (bo jest na 2 drutach i nie mogę dać
więcej).
Niestety w moim rozwiązaniu sensowne jest tylko nadawanie
komunikatów
prze mastera i kontrolowana odpowiedz slave, żeby unikać kolizji.

Próbowałeś spojrzeć na CANa - też dwa druty, też różnicowo i kolizje
rozwiązuje hardware.
P.G.



Poprzedni Następny
Wiadomość
Spis treści
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 14:01:30 +0100


On Thu, 30 Dec 2004 11:22:25 +0100, Piotr Gałka wrote:
Niestety w moim rozwiązaniu sensowne jest tylko nadawanie komunikatów
prze mastera i kontrolowana odpowiedz slave, żeby unikać kolizji.

Próbowałeś spojrzeć na CANa - też dwa druty, też różnicowo i kolizje
rozwiązuje hardware.

Proponuje sie zapoznac z Ethernetem [losowe opoznienia] i
Plug-And-Play.

J.


Poprzedni Następny
Wiadomość
Spis treści
From: Sebastian Bialy <heby_at_nospam_poczta.onet.pl>
Subject: Re: =?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwani?=
Date: Thu, 30 Dec 2004 16:39:17 +0100


J.F. wrote:
Niestety w moim rozwiązaniu sensowne jest tylko nadawanie komunikatów
prze mastera i kontrolowana odpowiedz slave, żeby unikać kolizji.
Próbowałeś spojrzeć na CANa - też dwa druty, też różnicowo i kolizje
rozwiązuje hardware.

Proponuje sie zapoznac z Ethernetem [losowe opoznienia] i
Plug-And-Play.

O losowych opóźnieniach pisałem wczesniej, że być może własnie to
zaimplementuje. Tylko muszem mieć opóźnienia na tyle długie a ramkę na
tyle krótką, żeby była szansa w ogóle na przedostanie się pojedynczych
komunikatów - przypuszczam, że można to łatwo oszacować z
pradopodobieństwa, jakie są szanse slave'a na przesłanie swojego MACa
niezakłuconego.

--
Sebastian Bialy - heby_at_nospam_poczta.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: J.F. <jfox_nospam_at_nospam_poczta.onet.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 17:36:47 +0100


On Thu, 30 Dec 2004 16:39:17 +0100, Sebastian Bialy wrote:
J.F. wrote:
Proponuje sie zapoznac z Ethernetem [losowe opoznienia] i
Plug-And-Play.

O losowych opóźnieniach pisałem wczesniej, że być może własnie to
zaimplementuje. Tylko muszem mieć opóźnienia na tyle długie a ramkę na
tyle krótką, żeby była szansa w ogóle na przedostanie się pojedynczych
komunikatów

robisz tak jak w ethernecie - podsluch na magistrali.
Jak inne urzadzenie zaczelo nadawac przed twoim - rezygnujesz,
zglosisz sie przy nastepnym odpytaniu.

J.


Poprzedni Następny
Wiadomość
Spis treści
From: Sebastian Bialy <heby_at_nospam_poczta.onet.pl>
Subject: Re: =?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwani?=
Date: Thu, 30 Dec 2004 16:40:09 +0100


Piotr Gałka wrote:
Próbowałeś spojrzeć na CANa - też dwa druty, też różnicowo i kolizje
rozwiązuje hardware.

Zerkę, być może to lepsza droga, choć w moim przypadku ramki
komunikacyjne powinny być znacznie powyżej 256 bajtów ... ale pomyśle o
pakietowaniu w mniejszych ilościach.

--
Sebastian Bialy - heby_at_nospam_poczta.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "peters" <peters_at_nospam_poczta.onet.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 16:48:19 +0100


Zerkę, być może to lepsza droga, choć w moim przypadku ramki komunikacyjne
powinny być znacznie powyżej 256 bajtów ... ale pomyśle o pakietowaniu w
mniejszych ilościach.

Z tym akurat nie ma problemu. Ja przesylam po CAN-ie takze pliki.
CAN zalatwia Ci jedna bardzo wazna sprawe -nie obciazasz tak bardzo
procesorow.

A tak w ogole, to chyba nie napisales jakie predkosci transmisji Cie
interesuja. Ile tych danych w ogole bedzie do przeslania.
peters



Poprzedni Następny
Wiadomość
Spis treści
From: Sebastian Bialy <heby_at_nospam_poczta.onet.pl>
Subject: Re: =?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwani?=
Date: Thu, 30 Dec 2004 17:15:17 +0100


peters wrote:
A tak w ogole, to chyba nie napisales jakie predkosci transmisji Cie
interesuja. Ile tych danych w ogole bedzie do przeslania.

Powiedzmy 20-30 urządzeń. Każde po ramce w granicach 50 bajtów
(średnio), sporadycznie znacznie więcej - >300.

Całośc ma działać w taki sposób, aby użytkownik wciskając przycisk
odczuwał "natychmiastową" reakcję czujnika/serwo itd. Innymi słowy max
50ms na reakcje slave, znacznie lepiej, jeśli da się szybko.

Jest jeszcze głupia sprawa - magistrala przez 99.9% czasu jest cicha. I
nagle musze rozesłać do 30 slaveów masę informacji praktycznie
"natychmiastowo" (w sensie subiektywnego odczucia usera). Tu by się
przydało jak najszybciej.

--
Sebastian Bialy - heby_at_nospam_poczta.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "peters" <peters_at_nospam_poczta.onet.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 19:15:38 +0100


Powiedzmy 20-30 urządzeń. Każde po ramce w granicach 50 bajtów (średnio),
sporadycznie znacznie więcej - >300.

Całośc ma działać w taki sposób, aby użytkownik wciskając przycisk
odczuwał "natychmiastową" reakcję czujnika/serwo itd. Innymi słowy max
50ms na reakcje slave, znacznie lepiej, jeśli da się szybko.

Az sie prosi o zastosowanie CAN-a.
Najwazniejszy argument to wlasnie czas przekazywania komunikatow od Slave-a.
Jesli masz siec z jednym masterem i stosujesz metode odpytywania
sie przewaznie, ze nie ma nic do przeslania.
CAN te sprawy zalatwia, bo urzadzenie samo zaczyna nadawaie.

Zostaje jeszcze problem z wieksza iloscia urzadzen. Mozesz zaprojektowac
proste repeatery,
uklady z dwoma CAN-ami. Co zostanie odebrane na jednym CAN-ie za chwile
nadawane jest na drugiego.

Numerujac urzadzenia musialbys sie ograniczyc do 29 (lepiej 28) bitow. Ale
to i tak ponad 250 milionow urzadzen.
Jesli nie musisz rezerwowac puli numerow dla roznych producentow-to
spokojnie wystarczy.

peters



Poprzedni Następny
Wiadomość
Spis treści
From: "Piotr Gałka" <piotr.galka_at_nospam_CUTTHISmicromade.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Fri, 31 Dec 2004 10:19:58 +0100



Użytkownik "Sebastian Bialy" <heby_at_nospam_poczta.onet.pl> napisał w
wiadomości news:cr17hm$ntf$3_at_nospam_atlantis.news.tpi.pl...
Piotr Gałka wrote:
Próbowałeś spojrzeć na CANa - też dwa druty, też różnicowo i
kolizje
rozwiązuje hardware.

Zerkę, być może to lepsza droga, choć w moim przypadku ramki
komunikacyjne powinny być znacznie powyżej 256 bajtów ... ale
pomyśle o
pakietowaniu w mniejszych ilościach.

Małe ramki w CAN są po to, aby to co ma dojść szybko (alarmy) mogło
się wciąć (ma wyższy priorytet) w dowolną inną transmisję danych.
P.G.



Poprzedni Następny
Wiadomość
Spis treści
From: =?ISO-8859-2?Q?=A3ukasz_Sok=F3=B3?= <el_es_at_nospam_p0cz74.0n37.pl>
Subject: Re: =?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwani?=
Date: Thu, 30 Dec 2004 11:26:12 +0100


U=BFytkownik Sebastian Bialy napisa=B3:
Niestety w moim rozwi=B1zaniu sensowne jest tylko nadawanie komunikat=F3=
w=20
prze mastera i kontrolowana odpowiedz slave, =BFeby unika=E6 kolizji.

Aha.
Czyli masz : TX mastera do wszystkich RX slave'ow
RX mastera do wszystkich TX slave'ow <- przynajmniej tu na pewno masz OR =

sprz=EAtowy sprz=EAtowy (jesli dobrze rozumiem)

(tak sobie bajam)
Gdyby master wysylal w kazdym komunikacie po znaku otwieraj=B1cym swoj=20
MAC, slave ktory stwierdzi, ze nie zna takiego MAC-a powinien odezwac=20
sie nie pytany - wys=B3a=E6 sw=F3j MAC w chwili, kiedy akurat master o ni=
c=20
nikogo nie pyta. To bylby sygnal dla mastera, ze jest ktos nowy.
Zaleta - hotplug.
Wada - jeden slave na raz, bo sie po...mieszaj=B1.

)

(/tak sobie bajam)

eL eS
--=20
| W T F |
| O M F G |
| I HATE 1337 |
|speak so damn|
|much it hurts|

Poprzedni Następny
Wiadomość
Spis treści
From: Sebastian Bialy <heby_at_nospam_poczta.onet.pl>
Subject: Re: =?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwani?=
Date: Thu, 30 Dec 2004 16:37:23 +0100


Łukasz Sokół wrote:
Niestety w moim rozwiązaniu sensowne jest tylko nadawanie komunikatów
prze mastera i kontrolowana odpowiedz slave, żeby unikać kolizji.

Czyli masz : TX mastera do wszystkich RX slave'ow
RX mastera do wszystkich TX slave'ow <- przynajmniej tu na pewno masz OR
sprzętowy sprzętowy (jesli dobrze rozumiem)

Nie. Nie ma żadnych iloczynów sprzętowych - RS485 chyba w ogóle nie
rozumie pojęcia kolizji z konkretnym stanem logicznym,. Gdy masz iloczyn
montażowy to przy kolizji 1 i 0 dostaniesz coś konkretnego (np. 0). W
RS485 nie. Nie wiadomo co dostaniesz...

(tak sobie bajam)
Gdyby master wysylal w kazdym komunikacie po znaku otwierającym swoj
MAC, slave ktory stwierdzi, ze nie zna takiego MAC-a powinien odezwac
sie nie pytany - wysłać swój MAC w chwili, kiedy akurat master o nic
nikogo nie pyta.

Nie ma gwarancji jak to długo potrwa, chyba że istniały by sloty czasowe
i komunikat "jestem!" trwałby krócej niż slot i isyniała by pewna metoda
stwiardzenia, że master nic nie nadaje.

--
Sebastian Bialy - heby_at_nospam_poczta.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "peters" <peters_at_nospam_poczta.onet.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 16:43:27 +0100


Nie. Nie ma żadnych iloczynów sprzętowych - RS485 chyba w ogóle nie
rozumie pojęcia kolizji z konkretnym stanem logicznym,. Gdy masz iloczyn
montażowy to przy kolizji 1 i 0 dostaniesz coś konkretnego (np. 0). W
RS485 nie. Nie wiadomo co dostaniesz...

Jeszcze raz powtorze-czysty RS485 tego nie przewiduje. Mozesz jednak
nietypowo polaczyc
typowe drivery do 485, by iloczyn na drucie uzyskac. Robi sie tak dla CAN-a.

peters

P.S. zakłÓcać :) bardzo prosze !



Poprzedni Następny
Wiadomość
Spis treści
From: Sebastian Bialy <heby_at_nospam_poczta.onet.pl>
Subject: Re: =?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwani?=
Date: Thu, 30 Dec 2004 17:16:11 +0100


peters wrote:
P.S. zakłÓcać :) bardzo prosze !

OK :)

--
Sebastian Bialy - heby_at_nospam_poczta.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "peters" <peters_at_nospam_poczta.onet.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 17:07:38 +0100


Jest taki problem:

Jest sieć typu jeden master wiele slave. Podłaczone są wszystkie
równolegle 2 przewodową skrętką w half-duplex (zapewne RS485, tu jeszcze
się wacham). Każdy slave posiada unikatowy adres (coś jak MAC w sieciach
komputerowych).

Mam jeden pomysl, wydaje mi sie ze dosc prosty w realizacji.
Budujesz sobie siec w ktorej do Mastera podlaczasz Slave-y.
Slave moze byc urzadzeniem koncowym, lub koncentratorem.
Koncentrator musi miec dwa RS485. Jeden do lacznosci z masterem, drugi do
komunikacji z grupa urzadzen, dla ktorych sam jest masterem.
Czyli powstaje rodzaj drzewa.
1. wprowadzasz ograniczenie na liczbe urzadzen w jednym segmencie (powiedzmy
32 lub 256). MAster niech ma numer 0
2. wszystkie urzadzenia numerujesz nieco inaczej: numer urzadzenia bedzie
sie skladal z numeru w danym segmencie i numerow wszystkich koncentratorow
po drodze do glownego mastera
3. Master odpytuje tylko urzadzenia w swoim segmencie. Te ktore nie
odpowiadaja pyta rzadko.
4. Master nie komunikuje sie nigdy bezposrednio z urzadzeniami podlaczonymi
przez koncentratory. Koncentratory odpowiednio obudowuja ramki od urzadzen,
moze sklejaja komunikaty od slave-ow w jeden.
5. Podobnie jak master zachowuja sie wszystkie koncentratory.

W ten sposob mozesz podlaczyc nawet ogromna ilosc urzadzen. W latwy sposob
wykrywane sa nawe urzadzenia. Awaria w pojedynczej podsieci nie psuje
calosci.

peters



Poprzedni Następny
Wiadomość
Spis treści
From: Sebastian Bialy <heby_at_nospam_poczta.onet.pl>
Subject: Re: =?ISO-8859-2?Q?Sie=E6_mikrokontroler=F3w_i_wyszukiwani?=
Date: Thu, 30 Dec 2004 17:22:58 +0100


peters wrote:
Czyli powstaje rodzaj drzewa.
1. wprowadzasz ograniczenie na liczbe urzadzen w jednym segmencie (powiedzmy
32 lub 256). MAster niech ma numer 0
2. wszystkie urzadzenia numerujesz nieco inaczej: numer urzadzenia bedzie
sie skladal z numeru w danym segmencie i numerow wszystkich koncentratorow
po drodze do glownego mastera

Jest jedna sprawa: chciałbym, aby numery były podczas produkcji
zaszywane w urządzeniach. A takim przypadku (w jednym segmencie mała
pula adresowa) nie mogę ich tam wszyć, bo musiałbym produkować
urządzenia w grupach (nie powtarzajace się numerki lub konfigurowalne).
Wygląda to tak, jak w protokole IP gdzie nadaje się dodatkowe numerki IP
poza MAC żeby grupować stacje.

Oczywiście im mniejszy segment tym większe szanse na znalezienie slave
za pomocą protokołu kolizyjnego z sumami kontrolnymi. Ponadto slave może
z prawdopodobieństwem 1/32 losować, czy w ogóle się odezwać, zakłądając
że zapytania są dość częste czas wykrycia slave będzie sensownie krótki.

4. Master nie komunikuje sie nigdy bezposrednio z urzadzeniami podlaczonymi
przez koncentratory. Koncentratory odpowiednio obudowuja ramki od urzadzen,
moze sklejaja komunikaty od slave-ow w jeden.

Dokładnie tak to sobie wymyśliłem.

PS. Nie napisałem, że nie zalezy mi w ogóle na szybkości znalezienia
slave (mogą być sekundy). Istotne jest żeby je znaleźć.

--
Sebastian Bialy - heby_at_nospam_poczta.onet.pl

Poprzedni Następny
Wiadomość
Spis treści
From: "peters" <peters_at_nospam_poczta.onet.pl>
Subject: Re: Sieć mikrokontrolerów i wyszukiwanie slave
Date: Thu, 30 Dec 2004 19:04:18 +0100


Jest jedna sprawa: chciałbym, aby numery były podczas produkcji zaszywane
w urządzeniach.

Cel szczytny, ala po dluzszym zastanowieniu...przeciez urzadzenia musisz
jakos identyfikowac,
czyli gdzies wprowadzic ich numery. Chyba, ze Ci obojetne czym zasterujesz
lub skad pobierzesz pomiary :)

peters