Доброго времени суток форумчанам,
Задача: заставить датчик давления присылать значения того самого давления на компьютер . На датчике есть порт мама-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
COM порт - посылает, но не читает
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: COM порт - посылает, но не читает
это одно и тоже, только в кодах отображениеresuS писал(а):все пробелы имеющиейся в команде заменяются на \s - это нормально?
1. В документации на 41 стр. описывается установка джемперов или переключателей, проверьте все соответствует Вашим программным настройкам.resuS писал(а):Параметры COM порта выставил как указано к документации к прибору.
2. Установлены ли сигналы DSR, DCD в True.
3. Что Вы используете в качестве терминатора, если "\n", то неверно? На 43 стр. написано, что должно быть CR+LF, это "\r\n" . И что на команду DG ON CRLF должен придти ответ OKCRLF либо INVALIDCRLF.
По поводу DTR, RTS я в силу своей малограмотности в пане иностранных языков понял не совсем. Но судя по описанию они используются только для индикации о работе и передаче данных. Т.е. нас это мало волнует.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
- resuS
- assistant
- Сообщения: 144
- Зарегистрирован: 13 фев 2011, 20:24
- Версия LabVIEW: 2010
- Контактная информация:
Re: COM порт - посылает, но не читает
Снаружи этих джамперов не нашел. Так не хотелось вскрывать коробку контроллера, но походу придется.1. В документации на 41 стр. описывается установка джемперов или переключателей, проверьте все соответствует Вашим программным настройкам.
А как это проверить?2. Установлены ли сигналы DSR, DCD в True.
Пробовал и "\n" и "\r\n" - никакого ответа от контроллера нет. Это для меня самая главная загадка, почему он вместо ответа выполняет команду "DG ON".3. Что Вы используете в качестве терминатора, если "\n", то неверно? На 43 стр. написано, что должно быть CR+LF, это "\r\n" . И что на команду DG ON CRLF должен придти ответ OKCRLF либо INVALIDCRLF.
Я тоже понял что DTR и RTS не нужны.
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: COM порт - посылает, но не читает
Они программно управляются: How Can I Control the DTR and RTS Serial Lines in LabVIEW?resuS писал(а):А как это проверить?2. Установлены ли сигналы DSR, DCD в True.
Как Вы формируете терминатор?resuS писал(а):Пробовал и "\n" и "\r\n" - никакого ответа от контроллера нет.
Потому, что судя по вопросу о \s, Вы не совсем разделяете текст и коды текстовые.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
- resuS
- assistant
- Сообщения: 144
- Зарегистрирован: 13 фев 2011, 20:24
- Версия LabVIEW: 2010
- Контактная информация:
Re: COM порт - посылает, но не читает
Про 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'ы ? Или еще что-нибудь?
А вот про терминаторы вы правы - я их формирую как текст. В примере из 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
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 87 раз
Re: COM порт - посылает, но не читает
Если настроено отображение кодов, то эти коды можно вводить с клавиатуры, как обычный текст. В Вашем случае видимо все нормально. Просто некоторые начинают в режиме текста вводить коды.resuS писал(а):Текстовые коды нельзя набрать с клавиатуры?
Кстати, в свойствах строки из примера стоит отображать коды, если эту галку убрать, все мои \r \s \n исчезают.
А по поводу синтаксиса.... неизвестно как работает устройство, может быть он ожидает терминатор и пока не примет его не начинает разбор строки.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: COM порт - посылает, но не читает
Во-первых строку команды для контроля преобразуйте в байтовый массив. Чтобы уйти от неоднозначности показа в контроле строки.
Во-вторых некоторые контроллеры RS-232 и RS-422 действительно ограниченно могут принимать сигналы по выходным цепям (Rx через Tx), мы с этим сталкивались.
Но создается впечатление, что проблема может крыться в настройках COM порта (раз команда всё-таки принимается). Параметры четности, число стоповых бит - эти вещи почему-то наши разработчики очень любят делать нестандартными.
PS. Почитал документацию. Какие настройки у вас по скорости выставлены?
Попробуйте послать команду именно ТЕКСТОМ, как в документации т.е написано 1CRLF, так и посылайте 5 символов
Во-вторых некоторые контроллеры RS-232 и RS-422 действительно ограниченно могут принимать сигналы по выходным цепям (Rx через Tx), мы с этим сталкивались.
Но создается впечатление, что проблема может крыться в настройках COM порта (раз команда всё-таки принимается). Параметры четности, число стоповых бит - эти вещи почему-то наши разработчики очень любят делать нестандартными.
PS. Почитал документацию. Какие настройки у вас по скорости выставлены?
Попробуйте послать команду именно ТЕКСТОМ, как в документации т.е написано 1CRLF, так и посылайте 5 символов
- resuS
- assistant
- Сообщения: 144
- Зарегистрирован: 13 фев 2011, 20:24
- Версия LabVIEW: 2010
- Контактная информация:
Re: COM порт - посылает, но не читает
Я это не нашел в документации. Однако там сказано что прибор распознает команду и игнорирует лишние символы между командой и терминатором. Не знаю, говорит ли это о том, что он ждет терминатора и потом распознает уже.неизвестно как работает устройство, может быть он ожидает терминатор и пока не примет его не начинает разбор строки.
Все оборудование заграничное, наших разработчиков можно оставить в покое:) Байтовую строку я могу посылать тем же vi которым я посылаю текст??байтовый массив
Про Rx и Tx не понял, я могу это както проверить?
Настройки порта выставил базовые, описанные в документации. В понедельник залезу внутрь контроллера, посмотрю на джамперы.
По поводу посылания команды текстом -это я сделал в первую очередь(так как даже не знал что CRLF=/r/n, на них он вообще не реагирует.
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: COM порт - посылает, но не читает
Просто, например, такого формата 8 bit, без паритета и 2 стоповых бита - по стандарту не допускается. есть 8,n,1. На низких скоростях обмена может быть расхождение по фактической скорости (контроллеру может не хватить разрядности делителя частоты), и, как следствие, неправильное распознавание посылки. Поставьте на коробочке 9600, 8 бит, без паритета, 1 стоповый бит. По крайней мере это стандартная скорость обмена.
байтовый массив предлагал только для визуального контроля содержания посылки.
Rx и Tx проверяется тупым перекидыванием проводов. Но в документации подробно про это написано, какой сигнал на прием, какой на передачу. Если вы это читали, то ошибки не должно быть. Фокус еще может быть связан с управлением служебными битами CTS и т.п, вы это реализовывали? там что-то про это написано и выставлены конкретные требования. Простая трехпроводная схема работать, похоже, не будет.
Должен ждать терминатора и только потом разбирать посылку и отсылать ответ. Код CR - 0x0D, LF = 0x0A. Так?
Вы делаете паузу между запросами?
Кстати, а вы пробовали подсоединяться к контроллеру через стандартную программу типа "Terminal" для работы с модемом?
байтовый массив предлагал только для визуального контроля содержания посылки.
Rx и Tx проверяется тупым перекидыванием проводов. Но в документации подробно про это написано, какой сигнал на прием, какой на передачу. Если вы это читали, то ошибки не должно быть. Фокус еще может быть связан с управлением служебными битами CTS и т.п, вы это реализовывали? там что-то про это написано и выставлены конкретные требования. Простая трехпроводная схема работать, похоже, не будет.
Должен ждать терминатора и только потом разбирать посылку и отсылать ответ. Код CR - 0x0D, LF = 0x0A. Так?
Вы делаете паузу между запросами?
Кстати, а вы пробовали подсоединяться к контроллеру через стандартную программу типа "Terminal" для работы с модемом?