Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Kilka układów na jednym rs232

decompiled 06 Mar 2009 17:32 4252 30
  • #1
    decompiled
    Level 10  
    Witam

    Potrzebuję podpiąć do jednego portu rs232 kilka µc. Mam problem z sygnałem wychodzącym z jednego z podpiętych układów, nie wiem dlaczego ten sygnał zanika i nie dociera do komputera. Gdy komputer nadaje wszystko jest w porządku. Poszczególne kontrolery mogą porozumiewać się tylko z komputerem.

    Z góry dziękuję
  • #3
    wd40
    Level 21  
    RS232 nie obsługuje kilku nadajników.
    Spróbuj użyć protokołu RS485.
    Procesory PIC Microchipa obsługują jeszcze protokół LIN identyczny z RS232 ale z wieloma nadajnikami (może tam znajdziesz rozwiązanie?)
  • #5
    decompiled
    Level 10  
    Myślałem o sprzętowym przerywaniu sygnału gdy transmisja dotyczy innego układu ale nie wiem jak to najprościej zrobić.
  • #7
    wd40
    Level 21  
    RS485 jest oczywiście standardem a nie protokołem.

    Nie zmienia to jednak faktu, że na każdej linii danych RS232 może być tylko jeden nadajnik, czyli ew. zwiększenie liczby nadajników wiązałoby się z izolacją galwaniczną pozostałych na czas transmisji. Reasumując do zastosowania opisanego przez założyciela wątku RS232 raczej się nie nadaje. Stosując go do pracy z kilkoma nadajnikami narazić się można nie tylko na problemy natury logicznej ale nawet elektrycznej.

    Balu przeczytaj sobie specyfikację RS232.

    decompiled wrote:
    Myślałem o sprzętowym przerywaniu sygnału gdy transmisja dotyczy innego układu ale nie wiem jak to najprościej zrobić.


    Najprościej: główny (MASTER) nadajnik (ten w komputerze) odpytuje po kolei mikrokontrolery czy mają coś do nadania. W jednej chwili nadawać może więc tylko jeden z mikrokontrolerów nazywanych SLAVE.
  • #9
    wd40
    Level 21  
    Freddie Chopin wrote:
    co nic nie zmieni, bo na RS-232 FIZYCZNIE nie jest mozliwe nadawanie jakiegokolwiek urzadzenia jesli na tej samej linii jest wiecej nadajnikow... to musi byc zupelnie inaczej rozwiazane ukladowo. kropka.

    4\/3!!


    Rozwiązanie elektryczne jest proste: "podciągasz" do stanu nieaktywnego wejście odbiornika w komputerze przez bardzo dużą oporność - min 10k. A jako drivery/bufory przy mikrokontrolerach nie stosuje się std MAXy tylko takie ze strobem. Nadajniki w mikrokontrolerach i bufory są standardowo wyłączone, włączane są strobem i nadają tylko po uzyskaniu zezwolenia MASTERA.
    Transmisja jest wolniejsza niż pozwala na to standard i radykalnie zmniejsza się zasięg takiej sieci ale nie występują kolizje.
    Rpzwiązanie takie działa ale ze względu na łamanie standardu RS232 nie polecam autorowi wątka.
    Można oczywiście próbować pętli prądowej, 1 wire, i2c i innych krótkozasięgowych rozwiązań, ale najlepsze rozwiązanie to RS485. Zresztą cały przemysł na tym chodzi, więc poco wyważać drzwi?
  • #10
    Dar.El
    Level 40  
    Witam
    Można wyłączyć nadawanie w atmedze i pin ten skonfigurować jako wejście, nie będzie wtedy przeszkadzać. Po odebraniu własnego adresu uP włącza nadawanie a na koniec z powrotem musi wyłączyć. Można to zrobić bez dodatkowych elementów.
  • #11
    decompiled
    Level 10  
    Skoro na każdej lini może być tylko jeden nadajnik to pozostałe można na czas transmisji odłączyć.
    Z tego co sprawdziłem to odbiorników może być kilka.
    Według mnie wystarczy odłączyć niepotrzebne w danej chwili nadajniki i tu mam problem, bo na elektronice słabo się znam a przekaźnik to raczej kiepskie rozwiązanie.
  • #12
    Dar.El
    Level 40  
    Nadajnik wyłączasz programowo w środku ATMegi.
  • #13
    wd40
    Level 21  
    Za nadajnikiem Atmegi to jest bufor/driver konwertujący z poziomu napięć mikrokontrolera do poziomu napięć RS232 i tu jest problem bo standardowych układów nie da się odłączyć.

    Przekaźniki nie nadają się głównie z powodu drgań styków.
    Natomiast zdadzą egzamin układy MAX 225, 245-249. Jednak biorąc pod uwagę ich cenę, taniej będzie przejść na RS485.
  • #14
    decompiled
    Level 10  
    A jak wyłączyć programowo nadajnik w atmedze w bascomie??
  • #15
    atom1477
    Level 43  
    W ATMega8 to:

    Code:

    UCSRB.3 = 0              'TX OFF
    DDRD.1 = 0                'TXD = Hi-Z


    Code:

    UCSRB.3 = 1              'TX ON
    DDRD.1 = 1                'TXD = Output


    Ale nic Ci to nie da jak potem jest MAX232. Musiał byś wtedy wyłączać całego MAXa.

    Dodano po 12 [minuty]:

    Ja ostatecznie za MAXem na wyjściu każdego nadajnika dał bym szeregowo diody 1N4148.
    A przy odbiorniku rezystor ściągający do -10V (do nóżki nr. 6 MAX232. Czyli rezystor od nóżki nr. 8 do 6 (albo od 13 do 6)).
    Wtedy nadajniki nie kłóciły by się ze sobą. Oczywiście nadawanie kilku nadajników na raz spowoduje kolizję danych. Ale przynajmniej z elektrycznego punktu widzenia nic złego sie nie stanie (nie będzie zwarcia).

    Jak dane podzielisz na ramki i dodasz CRC to powinno być ok. Takie rozwiązanie wcale nie jest złe ale skoro istnieje RS485 to może trzeba się zastanowić.
  • #16
    Dar.El
    Level 40  
    Na początku topicu jest pytanie:
    Quote:
    Potrzebuję podpiąć do jednego portu rs232 kilka µc.

    Nie ma tu nic o podpinaniu kilku RS232 do 1 portu w PC.
  • #17
    atom1477
    Level 43  
    Ale żeby uP żeby dał się podpiąć do RS232 wymaga MAX232 albo czegoś podobnego. Czyli de-facto jest to podpinanie jednego RS232 z kompa do kilku innych RS-ów232.

    Ewentualnie jeden MAX232 i podział dopiero teraz, czyli już na liniach TTL. Wtedy wyłączanie TX-a w AVRze wystarczy.
  • #19
    asembler
    Level 32  
    freedii chopin mowi ze sie nie da mimo ze zrobilem kilkanoascie takich instalacji w Polsce , więc chyba sie nie da.
  • #21
    wd40
    Level 21  
    Pętla prądowa to pętla prądowa a RS232 to RS232.
    Zupełnie inna zasada transmisji i niemożliwość pracy w Full Duplexie.
    Też popełniłem sporo instalacji z pętlą i niestety muszę stwierdzić, że pomimo bardzo dużej ilości zalet ma zasadnicze dwie wady - bardzo utrudnioną diagnostykę i podatność na uszkodzenia, które roawalają całą sieć.
  • #22
    atom1477
    Level 43  
    A co ma pętlą prądowa do FullDuplexu?
  • #23
    wd40
    Level 21  
    Na RS-ie odbiornik i nadajnik mogą pracować jednocześnie. W pętli końcówka albo nadaje albo odbiera.
  • #24
    atom1477
    Level 43  
    No i?

    W RS232 są dwie pary nadajnik-odbiornik. Jaki problem pętlę prądową zrobić tak samo?

    W dodatku końcówka która może pracować zarówno jako nadajnik i odbiornik to jakaś dziwna końcóka, pierwsze o takiej słyszę.
    Słyszałem za to o osobnych nadajnikach i odbiornikach. Wstawiamy więc:
    Nadajnik --> Odbiornik
    Odbiornik <-- Nadajnik

    I mamy FUllDuplex.
  • #26
    atom1477
    Level 43  
    A no widzicie.
    Czyli jednak da się.
    Nikt nie mówił że będzie bezprzewodowo.

    WD40: mylisz pojęcia. Pętla prądowa to tylko taki bajer pozwalający przesłać informację prądowo a nie napięciowo. To zupełnie inna sprawa i nie wykluczająca FullDuplexu.

    Ale i to da się zrobić na dwóch kablach. Trzeba tylko coś jak układ antylokalny w telefonach. Ale to też trochę kombinowanie. Jakieś wzmacniacze operacyjne by się przydały.

    Najlepiej będzie jak decompiled wyjaśni gdzie ma być rozdział jednego sygnału do kilka procesorów (gdzie połączenie sygnałów z kilku procesorów w jeden sygnał). Na linii RS232 (+/-15V) czy na TTL?
  • #27
    wd40
    Level 21  
    Atom1477 a nie słyszałeś o pętli prądowej CLO?
    - pozwala na 2 liniach (używa tylko 2 żył) łączyć kilka końcówek nadawczo-odbiorczych, kosztem duplexu, zasilania i konieczności stosowania końcówek z "inteligencją" (raczej do pracy muszą mieć jakiś procek w sobie).

    Po drugie: pętla prądowa to nie taki bajer, bo pozwala zasilić końcówkę, a ponadto izoluje urządzenia i jest mniej czuła na zakłócenia - wystarczy porównać zasięgi.
    Po trzecie: W klasycznej pętli 4-20mA do duplexu potrzeba 4 przewodów, czyli o 33% więcej niż w RS232.

    Podejrzewam, że zastosowanie pętli CL 4-20mA tylko skomplikowałoby projetk autora wątku.

    Wątek już dosyć bardzo odbiegł od tematu. Niech autor napisze dokładnie co już ma i co chciałby mieć. (a pewnie i tak wyjdzie, że będzie musiał stosować rs485 :) )
  • #28
    atom1477
    Level 43  
    wd40 wrote:
    Atom1477 a nie słyszałeś o pętli prądowej CLO?
    - pozwala na 2 liniach (używa tylko 2 żył) łączyć kilka końcówek nadawczo-odbiorczych, kosztem duplexu, zasilania i konieczności stosowania końcówek z "inteligencją" (raczej do pracy muszą mieć jakiś procek w sobie).

    Nie słyszałem. Nikt nie mówi że chodzi o pętlę CLO. Jeżeli o nią to tak, ale istnieją i inne pętle więc FullDuplex jest jak najbardziej możliwy.

    wd40 wrote:

    Po drugie: pętla prądowa to nie taki bajer, bo pozwala zasilić końcówkę, a ponadto izoluje urządzenia i jest mniej czuła na zakłócenia - wystarczy porównać zasięgi.

    Skoro ma i inne zalety to tym bardziej to jest bajer.


    wd40 wrote:

    Po trzecie: W klasycznej pętli 4-20mA do duplexu potrzeba 4 przewodów, czyli o 33% więcej niż w RS232.

    Podejrzewam, że zastosowanie pętli CL 4-20mA tylko skomplikowałoby projetk autora wątku.

    Nie mówię że będzie bezprzewodowo. Chodziło mi tylko o nieścisłość z FullDuplexem.

    wd40 wrote:

    Wątek już dosyć bardzo odbiegł od tematu. Niech autor napisze dokładnie co już ma i co chciałby mieć. (a pewnie i tak wyjdzie, że będzie musiał stosować rs485 :) )


    Z tym akurat się zgadzam i też czekam na jego odpowiedz.
  • #29
    riddyk
    Level 20  
    Witam,

    aktualnie wykonałem połączenie 2 atmeg8A i PC na ft232rl, za pomocą równoległego rs232 w TTL.
    Program działa w ten sposób, że PC odpytuje każdą z nich i jeśli uC ma coś do powiedzenie to mówi w tym czasie.
    Połączenie wymaga aby atmegi które nie jest odpytywana miała zablokowane nadawanie.
    Dodatkowo wymagane jest aby w linię TX wpiąć przy każdym uC mały rezystor, ja dałem 47Om.

    Docelowo będę chciał podłączyć 26 Atmeg8A równolegle do RS232.

    Na tym temat powinien zostać rozwiązany.
  • #30
    atom1477
    Level 43  
    Po co ten rezystor?
    I tam musisz przełączać piny TXD w stan Hi-Z żeby nie zakłócały transmisji z innego pinu TXD (tego jednego aktywnego).