| Автоматика и аппаратура связи Дистанционное и непосредственное управление исполнительными механизмами, сотовая, а также радиосвязь. |
Считывание данных со счетчика через ТЧ-модем
08.07.2010, 23:45
|
|
|
Гражданин KAZUS.RUN
Регистрация: 08.07.2006
Сообщений: 883
Сказал спасибо: 119
Сказали Спасибо 1,108 раз(а) в 175 сообщении(ях)
|
Re: Считывание данных со счетчика через ТЧ-модем
Сообщение от AlekseyTelepnev
|
|
Как это сочетается с параметром модема AT&K0, отключающим контроль RTS/CTS?
|
Можно попробовать не отключать, а включать.
Но по своему опыту знаю, что большинство современных модемов не пропускают ничего, кроме Rx и Tx. А большинству конверторов RS-232/RS-485 нужны Rx, Tx и RTS.
Конвертор RS-232/RS-485 с автоопределением направления решит вашу проблему. Ну или можно самому сделать, MAX232 + MAX13487, например.
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
|
|
|
|
Сказали "Спасибо" alexgap
|
|
|
08.07.2010, 23:47
|
|
|
Частый гость
Регистрация: 13.03.2010
Сообщений: 12
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Считывание данных со счетчика через ТЧ-модем
Сообщение от alexgap
|
|
Конвертор RS-232/RS-485 с автоопределением направления решит вашу проблему. Ну или можно самому сделать, MAX232 + MAX13487, например.
|
Самодельный конвертер сделан на основе MAX232
|
|
|
|
08.07.2010, 23:51
|
|
|
Частый гость
Регистрация: 13.03.2010
Сообщений: 12
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Считывание данных со счетчика через ТЧ-модем
Смотрели осциллографом сигналы между модемом и конвертером.
Относительно GND в покое RxD "-5V", TxD - "0V".
|
|
|
|
08.07.2010, 23:58
|
|
|
Гражданин KAZUS.RUN
Регистрация: 08.07.2006
Сообщений: 883
Сказал спасибо: 119
Сказали Спасибо 1,108 раз(а) в 175 сообщении(ях)
|
Re: Считывание данных со счетчика через ТЧ-модем
Сообщение от AlekseyTelepnev
|
|
Подскажите, пожалуйста, модели таких конвертеров.
|
Вот вроде ваш МОХА А52 имеет автоопределение. Покрайней мере так написано здесь. Может надо какую-нибудь кнопочку на конверторе переключить?
Есть еще одна возможная причина неудачи. Время пинга. Сигнал через модемы распространяется за 20-200 мс. Это может нарушать обмен между счетчиком и программой, если оные делались руками растущими строго из заднего места. Но это маловероятно!
Предлагаю такой тест:
1. Подключаете RS-232 кабель к конвертору. Подключаете еще один кабель RS-232 к компьютеру. Эти два кабеля втыкаете в разьемы, которые соединены между собой тремя проводами: Rx, Tx и GND. Если связь есть, значит проблема не в RTS, зачеркиваем эту проблему. Если связи нет, то проблема в RTS -› ищите способ включить автоопределение направления в конверторе
2. Если первый пункт не подтвердился, исследуем проблему дальше
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
|
|
|
|
09.07.2010, 00:16
|
|
|
Частый гость
Регистрация: 13.03.2010
Сообщений: 12
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Считывание данных со счетчика через ТЧ-модем
Сообщение от alexgap
|
|
Есть еще одна возможная причина неудачи. Время пинга. Сигнал через модемы распространяется за 20-200 мс. Это может нарушать обмен между счетчиком и программой, если оные делались руками растущими строго из заднего места. Но это маловероятно!
|
Опрос основан на использовании функций WriteFile и ReadFile. Отправив информационную посылку, программа "засыпает" (функцией Sleep) на 3 с, после чего считывает данные из буфера. За это время в порт должно что-то прийти?
Завтра попробую подключить МОХА к компьютеру используя три линии.
Но конвертер на МАХ-232, не имея сигнала RTS, отлично работает непосредственно с компьютером...
|
|
|
|
09.07.2010, 00:30
|
|
|
Гражданин KAZUS.RUN
Регистрация: 08.07.2006
Сообщений: 883
Сказал спасибо: 119
Сказали Спасибо 1,108 раз(а) в 175 сообщении(ях)
|
Re: Считывание данных со счетчика через ТЧ-модем
Сообщение от AlekseyTelepnev
|
|
Но конвертер на МАХ-232, не имея сигнала RTS, отлично работает непосредственно с компьютером...
|
Если это так, и вы в этом на 100% уверены, то с проводами замарачиваться не стоит.
Сообщение от AlekseyTelepnev
|
|
Опрос основан на использовании функций WriteFile и ReadFile
|
А вот здесь широкое поле для деятельности. Советую скачать Visual Studio C# Express (если у вас нет уже установленного чего-нибудь новее VS 2003). И поиграться с классом SerialPort на C#, это будет намного быстрее чем в пришибленном С++.
То, что вы сказали что у вас прогамма засыпает на 3 с. намекает, что вы используете почему-то асинхронный ввод-вывод и искуственным способом пытаетесь найти момент прихода ответа от счетчика. Так не должно быть!
Используйте синхронный ввод-вывод для начала, посылайте запрос функцией Write и ждите ответа функцией Read. Таймаут для класса SerialPort можно установить порядка 5 секунд на чтение и на запись.
Кроме того, возможно модем хочет управляющего сигнала RTS, терминальные программы, кстати, его трогают.
Дерзайте. Вполне вероятно что это вы сами создали себе проблемы.
Еще можно на стороне там где счетчик отключить модем от конвертора, и подключить его к разьему, у которого соединены проводом Rx и Tx линии. В этом случае, все что вы пошлете с компьютера, должно приходить вам обратно (это режим эхо, очень полезен для проверки канала).
Ну и скорость соединения на модеме и на счетчике должна совпадать. Я уж не знаю сколько счетчику нужно, скорее всего 9600.
__________________
.

В мире всего два типа людей: те у кого был ZX Spectrum, и те у кого его не было.
Последний раз редактировалось alexgap; 09.07.2010 в 00:34.
|
|
|
|
09.07.2010, 00:48
|
|
|
Частый гость
Регистрация: 13.03.2010
Сообщений: 12
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Считывание данных со счетчика через ТЧ-модем
Сообщение от alexgap
|
|
Есть еще одна возможная причина неудачи. Время пинга. Сигнал через модемы распространяется за 20-200 мс. Это может нарушать обмен между счетчиком и программой, если оные делались руками растущими строго из заднего места. Но это маловероятно!
|
Опрос основан на использовании функций WriteFile и ReadFile. Отправив информационную посылку, программа "засыпает" (функцией Sleep) на 3 с, после чего считывает данные из буфера. За это время в порт должно что-то прийти?
Завтра попробую подключить МОХА к компьютеру используя три линии.
Но конвертер на МАХ-232, не имея сигнала RTS, отлично работает непосредственно с компьютером...
|
|
|
|
09.07.2010, 01:05
|
|
|
Частый гость
Регистрация: 13.03.2010
Сообщений: 12
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Считывание данных со счетчика через ТЧ-модем
Сообщение от alexgap
|
А вот здесь широкое поле для деятельности. Советую скачать Visual Studio C# Express (если у вас нет уже установленного чего-нибудь новее VS 2003). И поиграться с классом SerialPort на C#, это будет намного быстрее чем в пришибленном С++.
То, что вы сказали что у вас прогамма засыпает на 3 с. намекает, что вы используете почему-то асинхронный ввод-вывод и искуственным способом пытаетесь найти момент прихода ответа от счетчика. Так не должно быть!
Используйте синхронный ввод-вывод для начала, посылайте запрос функцией Write и ждите ответа функцией Read. Таймаут для класса SerialPort можно установить порядка 5 секунд на чтение и на запись.
|
Режим "ввод-вывод" в программе задается изначально при открытии порта как синхронный. Функции WriteFile и ReadFile в данном случае используются в синхронном режиме.
По-моему, большинство классов типа SerialPort являются просто "обертками" для API-функций, слегка упрощающими, а иногда и запутывающими процесс. Учитывая, что кода всего строк 10 (открытие порта, настройка DCB, установка тайм-аутов, очистка буферов приема/передачи и непосредственно запись-чтение), может стоит пользоваться оригинальными функциями. Если не трогать буфер Input после выполнения функции WriteFile, в нем должны храниться полученные байты. Их, после "пробуждения" и считываает программа...
Что касается замыкания RxD и TxD, то канал от вызывающего ПК до разъема RS-232 проверен при подключении к отвечающему модему компьютера с "гипертерминалом"... Впрочем, действительно стоит посмотреть на работу отвечающего модема "без управляющих линий"...
|
|
|
|
09.07.2010, 11:28
|
|
|
Супер-модератор
Регистрация: 03.05.2007
Сообщений: 2,693
Сказал спасибо: 28
Сказали Спасибо 4,526 раз(а) в 956 сообщении(ях)
|
Re: Считывание данных со счетчика через ТЧ-модем
Сообщение от AlekseyTelepnev
|
|
Как это сочетается с параметром модема AT&K0, отключающим контроль RTS/CTS?
|
Что-то я вчера выпал из обсуждения. Может быть и включить. И еще я бы досконально проверил и выровнял скорости и главное жестко у модемов в линию. Что то я не видел вчера, что Вы четко привязали модем к скорости обмена - сам сто раз на этом обжигался, особенно с газовыми корректорами (ИМХО счечиками) и теплосчетчиками..
|
|
|
|
09.07.2010, 23:54
|
|
|
Частый гость
Регистрация: 13.03.2010
Сообщений: 12
Сказал спасибо: 3
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Считывание данных со счетчика через ТЧ-модем
Здравствуйте!
Спасибо всем, кто нашел время для ответа.
Как и ожидалось, при соединении RxD(2) и TxD(3) отвечающего модема, программа на «вызывающем» ПК получает отправленные данные.
Канал от вызывающего ПК до разъема DB-9 отвечающего модема РАБОТАЕТ.
Модемы соединяются на скорости 9600кбит/с (CONNECT 9600) Эта скорость задавалась как при настройке порта API-функциями (настройка DCB), так и настройкой самих модемов на максимальную скорость командой ats37=9.
Подключил МОХА к компьютеру через промежуточный клеммник, на котором коммутировал сигнальные цепи, и последовательно отключал "лишние" цепи. В результате информационный обмен с МОХА осуществляется при минимальном наборе линий (в скобках пин разъема DB-9): RxD(2), TxD(3), Gnd(5),CTS(  .
При отсутствии сигнала CTS ПК ничего не отправляет в порт функцией WriteFile(отправлено 0 байт) (CTS - разрешение терминалу на отправку данных. Состояние «выкл.» запрещает ПК передачу данных).
Если замкнуть на клеммнике (в разъеме) RTS(7) CTS(  то обмен осуществляется по трем линиям: RxD(2), TxD(3), Gnd(5).
И все таки данные со счетчиков считать через модем не получалось %((…
А все потому, что необходимо было поменять на конвертере интерфейсов местами RxD и TxD (вариация на тему нуль-модемного кабеля) Пришел к этому решению, признаюсь честно, «методом тыка» (благо, был промежуточный клеммник). Теперь работает с вызывающим модемом и самодельный конвертер (поменял на его разъеме местами RxD и TxD).
Буду признателен, если кто-нибудь объяснит почему нужно было именно такое подключение..
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:18.
|
|