Сбой связи с Advantest TR6143

VISA, TCP/IP, USB, CAN, GPIB и подобные протоколы
Ответить
Аватара пользователя
zxc_pavel
developer
developer
Сообщения: 265
Зарегистрирован: 02 июн 2016, 12:07
Версия LabVIEW: 15
Благодарил (а): 9 раз
Поблагодарили: 30 раз
Контактная информация:

Сбой связи с Advantest TR6143

Сообщение zxc_pavel »

Здравствуйте, общаюсь по VISA с прибором Advantest 6143. У него нет библиотек, поэтому команды задаю сам.
Задаётся на нём различное напряжение, а считывается ток, потом в зависимости от тока опять задаётся напряжение (повышается или понижается). Прибор должен работать по 8 часов в день.
Периодически теряется связь с ним (минут через 20-30, по-разному). Ошибка в VISA Write пишет. Понять почему - пока не получается. Остановка программы и запуск не помогают. Помогает выход из Labview и запуск заново.

Вопрос: как на лету обработать ошибку и заново подключиться к прибору при обнаружении ошибки? (не выходя из программы). Скорее всего косяк у меня где-то, но все-таки, если я его не найду, хотелось бы перезапуском попробовать решить проблему.
Прикреплю часть кода (в LV16). Спасибо.
Вложения
Test_6143.vi
(120.86 КБ) 13 скачиваний
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5667
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 35 раз
Поблагодарили: 124 раза

Re: Сбой связи с Advantest TR6143

Сообщение IvanLis »

zxc_pavel писал(а): 27 янв 2026, 16:21 Вопрос: как на лету обработать ошибку и заново подключиться к прибору при обнаружении ошибки? (не выходя из программы). Скорее всего косяк у меня где-то, но все-таки, если я его не найду, хотелось бы перезапуском попробовать решить проблему.
Раскладывайте все на "конечный автомат" (state machine), примерный перечень состояний:
1. Инициализация / открытие сессии VISA
2. Отключение / закрытие сессии VISA
3. Конфигурирование прибора
4. Запись команды
5. Чтение полученных данных
6. Обработка ошибки
7. Очистка буфера VISA (там могут оставаться данные, которые уже не нужны)
8. Остановка программы

И Вы должны постоянно крутиться, в зависимости от результата полученного на каждом шаге, переход осуществляется на один из возможных. Т.е. в конце каждого шага нужно проверять результат и код ошибки, т.к. код ошибки влияет на то, что мы будем делать.

Например два цикла чтения: 1 -> 7 -> 3 -> 4 -> 5 -> 4 -> 5 -> 2 -> 8
А если возникла ошибка на втором цикле, то: 1 -> 7 -> 3 -> 4 -> 5 -> 4 -> 5 -> 6 -> 7 -> 3 -> 4 -> 5 -> 4 -> 5 -> 2 -> 8

Надеюсь понятно объяснил...
Ну и желательно разнести в параллельные циклы GUI и работу с портом, получится "событийно управляемый конечный автомат".
И подумайте, есть ли смысл каждую итерацию писать диапазоны и значения, если они не менялись... я бы делал запись при изменении, а остальное время только считывал данные.
Аватара пользователя
zxc_pavel
developer
developer
Сообщения: 265
Зарегистрирован: 02 июн 2016, 12:07
Версия LabVIEW: 15
Благодарил (а): 9 раз
Поблагодарили: 30 раз
Контактная информация:

Re: Сбой связи с Advantest TR6143

Сообщение zxc_pavel »

Здравствуйте. Спасибо за ответ. Да у меня в целом примерно так и реализовано. Естественно, GUI отдельно от опроса приборов идёт. Тут просто пример, я не хотел целиком проект скидывать (там >200 VIs).
Между циклами связь по очередям, всё более менее нормально.
2801.png
int.png
IvanLis писал(а): 27 янв 2026, 22:03 7. Очистка буфера VISA (там могут оставаться данные, которые уже не нужны)
За этот совет спасибо, попробую (не чистил ничего).
Аватара пользователя
IvanLis

Activity Professionalism Tutorials Gold Man of the year 2012
Автор
guru
guru
Сообщения: 5667
Зарегистрирован: 02 дек 2009, 17:44
Награды: 7
Версия LabVIEW: 2015, 2016
Откуда: СССР
Благодарил (а): 35 раз
Поблагодарили: 124 раза

Re: Сбой связи с Advantest TR6143

Сообщение IvanLis »

zxc_pavel писал(а): 28 янв 2026, 08:11 Здравствуйте. Спасибо за ответ. Да у меня в целом примерно так и реализовано. Естественно, GUI отдельно от опроса приборов идёт. Тут просто пример, я не хотел целиком проект скидывать (там >200 VIs).
Между циклами связь по очередям, всё более менее нормально.
Я не знаю, что у Вас внутри, может там выполняются проверки (нужно это делать или нет) прежде чем выполнять какую-то функцию.
Снимок экрана от 2026-01-28 18-00-30.png
Снимок экрана от 2026-01-28 18-00-30.png (7.69 КБ) 37 просмотров
Я немного не такой модели программирования говорил.
Но если Вас все устраивает и все работает :dntknw:
zxc_pavel писал(а): 28 янв 2026, 08:11 За этот совет спасибо, попробую (не чистил ничего).
По хорошему, Вы работаете с аппаратными регистрами и там могут оставаться данные.
По этому желательно при инициализации делать очистку буфера (VISA Clear), ну и после возникновения ошибки, перед тем как что-то начинать делать.
Ответить

Вернуться в «Коммуникация с приборами»