Tak, CAN ma sprzętową obsługę kolizji. Jeśli masz procek z kontrolerem CAN lub używasz zewnętrznego kontrolera to CAN jest prostszy - większość rzeczy robi kontroler (błędy, retransmisje, buforowanie). RS485 to tylko warstwa fizyczna, cały protoków trzeba sobie zaimplementować samemu. Klasyczny RS485 nie ma też możliwości detekcji kolizji. Można to...
Dodatkowa linie ani nie jest potrzebna, ani tez nie rozwiazuje, zadnego problemu. Bo nic nie zabezpieczy przed sytuacja, w ktorej dwa urzadzenia prawie jednoczesnie sprawdza ta linie, stwierdza, ze jest wolna i sprobuja ja zablokowac. Twoj problem mozna rozwiazac na dwa sposoby. Klasycznie po prostu sprawdzac linie, jesli przez jakis czas nikt nie nadaje...
witam. ja z powodzeniem stosuje podanie 1/2 zasilania poprzez dzielnik 1k/1k. sprawdzam czy jest 1/2 zasilania jeżeli tak to jest wolna. ale przy dużym ruchu są kolizje. rozwiązałem je w ten sposób: -powstał układ master nad masterami. -wysyła on kolejnym master'om zezwolenia na nadawanie i czeka aż zasygnalizują koniec działania. wtedy zezwala następnemu.....
Witam Kiedyś działałem z tym samym tematem jak dobrze wszystko rozumiem. Nadawałem z procka i sprawdzałem czy to samo do mnie wraca. Korzystałem jak dobrze pamiętam z ST485 (producent STmicro). Niestety sprawa wyglądała tak, że w pół duplexie kiedy scalak nadaje, to nie odbiera tego co jest na magistari, co jest przecież logiczne skoro calak ustawiony...
Witam Napisz cos wiecej ile sterownikow będzie na lini jak często sterowniki będą wysyłać telegram. Niestety przy MultiMaster na rs485 nie da się w stu procentach wyeliminować kolizji, może w twoim przypadku będzie lepiej zastosować układ przekazujący żeton albo dodatkowy sterownik sterujący przepływem danych. Za bardzo nie znam się na C wiec tutaj...
- możesz użyć płytek Arduino, komunikację zrealizować przez UART, a protokół napisać własny (master po jednej stronie, a wszystkie slave zmostkowane po drugiej, zakładając że kolizje będą rzadkie), Bezpośrednio nie da się tak zrobić, gdyż musiałbyś połączyć wyjścia Tx układów slave, co jest niedozwolone. Tak się da zrobić o ile wyjścia Tx będą np....
Tak, ale MQTT zakłada obecność centralnego brokera. Jak broker umiera to wszystko przestaje działać. Ale w przypadku RS485 też można odpuścić sobie tworzenie własnych protokołów, jest przecież ModBUS i pewnie ze trzy inne się znajdą, co to już są zaimplementowane i dobrze działają. (Akurat RS-485 się średnio nadaje do budowania systemów rozproszonych...
RS485 to standart transmisji danych asynchronicznych. Ramka a takze protokolu jest IDENTYCZNY z RS232. Roznia sie jedynie warstwa sprzetowa (rs232 interfejs napieciowy asymetryczny rs485 symetryczny) Dzieki temu mozna: 1.Prosto konwertowac rs232<>rs485 2.Laczyc KILKA urzadzen do magistrali rs485 bo tylko sie zaklucaja a mozna wykrywac kolizje...
Niestety RS485 zbytnio nie umozliwia arbitrazu. Jezeli dwa mastery zaczelyby nadawac nastapila by kolizja. Linia moze byc sterowana tylko z jednego urzadzenia na raz. Zastanow sie moze na CAN-em. Tam mozliwe jest sterowanie linii z kilku zrodel i arbitraz. Pozdro Dexter
W efekcie taka metoda sprawdza się przy połączeniach na parę metrów, ale nie przy dużych magistralach. Stąd też detekcja kolizji musi być realizowana na etapie protokołu. ..faktycznie tak może być :) ..tego nie przewidziałem. Mi działało poprawnie na krótkich magistralach. Oczywiście wszystko opierał się na głównie protokole. Z tego co napisałeś wynika...
http://en.wikipedia.org/wiki/Carrier_sen... Rozumiem, że o ten arbitraż chodzi... Tylko mam takie pytanie - jak ja to mam zrealizować - jednoczesne odbieranie i wysyłanie? Jak rozpoznać, że to jednak nie mój sygnał jest na linii? Dodam tylko, że prawdopodobnie zastosuję konwertery rs232>rs485/can Tzn - będę miał...
Na jednej szynie danych (o takiej mowa skoro mogą się pojawiać kolizje) i tak nie uzyskasz trybu full-duplex. Według mnie lepiej zastanowić się nad samym protokołem, aby wyeliminować w znaczącym stopniu kolizje oraz zapewnić jakiś prosty sposób retransmisji danych - najprostrzy to narzuta 2 bitów na pakiet danych - jeden zmieniany w każdym kolejnym...
SP3SWJ --> no powiem ci , że mnianiuśnie, cukierkowo i coraz bardziej zachęcająco wyglądają te wyniki z tego analizatora, które tu pokazujesz ;) przez ciebie się skuszę w końcu na niego ;) A jeśli chodzi o to co napisałem w C to prawdziwym testem dla moich rozwiązań (bez takiej analizy) było napisanie na PC oprogramowania, które pełni rolę Mastera w...
No to sobie na początek wybrałeś dosyć skomplikowany temat :) Ale najprościej - skoro masz tylko dwie ATMegi to zastosuj full-duplex RS485 - wtedy odpadnie ci sterowanie kierunkiem. Kosztem jest podwojenie liczby transceiverów z 2 do 4 lub zastosowanie podwójnych. Jeśli ci to nie pasuje to trzeba napisać normalny protokół komunikacyjny ze wszystkimi...
W sumie prosi się CAN, z tym że zwykle jest na pokładzie bardziej rozbudowanych procków, a tutaj MCU będzie się raczej nudził i spokojnie może to być jakaś mała "pchełka". Chyba że do jakiegoś maleństwa doklejać moduł CAN po SPI... Ale RS485 też to obskoczy przy dobrych transceiverach, a plus jest taki, że praktycznie każdy MCU, nawet z rodzaju "byle...
Nie mozna wykluczyć, że dwa nadajniki przyłączą się równocześnie do magistrali, która była wolna. Wtedy "echo" wykaże błędy. To jeden z największych mitów dotyczacych RS485. Lokalne echo z nadajnika prawie nigdy nie wykaże błędów w przypadku kolizji. Proste prawo Ohma temu zapobiegnie. Kolizję na RS485 w sposób pewny można wykryć tylko w wyższych warstwach...
na swoje nieszczeście wybrałeś układ do realizacji transmisji RS422, nie nadaje sie ono do szyny RS485. Tak jak opisał poprzednik w RS485 nadaje jeden z nadajników a pozostałe muszą być odłączone inaczej jest stan kolizji. bis
Czyli pewnie występuje sytuacja że dwa slave-y chcą nadawać jednocześnie i następuje kolizja... Sprawdź program.
A czy nie można zastosować dwóch układów, jeden by nadawał a drugi w tym samym czasie odbierał a uC sprawdzałby, czy to co zostało nadane pojawiło się na drucie, jeśli nie to znaczy że mamy kolizje... koszt niewiele wyższy, dodatkowe dwie nogi na procku i trochę więcej zajętej pamięci i mamy detekcję kolizji na RS485... co o tym myślicie?
Nic się nie stanie. Po prostu w pobliżu tego, ktory wystawił 0 będzie 0, a w pobliżu tego, który wystawił 1 będzie jeden. Pośrodku będzie stan zakazany. RS485 nie obsługuje kolizji, więc tego typu problemy trzeba wykrywać w warstwie protokołu, albo zastosować CAN, lub zmodyfikować RS485, tak, aby miał stan recesywny, co technicznie sprowadza go właściwie...
Tak, jest poprawny. Z tym, że nie do końca będzie to RS485, a właściwie będzie, tyle, że z recesywną "1". Zauważ, że układ będzie działać tak, że nadawane są tylko "0", przy "1" nadajnik jest blokowany, a "1" na magistrali będzie musiała być wymuszona przez rezystory polaryzujące linie A i B. To nie jest zły pomysł w trybach multimaster, ale dla jednego...
Nie musi być. Nadajniki rs485 są odporne na kolizje, co najwyżej nic nie wyjdzie z takiej transmisji. A w takim prostym systemie z jednym masterem wystarczy przyjąć zasadę ze urządzenia slave nie odzywają się bez pytania. Oczywiście potrzebny będzie jakiś prosty protokół dzięki któremu będzie można zaadresować odpowiedniego slave'a.
Z doświadczenia odradzałbym tryb pierwszy, może się zdażyć że dwa urządzenia wejdą w tryb nadawania na raz, a to kompletnie rozwala transmisję! Kolizja w RS485 jest niedopuszczalna, kombinowałem kiedyś ze sporą siecią i po kolizji żaden moduł nie wiedział co się dzieje i próbował coś nadawać, co tylko pogarszało sytuację. Master odpytujący to dobre...
O kolizjach i transmisji w standardzie RS485 macie tu: http://www.elektroda.pl/rtvforum/topic28... Jest też taka mała niebieska książeczka opisująca standardy RS i protokoły transmisji.
Wracając do meritum takim uporządkowanym sposobem dostępu do medium sieciowego, umozliwiającym unikanie kolizji, jest przekazywanie znacznika (token passing). Niestety porządne oprogramowanie tej metody jest bardziej złożone od prostych systemów wykrywających kolizje. Z drugiej strony widziałem gdzieś na forum post, w którym piszący żalił się, że przywrócenie...
Przeprasza, mój błąd. Faktycznie 123. Dane pobieram systemem automatyki domowej, który jest mega prosty. W parametach komunikacji podaję ip i port oraz nr slave modbus. IP adres mam ustawiony stały, a portu modbus 502 chyba jest wpisany fabryznie. Slave mam ustawiony na 1, ale w komunikacji RS485. Chyba, że gdzieś jeszcze trzeba to zrobić. Drugi inwerter...
Co do schematu - jest ok, jedynie transceiver potrzebuje rezystorów polaryzujących linię A i B. Z drugiej strony jeśli to mają być dwie ATMegi połączone 10m kablem to prościej jest zrobić to po RS232 - masz wtedy full duplex i odpada konieczność wykrywania kolizji (co dla rs485 jest niemożliwe) i kontroli dostępu do magistrali. Jeśli już iść w interfejs...
Dlatego myślałem o full-duplex, bo często tu na forum piszą ludzie, że w halfduplexie trzeba uważać na kolizje. Więc pomyślałem ze jak uzyje full duplex, to będę mógł sobie odpuścić wykrywanie kolizji, no ale coś mi właśnie nie pasowało z tym multimasterem... no cóż, w takim razie zostaje halfduplex:)
To się chyba nazywa RS422 i co tu dużo mówić - "jet anoder FTDI with MAX485 similar scalak" nie powaliło na kolana, ani nie dokonało przewrotu w moim życiu elektronika... Gdyby to chociaż było RS485 z jakimś automatycznym przełącznikiem kierunku w trakcie nadawania.. albo wykrywanie kolizji na magistrali... Albo solidnie opracowane układy zabezpieczeń...
Max485 to transceiver, konwertuje sygnał z TTL na kompatybilny z RS485. Ponieważ masz dwa procesory, potrzebujesz 2 transceivery, tak aby to wyglądało tak: Procesor->TTL->MAX485=RS485=RS485->TTL->... W czystym RS485 masz transmisję half-duplex, co wymaga wymyślenia jak uniknąć kolizji. Jeśli masz tylko 2 procesory, to można pomyśleć o wersji full-duplex,...
Ale będą to dwa interfejsy RS485... Standard EIA422 określa że RS422 jest jednokierunkowy, EIA485 określa że RS485 jest dwukierunkowy, fizycznie różnica jest niewielka, a w praktyce transceivery te same... Jak zrobisz RS422 i podłączysz wiele nadajników i odbiorników dostaniesz RS485, tylko stracisz to co w RS422 jest najważniejsze - nie ma możliwości...
Jeśli będzie więcej niż jeden nadajnik to oczywiście transmisja siądzie. Nie można zrobić full-duplex przy więcej niż 2 układach, znaczy można, ale byłoby to co najmniej dziwne i karkołomne rozwiązanie. Dlatego jeśli masz kilka układów to łączysz je w magistralę i musisz (o ile jest możliwość, że jednocześnie będzie nadawał więcej niż jeden nadajnik)...
Ostatnie dyskusje, pomijając wymagania cenowe autora tematu które jak ludzie napisali są do odrzucenia. USB ma 2 sygnały więc na 2-ch RS485. Skrętka komputerowa ma przecież 4 pary więc nie problem. Tylko nie wiem jak z prędkością transmisji bo nie sprawdzałem. Czy tu nie powstanie kolizja gdy USB będzie nadawało szybciej niż RS485 jest w stanie prawidłowo...
No właśnie dlatego pomysł na użycie fullduplex dla mnie jest bez sensu w tym wypadku. Dlatego użyłem MAX1483. RE jest na stałe do masy, a DE podciagam jak chce coś nadawać. Przesyłanie ogólnie działa OK, tyle ze urządzenie które ma odebrać to co samo wysyła, co chwile odbiera bajt 234:/ Ogólnie o zabawie z porównaniem wysłanego bajtu z odebranym i wycofanie...
Ja zawsze myśle modelem najgorszym w najgorszych warunkach - przypuśćmy, że oba układy sprawdzają linię dokładnie równocześnie - oba widzą stan zero, więc oba wystawiają jedynkę - jeśli czas propagacji jest duży, to nie musi to być aż tak do końca równocześnie - ale podczas gdy jeden układ wymusi jedynkę, to drugi ma na wejściu jeszcze zero, albo już...
Można też użyć dowolnego procka z SPI i kontroler CANa MCP2515 + oczywiście transceiver (np. MCP2551, TJA1050). CAN w porównaniu choćby z RS485 ma tę zaletę, że ma rozwiązywanie kolizji i załatwia nam to kontroler, zatem nie musimy tego implementować w sofcie. Do tego możemy sobie ustawiać filtry i maski na ID komunikatu. Wydaje mi się, że do sieci...
RS485 jak już wspominali to jedna z najprostszych i najtańszych metod do szybkiego i taniego połączenia wielu urządzeń na jednej magistrali. Sam na szybko opracowałem sobie prosty protokół do pracy typu Master i układy Slave. Nie trzeba odrazu budować tokenringa (chociaż można i co ważne można to tak zrobić żeby wcale nie było jakiegoś pożerania czasu...
Obecnie jedna "instalka" serwera aplikacyjnego może Ci hostować wiele stron i teoretycznie nie musisz otwierać dodatkowego portu. W twoim przypadku osobny port jest jednak sensowny. Poszukaj proszę pod słowem kluczem "VirtualHosts". O ile cpu/ramu nie braknie .... Teoretycznie otwierając stronę możesz wywoływać skrypt, który przy odpowiednio dobranych...
Problemem jest np jak ustalić pozycje każdego czujnika w przestrzeni. Dlatego w studiach ubierają ludzi w dziwne stroje z lampkami i kręcę wieloma kamerami. Ale to są pewnie "elektrodowi idioci" co nie słyszeli o (at)Pong.Chu i FPGA. Spoko - metodą Piotrusia kolejne 18 procesorów załatwi sprawę. Wystarczy RS485, albo CAN (ze sterownikiem) gdzie odpada...
Max 1480 i inne są zbyt drogie i nie opłacalne :/ Czyli z tym zasilaniem to tak jak mam zrobione,chyba. Bo troszkę się to kłóci z tym co pisze Mirekk36. Zastanawiam się tak do końca nad sensem tej optoizolacji. Co mi to pomoże? Owszem coś tam zabezpieczy ale.. Miewałem takie przypadki z siecią RS485 że w przypadku kolizji mastera ze sleave-em siadała...
RS485 to magistrala, gdzie nadawanie i odbiór odbywa się ta samą linią (halfduplex), cała reszta ze strony oprogramowania wygląda identycznie jak w RS232 na poziomie nadawania i odbioru. Na wyższym poziomie wybiera się rodzaj protokołu, zawierający sposób porozumiewania się urzadzeń, sposób obsługi kolizji, adresowanie, itd. Możesz napisać własny protokól,...
Jak koledzy wyżej zaproponowali - CAN. Na początku może wydawać się trochę bardziej skomplikowany niż RS485, ale zapewnia bardziej niezawodną transmisję i upraszcza komunikację w wyższych warstwach (CAN ma zaimplementowane mechanizmy unikania kolizji na magistrali, retransmisji w przypadku błędów, CRC itd). Przede wszystkim pozwala zbudować magistralę...
Jesli w PC-cie masz USB, to mozesz podpiac konwerter USB<->RS232, ale wtedy PC bedzie musial miec oprogramowanie przekazujace dane miedzy radiomodemem a uC (jesli to konieczne). Dodano po 4 Podlaczenia via RS485 rozwiaze sprawe fizycznego polaczenia urzadzen, natomiast programowo musialbys rozwiazac kwestie np. kolizji (dwa urzadzenia probuja...
Witam. Nie wnikałem za bardzo w kod ale.. zacznij od uproszczenia funkcji odpytywania -tj wysyłania ramek przez UART. Zrezygnuj na początku z przerwań i po prostu wykorzystując pooling wysyłaj w pętli ramki. (Jak dojdziesz co jest nie tak, wtedy zaimplementuj przerwania:) Np by odczytać wartość rejestru spod adresu 100 wysyłasz: Bajt1 (Adres modbus)...
Czteroprzewodowy interfejs ma sens jeśli masz tylko dwa układy, które muszą wymieniać informacje w full-dupleksie. Tu nie ma sensu, bo przecież wszystkie urządzenia nie będą jednocześnie nadawać, prawda? Każda ATMega musi sterować nadajnikiem, w przecwnym przypadku dojdzie do kolizji. Najprościej to zrobić tak, że ATMegi buforują dane, a RPi je okresowo...
odp. 1: Miernik ma wyjście optoizolowane, można podłączyć dowolny interfejs. W przypadku RS485 powstanie problem zmiany kierunku. Można poświęcić wolny GPIO uC (kilka wolnych jest) lub konwerter USART-RS485 załatwi problem zmiany kierunku. odp. 2: Zależy co kto lubi. Zrobiłem tak, bo nie musiałem pisać aplikacji rejestrującej przychodzące dane, wystarczy...
kolega kamyczek mówił o sytuacji z użyciem transceiverów - są one sprzętowo przystosowane do kolizji. Nie powinny one spowodować uszkodzenia samego transceivera jak i uP. W przypadku bezpośredniego połączenia port-port krytycznym jest zapewnienie nadawania przez jedno urządzenie. Da się to zrealizować, ale nie ryzykowałbym. Lepiej dać jakiś układ pośredniczący...
Wg mnie powinno to wyglądać następująco: - linia sterująca kierunkiem (/RE DE) każdego drivera podciągnięta do gnd jakimś większym oporem (powiedzmy >= 10k) - w momencie podania na OE zatrzasku stanu H, automatycznie każdy driver RS485 powinien automatycznie przejść na odbiór. W tym stanie realizujesz komunikację z innymi peryferiami po i2c. - gdy chcesz...
Temat sprawdzania zajęości magistrali RS485 pojawia się na tym forum nie po raz pierwszy. Sugerowałbym poszukać i poczytać o proponowanych rozwiązaniach. Ja ze swojej strony mogę tylko podpowiedzieć rozwiązanie, które najbardziej mi się podoba. Wystarczy podczas nadawania mieć włączony odbiornik i sprawdzać czy na magistrali pojawia się to co nadajesz....
Witam, CAN w automomotive się używa, ale jest dosyć powolny, ma idiotycznie małą przepustowość, a zalety w postaci deterministycznej transmisji z sprzętowym priorytetowaniem nie są potrzebne aby gadać z tablicą z numerem autobusu. No i RS485 jest tani. Bardzo tani a 10 Mbps przejdzie. Skoro tak to czemu go tam używają??? Pozdrawiam, Bo ma sprzętowe...
kolizje rs485 rs485 solar skrętka rs485
multi monitor drukarka ecotank pompa załączać opóźnić
przydomowa elektrownia wiatrowa beetle schem
Jak wyjąć silniczek z młynka do kawy typ 065 z 1974 roku Osłona fotela lewego Ford C-Max 2016 EcoBoost – numery części, montaż, zamienniki