RS-485 ale automatycznie dwukierunkowy

Dec 03, 2025 Last reply: 7 months ago 4 Replies

Chcę spiąć dwa urządzenia przez RS-485 (jedno będzie moje, drugie to będzie przystawka / konwerter do PC, i soft do kontroli na PC).



RS-485 może być dwukierunkowy (czyli obie strony mogą nadawać), ale tam jest z tego co widzę half-dupleks (czyli tylko jedna strona może nadawać w jednym czasie). Czyli muszę przełączać nadawanie / odbiór.



Czy da się zrealizować to w taki sposób, żeby obie strony mogły nadawać (nie w tym samym czasie, czyli nadal half-dupleks) bez dodatkowego przełączania? Obie odbierałyby to, co jest na linii (czyli byłoby echo lokalne).



Chciałbym, żeby to było jak najprostsze. Z MCU sobie wysteruję tak jak chcę, ale z PC musiałbym wyprowadzać dodatkowe linie sterujące (chciałbym użyć gotowego konwertera na FT232 + scalaka do zrobienia z tego RS-485), oprogramowywać to. Zrobię to, jeśli trzeba, ale jeśli mogę nie robić, to wolałbym nie robić.



Pomysły, idee?


W dniu 3.12.2025 o 22:02, Arnold Ziffel pisze:

Bez przełączania się nie da, jak chcesz nadawać to sterujesz linią, jak chcesz odbierać to nie możesz nią sterować. To się robi bardzo prosto, np. w układzie MAX485 dajesz jedynkę na DE i !RE i dane na DI, po czym dajesz zero na DE i !RE i jesteś przełączony na odbiór. Jak chcesz słyszeć z powrotem co nadajesz to trzymasz zero na !RE cały czas, ale jedynki na DE się nie da trzymać, bo druga strona nie nada. Przystawka do PC sama to robi (chyba sygnałami DTR CTS) - w każdym razie programy i biblioteki to obsługują same - nawet nie wiesz kiedy. Jak nie może nadawać bo akurat odbiera to zbuforuje i za chwilę masz wszystko.

Dwa Maxy i dwie pary drutów - po jednej w każdą stronę :-)

O ile pamiętam, to problemem w pecetach był brak sygnału, kiedy UART zakończył nadawanie - a bufor był powiekszany w kolejnych wersjach.

Przy znanej prędkości nadawania można dorobić automatyczny przełącznik

- timer wyzwalany bitami danych.

J.

To przełączenie nadawanie/odbiór wynika z protokołu. Zazwyczaj RS485 to master-slave. Więc poza samym iface warto by wiedziec jaki proto tam będzie biegał bo z niego wynika kto i jak będzie kontrolował kierunki interfejsu na urządzeniach.

Przełaczenie jest absolutnie niezbędne, urządzenie albo odbiera albo nadaje. Więc w 485, kiedy komunikacja jest dwukierunkowa, musisz poświęcić jakiś pin na sterowanie nadajnikiem lini.

To może być automatyczne, czyli jeśli uC rozpoczyna nadawanie, przez prostą logikę załaczyć nadajnik a potem go wyłączyć, jednak takie coś to jazda po bandzie, bo dasz 1 scalak więcej zamiast gotowego pinu w uC.

Po prostu użyj dodatkowego I/O na pokładzie FTDI do sterowania kierunkiem.

formatting link
W ogole to zostaw ten temat własnego rozwiązania. Na ali możesz kupić konwertery za grosze.

formatting link

Tak czy inaczej - każde urządzenie musi kontrolować. Włączyć nadajnik na czas transmisji, wyłączyć po zakończeniu.

No chyba, że dodasz dodatkowe druty i będziesz sterował centralnie.

Ten scalak to może byc 74123. Gorzej, że ustawiony tylko na jedną prędkość transmisji.

Tylko jeszcze musisz przekonać programy, aby go obsługiwały. No chyba, że program od początku piszesz sam.

A jak sterują kierunkiem ? :-)

A, widzę - USB, to pewnie dobrze sterują.

Cena zajebista ...

J.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required