Marathon MR1S и VISA

Простейшие вопросы в области инженерной разработки
Аватара пользователя
ARN1_1
beginner
beginner
Сообщения: 37
Зарегистрирован: 20 янв 2023, 00:04
Версия LabVIEW: 2022 Q3
Благодарил (а): 14 раз
Контактная информация:

Marathon MR1S и VISA

Сообщение ARN1_1 »

Всем привет!

Я столкнулся с проблемой при работе с пирометром, подключенным через RS-485 к PCIE-1620 далее к LabVIEW через VISA.

Когда я пытаюсь использовать функцию VISA Read для получения данных о температуре, появляется ошибка -1073807253 (Hex 0xBFFF006B) с сообщением: "A framing error occurred during transfer".
Снимок экрана 2025-03-06 130443.png
Снимок экрана 2025-03-06 130443.png (10.47 КБ) 2894 просмотра
Скорость передачи данных 9600, 8 бит данных, без паритета, 1 стоповый бит (настройки соответствуют документации пирометра).
Команды, отправляемые пирометру, пробовал разные.
В документации предложены такие варианты:
Снимок экрана 2025-03-05 164737.png
Я пробовал добавить символы конца строки (\r и \n) в команду, но ошибка все равно сохраняется.
Тестировал VISA Flush I/O Buffer перед отправкой и чтением данных - не сработало.

В итоге получаю вот такие крякозябры
Снимок экрана 2025-03-05 171103.png
Снимок экрана 2025-03-05 171103.png (7.61 КБ) 2894 просмотра
Может быть, кто-то сталкивался с подобной проблемой при работе с пирометрами через RS-485 в LabVIEW?
Буду признателен за любые советы по устранению этой ошибки или дополнительной настройке порта.
Также оставил свой маленький VI и полную документацию к пирометру
Вложения
VISA.vi
(8.2 КБ) 37 скачиваний
MR1S_Manual_revc.pdf
(843.02 КБ) 39 скачиваний
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3971
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2024
Благодарил (а): 13 раз
Поблагодарили: 138 раз
Контактная информация:

Re: Marathon MR1S и VISA

Сообщение dadreamer »

ARN1_1 писал(а): 06 мар 2025, 14:37Скорость передачи данных 9600, 8 бит данных, без паритета, 1 стоповый бит (настройки соответствуют документации пирометра).
38400 же по дефолту:
2025-03-06_22-18-21.jpg
Попробуйте сначала добиться нормального обмена в NI-MAX, а уже потом в :labview: . Из практики, framing error довольно редко возникала, причины могут быть такие: всё-таки не полностью правильные настройки порта или проблема с физ. подключением (контакт отпал, провода где-то перепутаны). Также в мануале упоминается заводская утилита, проснифьте её обмен с прибором, сравните настройки.
FredP
junior
junior
Сообщения: 50
Зарегистрирован: 19 апр 2020, 01:22
Версия LabVIEW: 2021
Благодарил (а): 6 раз
Поблагодарили: 11 раз
Контактная информация:

Re: Marathon MR1S и VISA

Сообщение FredP »

Ну тут все ясно как божий день. У пирометра RS-485 а у PCIE-1620 - RS-232. Так работать не будет.

P.S. Я встречался с такой ошибкой. "Удивительно", но в статье на ni.com было правильное решение "проверьте подключение". Контакт был плохой. Осциллограф помог выявить проблему.
Borjomy_1

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

Re: Marathon MR1S и VISA

Сообщение Borjomy_1 »

Есть еще риск попортить плату. Уровни напряжения могут различаться и сильно

Для подключения по 485 интерфейсу специальная плата не нужна. Достаточно поискать качественный преобразователь RS-485 - USB.
Аватара пользователя
ARN1_1
beginner
beginner
Сообщения: 37
Зарегистрирован: 20 янв 2023, 00:04
Версия LabVIEW: 2022 Q3
Благодарил (а): 14 раз
Контактная информация:

Re: Marathon MR1S и VISA

Сообщение ARN1_1 »

1)К сожалению RS-485 -> USB у меня нет(

2)Поискал плату, которая может работать в режиме RS-485 тоже от PCIE. (PCIE-1622B)

3)Подключение произвожу по COM10 (в моем случае) сделал небольшие настройки и вот что получилось:
Снимок экрана 2025-03-12 111921.png
Далее в документации глянул подключение к клеммневой колодке пирометра(RxA на TxA, RxB на TxB) аналогично и для TxA,TxB
(Если не ошибаюсь, то (R)TxD+ это (R)TxB, (R)TxD- это (R)TxA)

Контакты подключались от DB9 Female ну и логично дальше подсоединился к плате по DB9 Male


Через MAX начал прозванивать пирометр, но встречаю вот такие ошибки:
Снимок экрана 2025-03-12 130323.png
Снимок экрана 2025-03-12 130331.png
Единственное что мне пока нужно - это получить значения температуры, чтобы потом построить график для мониторинга, но пока успехов 0 :suicide:
Borjomy_1

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

Re: Marathon MR1S и VISA

Сообщение Borjomy_1 »

Это ошибки переполнения буфера, так как посылки валятся постоянно, с высокой скоростью, а вы вычитываете их единоразово. В данном случае так и должно быть.

поэтому вам надо уже делать пример, который вычитывает все, что поступает.
Аватара пользователя
ARN1_1
beginner
beginner
Сообщения: 37
Зарегистрирован: 20 янв 2023, 00:04
Версия LabVIEW: 2022 Q3
Благодарил (а): 14 раз
Контактная информация:

Re: Marathon MR1S и VISA

Сообщение ARN1_1 »

Сегодня решил опять протестировать, но все равно выкидывает такую же ошибку:
Снимок экрана 2025-03-13 144204.png
А в VI:
Снимок экрана 2025-03-13 165806.png
По предложенным рекомендациям я все подправил, проверил, но почему-то результата нет. Может я подаю не те команды?


Настраивал подключение следующим образом:
Снимок экрана 2025-03-13 142548.png
Connected.png
Borjomy_1

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

Re: Marathon MR1S и VISA

Сообщение Borjomy_1 »

А почему вы решили, что значения должны приходить в текстовом виде?
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3971
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2024
Благодарил (а): 13 раз
Поблагодарили: 138 раз
Контактная информация:

Re: Marathon MR1S и VISA

Сообщение dadreamer »

ARN1_1 писал(а): 13 мар 2025, 17:02А в VI:
Изображение
А почему в :vi: скорость 9600 стоит? Не знаю, откуда этот :vi: , но в самом :labview: есть примеры по работе с VISA, хотя бы \LabVIEW 20xx\examples\Instrument IO\Serial\Continuous Serial Write and Read.vi. Попробуйте. Также в предыдущих сообщениях я заметил, что в настройках драйвера есть вкладка FIFOs. Посмотрите там, что активированы буферы порта на приём и передачу и у них установлен достаточный размер (4096 байт по умолчанию). Также не забудьте верно выставить терминатор (Termination Character) перед началом сессии.
Аватара пользователя
ARN1_1
beginner
beginner
Сообщения: 37
Зарегистрирован: 20 янв 2023, 00:04
Версия LabVIEW: 2022 Q3
Благодарил (а): 14 раз
Контактная информация:

Re: Marathon MR1S и VISA

Сообщение ARN1_1 »

Borjomy_1 писал(а): 14 мар 2025, 11:12 А почему вы решили, что значения должны приходить в текстовом виде?
Честно скажу вам - это всего лишь пример: "пальцем в небо". RS-485 часто используется для передачи данных в бинарном формате, а не в текстовом (ASCII). Пирометр может передавать данные в бинарном формате (например, температуры в виде целых или вещественных чисел), а не в ASCII, но я не знаю как это реализовать.. и за какие ниточки дергать пирометр..
dadreamer писал(а): 14 мар 2025, 12:06
ARN1_1 писал(а): 13 мар 2025, 17:02А в VI:
Изображение
А почему в :vi: скорость 9600 стоит? Не знаю, откуда этот :vi: , но в самом :labview: есть примеры по работе с VISA, хотя бы \LabVIEW 20xx\examples\Instrument IO\Serial\Continuous Serial Write and Read.vi. Попробуйте. Также в предыдущих сообщениях я заметил, что в настройках драйвера есть вкладка FIFOs. Посмотрите там, что активированы буферы порта на приём и передачу и у них установлен достаточный размер (4096 байт по умолчанию). Также не забудьте верно выставить терминатор (Termination Character) перед началом сессии.

Извините, но я случайно вставил не тот скрин. Конечно должно быть 38.4к боде, но даже так это не решило проблемы. На счет FIFOs я не совсем понял, как настроить достаточный размер (4096 байт по умолчанию)
Снимок экрана 2025-03-14 141442.png
В документации указано время реакции в режиме Setup. Правда я не совсем понял, что это за режим. (На самом пирометре я лишь отдаленно могу предположить, что это переключатель между S (setup) и A) и упоминается переменная n - кол-во символов в строке, включая <CR> <LF> - это я так понимаю завершение сроки \n\r ? (*IDN?\n\r)
Снимок экрана 2025-03-14 142249.png

Сам :vi: нашел на каком-то форуме, когда искал решение своей проблемы:
Снимок экрана 2025-03-14 140553.png
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3971
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2024
Благодарил (а): 13 раз
Поблагодарили: 138 раз
Контактная информация:

Re: Marathon MR1S и VISA

Сообщение dadreamer »

ARN1_1 писал(а): 14 мар 2025, 14:26На счет FIFOs я не совсем понял, как настроить достаточный размер (4096 байт по умолчанию)
Изображение
Здесь только прерывания и контроль потока. Оставьте значения по умолчанию (Defaults). Некоторые драйвера позволяют явно указать размеры буферов, но здесь видимо это не требуется. В параметрах самого порта тоже выставьте всё по умолчанию.
2025-03-14_17-20-54.jpg
ARN1_1 писал(а): 14 мар 2025, 14:26включая <CR> <LF> - это я так понимаю завершение сроки \n\r ? (*IDN?\n\r)
Похоже на то. Только терминатор последним идёт в посылке, и это один байт, так что придётся ставить <LF> \ \r \ 0xA, если только это не настраивается на приборе. Ну, а <CR> можно потом программно из строки удалить.
ARN1_1 писал(а): 14 мар 2025, 14:26Сам :vi: нашел на каком-то форуме, когда искал решение своей проблемы:
Это однократное чтение, вам нужно читать в цикле, как выше уже сказали. Возьмите за основу пример Continuous Serial Write and Read.vi.
Borjomy_1

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

Re: Marathon MR1S и VISA

Сообщение Borjomy_1 »

Использование Bytes at Port все равно что goto в Сях. Один байт передается при скорости 38к за 0.3мс. Время выполнения опроса property в тысячи раз меньше. При этом штатно это значение обновляется с не пойми какой задержкой. И предугадать время, когда придёт заданное число байт невозможно. В результате перегрузка цп впустую.
Необходимо задавать на вход Visa Read константное значение, равное длине посылки. Функция сама выполнится, когда буфер накопит указанное число байт. Либо выйдет по таймауту. А таймаут вы задаете при конфигурировании. И его не надо делать больше секунды.
Аватара пользователя
ARN1_1
beginner
beginner
Сообщения: 37
Зарегистрирован: 20 янв 2023, 00:04
Версия LabVIEW: 2022 Q3
Благодарил (а): 14 раз
Контактная информация:

Re: Marathon MR1S и VISA

Сообщение ARN1_1 »

Ну-с.. начнем..

Во-первых, спасибо ещё раз всем за оказанную помощь, рекомендации.

Во-вторых, я вроде бы начал получать что-то адекватное от пирометра, использовал программу рекомендованную выше от dadreamer и ещё раз перепроверил подключение (Оказывается ошибся с (R)TxA (R)TxB подключением)
Снимок экрана 2025-03-19 110951.png
Хотел бы ещё у вас попросить помощи, а именно:
1) В документации я нашел пример описания протокола (приложения B) и видимо каждая буква, указанная в строке, означает определенный параметр?
Снимок экрана 2025-03-19 111734.png
2) Каким образом мне отправлять команды в пирометр? Мне нужно от него только текущие показатели температуры (режим по выбору) затем эти значения закинуть в XY Graph. Подскажите, пожалуйста, как это грамотно сделать. В таблице есть список команд, которые я кидал, но просто сделать условно Ctrl+С -> Ctrl+V не работает
Снимок экрана 2025-03-19 111721.png
MR1S_Manual_revc.pdf
(843.02 КБ) 17 скачиваний
(cтр. 103..110)
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3971
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2024
Благодарил (а): 13 раз
Поблагодарили: 138 раз
Контактная информация:

Re: Marathon MR1S и VISA

Сообщение dadreamer »

Насколько я понял (читал по-диагонали), датчик может работать в двух режимах: poll - запрос-ответ и burst - непрерывная передача. Не знаю, какой режим у вас сейчас выбран, но проще начать с первого, а потом, если надо будет увеличить производительность, перейти на второй. Дальше, может быть два варианта установки и подключения: standalone (один датчик) и multi-drop (несколько датчиков объединяются в сеть, работают в параллель). Точно так же, проще начать с одного датчика.

Запрос температуры целевого объекта - надо отправить символ T в ASCII-формате (обычной строкой). Приводится пример:
001?T
Прибор должен ответить так:
001!T1225
"1" - это сетевой адрес, не знаю, надо ли его указывать в standalone сетапе или только в multi-drop, пробуйте и так, и так. Последние 4 цифры, естественно, будут отличаться, это текущее значение температуры. А так, лучше бы, конечно, сначала потренироваться на заводской софтине, что описана в документации. Там и графики строятся, и куча всяких настроек.
Вложения
2025-03-20_18-06-53.jpg
Аватара пользователя
jane_wild

Gold
leader
leader
Сообщения: 512
Зарегистрирован: 30 июн 2016, 02:11
Награды: 1
Версия LabVIEW: 2020
Благодарил (а): 98 раз
Поблагодарили: 19 раз
Контактная информация:

Re: Marathon MR1S и VISA

Сообщение jane_wild »

dadreamer писал(а): 20 мар 2025, 16:09 лучше бы, конечно, сначала потренироваться на заводской софтине, что описана в документации
А заодно снифером посмотреть что там за комманды софтина передает, думаю 14 дней пробного периода будет достаточно понять что к чему. Я прямо сейчас при помощи его с измерителем потока разбираюсь. Ну очень сильно помогает.
Life is short. Smile while you still have teeth!
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Для чайников»