eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.misc.elektronikaRS232, zmiana poziomów napięć › RS232, zmiana poziomów napięć
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news.dialog.net
    .pl!not-for-mail
    From: TM <t...@e...pl_I_HATE_SPAM>
    Newsgroups: pl.misc.elektronika
    Subject: RS232, zmiana poziomów napięć
    Date: Thu, 01 Apr 2010 19:27:08 +0200
    Organization: Dialog Net
    Lines: 80
    Message-ID: <hp2l19$f4$1@news.dialog.net.pl>
    NNTP-Posting-Host: dynamic-78-8-142-135.ssp.dialog.net.pl
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: news.dialog.net.pl 1270142825 484 78.8.142.135 (1 Apr 2010 17:27:05 GMT)
    X-Complaints-To: a...@d...net.pl
    NNTP-Posting-Date: Thu, 1 Apr 2010 17:27:05 +0000 (UTC)
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; pl-PL; rv:1.9.1.8)
    Gecko/20100227 Lightning/1.0b1 Thunderbird/3.0.3
    Xref: news-archive.icm.edu.pl pl.misc.elektronika:585832
    [ ukryj nagłówki ]

    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

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

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: