Как определить что зациклилась VI

Простейшие вопросы в области инженерной разработки
Ответить
Аватара пользователя
kapusta1986
assistant
assistant
Сообщения: 103
Зарегистрирован: 14 июн 2014, 13:56
Версия LabVIEW: 2014, 2015
Откуда: Караганда
Контактная информация:

Как определить что зациклилась VI

Сообщение kapusta1986 »

Всем привет! :drink:

Назрел такой вопрос, бывает ситуации когда :vi: "зависает", зацикливается на какой то операции. Я обычно ставлю внутри данного цикла какой то счетчик, при перевыполнении которого принудительно останавливаю vi. А есть еще какие нибудь решения, которые предотвращают "зависания" проекта в целом?


Спасибо!
Borjomy_1

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

Re: Как определить что зациклилась VI

Сообщение Borjomy_1 »

Вам надо что-то менять в стиле программирования..
Приведите пример, каким образом :vi: может зацикливаться?
Аватара пользователя
Kosist

Activity Gold
expert
expert
Сообщения: 1236
Зарегистрирован: 21 фев 2011, 23:44
Награды: 2
Версия LabVIEW: 2013-2020
Благодарил (а): 23 раза
Поблагодарили: 30 раз
Контактная информация:

Re: Как определить что зациклилась VI

Сообщение Kosist »

Для cRIO можно использовать сторожевые таймеры (watchdogs), и перезагружать систему при ее "зависании"...
Я использую просто таймеры - т.к. все равно известно, сколько времени при нормальном выполнении занимает та или иная операция, и поэтому легко определить значение таймера, по которому процесс нужно перезапустить... Например, считывание баркода - если заняло больше 10 секунд, значит, что-то не так: или баркода нету, или что-то со сканером, и т.д...
А в случае проекта в целом - зависит от архитектуры. Если у Вас зависнет целый проект, то сам себя он уже не перезапустит; нужен "посторонний наблюдатель", которому главный процесс будет слать "пинговые" сообщения о том, что он жив; а если сообщения не были получены, процесс будет перезапущен...
Мы делили апельсин - много наших полегло...
Аватара пользователя
kapusta1986
assistant
assistant
Сообщения: 103
Зарегистрирован: 14 июн 2014, 13:56
Версия LabVIEW: 2014, 2015
Откуда: Караганда
Контактная информация:

Re: Как определить что зациклилась VI

Сообщение kapusta1986 »

Спасибо Вам большое! Извиняюсь, что поздно написал. Был в отъезде. Вообщем то что я спрашивал решил таким образом, я накидал примерный образец. В целом все работает... Объяснять виайку думаю лишнее.... Описал Kosist, за что ему огромное спасибо!
Вложения
watchdog.png
Аватара пользователя
IvanLis

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

Re: Как определить что зациклилась VI

Сообщение IvanLis »

Зацикливание и зависание, это разные понятия, причины, последствия и способы борьбы.
Как уже писал Borjomy, причины зацикливания, это алгоритмическая ошибка, бороться можно по разному, Ваш вариант будет верный не всегда.
С зависаниями на много сложнее, наиболее действенный способ, это использование аппаратного WatchDogs, о чем писал Kosist.
Аватара пользователя
kapusta1986
assistant
assistant
Сообщения: 103
Зарегистрирован: 14 июн 2014, 13:56
Версия LabVIEW: 2014, 2015
Откуда: Караганда
Контактная информация:

Re: Как определить что зациклилась VI

Сообщение kapusta1986 »

Спасибо Вам! Я приблизительно понял о чем речь https://zone.ni.com/reference/en-XX/hel ... dog_whack/
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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