Страница 1 из 1
Непонятное поведение обмена между COM портами
Добавлено: Ср фев 25, 2015 21:17:17
paskal
Происходят странные вещи при соединении через 2 COM порта между протеусом и моей программой на одном компьютере. Но проблема не в протеусе и не в программе, потому что при использовании обычной терминалки происходит то же самое.
Итак, что происходит при проверке терминалкой.
В компьютере есть физический порт (COM1), а другой я имею через самодельный переходник USB-COM на FT232BL. Запускаю 2 раза терминалку и открываю эти порты в каждой соответственно. Далее соединяю эти порты крест накрест (RX-TX,TX-RX,GND-GND). Отправляю посылку с первого порта на второй - ничего не принимается. И в обратную сторону тоже. Как будто нет соединения. Ладно. Отключаю кабель и перемыкаю каждый порт на самого себя. Т.е. соединяю RX и TX на каждом. Отправляю из тех же терминалок посылки - эхо нормально приходит. Восстанавливаю соединение кабелем между портами в обратный зад. Теперь все работает. Между терминалками нормально происходит обмен. Выхожу из терминалок, запускаю протеус и свою программу - они тоже работают (не совсем правда, но ладно мне бы с первой проблемой разобраться)
Описанный процесс танцев с бубном повторялся стабильно и неоднократно, поэтому версия с плохим контактом отвергается. Проблема похоже софтовая.
Система WinXP, терминалка - Bray Terminal.
Re: Непонятное поведение обмена между COM портами
Добавлено: Чт фев 26, 2015 09:00:14
khomych
я надеюсь со стороны СОМ1 стоит микруха типа МАХ232 или подобная для преобразования уровней RS232 to TTL?
и второе. была точно такаяже проблема. я грешу на FT232BL. интересно, что другая преобразователь на FT232RL. также отлично работали "телефонные ЮСБ шнурки" на преобразователях серии PL**** и CP****. такое чевство, что FT232BL толи бракованная, толи перегрел при пайке. как будто FT232BL работает на другой скорости. когда игрался с разными скоростями в терминалках то при разнице скорости в несколько раз некая информация передавалась, но всегда была с ошибками. хотел посмотреть что там шлет FT232BL осциллографом, но забил на это ((
Re: Непонятное поведение обмена между COM портами
Добавлено: Вт мар 03, 2015 19:16:07
paskal
МАХ232 там конечно стоит. Но сегодня удалось посмотреть все это осциллографом.
Сразу нашлась причина. Емкостные насосы не работают - на выходах вместо меандра постоянка, а сама МАХ232 изрядно греется.
Нашел из за чего МАХ не заводится. Я сначала соединял COM порты, потом втыкал переходник в USB. При этом получается (до того как воткнул USB) что на вход не запитанного МАХ232 поступает минусовое напяжение с COM порта компьютера.
Если отсоединить только один этот провод, запитать переходник, потом соединить, то все работает ОК.
Но это же не совсем удобно. Поэтому вопрос: как бороться? Может последовательно резистор поставить?
И еще. У меня емкости на насосе 10 мкФ, по даташиту значительно меньше. Может в этом причина?
Re: Непонятное поведение обмена между COM портами
Добавлено: Чт мар 05, 2015 10:41:01
BOB51
Возможно стандартная причина - в большинстве современных материнок стоят формирователи с Z-состоянием выхода в режиме простоя (энергосбережение аппаратно/программно увязанное).
У "простых" 232-х такого режима нет.
Соответственно может возникнуть "ступор" при паузах во время обмена...
Лечение или софтовое (копать программы) или аппаратное - соорудить повторитель на стандартной 232-й на стороне прота ПК.

Re: Непонятное поведение обмена между COM портами
Добавлено: Пт мар 06, 2015 13:32:16
Alexeyslav
В бытовых целях применять MAX232 смысла нет. Проще использовать обычные инверторы и ограничивать напряжение на их входе резисторами. современный СОM-порт нормально принимает TTL-уровни, ему достаточно только проинвертировать сигнал. Монстры, которым нужны -12В для лог.1 давно в прошлом, современные порты работают фактически в диапазоне входных напряжений 0..12В с порогом логических уровней около 3В, а -12В оставлено для совместимости с возможным старым оборудованием.
Для этих целей запросто можно использовать м/с 555ЛН2, или 561ЛН2 если не нужны мегабитные скорости.
Re: Непонятное поведение обмена между COM портами
Добавлено: Пт мар 06, 2015 17:57:26
BOB51
Не получится попроще - потребуется программно подрабатывать.
А у 232-х особенность запоминать предыдущее входное состояние. Да и куда проще - два разъёма, хвостик на разъём USB по +5 вольтей кормежки и собственно ST232 с конденсаторами обвязки. В результате повторитель каналов RX и TX.
Речь там не об уровне сигнала, а о его полной блокировке с переходом в Z-состояние.
(Когда-то весьма пакостная проблема с работой фискальных регистраторов от "экспотрейда" на укртелекоме - проги старые, а материнки на компах пошли новые с этим "особым состоянием" ).

Re: Непонятное поведение обмена между COM портами
Добавлено: Пт мар 06, 2015 22:02:59
Alexeyslav
Чего там программно подрабатывать? MAX232 всего лишь согласует уровни. нынче достаточно их просто инвертировать и ограничить напряжение.
MAX232 нужна там где нужно соответствие спецификациям RS-232 интерфейса.
Re: Непонятное поведение обмена между COM портами
Добавлено: Пт мар 06, 2015 22:20:36
Goodefine
paskal писал(а):и при соединении через 2 COM порта между протеусом и моей программой на одном компьютере.
Для этого, вообще, не нужно физических портов, достаточно виртуального коннектора из
VSPE. Все работает, проверено.
Re: Непонятное поведение обмена между COM портами
Добавлено: Сб мар 07, 2015 13:00:06
paskal
Alexeyslav писал(а):В бытовых целях применять MAX232 смысла нет. Проще использовать обычные инверторы и ограничивать напряжение на их входе резисторами.
Совсем не проще. Да, современные порты срабатывают от ТТЛ уровней. Но на передачу они по-прежнему выдают +/-9 вольт. На вход цифровой логики это нельзя подавать однозначно. Резисторы тоже не выход. Потому что есть порты где выход 0/+5. Тогда от одних ком портов принимать будет, от других нет. А у меня еще питание 3 или 5 вольт переключается перемычкой. Короче с инверторами такой огород городить придется... лучше проверенный max232.
Re: Непонятное поведение обмена между COM портами
Добавлено: Сб мар 07, 2015 13:04:48
paskal
Goodefine писал(а):paskal писал(а):и при соединении через 2 COM порта между протеусом и моей программой на одном компьютере.
Для этого, вообще, не нужно физических портов, достаточно виртуального коннектора из
VSPE. Все работает, проверено.
А вот это интересная вещь! Я сам о такой думал, но не знал что это есть.
Жаль только что она платная на 64 бит.
Re: Непонятное поведение обмена между COM портами
Добавлено: Сб мар 07, 2015 13:05:19
Alexeyslav
Стабилитроном на 3.3В вход защищается. Этого хватает чтобы напряджение на входе оставалось выше уровня срабатывания и 3.3В и 5В логики. Хотя для 3.3В логики лучше стабилитрон на 2.7В.
Или вообще инвертор сделать на транзисторе, тогда пофиг на входное напряжение.
В принципе даже этого не нужно - можно обойтись ограничивающим резистором и защитными диодами микросхем, при условии что схема в целом потребляет больше 10мА иначе она полностью может запитаться от входного сигнала.
Re: Непонятное поведение обмена между COM портами
Добавлено: Сб мар 07, 2015 19:17:18
Goodefine
paskal писал(а):
Жаль только что она платная на 64 бит.
Как бы платная. При запуске скромно напоминает что для 64-ки требуются подписанные дрова, и
просит дать денег. Но если не идти на поводу и сказать свое железное нет в диалоговом окне, то запускается и работает как ни в чем не бывало. Т.е. плата исключительно на совести пользователя.
Re: Непонятное поведение обмена между COM портами
Добавлено: Сб мар 07, 2015 22:22:50
Alexeyslav
А com0com не пойдет? Бесплатное. В комплекте есть софт для проброски порта даже по сети.
Re: Непонятное поведение обмена между COM портами
Добавлено: Вс мар 08, 2015 09:24:06
Goodefine
Alexeyslav писал(а):А com0com не пойдет?
Для х64 системы, драйвер у них есть, но не подписанный, потому для работы нужно будет загружаться в тестовом режиме.
Re: Непонятное поведение обмена между COM портами
Добавлено: Вс мар 08, 2015 11:15:23
Alexeyslav
Для 7x64
есть решение, правда для 8x64 способ уже не проходит но тоже возможно.