Marathon MR1S и VISA

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

Re: Marathon MR1S и VISA

Сообщение ARN1_1 »

Запрос температуры целевого объекта - надо отправить символ T в ASCII-формате (обычной строкой). Приводится пример:
001?T
Прибор должен ответить так:
001!T1225
"1" - это сетевой адрес, не знаю, надо ли его указывать в standalone сетапе или только в multi-drop, пробуйте и так, и так. Последние 4 цифры, естественно, будут отличаться, это текущее значение температуры.
В своем :vi: при подаче команды у меня вылетает LabVIEW и крашится OC :shok: Я такое впервые вижу вообще
А так, лучше бы, конечно, сначала потренироваться на заводской софтине, что описана в документации. Там и графики строятся, и куча всяких настроек.
Заводскую софтину не смог поставить, так как он просто не запускается на 11 Windows, поэтому придется скачивать эмулятор..

Я решил попробовать поработать с тем что есть, но сталкиваюсь с рядом проблем:

1) Как можно реализовать через VISA чтобы был сформирован набор пакетов до стопового символа и если возникают какие-либо ошибки, то эта ошибка просто игнорировалась, ибо у меня из-за проскоков графически все очень неприятно видно
Снимок экрана 2025-03-20 100026.png
2) Ещё есть проблема: Видимо из-за того, что я много считываю данных с пирометра у меня есть задержка между физическим показателем пирометра и показателями в LabVIEW
Снимок экрана 2025-03-27 091358.png
VISA.vi
(27.38 КБ) 48 скачиваний
ujin1
developer
developer
Сообщения: 256
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 19 раз
Поблагодарили: 40 раз
Контактная информация:

Re: Marathon MR1S и VISA

Сообщение ujin1 »

Правильная строка насколько видно
C T2031 S1.000 I046
Нужно первым фильтром выделить достоверную последовательность символов.
Признаки достоверной последовательности
C, пробел, T, несколько цифровых символов, пробел и тд.
Достаточно много признаков достоверного пакета.
Длина пакета переменная или постоянная?
Если пришел недостоверный пакет или не распознался параметр можно либо игнорировать либо заменить на NaN. Можно использовать выход ошибки
Безымянный.png
Безымянный.png (7.54 КБ) 1193 просмотра
Изображение
ujin1
developer
developer
Сообщения: 256
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 19 раз
Поблагодарили: 40 раз
Контактная информация:

Re: Marathon MR1S и VISA

Сообщение ujin1 »

Можно целиком строку распарсить. При ошибке в строке выход error будет с ошибкой.
Безымянный1.png
Безымянный1.png (10.39 КБ) 1179 просмотров
В первом варианте двойной слеш означает один пробел
Во втором варианте пробелов может быть несколько или не быть совсем.
Так же количество символов %d может быть разное (переменная длина).
Изображение
ujin1
developer
developer
Сообщения: 256
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 19 раз
Поблагодарили: 40 раз
Контактная информация:

Re: Marathon MR1S и VISA

Сообщение ujin1 »

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

Re: Marathon MR1S и VISA

Сообщение ARN1_1 »

ujin1 писал(а): 27 мар 2025, 19:20 Можно целиком строку распарсить. При ошибке в строке выход error будет с ошибкой.
В первом варианте двойной слеш означает один пробел
Во втором варианте пробелов может быть несколько или не быть совсем.
Так же количество символов %d может быть разное (переменная длина).
Спасибо ujin1 за предоставленные примеры!

Но все же это не помогло решить мою проблему. Строка C\\sT%d\\sS%f\\sl%d выкидывает меня в ошибку "Possible reason(s): LabVIEW: Scan failed. The input string does not contain data in the expected format"

То что срабатывает, так это C\sT%d\sS%f\sl%d. Так как от VISA у меня поступает кривой пакет (т.е может быть CT2560 S1.000 I045, C25602560 S1.000 I045, 5, C T2559 559 S1.000 I045 и т.д) это всё равно отображается на моем графике.

Возможно, я неправильно интегрировал вашу идею под свой код..
Снимок экрана 2025-04-01 104904.png
Снимок экрана 2025-04-01 104949.png
ujin1 писал(а): 27 мар 2025, 20:14 Можно в конце добавить проверку наличия символа пробел, или возврат каретки или перевод строки.
Если строка найдена то обнулить источник.
Не могли бы вы свой последний результат более подробно объяснить что к чему ? :dntknw:
ujin1
developer
developer
Сообщения: 256
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 19 раз
Поблагодарили: 40 раз
Контактная информация:

Re: Marathon MR1S и VISA

Сообщение ujin1 »

ARN1_1 писал(а): 01 апр 2025, 10:53
ujin1 писал(а): 27 мар 2025, 19:20 Можно целиком строку распарсить. При ошибке в строке выход error будет с ошибкой.
В первом варианте двойной слеш означает один пробел
Во втором варианте пробелов может быть несколько или не быть совсем.
Так же количество символов %d может быть разное (переменная длина).
Спасибо ujin1 за предоставленные примеры!

Но все же это не помогло решить мою проблему. Строка C\\sT%d\\sS%f\\sl%d выкидывает меня в ошибку "Possible reason(s): LabVIEW: Scan failed. The input string does not contain data in the expected format"

То что срабатывает, так это C\sT%d\sS%f\sl%d. Так как от VISA у меня поступает кривой пакет (т.е может быть CT2560 S1.000 I045, C25602560 S1.000 I045, 5, C T2559 559 S1.000 I045 и т.д) это всё равно отображается на моем графике.

Возможно, я неправильно интегрировал вашу идею под свой код..
Снимок экрана 2025-04-01 104904.png
Снимок экрана 2025-04-01 104949.png

ujin1 писал(а): 27 мар 2025, 20:14 Можно в конце добавить проверку наличия символа пробел, или возврат каретки или перевод строки.
Если строка найдена то обнулить источник.
Не могли бы вы свой последний результат более подробно объяснить что к чему ? :dntknw:
C\\sT%d\\sS%f\\sI%d
Этот формат у меня тоже не работает, хотя проверял работал.

C\sT%d\sS%f\sI%d%[\s,\n,\r]
C - ищется символ C если нет ошибка пакета
\s - пробелы 1-несколько если нет ошибка пакета
T - символ T
%d - целочисленная переменная любой длины от 0 до максимум в формате
\s - пробелы
S - символ S
%f - вещественная переменная
\s - пробелы
I - символ I
%d - целочисленная переменная любой длины от 0 до максимум в формате
%[\s,\n,\r] - переменная пробел или конец строки (0A) или возврат каретки (0D)

В руководстве Target Temperature T (символ T) в поле формат nnnn. LEGAL VALUES может быть только 4 символа
следовательно T%d можно заменить на T%4d (от 1 до 4 символа)
C\sT%4d\sS%f\sI%d%[\s,\n,\r]

Но и с форматом C\sT%d\sS%f\sI%d любая из нижеперечесленных строк дает ошибку
CT2560 S1.000 I045
C25602560 S1.000 I045
5
C T2559 559 S1.000 I045
Изображение
ujin1
developer
developer
Сообщения: 256
Зарегистрирован: 06 ноя 2020, 15:37
Версия LabVIEW: 19
Благодарил (а): 19 раз
Поблагодарили: 40 раз
Контактная информация:

Re: Marathon MR1S и VISA

Сообщение ujin1 »

ARN1_1 писал(а): 01 апр 2025, 10:53 это всё равно отображается на моем графике.
Потому что график отображается и значения на него поступают всегда вне зависимости от правильности пакета.
А нужно сделать чтобы значения из правильного пакета поступали в график а из неправильного не поступали. Например так
String.png
String.png (18.23 КБ) 872 просмотра
Изображение
Borjomy_1

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

Re: Marathon MR1S и VISA

Сообщение Borjomy_1 »

Если нормально считывать, то неправильных пакетов не будет.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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