Доброго дня!
Прошу Вашей помощи и совета.
Сразу оговорюсь, что опыта работы с RS232 у меня нет, так что если буду говорить глупости - исправляйте.
Имеется:
1) Контроллер с портом RS232 на борту. Но задействованы у него только 2(Tx), 3(Rx), 5(GND) пины.
2) Мегаометр Chauvin Arnoux CA6549 с портом RS232 на борту (далее "прибор").
3) Кабель со следующей схемой -
2-3
3-2
4-6
5-5
6-4
7-8
8-7
4) Преобразователь USB-RS232 (чип FTDI).
Необходимо связать ПЛК и прибор (протокол связи известен).
С связке с кабелем из пункта 3 и преобразователем из пункта 4 ПК успешно связывается с прибором с помощью своего заводского ПО.
Попытки связать контроллер с прибором с помощью кабеля 2-2, 3-3, 5-5 успехом не увенчались.
Кабель 2-3, 3-2, 5-5 в связке с преобразователем USB-RS232 для связи с заводским ПО тоже не работает. И я начал искать необходимые прибору контакты помимо 2,3 и 5.
Оказалось, что кабеля 2-3, 3-2, 5-5 и 4-6 (пин6 со стороны прибор ) + преобразователь USB - RS232 достаточно, чтобы ПК связывался с прибором с помощью заводского ПО.
Начитался в интернетах про кабель-обманку. Перемкнул пины 4 и 6 со стороны прибора - не помогло. Замерил напряжение между пин5 и пин4 - ноль вольт, именно ноль.
Вопрос номер один - это мертвый порт у прибор или необязательно на пине4 (DTR) должно быть всегда напряжение, если прибор включен?
Если кабелем из пункта 3 либо кабелем 2-3, 3-2, 5-5 и 4-6 и преобразователем USB-RS232 подключиться к прибору через COM Port Toolkit, то можно увидеть, как прибор шлет в свой порт сообщения "11 13".
Это, как я выяснил, символы программного управления XON/XOFF.
Вопрос номер два - разве прибор должен их слать постоянно? Это нормальное поведение прибора?
Написана программа на контроллер, которая отправляет прибору команды и принимает ответы. Пример команды "RnCRLF" - это команда перехода прибора в режим REMOTE (удаленного управления). В случае успешного выполнения команды прибор отвечает "ОК".
Когда отправляю команду контроллером с помощью контроллера и кабеля 2-2, 3-3, 4-6, 5-5 наблюдаются следующие проблемы и обстоятельства:
1) Чтобы прибор выполнил команду, необходимо послать несколько команд (до 10 штук, всегда по разному) и отправлять их очень быстро (выставлять таймаут между повторными отправками не более 500 мс).
2) Даже если прибор выполняет команду (это слышно по щёлканью прибора и индикации "REMOTE" на дисплее), в ответ посылки "ОК" нет, то есть прибор просто молчит.
Проблем в программе контроллера не должно быть, потому что этот же код, если ему заменить команду и подключить другой прибор (миллиометр другого производителя), успешно справляется связью.
Вопрос номер три - думаю, что проблемы со связью с контроллером связаны с тем, что пин4 у контроллера просто не задействован в самом порту. Какие есть варианты?
Примечательно, что если отправить команду "RnCRLF" через COM Port Toolkit, то в случае успешного выполнения прибор отвечает "ОК" и перестает слать "11 13" в свой порт.
Ну и вопрос номер четыре - приму любой совет и буду благодарен за него!
Спасибо за внимание!
Мегаометр + RS232
- Реклама
- Michael_Sch
- Открыл глаза
- Сообщения: 74
- Зарегистрирован: Пт июл 12, 2013 13:53:52
- Откуда: Санкт-Петербург
Re: Мегаометр + RS232
iikiikiik
А какой контроллер?
Вообще то довольно странно. В протоколе связи по RS232 есть сигналы квитирования (RTS-CTS, DTR-DSR). Протокол XON/XOFF был введен для простейшей трехпроводной линии связи, и если приемник не успевал обработать буфер, то для предотвращения потерь данных он посылал передатчику XOFF, в ответ на что передатчик должен прекратить передачу до получения XON.
Но в мануале на мегаомметр на стр. 33 приведены распиновки кабелей для связи, и в обоих задействованы DSR-DTR и CTS, что предполагает "железячное" квитирование.
Ваш USB-RS232 преобразователь (FTDI) поддерживает такое квитирование?
Минимальный нуль-модем кабель это GND, RX и TX (перекрестно) и на обоих сторонах DSR соединен с DTR, а RTS с CTS. В вашем случае:
То есть приемник всегда готов.
В контроллере должен быть включен XON/XOFF, если это предусмотрено.
А какой контроллер?
Вообще то довольно странно. В протоколе связи по RS232 есть сигналы квитирования (RTS-CTS, DTR-DSR). Протокол XON/XOFF был введен для простейшей трехпроводной линии связи, и если приемник не успевал обработать буфер, то для предотвращения потерь данных он посылал передатчику XOFF, в ответ на что передатчик должен прекратить передачу до получения XON.
Но в мануале на мегаомметр на стр. 33 приведены распиновки кабелей для связи, и в обоих задействованы DSR-DTR и CTS, что предполагает "железячное" квитирование.
Ваш USB-RS232 преобразователь (FTDI) поддерживает такое квитирование?
Минимальный нуль-модем кабель это GND, RX и TX (перекрестно) и на обоих сторонах DSR соединен с DTR, а RTS с CTS. В вашем случае:
Код: Выделить всё
Мегаомметр Контроллер
Сигнал вывод вывод сигнал
GND 5 ------ 5 GND
RXD 2 ------ 3 TXD
TXD 3 ------ 2 RXD
DSR 6 -+ +-4 DTR
| |
DTR 4 -+ +-6 DSR
RTS 7 -+ +-8 CTS
| |
CTS 8 -+ +-7 RTS
В контроллере должен быть включен XON/XOFF, если это предусмотрено.
Зачем, зубодер распроклятый, мучительный тянешь момент?
Тебе, стоматолог, сто матов измученный шлет пациент! (с) Вадим Шефнер
Тебе, стоматолог, сто матов измученный шлет пациент! (с) Вадим Шефнер
Re: Мегаометр + RS232
Спасибо, что отозвались!
Контроллер Delta AS320P c функциональной платой AS-F232. У самой платы, если посмотреть его даташит, написано, что у него только 2,3 и 5 пин. Ну и я,прозвонив его пины, убедился, что там только эти три пина.
У переходника FTDI полноценный COM порт, и задействованы все пины.
Минимальный кабель, который оказался необходим, как я писал ранее:
2-2
3-3
4-6
5-5
Я пробовал брать на 6 пин питание с переходника FTDI (с его 4 пина подавал питание на 6ой пин мегаометра и объединял GND (5 пин)) и, подключаясь указанным выше кабелем, пытался связаться с помощью ПЛК. Успехом не увенчалось. Проблемы те же. Подозреваю из-за отсутствия программного контроля xon/xoff.
Вообщем, работу с мегаометром пишу на C# используя переходник FTDI. Включил там DTR и XON/XOFF, и всё прекрасно работает.
Контроллер Delta AS320P c функциональной платой AS-F232. У самой платы, если посмотреть его даташит, написано, что у него только 2,3 и 5 пин. Ну и я,прозвонив его пины, убедился, что там только эти три пина.
У переходника FTDI полноценный COM порт, и задействованы все пины.
Минимальный кабель, который оказался необходим, как я писал ранее:
2-2
3-3
4-6
5-5
Я пробовал брать на 6 пин питание с переходника FTDI (с его 4 пина подавал питание на 6ой пин мегаометра и объединял GND (5 пин)) и, подключаясь указанным выше кабелем, пытался связаться с помощью ПЛК. Успехом не увенчалось. Проблемы те же. Подозреваю из-за отсутствия программного контроля xon/xoff.
Вообщем, работу с мегаометром пишу на C# используя переходник FTDI. Включил там DTR и XON/XOFF, и всё прекрасно работает.
