Добрый день!
Прошу Вашей помощи.
Есть "самодельный" прибор с которого надо считать данные. Прибор подключен через Nport 5450I. При работе через программу .exe производителя все работает.
Сom-порты от Nportа также видно в NIMAX. Необходимо установить связь с данным "самодельным" прибором через COM1. Для этого требуется подать следующую команду на прибор, состоящую из 13 байтов: 0с 81 00 00 00 11 00 00 00 00 01 00 00 . После чего необходимо получить ответное сообщение такой же длины в течение не более 100 мсек.
Что-то явно делаю не так.
Заранее благодарю за помощь!
HEX команда
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: HEX команда
... требуется подать следующую команду на прибор, состоящую из 13 байтов: 0с 81 00 00 00 11 00 00 00 00 01 00 00 . После чего необходимо получить ответное сообщение такой же длины в течение не более 100 мсек.
- Вложения
-
- VISA Instrument Response.PNG (9.15 КБ) 4200 просмотров
-
- interested
- Сообщения: 4
- Зарегистрирован: 14 май 2016, 19:20
- Версия LabVIEW: 11
- Контактная информация:
Re: HEX команда
dadreamer и blackman спасибо за ответы!
dadreamer, данные манипуляции с выбором HEX были проведены до момента введения и подаванния команды (см. рисунок 1, приложенный к предыдущему моему сообщению). Возможно я что-то еще забыл?
Blackman, спасибо, немного модифицировал программу. Ответное сообщение должно прийти быстрее 100 мсек, поэтому задержку не ставил. Однако внесенные данные изменения не принесли пока результата (см. рисунок 2).
Только что нашел в программе производителя дампы, которые подаются и приходят в ответ (см. рисунок 3). Может быть я как-то не правильно формирую команду в HEX? В дампах команда разделена по двум числам, в то время как подаваемая мной команда по четырем.
dadreamer, данные манипуляции с выбором HEX были проведены до момента введения и подаванния команды (см. рисунок 1, приложенный к предыдущему моему сообщению). Возможно я что-то еще забыл?
Blackman, спасибо, немного модифицировал программу. Ответное сообщение должно прийти быстрее 100 мсек, поэтому задержку не ставил. Однако внесенные данные изменения не принесли пока результата (см. рисунок 2).
Только что нашел в программе производителя дампы, которые подаются и приходят в ответ (см. рисунок 3). Может быть я как-то не правильно формирую команду в HEX? В дампах команда разделена по двум числам, в то время как подаваемая мной команда по четырем.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: HEX команда
Filato, есть несколько вопросов:
1) какой терминатор используется в протоколе и верно ли он настроен в вашей программе?
2) в дампе строка 12 байт, а не 13... так и должно быть?..
3) команда, отправляемая вами, и команды в дампе отличаются; верно ли соблюдена последовательность "общения" с прибором?
1) какой терминатор используется в протоколе и верно ли он настроен в вашей программе?
2) в дампе строка 12 байт, а не 13... так и должно быть?..
3) команда, отправляемая вами, и команды в дампе отличаются; верно ли соблюдена последовательность "общения" с прибором?
-
- interested
- Сообщения: 4
- Зарегистрирован: 14 май 2016, 19:20
- Версия LabVIEW: 11
- Контактная информация:
Re: HEX команда
dadreamer, заранее прошу прощения за неточности в первичном описании и мою неосведомленность.
1. подскажите, пожалуйста, что такое терминатор? если речь идет о настройках интерфейса, то тут дело следующее. Исходя из краткого описания работы "самодельного" устройства: "обмен между ПК и устройствами осуществляется пакетами переменной длины по шине RS485". Для интерфейса rs485 необходимы следующие настройки: "скорость - 57600, бит - 8, контроль четности - нет, стоповые биты - 2, управление потоком - нет, представление информации - безнаковое 8-ми разрядное число". Следует еще раз отметить, что сам прибор подключается по следующей через Ethernet -> Nport (определяемый Com-портом) - > прибор. Программа производителя работает по такой схеме без сбоев.
2. Все верно, ошибка в описании.
3. Команды на рисунках 2.1 и 3 совпадают, поэтому вероятнее всего последовательность мною выполнена верна. Полный скрин обмена данных через программу производителя прилагаю (рисунок 4).
1. подскажите, пожалуйста, что такое терминатор? если речь идет о настройках интерфейса, то тут дело следующее. Исходя из краткого описания работы "самодельного" устройства: "обмен между ПК и устройствами осуществляется пакетами переменной длины по шине RS485". Для интерфейса rs485 необходимы следующие настройки: "скорость - 57600, бит - 8, контроль четности - нет, стоповые биты - 2, управление потоком - нет, представление информации - безнаковое 8-ми разрядное число". Следует еще раз отметить, что сам прибор подключается по следующей через Ethernet -> Nport (определяемый Com-портом) - > прибор. Программа производителя работает по такой схеме без сбоев.
2. Все верно, ошибка в описании.
3. Команды на рисунках 2.1 и 3 совпадают, поэтому вероятнее всего последовательность мною выполнена верна. Полный скрин обмена данных через программу производителя прилагаю (рисунок 4).
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: HEX команда
Терминатор (терминальный байт) - символ, благодаря которому драйвер VISA определяет конец строки. Может использоваться как для приёма данных, так и для отправки. Использование терминального символа облегчает работу по последовательному интерфейсу, так как не приходится периодически проверять количество байт в порту, считывать эти байты и "склеивать" результирующие данные.Filato писал(а):подскажите, пожалуйста, что такое терминатор?
Вам нужно уточнить, поддерживается ли вашим устройством работа по терминатору, и если да, то чему он соответствует (по умолчанию для VISA Configure Serial Port терминатор активирован и равен 0xA = \n = Line Feed = LF).
Почему же вы не выставили эти настройки для VISA Configure Serial Port?Filato писал(а):Для интерфейса rs485 необходимы следующие настройки: "скорость - 57600, бит - 8, контроль четности - нет, стоповые биты - 2, управление потоком - нет
Тогда попробуйте сперва добиться получения ответа от прибора в терминале, например, NI MAX, а потом, когда всё получится, переходите в .Filato писал(а):Программа производителя работает по такой схеме без сбоев.
-
- interested
- Сообщения: 4
- Зарегистрирован: 14 май 2016, 19:20
- Версия LabVIEW: 11
- Контактная информация:
Re: HEX команда
dadreamer, большое вам спасибо за помощь и извините за глупость. все получилось после изменения скорости передачи данных и изменения стоповых бит.
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: HEX команда
Для виртуального COM-порта по шине RS485, согласно документации на терминал (NPort), требуется программное управление потоком XON/XOFF. Это хорошо видно из дампа данных обмена: 0B (11) - XON character, 0D (13) - XOFF character.