logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

AVR-GCC, atmega16, RS485 (75176), modbus – brak komunikacji, co sprawdzić?

Procekk 27 Lip 2006 15:54 4543 8
REKLAMA
  • #1 2856105
    Procekk
    Poziom 12  
    Posty: 77
    Pomógł: 3
    Napisałem bardzo dawno temu programik na atmege16, który czekał na przesłanie danych (8-bitów) po RS232 (<->MAX232<->uP), nastepnie odsyłał je spowrotem. Chciałem zrobić coś podobnego ale na Rs485, w tym celu zamiast MAX232 wykorzystuję 75176 (odpowiednik MAX485). Linie /RE i DE są ze sobą zwarte i sterowane przez procesor (dodatkowy pin, stan H tuż przed wysłaniem i L tuż po).
    Zaznaczam że program działał poprawnie na RS232, a na pinie sterującym /RE DE układu 75176 mam logiczna "1" w momencie wysyłania. Linia D idzie na TXD atmegi a R na RXD. Złącza A i B zwarte rezystorem 120Ω i podpiete odpowiednio do A i B układu 75176. Konwerter sprawny na 100%. Wiele bezowocnych prób.
    Może ktoś miał już podobne problemy i wie jak je rozwiązać - co robię nie tak? Konwerter ciągnie zasilanie z tego co wiem z RS232 kompa, do komunikacji używam tylko linii A i B.
    Poza tym dając "0" (masa) na /RE DE układu 75176 teoretycznie ustawiam go tylko na odbiór. Odbiór danych w programie oznaczyłem mignięciem diodki podłączonej do jednego z wyjść i.. wykorzystując MAX232, RS232 i HyperTerminal wszystko śmiga pięknie - banał - jednak 75176, konwerter do RS232, RS232, Hyp.Term. - i nic się nie dzieje.
    Myślę że opis problemu jest wystarczający, sprawa chyba nie jest skomplikowana i nie wymaga kodu programu i schematu.
  • REKLAMA
  • #2 2857012
    DarQs
    Poziom 12  
    Posty: 5
    Podłącz do RO jakiegoś pull-up-a (np. 10k). SN75176 czasami bez nich nie działają prawidłowo.
  • REKLAMA
  • #3 2857378
    Procekk
    Poziom 12  
    Posty: 77
    Pomógł: 3
    No niestety ale pull-up na lini RO (R) nie pomógł :(. Nie wiem co robić. Próbowałem jeszcze robić mostek na liniach A, B. B przez rezystor 4,7k lub 10k do Vcc, A przez rezystor (taki sam jak w B) do masy. Pomiedzy rezystor 120, 220, 2k, różnie. Nie chce ruszyć.
  • #4 2859453
    Dexter77
    Poziom 28  
    Posty: 889
    Pomógł: 134
    Ocena: 19
    Hmmm a skad w RS232 napiecie zasilania +5V ?? Tam sa sygnaly ok +/-10V i to o znikomej wydajnosci pradowej. A 75176 potrzebuje conajmniej 8mA w trakcie odbierania i 60 mA w trakcie nadawania. Wyciagnij zasilanie z wtyczki molex ze srodka komputera, bo IMHO zle dzialanie bierze sie poprostu z braku zasilania ;)
    Pozdro
    Dexter
  • REKLAMA
  • #5 2859554
    Procekk
    Poziom 12  
    Posty: 77
    Pomógł: 3
    Konwerterowi aż tak dokładnie się nie przyglądałem ale pracuje poprawnie jeśli podepne pod RS232 w kompie czy laptopie a z drugiej strony podłącze do linii A i B (RS485) innego urządzenia. Dlatego uważam że napięcie z wnętrza komputera raczej jest zbędne. Ostatnio do czego doszedłem to to że przejściówkę podłączam pod RS232, /RE DE układu 75176 zwieram do masy (odbiór) i procesor zaczyna mi odbierać. Ale w drugą stronę lipa, po podłączeniu do 5V (wysyłanie) na /RE DE nic się nie dzieje.
  • #6 2860115
    gmp
    Poziom 19  
    Posty: 434
    Pomógł: 29
    Ocena: 28
    Proste konwentery RS485 potrzebuja czasami sterowania z ktorgos dodatkowego pinu zlacza RS232 (chyba RTS albo inny) , i hyperterminal niekonicznie robi to prawidlowo. Zrob sobie sam konweter na procku i bedzie po problemie. Albo skorzystaj z programu Terminal niejakoego Bray'a ktory umozliwia odpowiednie utawienia kazdego pinu RS'a. Ma tez fajna funkcje RTS on TX .Powinno ruszyc.
    http://bray.velenje.cx/avr/terminal albo w googlu posuzkaj.
  • #7 3719689
    pablo_belchatow
    Poziom 16  
    Posty: 162
    Pomógł: 4
    Ocena: 14
    Mam odwrotny problem :( atmega + 75176 do konwertera 485-232.
    Do kompa dane idą bez problemu, w drugą stronę nie chce. Ktoś ma jakieś pojęcie jak temu zaradzić
  • REKLAMA
  • #8 3728844
    ziomal155
    Poziom 15  
    Posty: 211
    Pomógł: 6
    Ocena: 13
    napisane jest wyzej !! Ze RS232 nei steruje przesylaniem danych w RS485 sam z siebie i to trzeba samemu dopisać wiec windowsowy terminal nic nei wysle chyba ze zewrzesz piny sterowania jak sie nie myle do zasilania recznie
    Pozdrawiam
  • #9 3733732
    pablo_belchatow
    Poziom 16  
    Posty: 162
    Pomógł: 4
    Ocena: 14
    Nie wiem czy to do końca w tym tkwi problem. Otóż udało mi sie transmisję odpalić ale.... wysyłając jakiś ciąg znaków do AVR, na lcd odbieram najpierw krzaki, po kolejnym wysłaniu, poprawny tekst. Co dziwne. Krzaki są zawsze takie same dla określonego ciągu znaków. Czasami dopiero trzecie wysłanie rozkazu, powoduje ze zostaje on odebrany poprawnie, a dwa poprzenie zamieniają sie w krzaczki :(
    W terminalu moge sobie ustawić wysyłanie RTS i DTR

Podsumowanie tematu

LABEL_AI_GENERATED
Problem dotyczy braku komunikacji Modbus na linii RS485 z wykorzystaniem mikrokontrolera Atmega16 i układu SN75176 (odpowiednik MAX485). Program działał poprawnie na RS232 z MAX232, jednak przy przejściu na RS485 pojawiają się trudności. Linie /RE i DE są połączone i sterowane przez procesor (stan wysoki podczas nadawania, niski podczas odbioru). Linia D podłączona do TXD, a R do RXD Atmegi. Złącza A i B są połączone rezystorem 120 Ω i podłączone do odpowiednich pinów SN75176. Konwerter jest sprawny, jednak transmisja nie działa poprawnie. Sugerowano dodanie rezystora podciągającego (pull-up) na linii RO (R), co czasem jest wymagane dla SN75176, ale nie przyniosło efektu. Próbowano różne konfiguracje rezystorów na liniach A i B oraz mostkowanie, bez sukcesu. Zwrócono uwagę, że RS232 nie dostarcza zasilania +5V, a SN75176 wymaga odpowiedniego zasilania (ok. 8 mA odbiór, 60 mA nadawanie), więc zasugerowano zasilanie z wtyczki molex komputera. Autor potwierdził, że konwerter działa poprawnie podłączony do RS232 i innego urządzenia RS485, ale problem występuje przy sterowaniu linią /RE DE na wysyłanie. Wskazano, że proste konwertery RS485 często wymagają sterowania pinami RS232 (np. RTS), które standardowe terminale Windows nie obsługują prawidłowo. Zaproponowano użycie specjalnego terminala (np. Terminal Bray’a) umożliwiającego kontrolę pinów RTS i DTR. W dyskusji pojawił się też problem z odbiorem danych – pierwsze wysłanie powoduje odbiór "krzaków", a dopiero kolejne poprawny tekst, co może wskazywać na problemy z synchronizacją lub sterowaniem linii transmisyjnych.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA