03-03-2026 02:05 AM
Здравствуйте, хочу обратиться за помощью с моим кодом по управлению расходомером.
Я использую принцип State Machine для управления, мониторингом прибора Bronkhorst EL-FLOW.
У меня на данный момент реализовано 3 состояния: run, initialization, start, close. (Да, названия специфичные)
В событие run - идет обработка с правильным подключением по RS-232.
Далее идет событие по нажатию кнопок: initialization, start
В событие initialization пользователь сможет посмотреть и написать свои команды для расходомера (пока это больше тестовый кейс для меня)
В событие start уже идет управление прибором (подается сигнал управления и получение графической информации)
Столкнулся с проблемой:
1) Во-первых, я не совсем понимаю, как можно ловить ошибку, вызванную VISA при отключение прибора (назовем это аварийной ситуацией). Одно дело вылавливать через bundle выходные ошибки блоков, обработать их в Error/No Error и посылать очередь на перезапуск кода, но у меня есть SubVI который используется для парсинга адресов + обработка в основном коде. И если в моменте работы программы выключить прибор, то программа просто зависнет, но я бы хотел чтобы она ушла в состояние RECOVER и попытался переподключиться (условно за 2-3 минуты)
2) Во-вторых, бывает случаи когда переходы между состояниями зависают и я начинаю прыгать из одного в другое (как будто начинается гонка по событиям)
Если вы дадите мне рекомендации, я буду очень благодарен вам
Заранее благодарю за ответ
(Код и SubVI тоже предоставляю)