Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 12 lut 2025, o 21:59


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 22 lut 2013, o 01:25 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

Zastanawiam się nad wykonaniem sieci sterowników na ATMega644pa (2 UART). Każdy ze sterowników pracował by jako Master. W pętli głównej programu (oprócz podstawowego programu) były by dwa zdarzenia związanie z UART1 oraz z UART2. UART1-przyjmuje ramki i wysyła poprzez UART2 do kolejnego sterownika itd.
Obrazek

Od razu widać, że wymiana informacji nie będzie za szybka, szczególnie pomiędzy odległymi sterownikami.

Co sądzicie o takim rozwiązaniu?

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2013, o 07:55 
Offline
Uzytkownik zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 16 lip 2012
Posty: 2088
Lokalizacja: Leżajsk / Kraków
Pomógł: 411

RS232 nie nadaje się na duże odległości. Dlaczego nie CAN albo RS485 ?

_________________
Dragonus Cracovus: Biomagia



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2013, o 09:43 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

o CAN nie mam pojęcia. Jeżeli chodzi o RS485, to łatwo (tak mi się wydaje) jest zrobić sieć typu 1 Master, kilka Slave. RS485 bym mógł zastosować lokalnie. Czyli lokalnie scalak RS232->RS485, co miało by zadanie tylko zwiększyć zasięg. 90% sterowników umieszczonych było by w rozdzilni moduł obok modułu, dlatego na odległościach specjalnie mi nie zależy.

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2013, o 10:41 
Offline
Nowy

Dołączył(a): 27 sty 2013
Posty: 6
Pomógł: 0

Witam i pozdrawiam Wszystkich.
Jest to mój pierwszy post ale mam nadzieję, że będzie ich więcej.
Wydaje mi się, że to rozwiązanie trochę jest do niczego. Jeśli dobrze rozumuję :). " Każdy ze sterowników pracował by jako Master." - właśnie tu jest problem. Zauważ, że jeśli jeden z twoich modułów np. zawiesi się lub zostanie uszkodzone to komunikacja za nim też leży. Poza tym wyobraź sobie co się stanie jeśli wszystkie urządzenia " w jednym czasie" np. w wyniku jakiegoś zdarzenia będą chciały wysłać informację ( jeszcze co gorsza cyklicznie ją powtarzać bo warunki się zmieniają). Wydaje mi się że nie tędy droga. Ja i pewnie większość z kolegów na forum zrobiłbym tak ,że albo niech tablet będzie masterem i zbiera dane ze sterowników na zasadzie odpytywania, albo dodatkowy układ - właśnie master między pierwszym sterownikiem a tabletem działający również na zasadzie odpytywania pozostałych i komunikacji z tabletem. Nie wiem jak CAN, ale jak podpowiadał kolega Krauser - RS485 będzie dobrym rozwiązaniem nie tylko zresztą ze względu na zasięg, ale przede wszystkim na sposób przyłączenia do magistrali- uszkodzenie jednego z modułów nie powoduje problemów z dostępem do kolejnych.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2013, o 17:21 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27358
Lokalizacja: Szczecin
Pomógł: 1042

Nadmienię, że na forum mamy poradniki do CAN autorstwa SunRivera więc tym łatwiej z tym ruszyć .... i też zachęcam do skierowania się w stronę CAN niż bawienie się multimasterem na RS232.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 22 lut 2013, o 17:50 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

max_p napisał(a):
... " Każdy ze sterowników pracował by jako Master." - właśnie tu jest problem. Zauważ, że jeśli jeden z twoich modułów np. zawiesi się lub zostanie uszkodzone to komunikacja za nim też leży.


Przy takim rozwiązaniu można by sterowniki połączyć w "okrąg". Czyli jeżeli jeden z modułów by się zawiesił, to komunikacja trwała by dalej. Moduł dostaje informację od wcześniejszego wysyła ją dalej. Ramka zanika w sieci gdy dotrze do modułu docelowego.

max_p napisał(a):
Poza tym wyobraź sobie co się stanie jeśli wszystkie urządzenia " w jednym czasie" np. w wyniku jakiegoś zdarzenia będą chciały wysłać informację ( jeszcze co gorsza cyklicznie ją powtarzać bo warunki się zmieniają). Wydaje mi się że nie tędy droga.

Moim zdaniem nic się nie stanie, nie będzie żadnej kolizji!!! W uproszczeniu sprowadza się to do połączenia typu (uP[rs232] <->uP[rs232]). Jeden i drugi uP mogą jednocześnie nadawać i odbierać.

Jeżeli bym zastosował połączenie sterowników w pętli to zwarcie na magistrali, by nie zablokowało komunikacji. Jeżeli w RS485 lub CAN nastąpi takie zwarcie to cała sieć siada.

Wiem, że na forum jest kurs Sun na temat CAN - nie przyswoiłem jeszcze tej wiedzy :)

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 23 lut 2013, o 22:58 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 01 lis 2011
Posty: 266
Lokalizacja: Szczecin
Pomógł: 9

GwynBleidD napisał(a):
Dobrze myślisz, ale źle myślisz... :D
Wada 1:
jeśli chcesz łączyć w pierścień i żeby miało to jakiś sens, musisz obsługiwać przypadek dotarcia każdego pakietu 2x. Dodatkowo nie możesz od tego uzależniać całej transmisji, bo przy przerwie już dochodzi tylko 1 raz...

Podczas normalnej pracy nigdy nie będą wysyłane dwa takie same pakiety na raz jednego modułu. Wszystkie pakiety będą krążyły np w "prawą" stronę. Moduł po wysłaniu pakietu oczekuje na odpowiedz, że ten pakiet został odebrany. Wszystkie moduły wysyłają swoim "prawym" UART. Każdy moduł ma wprowadzony licznik utraconych pakietów. Czyli jeżeli następuje przerwa to do modułu nie dochodzą potwierdzenia odebrania pakietu. Jeżeli licznik ten np przekroczy wartość np 10 pakietów. To moduł ten wysyła informację, że moduły mają nadawać lewym UART.

GwynBleidD napisał(a):
Wada 2:
Wysłanie omyłkowo pakietu do nieistniejącego urządzenia spowoduje krążenie tego pakietu w nieskończoność. Kilka takich i już magistrala zablokowana.

Do każdego pakietu danych będzie przyklejony "licznik życia". Jeżeli w sieci będzie 10 modułów to ten licznik będzie równy 9. Po przejściu przez kolejny moduł "licznik życia" ramki jest dekrementowany. Gdy licznik będzie równy zero, ramka umiera.


Każdy z modułów ma oczywiście wbudowanego WatchDoga. Te modułu które chce spiąć w sieć, dosyć dopracowałem i nie wieszają mi się podczas pracy autonomicznej. Tych sterowników mam trochę zainstalowanych na obiektach i mi się nie wieszają. Nie mówię, że nigdy taki przypadek nie zaistenieje! Ale nawet jak by nastąpiło zawieszenie to od razu zadziała WatchDog i w najgorszym przypadku będzie utraconych kilka ramek.

Jeżeli chodzi o CAN to nie mam o tej magistrali za dużego pojęcia. Tak na szybko szukając informacji o CAN i AVR to chyba na naszym forum jest jej najwięcej informacji - chodzi mi o kurs Sun. Będę musiał się zmobilizować i posiąść tą tajemną wiedzę na temat CAN, jak to jest takie fajne rozwiązanie :)

_________________
www.gryfsmart.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO