Marathon MR1S и VISA
- ARN1_1
- beginner
- Сообщения: 37
- Зарегистрирован: 20 янв 2023, 00:04
- Версия LabVIEW: 2022 Q3
- Благодарил (а): 14 раз
- Контактная информация:
Marathon MR1S и VISA
Всем привет!
Я столкнулся с проблемой при работе с пирометром, подключенным через RS-485 к PCIE-1620 далее к LabVIEW через VISA.
Когда я пытаюсь использовать функцию VISA Read для получения данных о температуре, появляется ошибка -1073807253 (Hex 0xBFFF006B) с сообщением: "A framing error occurred during transfer". Скорость передачи данных 9600, 8 бит данных, без паритета, 1 стоповый бит (настройки соответствуют документации пирометра).
Команды, отправляемые пирометру, пробовал разные.
В документации предложены такие варианты: Я пробовал добавить символы конца строки (\r и \n) в команду, но ошибка все равно сохраняется.
Тестировал VISA Flush I/O Buffer перед отправкой и чтением данных - не сработало.
В итоге получаю вот такие крякозябры Может быть, кто-то сталкивался с подобной проблемой при работе с пирометрами через RS-485 в LabVIEW?
Буду признателен за любые советы по устранению этой ошибки или дополнительной настройке порта.
Также оставил свой маленький VI и полную документацию к пирометру
Я столкнулся с проблемой при работе с пирометром, подключенным через RS-485 к PCIE-1620 далее к LabVIEW через VISA.
Когда я пытаюсь использовать функцию VISA Read для получения данных о температуре, появляется ошибка -1073807253 (Hex 0xBFFF006B) с сообщением: "A framing error occurred during transfer". Скорость передачи данных 9600, 8 бит данных, без паритета, 1 стоповый бит (настройки соответствуют документации пирометра).
Команды, отправляемые пирометру, пробовал разные.
В документации предложены такие варианты: Я пробовал добавить символы конца строки (\r и \n) в команду, но ошибка все равно сохраняется.
Тестировал VISA Flush I/O Buffer перед отправкой и чтением данных - не сработало.
В итоге получаю вот такие крякозябры Может быть, кто-то сталкивался с подобной проблемой при работе с пирометрами через RS-485 в LabVIEW?
Буду признателен за любые советы по устранению этой ошибки или дополнительной настройке порта.
Также оставил свой маленький VI и полную документацию к пирометру
- Вложения
-
- VISA.vi
- (8.2 КБ) 37 скачиваний
-
MR1S_Manual_revc.pdf
- (843.02 КБ) 39 скачиваний
-
dadreamer
- professor
- Сообщения: 3971
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2024
- Благодарил (а): 13 раз
- Поблагодарили: 138 раз
- Контактная информация:
Re: Marathon MR1S и VISA
38400 же по дефолту: Попробуйте сначала добиться нормального обмена в NI-MAX, а уже потом в

-
- junior
- Сообщения: 50
- Зарегистрирован: 19 апр 2020, 01:22
- Версия LabVIEW: 2021
- Благодарил (а): 6 раз
- Поблагодарили: 11 раз
- Контактная информация:
Re: Marathon MR1S и VISA
Ну тут все ясно как божий день. У пирометра RS-485 а у PCIE-1620 - RS-232. Так работать не будет.
P.S. Я встречался с такой ошибкой. "Удивительно", но в статье на ni.com было правильное решение "проверьте подключение". Контакт был плохой. Осциллограф помог выявить проблему.
P.S. Я встречался с такой ошибкой. "Удивительно", но в статье на ni.com было правильное решение "проверьте подключение". Контакт был плохой. Осциллограф помог выявить проблему.
-
- doctor
- Сообщения: 2274
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 33 раза
- Поблагодарили: 32 раза
Re: Marathon MR1S и VISA
Есть еще риск попортить плату. Уровни напряжения могут различаться и сильно
Для подключения по 485 интерфейсу специальная плата не нужна. Достаточно поискать качественный преобразователь RS-485 - USB.
Для подключения по 485 интерфейсу специальная плата не нужна. Достаточно поискать качественный преобразователь RS-485 - USB.
- ARN1_1
- beginner
- Сообщения: 37
- Зарегистрирован: 20 янв 2023, 00:04
- Версия LabVIEW: 2022 Q3
- Благодарил (а): 14 раз
- Контактная информация:
Re: Marathon MR1S и VISA
1)К сожалению RS-485 -> USB у меня нет(
2)Поискал плату, которая может работать в режиме RS-485 тоже от PCIE. (PCIE-1622B)
3)Подключение произвожу по COM10 (в моем случае) сделал небольшие настройки и вот что получилось: Далее в документации глянул подключение к клеммневой колодке пирометра(RxA на TxA, RxB на TxB) аналогично и для TxA,TxB
(Если не ошибаюсь, то (R)TxD+ это (R)TxB, (R)TxD- это (R)TxA)
Контакты подключались от DB9 Female ну и логично дальше подсоединился к плате по DB9 Male
Через MAX начал прозванивать пирометр, но встречаю вот такие ошибки: Единственное что мне пока нужно - это получить значения температуры, чтобы потом построить график для мониторинга, но пока успехов 0
2)Поискал плату, которая может работать в режиме RS-485 тоже от PCIE. (PCIE-1622B)
3)Подключение произвожу по COM10 (в моем случае) сделал небольшие настройки и вот что получилось: Далее в документации глянул подключение к клеммневой колодке пирометра(RxA на TxA, RxB на TxB) аналогично и для TxA,TxB
(Если не ошибаюсь, то (R)TxD+ это (R)TxB, (R)TxD- это (R)TxA)
Контакты подключались от DB9 Female ну и логично дальше подсоединился к плате по DB9 Male
Через MAX начал прозванивать пирометр, но встречаю вот такие ошибки: Единственное что мне пока нужно - это получить значения температуры, чтобы потом построить график для мониторинга, но пока успехов 0

-
- doctor
- Сообщения: 2274
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 33 раза
- Поблагодарили: 32 раза
Re: Marathon MR1S и VISA
Это ошибки переполнения буфера, так как посылки валятся постоянно, с высокой скоростью, а вы вычитываете их единоразово. В данном случае так и должно быть.
поэтому вам надо уже делать пример, который вычитывает все, что поступает.
поэтому вам надо уже делать пример, который вычитывает все, что поступает.
- ARN1_1
- beginner
- Сообщения: 37
- Зарегистрирован: 20 янв 2023, 00:04
- Версия LabVIEW: 2022 Q3
- Благодарил (а): 14 раз
- Контактная информация:
Re: Marathon MR1S и VISA
Сегодня решил опять протестировать, но все равно выкидывает такую же ошибку:
Настраивал подключение следующим образом:
А в VI:
По предложенным рекомендациям я все подправил, проверил, но почему-то результата нет. Может я подаю не те команды? Настраивал подключение следующим образом:
-
dadreamer
- professor
- Сообщения: 3971
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2024
- Благодарил (а): 13 раз
- Поблагодарили: 138 раз
- Контактная информация:
Re: Marathon MR1S и VISA
А почему в



- ARN1_1
- beginner
- Сообщения: 37
- Зарегистрирован: 20 янв 2023, 00:04
- Версия LabVIEW: 2022 Q3
- Благодарил (а): 14 раз
- Контактная информация:
Re: Marathon MR1S и VISA
Честно скажу вам - это всего лишь пример: "пальцем в небо". RS-485 часто используется для передачи данных в бинарном формате, а не в текстовом (ASCII). Пирометр может передавать данные в бинарном формате (например, температуры в виде целых или вещественных чисел), а не в ASCII, но я не знаю как это реализовать.. и за какие ниточки дергать пирометр..
dadreamer писал(а): ↑14 мар 2025, 12:06А почему вскорость 9600 стоит? Не знаю, откуда этот
, но в самом
есть примеры по работе с VISA, хотя бы \LabVIEW 20xx\examples\Instrument IO\Serial\Continuous Serial Write and Read.vi. Попробуйте. Также в предыдущих сообщениях я заметил, что в настройках драйвера есть вкладка FIFOs. Посмотрите там, что активированы буферы порта на приём и передачу и у них установлен достаточный размер (4096 байт по умолчанию). Также не забудьте верно выставить терминатор (Termination Character) перед началом сессии.
Извините, но я случайно вставил не тот скрин. Конечно должно быть 38.4к боде, но даже так это не решило проблемы. На счет FIFOs я не совсем понял, как настроить достаточный размер (4096 байт по умолчанию) В документации указано время реакции в режиме Setup. Правда я не совсем понял, что это за режим. (На самом пирометре я лишь отдаленно могу предположить, что это переключатель между S (setup) и A) и упоминается переменная n - кол-во символов в строке, включая <CR> <LF> - это я так понимаю завершение сроки \n\r ? (*IDN?\n\r)
Сам

-
dadreamer
- professor
- Сообщения: 3971
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2024
- Благодарил (а): 13 раз
- Поблагодарили: 138 раз
- Контактная информация:
Re: Marathon MR1S и VISA
Здесь только прерывания и контроль потока. Оставьте значения по умолчанию (Defaults). Некоторые драйвера позволяют явно указать размеры буферов, но здесь видимо это не требуется. В параметрах самого порта тоже выставьте всё по умолчанию.
Похоже на то. Только терминатор последним идёт в посылке, и это один байт, так что придётся ставить <LF> \ \r \ 0xA, если только это не настраивается на приборе. Ну, а <CR> можно потом программно из строки удалить.
Это однократное чтение, вам нужно читать в цикле, как выше уже сказали. Возьмите за основу пример Continuous Serial Write and Read.vi.
-
- doctor
- Сообщения: 2274
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 33 раза
- Поблагодарили: 32 раза
Re: Marathon MR1S и VISA
Использование Bytes at Port все равно что goto в Сях. Один байт передается при скорости 38к за 0.3мс. Время выполнения опроса property в тысячи раз меньше. При этом штатно это значение обновляется с не пойми какой задержкой. И предугадать время, когда придёт заданное число байт невозможно. В результате перегрузка цп впустую.
Необходимо задавать на вход Visa Read константное значение, равное длине посылки. Функция сама выполнится, когда буфер накопит указанное число байт. Либо выйдет по таймауту. А таймаут вы задаете при конфигурировании. И его не надо делать больше секунды.
Необходимо задавать на вход Visa Read константное значение, равное длине посылки. Функция сама выполнится, когда буфер накопит указанное число байт. Либо выйдет по таймауту. А таймаут вы задаете при конфигурировании. И его не надо делать больше секунды.
- ARN1_1
- beginner
- Сообщения: 37
- Зарегистрирован: 20 янв 2023, 00:04
- Версия LabVIEW: 2022 Q3
- Благодарил (а): 14 раз
- Контактная информация:
Re: Marathon MR1S и VISA
Ну-с.. начнем..
Во-первых, спасибо ещё раз всем за оказанную помощь, рекомендации.
Во-вторых, я вроде бы начал получать что-то адекватное от пирометра, использовал программу рекомендованную выше от dadreamer и ещё раз перепроверил подключение (Оказывается ошибся с (R)TxA (R)TxB подключением) Хотел бы ещё у вас попросить помощи, а именно:
1) В документации я нашел пример описания протокола (приложения B) и видимо каждая буква, указанная в строке, означает определенный параметр? 2) Каким образом мне отправлять команды в пирометр? Мне нужно от него только текущие показатели температуры (режим по выбору) затем эти значения закинуть в XY Graph. Подскажите, пожалуйста, как это грамотно сделать. В таблице есть список команд, которые я кидал, но просто сделать условно Ctrl+С -> Ctrl+V не работает (cтр. 103..110)
Во-первых, спасибо ещё раз всем за оказанную помощь, рекомендации.
Во-вторых, я вроде бы начал получать что-то адекватное от пирометра, использовал программу рекомендованную выше от dadreamer и ещё раз перепроверил подключение (Оказывается ошибся с (R)TxA (R)TxB подключением) Хотел бы ещё у вас попросить помощи, а именно:
1) В документации я нашел пример описания протокола (приложения B) и видимо каждая буква, указанная в строке, означает определенный параметр? 2) Каким образом мне отправлять команды в пирометр? Мне нужно от него только текущие показатели температуры (режим по выбору) затем эти значения закинуть в XY Graph. Подскажите, пожалуйста, как это грамотно сделать. В таблице есть список команд, которые я кидал, но просто сделать условно Ctrl+С -> Ctrl+V не работает (cтр. 103..110)
-
dadreamer
- professor
- Сообщения: 3971
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2024
- Благодарил (а): 13 раз
- Поблагодарили: 138 раз
- Контактная информация:
Re: Marathon MR1S и VISA
Насколько я понял (читал по-диагонали), датчик может работать в двух режимах: poll - запрос-ответ и burst - непрерывная передача. Не знаю, какой режим у вас сейчас выбран, но проще начать с первого, а потом, если надо будет увеличить производительность, перейти на второй. Дальше, может быть два варианта установки и подключения: standalone (один датчик) и multi-drop (несколько датчиков объединяются в сеть, работают в параллель). Точно так же, проще начать с одного датчика.
Запрос температуры целевого объекта - надо отправить символ T в ASCII-формате (обычной строкой). Приводится пример:
Запрос температуры целевого объекта - надо отправить символ T в ASCII-формате (обычной строкой). Приводится пример:
Прибор должен ответить так:001?T
"1" - это сетевой адрес, не знаю, надо ли его указывать в standalone сетапе или только в multi-drop, пробуйте и так, и так. Последние 4 цифры, естественно, будут отличаться, это текущее значение температуры. А так, лучше бы, конечно, сначала потренироваться на заводской софтине, что описана в документации. Там и графики строятся, и куча всяких настроек.001!T1225
-
jane_wild
- leader
- Сообщения: 512
- Зарегистрирован: 30 июн 2016, 02:11
- Награды: 1
- Версия LabVIEW: 2020
- Благодарил (а): 98 раз
- Поблагодарили: 19 раз
- Контактная информация:
Re: Marathon MR1S и VISA
А заодно снифером посмотреть что там за комманды софтина передает, думаю 14 дней пробного периода будет достаточно понять что к чему. Я прямо сейчас при помощи его с измерителем потока разбираюсь. Ну очень сильно помогает.
Life is short. Smile while you still have teeth!
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 21 Ответы
- 22370 Просмотры
-
Последнее сообщение Borjomy_1
-
- 2 Ответы
- 5848 Просмотры
-
Последнее сообщение Sergey Puzanov
-
- 3 Ответы
- 7685 Просмотры
-
Последнее сообщение IvanLis
-
- 5 Ответы
- 8713 Просмотры
-
Последнее сообщение IvanLis
-
- 8 Ответы
- 12637 Просмотры
-
Последнее сообщение Artem.spb