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

- Сообщения: 5667
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 35 раз
- Поблагодарили: 124 раза
Re: Сбой связи с Advantest TR6143
Раскладывайте все на "конечный автомат" (state machine), примерный перечень состояний:zxc_pavel писал(а): 27 янв 2026, 16:21 Вопрос: как на лету обработать ошибку и заново подключиться к прибору при обнаружении ошибки? (не выходя из программы). Скорее всего косяк у меня где-то, но все-таки, если я его не найду, хотелось бы перезапуском попробовать решить проблему.
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 и работу с портом, получится "событийно управляемый конечный автомат".
И подумайте, есть ли смысл каждую итерацию писать диапазоны и значения, если они не менялись... я бы делал запись при изменении, а остальное время только считывал данные.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение Картинку или Файл
Как добавить в сообщение Видео
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение Картинку или Файл
Как добавить в сообщение Видео
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
- zxc_pavel
- developer

- Сообщения: 265
- Зарегистрирован: 02 июн 2016, 12:07
- Версия LabVIEW: 15
- Благодарил (а): 9 раз
- Поблагодарили: 30 раз
- Контактная информация:
Re: Сбой связи с Advantest TR6143
Здравствуйте. Спасибо за ответ. Да у меня в целом примерно так и реализовано. Естественно, GUI отдельно от опроса приборов идёт. Тут просто пример, я не хотел целиком проект скидывать (там >200 VIs).
Между циклами связь по очередям, всё более менее нормально.
Между циклами связь по очередям, всё более менее нормально.
За этот совет спасибо, попробую (не чистил ничего).IvanLis писал(а): 27 янв 2026, 22:03 7. Очистка буфера VISA (там могут оставаться данные, которые уже не нужны)
-
IvanLis
- guru

- Сообщения: 5667
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 35 раз
- Поблагодарили: 124 раза
Re: Сбой связи с Advantest TR6143
Я не знаю, что у Вас внутри, может там выполняются проверки (нужно это делать или нет) прежде чем выполнять какую-то функцию. Я немного не такой модели программирования говорил.zxc_pavel писал(а): 28 янв 2026, 08:11 Здравствуйте. Спасибо за ответ. Да у меня в целом примерно так и реализовано. Естественно, GUI отдельно от опроса приборов идёт. Тут просто пример, я не хотел целиком проект скидывать (там >200 VIs).
Между циклами связь по очередям, всё более менее нормально.
Но если Вас все устраивает и все работает
По хорошему, Вы работаете с аппаратными регистрами и там могут оставаться данные.
По этому желательно при инициализации делать очистку буфера (VISA Clear), ну и после возникновения ошибки, перед тем как что-то начинать делать.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение Картинку или Файл
Как добавить в сообщение Видео
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение Картинку или Файл
Как добавить в сообщение Видео
Конвертация / версий (форматов) VI
Как правильно задать вопрос...