eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronika › RS232, zmiana poziomów napięć
Ilość wypowiedzi w tym wątku: 9

  • 1. Data: 2010-04-01 17:27:08
    Temat: RS232, zmiana poziomów napięć
    Od: TM <t...@e...pl_I_HATE_SPAM>

    Witam,

    Problem mój dotyczy przemysłowego monitora dotykowego z interfejsem
    RS232. Monitor ten przy dotknięciu powłoki dotykowej wysyła przez RS232
    ciąg bajtów. Komunikuje się on bez problemów z komputerem PC
    posiadającym fizyczny port RS232 (wysyłane bajty są odbierane z portu
    RS232 PC np. przy pomocy HyperTerminala), natomiast nie chce
    współpracować z innymi urządzeniami, tj.:
    - sterownikiem Beckhoff CX9001 z modułem CX9000-N030 z dwoma portami
    RS232 (na współpracy monitora z tym urządzeniem najbardziej mi zależy),
    - komputerem PC przez konwertery RS232<->RS485 ADAM 4520 (testowałem
    konfigurację: monitor [RS232] -> ADAM1 <-[RS485]-> ADAM2 -> PC[RS232], w
    której monitor nie komunikował się z PC - aby wykluczyć problemy z
    konwerterami, podłączyłem w miejsce monitora drugi port RS232 PC,
    komunikacja między portami - przesyłanie znaków przez HyperTerminal -
    działała poprawnie).

    Wykluczyłem możliwość uszkodzenia portów RS232 w/w urządzeń (te w module
    CX900-N030 były testowane z czytnikiem kodów kreskowych, także
    komunikacja między komputerem PC a sterownikiem Beckhoffa, przy
    połączeniu kablem nullmodem działała poprawnie - przez HyperTerminal
    były odbierane/wysyłane znaki). Także parametry transmisji były we
    wszystkich opisanych przypadkach identyczne (9600 b/s, 8 bitów danych, 1
    bit stopu, brak sterowania przepływem - zgodnie z instrukcją monitora).

    W związku z powyższym, nie doszukując się żadnych programowych przyczyn
    problemów, postanowiłem zbadać poziomy napięć generowane przez interfejs
    RS232 monitora w trakcie przesyłania danych.
    Poniżej zamieszczam link do oscylogramu napięcia na pinie Tx interfejsu
    RS232 monitora w trakcie transmisji (dotknięcia powłoki dotykowej).
    Napięcie logicznej "1": -7V, logicznego "0": 6.8V, więc niby mieszczą
    się w specyfikacji RS232.
    http://kni.prz.edu.pl/~tom/rs232/monitor_levels.jpg

    Dla porównania zbadałem napięcie na nóżce Tx portu RS232 PC (z którym
    wspomniany powyżej sterownik Beckhoffa bez problemów komunikuje się) w
    trakcie transmisji znaków - napięcie logicznej "1": -10.8V, logicznego
    "0": 11.4V.
    Jest to o 3.8V mniej dla logicznej "1" i o 4.6V więcej dla logicznego
    "0" niż w monitorze!
    http://kni.prz.edu.pl/~tom/rs232/pc_levels.jpg


    Na podstawie tych testów doszedłem do wniosku, iż powodem kłopotów może
    być brak tolerancji RS232 w CX9001-N030 oraz w konwerterze ADAM na
    niższe (chociaż mieszczące się w specyfikacji RS232) poziomy napięć.
    Postanowiłem zatem dopasować poziomy napięć generowanych przez RS232
    monitora do górnych granic określonych w standardzie RS232, gdyż .

    Moim pierwszym pomysłem było użycie układu MAX232A:
    monitor [RS232] -> MAX232A [RS232->TTL->RS232] -> PC [RS232].
    W tym celu podłączyłem sygnał z pinu Tx monitora do pinu R1_IN MAX232,
    zmostkowałem piny R1_OUT i T1_IN, wyjście na pinie T1_OUT.
    Napięcie logicznej "1" zostało w takim układzie obniżone do -15.6V,
    natomiast problem pojawił się z napieciem logicznego "0" - przy
    rozpoczęciu nadawania "0", występuje krótka "szpilka" napięcia 14V, po
    czym napięcie spada do poziomu -2V, a monitor nadal nie współpracuje z
    "problematycznymi" urządzeniami :-( MAX232A jest wyposażony, zgodnie z
    datasheetem, w kondensatory 0.1uF (tantalowe), zasilany 5V.
    Poniżej zamieszczam oscylogram napięcia na nóżce T1_OUT w trakcie
    transmisji z monitora.
    http://kni.prz.edu.pl/~tom/rs232/max232_monitor_leve
    ls.jpg


    Chciałbym zatem zapytać, w jaki sposób dokonać w opisanej sytuacji
    zmiany poziomów napięć generowanych przez interfejs RS232 monitora (bez
    ingerencji wewnątrz monitora - raczej w postaci układu pośredniczącego
    między monitorem a urządzeniem "klientem"), aby mieściły się w górnej
    granicy specyfikacji RS232?
    Czy jest to w ogóle możliwe do osiągnięcia?
    Czy powinienem dodać coś do opisanego MAX232A/zmienić parametry
    kondensatorów, aby generowane dla logicznego "0" napięcie znajdowało się
    na poziomie początkowej "szpilki"?
    Może należałoby zastosować jakiś inny układ (jaki)?


    Z góry dziękuję za wszelkie odpowiedzi i pozdrawiam,

    --
    Tomek


  • 2. Data: 2010-04-01 18:13:37
    Temat: Re: RS232, zmiana poziomów napięć
    Od: "entroper" <e...@C...spamerom.p0czta.on3t.pll>

    Użytkownik "TM" <t...@e...pl_I_HATE_SPAM> napisał w wiadomości
    news:hp2l19$f4$1@news.dialog.net.pl...

    > W związku z powyższym, nie doszukując się żadnych programowych przyczyn
    > problemów

    Raczej jednak szukaj przyczyn programowych, napięcia są OK, nie ma sensu
    ich zwiększać. Port w PC-cie jest bardzo tolerancyjny, zdarza się, że ma
    jeden próg przełączania w okolicach 1V z niewielką histerezą.
    Stawiam na to, że jednak jest jakieś sterowanie przepływem (które
    konwerter na RS485 potrafi dodatkowo zkaszanić) albo gdzieś Ci się zrobił
    niepożądany przeplot. BTW, kiedy został zrobiony ten oscylogram? W czasie
    bezpośredniego połączenia do PC? Jeśli tak, sprawdź co się dzieje na Tx
    wtedy, gdy transmisja nie działa.

    e.


  • 3. Data: 2010-04-01 18:56:48
    Temat: Re: RS232, zmiana poziomów napięć
    Od: TM <t...@e...pl_I_HATE_SPAM>

    entroper wrote:
    > Raczej jednak szukaj przyczyn programowych, napięcia są OK, nie ma sensu
    > ich zwiększać. Port w PC-cie jest bardzo tolerancyjny, zdarza się, że ma
    > jeden próg przełączania w okolicach 1V z niewielką histerezą.
    Zgadzam się, jednak tolerancja portu we wspomnianym przez mnie
    sterowniku przemysłowym Beckhoffa (czy też w konwerterze ADAM) już może
    chyba nie być tak duża jak w PC?

    Swego czasu miałem wypożyczony pewien czytnik kodów kreskowych z RS232,
    który nie chciał współpracować z w/w Beckhoffem, natomiast PC już
    odbierał z tego czytnika dane (niestety było to już ponad rok temu i nie
    przyszło mi wtedy do głowy, żeby badać napięcia na linii Tx
    problematycznego czytnika - został on po prostu wymieniony na inny
    model, komunikujący się poprawnie z Beckhoffem).

    > Stawiam na to, że jednak jest jakieś sterowanie przepływem (które
    > konwerter na RS485 potrafi dodatkowo zkaszanić) albo gdzieś Ci się zrobił
    > niepożądany przeplot.
    Po stronie monitora nie ma raczej (według producenta) zaimplementowanego
    sterowania przepływem. Na wszelki wypadek zwarłem jednak we wtyczkach
    DE-9 kabla połączeniowego piny 7 z 8 oraz 1 z 4 i 6 - nic to nie zmieniło.

    > BTW, kiedy został zrobiony ten oscylogram? W czasie
    > bezpośredniego połączenia do PC? Jeśli tak, sprawdź co się dzieje na Tx
    > wtedy, gdy transmisja nie działa.
    >
    Rozumiem, że masz na myśli oscylogram napięcia na linii Tx interfejsu
    RS232 monitora? Jeżeli tak, został on zrobiony bez podłączenia monitora
    do PC. Poniżej zamieszczam oscylogram tego napięcia przy braku transmisji.
    http://kni.prz.edu.pl/~tom/rs232/monitor_idle.jpg


    > e.
    >
    Dzięki za odpowiedź i pozdrawiam,

    --
    Tomek


  • 4. Data: 2010-04-01 19:10:19
    Temat: Re: RS232, zmiana poziomów napięć
    Od: Mario <m...@p...onet.pl>

    W dniu 2010-04-01 19:27, TM pisze:
    > Witam,
    >
    > Problem mój dotyczy przemysłowego monitora dotykowego z interfejsem
    > RS232. Monitor ten przy dotknięciu powłoki dotykowej wysyła przez RS232
    > ciąg bajtów. Komunikuje się on bez problemów z komputerem PC
    > posiadającym fizyczny port RS232 (wysyłane bajty są odbierane z portu
    > RS232 PC np. przy pomocy HyperTerminala), natomiast nie chce
    > współpracować z innymi urządzeniami, tj.:
    > - sterownikiem Beckhoff CX9001 z modułem CX9000-N030 z dwoma portami
    > RS232 (na współpracy monitora z tym urządzeniem najbardziej mi zależy),
    > - komputerem PC przez konwertery RS232<->RS485 ADAM 4520 (testowałem
    > konfigurację: monitor [RS232] -> ADAM1 <-[RS485]-> ADAM2 -> PC[RS232], w
    > której monitor nie komunikował się z PC - aby wykluczyć problemy z
    > konwerterami, podłączyłem w miejsce monitora drugi port RS232 PC,
    > komunikacja między portami - przesyłanie znaków przez HyperTerminal -
    > działała poprawnie).


    > Moim pierwszym pomysłem było użycie układu MAX232A:
    > monitor [RS232] -> MAX232A [RS232->TTL->RS232] -> PC [RS232].
    > W tym celu podłączyłem sygnał z pinu Tx monitora do pinu R1_IN MAX232,
    > zmostkowałem piny R1_OUT i T1_IN, wyjście na pinie T1_OUT.
    > Napięcie logicznej "1" zostało w takim układzie obniżone do -15.6V,
    > natomiast problem pojawił się z napieciem logicznego "0" - przy
    > rozpoczęciu nadawania "0", występuje krótka "szpilka" napięcia 14V, po
    > czym napięcie spada do poziomu -2V, a monitor nadal nie współpracuje z
    > "problematycznymi" urządzeniami :-( MAX232A jest wyposażony, zgodnie z
    > datasheetem, w kondensatory 0.1uF (tantalowe), zasilany 5V.
    > Poniżej zamieszczam oscylogram napięcia na nóżce T1_OUT w trakcie
    > transmisji z monitora.
    > http://kni.prz.edu.pl/~tom/rs232/max232_monitor_leve
    ls.jpg

    Coś masz źle połączone bo fizycznie nie może być -15V gdy MAX232 jest
    zasilany z +5V. W układzie jest podwajacz oparty na pompie ładunkowej.
    Powinno byc blisko dziesięciu woltów. Sprawdź czy dobrze połączyłeś
    kondensatory. Ponadto może urządzenia mają masy na różnych potencjałach.
    Zmień także kondensatory ze 100nF na 1uF a nawet 4,7uF. Zwiększy to
    wydajność podwajacza w sytuacji gdy np. wejście Rx sterownika bierze za
    dużo prądu ( na przykład z powodu uszkodzenia).
    Problem z napięciami jest tu chyba jednak problemem tworzonym przez
    Ciebie przez błędnie skonstruowany konwerter napięć.

    >
    > Chciałbym zatem zapytać, w jaki sposób dokonać w opisanej sytuacji
    > zmiany poziomów napięć generowanych przez interfejs RS232 monitora (bez
    > ingerencji wewnątrz monitora - raczej w postaci układu pośredniczącego
    > między monitorem a urządzeniem "klientem"), aby mieściły się w górnej
    > granicy specyfikacji RS232?
    > Czy jest to w ogóle możliwe do osiągnięcia?
    > Czy powinienem dodać coś do opisanego MAX232A/zmienić parametry
    > kondensatorów, aby generowane dla logicznego "0" napięcie znajdowało się
    > na poziomie początkowej "szpilki"?
    > Może należałoby zastosować jakiś inny układ (jaki)?

    Jednak problem dotyczy chyba protokołu. Spróbuj wysłać łańcuch z panela
    na Hyperterminal i zapisać go a potem odesłać z peceta do PLC. Ponadto
    możesz podsłuchiwać oba kierunki transmisji Panel<->PLC dopinając się
    do nich liniami Rx z dwóch portów RS w PC i oglądać na terminalu czy PLC
    odpowiada jakimkolwiek znakiem.



    --
    Pozdrawiam
    MD


  • 5. Data: 2010-04-01 20:15:41
    Temat: Re: RS232, zmiana poziomów napięć
    Od: TM <t...@e...pl_I_HATE_SPAM>

    Mario wrote:
    > Coś masz źle połączone bo fizycznie nie może być -15V gdy MAX232 jest
    > zasilany z +5V. W układzie jest podwajacz oparty na pompie ładunkowej.
    > Powinno byc blisko dziesięciu woltów. Sprawdź czy dobrze połączyłeś
    > kondensatory. Ponadto może urządzenia mają masy na różnych potencjałach.
    > Zmień także kondensatory ze 100nF na 1uF a nawet 4,7uF. Zwiększy to
    > wydajność podwajacza w sytuacji gdy np. wejście Rx sterownika bierze za
    > dużo prądu ( na przykład z powodu uszkodzenia).
    > Problem z napięciami jest tu chyba jednak problemem tworzonym przez
    > Ciebie przez błędnie skonstruowany konwerter napięć.
    >
    Rzeczywiście, masy MAX232A i monitora były na różnych potencjałach. Po
    ich połączeniu, poziomy napięć na wyjściu MAX232A zmieniły się na +8.80V
    i -8.80V.

    Co najważniejsze, po zrównaniu potencjałów mas i podłączeniu monitora za
    pośrednictwem tego "konwertera" z MAX232A do Beckhoffa, Beckhoff zaczął
    komunikować się z monitorem - odbierać bajty wysyłane przez monitor w
    momencie dotykania warstwy dotykowej :-)

    Bardzo dziękuję za tą sugestię! Jeszcze pozostaje instalacja driverów
    monitora dla Windowsa CE i przetestowanie współpracy z systemem, ale
    samo uruchomienie komunikacji monitora z Beckhoffem to ogromny postęp :-) .

    > Jednak problem dotyczy chyba protokołu. Spróbuj wysłać łańcuch z panela
    > na Hyperterminal i zapisać go a potem odesłać z peceta do PLC. Ponadto
    > możesz podsłuchiwać oba kierunki transmisji Panel<->PLC dopinając się do
    > nich liniami Rx z dwóch portów RS w PC i oglądać na terminalu czy PLC
    > odpowiada jakimkolwiek znakiem.
    >
    To nie jest typowy panel współpracujący bezpośrednio z PLC, tylko zwykły
    monitor LCD VGA z warstwą dotykową ( konkretnie ten model:
    http://tnij.org/gdt6 ) - jest możliwa tylko jednokierunkowa komunikacja
    monitor -> urządzenie.

    Na sterowniku Beckhoffa działa Windows CE, monitor ten służy do obsługi
    aplikacji pracującej pod kontrolą tego systemu.

    --
    Tomek


  • 6. Data: 2010-04-01 20:48:58
    Temat: Re: RS232, zmiana poziomów napięć
    Od: TM <t...@e...pl_I_HATE_SPAM>

    TM wrote:
    > Co najważniejsze, po zrównaniu potencjałów mas i podłączeniu monitora za
    > pośrednictwem tego "konwertera" z MAX232A do Beckhoffa, Beckhoff zaczął
    > komunikować się z monitorem - odbierać bajty wysyłane przez monitor w
    > momencie dotykania warstwy dotykowej :-)
    >
    > Bardzo dziękuję za tą sugestię! Jeszcze pozostaje instalacja driverów
    > monitora dla Windowsa CE i przetestowanie współpracy z systemem, ale
    > samo uruchomienie komunikacji monitora z Beckhoffem to ogromny postęp :-) .
    >
    Informuję o ostatecznych rezultatach - po instalacji drivera dla Windows
    CE, warstwa dotykowa monitora działa poprawnie we współpracy ze
    sterownikiem CX9001 Beckhoffa.

    Jeszcze raz bardzo dziękuję za wszystkie odpowiedzi, szczególnie koledze
    'Mario', gdyż to dzięki jego sugestii odnośnie mas układów udało mi się
    problem rozwiązać :-) .

    > To nie jest typowy panel współpracujący bezpośrednio z PLC, tylko zwykły
    > monitor LCD VGA z warstwą dotykową ( konkretnie ten model:
    > http://tnij.org/gdt6 ) - jest możliwa tylko jednokierunkowa komunikacja
    > monitor -> urządzenie.
    >
    Z tą komunikacją jednokierunkową jednak się pomyliłem - wymagane są
    obydwie linie (Tx i Rx), inaczej monitor nie jest wykrywany przez driver.

    > Na sterowniku Beckhoffa działa Windows CE, monitor ten służy do obsługi
    > aplikacji pracującej pod kontrolą tego systemu.
    >


    --
    Tomek


  • 7. Data: 2010-04-01 21:06:19
    Temat: Re: RS232, zmiana poziomów napięć
    Od: "entroper" <e...@C...spamerom.p0czta.on3t.pll>

    Użytkownik "TM" <t...@e...pl_I_HATE_SPAM> napisał w wiadomości
    news:hp2q9c$3eg$1@news.dialog.net.pl...

    > Zgadzam się, jednak tolerancja portu we wspomnianym przez mnie
    > sterowniku przemysłowym Beckhoffa (czy też w konwerterze ADAM) już może
    > chyba nie być tak duża jak w PC?

    Bardziej skłaniam się ku temu, że Beckhoff i ADAM mają wsadzone od wejścia
    "solidne" dociążenie 3k i napięcie mocno siada. PC-et może mieć 2x tyle
    albo w ogóle wartość z kosmosu i dlatego działa. Ale to by oznaczało, że
    port w tym panelu jakiś badziewny jest (napięcia siadają np wtedy, gdy
    użyje się MAX232 (lub odpowiednika) z za małymi kondensatorami
    podwajacza) - domyślam się, że w panelu wolisz jednak nie grzebać :).

    > > BTW, kiedy został zrobiony ten oscylogram? W czasie
    > > bezpośredniego połączenia do PC? Jeśli tak, sprawdź co się dzieje na
    Tx
    > > wtedy, gdy transmisja nie działa.
    > >
    > Rozumiem, że masz na myśli oscylogram napięcia na linii Tx interfejsu
    > RS232 monitora? Jeżeli tak, został on zrobiony bez podłączenia monitora
    > do PC. Poniżej zamieszczam oscylogram tego napięcia przy braku
    transmisji.
    > http://kni.prz.edu.pl/~tom/rs232/monitor_idle.jpg

    Może źle się wyraziłem - chodziło mi o oscylogram na Tx w momencie, gdy
    panel transmituje ale dane nie są odbierane (czyli np. po podłączeniu do
    Beckhoffa) - aby sprawdzić, czy przypadkiem napięcia nie siadają za
    bardzo.

    e.


  • 8. Data: 2010-04-01 21:14:02
    Temat: Re: RS232, zmiana poziomów napięć
    Od: Mario <m...@p...onet.pl>

    W dniu 2010-04-01 22:48, TM pisze:
    > TM wrote:
    >> Co najważniejsze, po zrównaniu potencjałów mas i podłączeniu monitora za
    >> pośrednictwem tego "konwertera" z MAX232A do Beckhoffa, Beckhoff zaczął
    >> komunikować się z monitorem - odbierać bajty wysyłane przez monitor w
    >> momencie dotykania warstwy dotykowej :-)
    >>
    >> Bardzo dziękuję za tą sugestię! Jeszcze pozostaje instalacja driverów
    >> monitora dla Windowsa CE i przetestowanie współpracy z systemem, ale
    >> samo uruchomienie komunikacji monitora z Beckhoffem to ogromny postęp
    >> :-) .
    >>
    > Informuję o ostatecznych rezultatach - po instalacji drivera dla Windows
    > CE, warstwa dotykowa monitora działa poprawnie we współpracy ze
    > sterownikiem CX9001 Beckhoffa.
    >
    > Jeszcze raz bardzo dziękuję za wszystkie odpowiedzi, szczególnie koledze
    > 'Mario', gdyż to dzięki jego sugestii odnośnie mas układów udało mi się
    > problem rozwiązać :-) .

    Cieszę się, że mogłem pomóc :)


    --
    Pozdrawiam
    MD


  • 9. Data: 2010-04-01 21:39:58
    Temat: Re: RS232, zmiana poziomów napięć
    Od: Konop <k...@g...pl>

    TM pisze:

    > Problem mój dotyczy przemysłowego monitora dotykowego z interfejsem
    > RS232. Monitor ten przy dotknięciu powłoki dotykowej wysyła przez RS232
    > ciąg bajtów. Komunikuje się on bez problemów z komputerem PC
    > posiadającym fizyczny port RS232 (wysyłane bajty są odbierane z portu
    > RS232 PC np. przy pomocy HyperTerminala), natomiast nie chce
    > współpracować z innymi urządzeniami, tj.:
    > - sterownikiem Beckhoff CX9001 z modułem CX9000-N030 z dwoma portami
    > RS232 (na współpracy monitora z tym urządzeniem najbardziej mi zależy),
    > - komputerem PC przez konwertery RS232<->RS485 ADAM 4520 (testowałem
    > konfigurację: monitor [RS232] -> ADAM1 <-[RS485]-> ADAM2 -> PC[RS232], w
    > której monitor nie komunikował się z PC - aby wykluczyć problemy z
    > konwerterami, podłączyłem w miejsce monitora drugi port RS232 PC,
    > komunikacja między portami - przesyłanie znaków przez HyperTerminal -
    > działała poprawnie).

    Nie wiem, jak ten CX9001, ale w przypadku konwertera 485->232 masz
    zapewne niepełny port RS, czyli tylko Tx i Rx, prawda? Sądzę, że
    domyślnie, w PCcie na którymś pinie portu COM występuje któryś stan
    logiczny, podczas gdy w urządzeniach posiadających "niepełny" port COM
    pin ten "wisi" ALBO TEŻ domyślnie znajduje się w innym stanie...
    Pierwszy mój pomysł był taki, że monitor wymaga transmisji ze
    sterowaniem przepływem. Ale jeśli nie - może po prostu jakoś sprawdza
    któryś pin albo jest z niego zasilany (w co wątpię - zapewne o zasilaniu
    pamiętasz ;)).
    Zacząłbym kombinowanie od podłączenia do kompa poprzez jakiś
    "zredukowany" kabel (tylko Tx, Rx i masa) i zobaczymy, czy zadziała
    :)... Możesz zrobić "przedłużacz" o długości kilku cm z dwóch wtyczek i
    3 kabelków ;)... Potem można połączyć pojedynczymi kabelkami i metodą
    prób i błędów dojść do tego, które piny są niezbędne do działania...
    Szczerze wątpię w to, że w przemysłowym monitorze zastosowano układ
    interfejsu RS232, który nie jest zgodny z normą i źle interpretuje
    poprawne stany logiczne...

    --
    Pozdrawiam
    Konop

strony : [ 1 ]


Szukaj w grupach

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: