Всем привет!
Назрел такой вопрос, бывает ситуации когда "зависает", зацикливается на какой то операции. Я обычно ставлю внутри данного цикла какой то счетчик, при перевыполнении которого принудительно останавливаю vi. А есть еще какие нибудь решения, которые предотвращают "зависания" проекта в целом?
Спасибо!
Как определить что зациклилась VI
- kapusta1986
- assistant
- Сообщения: 103
- Зарегистрирован: 14 июн 2014, 13:56
- Версия LabVIEW: 2014, 2015
- Откуда: Караганда
- Контактная информация:
-
- doctor
- Сообщения: 2211
- Зарегистрирован: 28 июн 2012, 09:32
- Награды: 3
- Версия LabVIEW: 2009..2020
- Откуда: город семи холмов
- Благодарил (а): 27 раз
- Поблагодарили: 27 раз
Re: Как определить что зациклилась VI
Вам надо что-то менять в стиле программирования..
Приведите пример, каким образом может зацикливаться?
Приведите пример, каким образом может зацикливаться?
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: Как определить что зациклилась VI
Для cRIO можно использовать сторожевые таймеры (watchdogs), и перезагружать систему при ее "зависании"...
Я использую просто таймеры - т.к. все равно известно, сколько времени при нормальном выполнении занимает та или иная операция, и поэтому легко определить значение таймера, по которому процесс нужно перезапустить... Например, считывание баркода - если заняло больше 10 секунд, значит, что-то не так: или баркода нету, или что-то со сканером, и т.д...
А в случае проекта в целом - зависит от архитектуры. Если у Вас зависнет целый проект, то сам себя он уже не перезапустит; нужен "посторонний наблюдатель", которому главный процесс будет слать "пинговые" сообщения о том, что он жив; а если сообщения не были получены, процесс будет перезапущен...
Я использую просто таймеры - т.к. все равно известно, сколько времени при нормальном выполнении занимает та или иная операция, и поэтому легко определить значение таймера, по которому процесс нужно перезапустить... Например, считывание баркода - если заняло больше 10 секунд, значит, что-то не так: или баркода нету, или что-то со сканером, и т.д...
А в случае проекта в целом - зависит от архитектуры. Если у Вас зависнет целый проект, то сам себя он уже не перезапустит; нужен "посторонний наблюдатель", которому главный процесс будет слать "пинговые" сообщения о том, что он жив; а если сообщения не были получены, процесс будет перезапущен...
Мы делили апельсин - много наших полегло...
- kapusta1986
- assistant
- Сообщения: 103
- Зарегистрирован: 14 июн 2014, 13:56
- Версия LabVIEW: 2014, 2015
- Откуда: Караганда
- Контактная информация:
Re: Как определить что зациклилась VI
Спасибо Вам большое! Извиняюсь, что поздно написал. Был в отъезде. Вообщем то что я спрашивал решил таким образом, я накидал примерный образец. В целом все работает... Объяснять виайку думаю лишнее.... Описал Kosist, за что ему огромное спасибо!
-
IvanLis
- guru
- Сообщения: 5463
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 86 раз
Re: Как определить что зациклилась VI
Зацикливание и зависание, это разные понятия, причины, последствия и способы борьбы.
Как уже писал Borjomy, причины зацикливания, это алгоритмическая ошибка, бороться можно по разному, Ваш вариант будет верный не всегда.
С зависаниями на много сложнее, наиболее действенный способ, это использование аппаратного WatchDogs, о чем писал Kosist.
Как уже писал Borjomy, причины зацикливания, это алгоритмическая ошибка, бороться можно по разному, Ваш вариант будет верный не всегда.
С зависаниями на много сложнее, наиболее действенный способ, это использование аппаратного WatchDogs, о чем писал Kosist.
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
- kapusta1986
- assistant
- Сообщения: 103
- Зарегистрирован: 14 июн 2014, 13:56
- Версия LabVIEW: 2014, 2015
- Откуда: Караганда
- Контактная информация:
Re: Как определить что зациклилась VI
Спасибо Вам! Я приблизительно понял о чем речь https://zone.ni.com/reference/en-XX/hel ... dog_whack/
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 1 Ответы
- 290 Просмотры
-
Последнее сообщение Borjomy_1