COM порт - посылает, но не читает

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Ответить
Аватара пользователя
resuS
assistant
assistant
Сообщения: 144
Зарегистрирован: 13 фев 2011, 20:24
Версия LabVIEW: 2010
Контактная информация:

COM порт - посылает, но не читает

Сообщение resuS »

Доброго времени суток форумчанам,

Задача: заставить датчик давления присылать значения того самого давления на компьютер . На датчике есть порт мама-RS-232. На компе RJ-45. Для конвертации одного в другой использую NetCOM 813. Схема связи такая:
350 ionization gauge controller (RS-232) — 8 port NetCOM 813 (RS-232 to RJ-45) — Computer (RJ-45).

Проблема: на любую команду датчик включает degasing, соответствующей команде "DG ON \n" (точнее включает, если был выключен и выключает, если был включен degasing). Ко всему прочему датчик не отсылает назад никаких сообщений, ни ответов на команду ни сообщений об ошибках. В чем может быть проблема?

Детали: для коммуникации использую пример из LabVIEW Basic Serial Write and Read из хелпа по VISA. Параметры COM порта выставил как указано к документации к прибору. Когда пишу команду, после запуска VI, все пробелы имеющиейся в команде заменяются на \s - это нормально?


Документация к 350 Ion Gauge controller
http://goo.gl/7XtVX
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5464
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 87 раз

Re: COM порт - посылает, но не читает

Сообщение IvanLis »

resuS писал(а):все пробелы имеющиейся в команде заменяются на \s - это нормально?
это одно и тоже, только в кодах отображение
resuS писал(а):Параметры COM порта выставил как указано к документации к прибору.
1. В документации на 41 стр. описывается установка джемперов или переключателей, проверьте все соответствует Вашим программным настройкам.
2. Установлены ли сигналы DSR, DCD в True.
3. Что Вы используете в качестве терминатора, если "\n", то неверно? На 43 стр. написано, что должно быть CR+LF, это "\r\n" . И что на команду DG ON CRLF должен придти ответ OKCRLF либо INVALIDCRLF.

По поводу DTR, RTS я в силу своей малограмотности в пане иностранных языков понял не совсем. Но судя по описанию они используются только для индикации о работе и передаче данных. Т.е. нас это мало волнует.
Аватара пользователя
resuS
assistant
assistant
Сообщения: 144
Зарегистрирован: 13 фев 2011, 20:24
Версия LabVIEW: 2010
Контактная информация:

Re: COM порт - посылает, но не читает

Сообщение resuS »

1. В документации на 41 стр. описывается установка джемперов или переключателей, проверьте все соответствует Вашим программным настройкам.
Снаружи этих джамперов не нашел. Так не хотелось вскрывать коробку контроллера, но походу придется.
2. Установлены ли сигналы DSR, DCD в True.
А как это проверить?
3. Что Вы используете в качестве терминатора, если "\n", то неверно? На 43 стр. написано, что должно быть CR+LF, это "\r\n" . И что на команду DG ON CRLF должен придти ответ OKCRLF либо INVALIDCRLF.
Пробовал и "\n" и "\r\n" - никакого ответа от контроллера нет. Это для меня самая главная загадка, почему он вместо ответа выполняет команду "DG ON".

Я тоже понял что DTR и RTS не нужны.
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5464
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 87 раз

Re: COM порт - посылает, но не читает

Сообщение IvanLis »

resuS писал(а):
2. Установлены ли сигналы DSR, DCD в True.
А как это проверить?
Они программно управляются: How Can I Control the DTR and RTS Serial Lines in LabVIEW?
resuS писал(а):Пробовал и "\n" и "\r\n" - никакого ответа от контроллера нет.
Как Вы формируете терминатор?
Потому, что судя по вопросу о \s, Вы не совсем разделяете текст и коды текстовые.
Аватара пользователя
resuS
assistant
assistant
Сообщения: 144
Зарегистрирован: 13 фев 2011, 20:24
Версия LabVIEW: 2010
Контактная информация:

Re: COM порт - посылает, но не читает

Сообщение resuS »

Про DTR и RST буду разбираться, спасибо за наводку.

А вот про терминаторы вы правы - я их формирую как текст. В примере из help'а который я использую без изменений LabVIEW 2012 Basic Serial Write and Read.vi ничего не сказано про то что терминаторы надо формировать каким-то особым образом. Я просто модифицировал предложенную в примере строку "*IDN?\n" добавив \r (набрав как текст с клавиатуры) и изменил IDN? на одну из команд из мануала (с пробелами как в мануале).
Получилось что-то похожее на
*DGS\r\n
*DG\sON\s\r\n
*DS\sIG\s\r\n
....
Так же пробовал без звездочки и без \r и без пробелов в конце во всех комбинациях
Я что-то делаю не так? Текстовые коды нельзя набрать с клавиатуры? Кстати, в свойствах строки из примера стоит отображать коды, если эту галку убрать, все мои \r \s \n исчезают.

P.S. Может проблема не в синтаксисе моей строки, т.к. на неправильный синтаксис контролер должен мне отправить ошибку syntax error. Может проблема в кабеле и там перемешаны pin'ы ? Или еще что-нибудь?
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5464
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 28 раз
Поблагодарили: 87 раз

Re: COM порт - посылает, но не читает

Сообщение IvanLis »

resuS писал(а):Текстовые коды нельзя набрать с клавиатуры?
Кстати, в свойствах строки из примера стоит отображать коды, если эту галку убрать, все мои \r \s \n исчезают.
Если настроено отображение кодов, то эти коды можно вводить с клавиатуры, как обычный текст. В Вашем случае видимо все нормально. Просто некоторые начинают в режиме текста вводить коды.

А по поводу синтаксиса.... неизвестно как работает устройство, может быть он ожидает терминатор и пока не примет его не начинает разбор строки.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: COM порт - посылает, но не читает

Сообщение Borjomy_1 »

Во-первых строку команды для контроля преобразуйте в байтовый массив. Чтобы уйти от неоднозначности показа в контроле строки.

Во-вторых некоторые контроллеры RS-232 и RS-422 действительно ограниченно могут принимать сигналы по выходным цепям (Rx через Tx), мы с этим сталкивались.

Но создается впечатление, что проблема может крыться в настройках COM порта (раз команда всё-таки принимается). Параметры четности, число стоповых бит - эти вещи почему-то наши разработчики очень любят делать нестандартными.

PS. Почитал документацию. Какие настройки у вас по скорости выставлены?
Попробуйте послать команду именно ТЕКСТОМ, как в документации т.е написано 1CRLF, так и посылайте 5 символов
Аватара пользователя
resuS
assistant
assistant
Сообщения: 144
Зарегистрирован: 13 фев 2011, 20:24
Версия LabVIEW: 2010
Контактная информация:

Re: COM порт - посылает, но не читает

Сообщение resuS »

 неизвестно как работает устройство, может быть он ожидает терминатор и пока не примет его не начинает разбор строки.
Я это не нашел в документации. Однако там сказано что прибор распознает команду и игнорирует лишние символы между командой и терминатором. Не знаю, говорит ли это о том, что он ждет терминатора и потом распознает уже.
байтовый массив
Все оборудование заграничное, наших разработчиков можно оставить в покое:) Байтовую строку я могу посылать тем же vi которым я посылаю текст??
Про Rx и Tx не понял, я могу это както проверить?

Настройки порта выставил базовые, описанные в документации. В понедельник залезу внутрь контроллера, посмотрю на джамперы.

По поводу посылания команды текстом -это я сделал в первую очередь(так как даже не знал что CRLF=/r/n, на них он вообще не реагирует.
Borjomy_1

Activity Professionalism Silver
doctor
doctor
Сообщения: 2211
Зарегистрирован: 28 июн 2012, 09:32
Награды: 3
Версия LabVIEW: 2009..2020
Откуда: город семи холмов
Благодарил (а): 27 раз
Поблагодарили: 27 раз

Re: COM порт - посылает, но не читает

Сообщение Borjomy_1 »

Просто, например, такого формата 8 bit, без паритета и 2 стоповых бита - по стандарту не допускается. есть 8,n,1. На низких скоростях обмена может быть расхождение по фактической скорости (контроллеру может не хватить разрядности делителя частоты), и, как следствие, неправильное распознавание посылки. Поставьте на коробочке 9600, 8 бит, без паритета, 1 стоповый бит. По крайней мере это стандартная скорость обмена.
байтовый массив предлагал только для визуального контроля содержания посылки.
Rx и Tx проверяется тупым перекидыванием проводов. Но в документации подробно про это написано, какой сигнал на прием, какой на передачу. Если вы это читали, то ошибки не должно быть. Фокус еще может быть связан с управлением служебными битами CTS и т.п, вы это реализовывали? там что-то про это написано и выставлены конкретные требования. Простая трехпроводная схема работать, похоже, не будет.
Должен ждать терминатора и только потом разбирать посылку и отсылать ответ. Код CR - 0x0D, LF = 0x0A. Так?
Вы делаете паузу между запросами?
Кстати, а вы пробовали подсоединяться к контроллеру через стандартную программу типа "Terminal" для работы с модемом?
Ответить

Вернуться в «Коммуникация с приборами»