RS 485 - programowanie

Nov 23, 2004 21 Replies

Witam.



Jestem pocz±tkowym programist±. Mam urz±dzenie (miernik) z interfejsem RS485 oraz pc z wbudowanym interfejsem RS485. Mam oprogramowaæ komunikacjê pomiêdzy tymi urz±dzeniami (w jêzyku c). Mam pewne do¶wiadczenia z RS232. Rozumiem, ¿e przy takich warunkach, oprogramowanie komunikacji (kod aplikacji) jest takie samo jak w przypadku RS 232. Proszê o potwierdzenie tej tezy.


pozdrawiam GG


U¿ytkownik "E.N" snipped-for-privacy@gnas.pl napisa³ w wiadomo¶ci news:cnuun5$lcv$ snipped-for-privacy@nemesis.news.tpi.pl...

W RS232 s± osobne tory w dwie strony, a tu jest jeden wspólny. W RS485 ramki mog± siê "zderzyæ" i trzeba to jako¶ rozwi±zaæ. Mo¿na wymy¶liæ co¶ samemu, lub zastosowaæ jaki¶ standard (nie znam). P.G.

jesli to RS485 full duplex (2 pary), to bedzie tak samo, jesli jedna para, a komunikacja ma zachodzic w dwie strony, wtedy trzeba zapewnic jakis mechanizm zwalniania magistrali. No i nadawane dane beda wracac do odbiornika ("echo").

pozdrawiam entrop3r

Potwierdzam, to cholerne echo przytrzymalo mnie kilka dni w miejscu, zanim rozpoznalem i rozwiazalem problem. Jesli ktos chce kilka fotek sieci na RS485 mozna przejrzec tu:

formatting link
Micha³

Michał wrote: > Potwierdzam, to cholerne echo przytrzymalo mnie kilka dni w miejscu, > zanim rozpoznalem i rozwiazalem problem. > Jesli ktos chce kilka fotek sieci na RS485 mozna przejrzec tu: >

formatting link
Stosowałeś jakiś popularny protokół, czy coś własnego ? Własnie szyke sieć na RS485 i mam jeszcze pole manewru ;)

Mo¿na gdzie¶ poczytaæ o metodach rozwi±zuj±cych ten problem ???

U¿ytkownik "entroper" snipped-for-privacy@CWD.spamerom.poczta.onet.pl> napisa³ w wiadomo¶ci news:cnv0s1$l1$ snipped-for-privacy@achot.icm.edu.pl...

Protokó³ wlasny, nawet nie chcialo mi sie szukac czego co moglnym przystosowac do swojej sieci. W ramce danych mam zapisana temeperature, stan fotokomorek oraz sterowanie przekaznikiem. Pzd Micha³

Witam

Ja rozwiazalem to bardzo prosto. W momencie nadawania wylaczalem odbiornik. Nie mam pdfa (max485) pod reka, ale chyba wystarczylo zewrzec wyprowadzenia ENABLE nadajnika i odbiornika, bo uaktywniane sa (o ile dobrze pamietam - projekt robilem prawie 3 lata temu) roznymi stanami logicznymi (FIXME). Dzialalo tot bez zarzutu, nie mialem problemu z echem. Pozdrawiam Tomek

Czy problemy tak¿e wystepuj± gdy u¿ywamy jakiego¶ popularnego protoko³u (Modbus, profibus) ?

U¿ytkownik "Tomasz Sliwa" snipped-for-privacy@XXXsys.net.pl> napisa³ w wiadomo¶ci news:cnvnrb$gj6$ snipped-for-privacy@nemesis.news.tpi.pl...

wyprowadzenia

Jeśli full duplex to nie będzie RS485 tylko RS422. Jeśli jednak RS485 czyli 1 para to dzięki "sprzętowemu" zwalnianiu magistrali nie masz echa. Jeśli pracuje nadajnik to odbiornik jest po tej stronie odłączony ( na wyjściu ustawiony na 1 ). Przełączenie odbiór-nadawanie jest albo sterowane linią RTS albo następuje automatycznie przy pojawieniu się bitu startu po stronie TTL przy pomocy prostego przerzutnika monostabilnego. Wszystkie znane mi karty RS485/RS422 oraz konwertery

485-232 mają tak rozwiązane. Czasami to przełączanie powoduje, że obetnie ci początek odpowiedzi jeśli Slave za szybko zacznie odpowiadać. Ja robiąc obsługę w Slave musiałem zazwyczaj trochę opóźniać odpowiedż bo pecet z kartą Advantecha nie zdążał.

Nie mogą jeśli to jest RS485 bo wg standardu musisz zastosować Master-Slave. Slave nie może nadawać spontanicznie tylko jest odpytywany.

Witam

Moment, moment - RS485 definiuje TYLKO warstwe fizyczna. Jesli uklad jest typu multimaster (a dlaczego nie ?) to moga wystapic "kolizje". Zalozmy sytuacje, kedy master-slave skoncza wymiane danych i inne mastery chca rozpoczac transmisje do swoich adresatow. Z pewnoscia badaja zajetosc szyny transmisyjnej jednak nie mozna wykluczyc ze decyzje o rozpoczceciu transmisji podejma w tym samym czasie. Oczywiscie mozna to rozwiazac poprzez wymiane "tokenow", przydzial czasu itd. ale to juz inna bajka :)

Pozdrawiam Andrzej

masz

zalezy czy "sprzet" zwalnia :) W gotowej karcie albo konwerterze

232/485 moze byc zrobione tak jak mowisz (w konwerterze nawet jest to calkiem zrozumiale :) ), ale np. scalony driver we wlasnym urzadzeniu mozesz podlaczyc roznie - uzywajac czegos do przelaczania nadawanie/odbior lub nie. Lokalne echo natomiast wcale nie jest (jak dla mnie) takie zle - mozna np. programowo sprawdzac kolizje w systemie multimaster czy tez po prostu kontrolowac sprawnosc drivera i linii.

pozdrawiam entrop3r

Nie będę się upierał ale nie przypominam sobie żeby EIA/TIA-485 dopuszczało więcej niż jeden master. Na 75176 obciążonym 50ohm możesz sobie rzeźbić dowolnie ale to nie oznacza, że efekt będzie zgodny z RS485 czyli "Recommended Standard". W tym przypadku gość ma dość prosty układ - miernik który pewnie nie jest masterem i pc który może i powinien być masterem. Pisanie mu o wersjach RS485 dwu i czteroprzewodowych o echach i kolizjach jakie muszą towarzyszyć wersji 2 przewodowej wprowadza chaos pojęciowy.

Jeśli i miernik i karta ma rzeczywiście RS-485 to łączysz jedną parką. Jeśli karta w komputerze ma automatyczne przełączanie nadawanie- odbiór to tylko wysyłasz rozkaz do miernika a potem z bufora coma odczytujesz odpowiedź. Karta powinna po wysłaniu automatycznie przełączyć się na odbiór. Ale w starych kartach musisz sprawdzić czy ewentualnie zworkami jest ustawiona prawidłowa prędkość transmisji ( bo od niej zależy prędkość przełączania). Jeśli nie ma automatu to przełączasz linią RTS - powinno być w dokumentacji karty. Karta powinna mieć wlutowane terminatory - rezystory np 120 Ohm. Jeśli ta karta to Advantech to w dokumentacji jest błędnie zaznaczone który rezystor jest od 485.

Jeśli miernik ma jednak RS422 a nie 485 to ustaw kartę na 422 ( pewnie ma wybór) podłącz dwie parki i nie musisz o niczym myślec.

No tak ale on ma gotową kartę.

Jeśli lubisz bohatersko przezwyciężać przeszkody które sam sobie tworzysz. Mi do tej pory wydawało się to proste. Jeśli robie urządzenie odpytywane zdalnie przez 485 ( czyli 1 parka) to ono ma nasłuchiwać na linii. Jak dostanie komendę to przełączy się na nadawanie, wypluje wynik i znowy zacznie nasłuchiwać. Lokalne echo natomiast wcale nie jest (jak

No tak to jest twój świadomy wybór. Ale jak gość weżmie kartę 485 i użyje jej standardowo to nie dostanie echa. Chyba że ma tylko 422 i zewrze Tx z RX żeby sobie zrobić z tego 485.

odpytywany.

Wed³ug jakiego standardu ? Standard RS485 nie definiuje ¿adnego protoko³u komunikacji, za to wymaga, aby nadajnik wytrzyma³ zderzenie z drugim nadajnikiem. Odpytywanie to najprymitywniejszy protokó³ komunikacji. A je¶li jest 256 Slave-ów, które sporadycznie (raz na godzinê) maj± co¶ do wys³ania, ale powinno wtedy byæ jak najszybciej (na przyk³ad kilka ms) i linia powinna jak najmniej siaæ zak³óceñ.

P.G.

U¿ytkownik "Mariusz Dybiec" snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:co38d2$3bh$ snipped-for-privacy@nemesis.news.tpi.pl...

mo¿esz

Zgoda, ale nie mo¿na pisaæ nieprawdy.

P.G.

U¿ytkownik "Mariusz Dybiec" snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news:co3a1b$ac9$ snipped-for-privacy@nemesis.news.tpi.pl...

urz±dzenie

Za proste. A jak to jest czujka alarmowa to bêdziesz j± odpytywa³ 10x na sekundê (zanieczyszczaj±c ¶rodowisko naturalne falami EM i zu¿ywaj±c zasoby energetyczne globu :-) ) aby raz na 10 lat dostaæ odpowied¼.

P.G.

Ja bym ci radził podłączyć tę czujkę przez GPIB :)

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required