Отслеживание события в цикле

Простейшие вопросы в области инженерной разработки
Ответить
Ella

Activity
assistant
assistant
Сообщения: 147
Зарегистрирован: 20 авг 2009, 18:08
Награды: 1
Версия LabVIEW: 15
Контактная информация:

Отслеживание события в цикле

Сообщение Ella »

Как сделать попроще, чтобы Event Structure отслеживала изменение какого-нибудь параметра в цикле? Ну как в этом примере, значения Waveform Chat меняется, и по этому событию должна загореться лампочка.
Вложения
Event.vi
(10.44 КБ) 114 скачиваний
LV4.JPG
Аватара пользователя
Eugen Graf

Activity Professionalism Silver Black
guru
guru
Сообщения: 6502
Зарегистрирован: 13 ноя 2007, 02:20
Награды: 4
Версия LabVIEW: 2009
Откуда: Saarbrücken
Контактная информация:

Re: Отслеживание события в цикле

Сообщение Eugen Graf »

Через Property->Value(Signalling)
AndreyDmitriev

Activity Professionalism Tutorials Gold Black
VIP
VIP
Сообщения: 1327
Зарегистрирован: 03 фев 2010, 00:42
Награды: 6
Версия LabVIEW: 6.1 - 2024
Откуда: Германия
Благодарил (а): 1 раз
Поблагодарили: 37 раз
Контактная информация:

Re: Отслеживание события в цикле

Сообщение AndreyDmitriev »

Ну и Event структуру не забываем в цикл завернуть, иначе она сработает однократно. Ну и лампочку кто-то гасить должен - сама она не погаснет, разумеется.
Ella

Activity
assistant
assistant
Сообщения: 147
Зарегистрирован: 20 авг 2009, 18:08
Награды: 1
Версия LabVIEW: 15
Контактная информация:

Re: Отслеживание события в цикле

Сообщение Ella »

Вопрос ведь от чайника... Вот так - как-то не так...?
Вложения
LV5.JPG
Event.vi
(11.9 КБ) 98 скачиваний
Аватара пользователя
Oleg B.

Activity Professionalism
leader
leader
Сообщения: 674
Зарегистрирован: 25 сен 2011, 11:30
Награды: 2
Версия LabVIEW: 5 .. 2021
Откуда: Israel
Контактная информация:

Re: Отслеживание события в цикле

Сообщение Oleg B. »

Ella писал(а):Вопрос ведь от чайника... Вот так - как-то не так...?
Вот именно - как-то не так.....
Вложения
Event2.vi
LV 8.5
(14.82 КБ) 133 скачивания
veni, vidi, phallomorphi
Ella

Activity
assistant
assistant
Сообщения: 147
Зарегистрирован: 20 авг 2009, 18:08
Награды: 1
Версия LabVIEW: 15
Контактная информация:

Re: Отслеживание события в цикле

Сообщение Ella »

Oleg B. :thank: Будем учиться....
Rayfat
interested
interested
Сообщения: 5
Зарегистрирован: 18 май 2019, 22:16
Версия LabVIEW: 8.5;18
Контактная информация:

Re: Отслеживание события в цикле

Сообщение Rayfat »

Понимаю что актуальность темы данным давно утрачена, но оставляю этот комментарий на случай, если кто-то наткнется на эту тему в поисках ответа на свой вопрос.
Oleg B. писал(а):
Ella писал(а):Вопрос ведь от чайника... Вот так - как-то не так...?
Вот именно - как-то не так.....
Выше приведенная реализация примера как минимум не корректна из-за лишнего цикла и дополнительных обрабатываемых событий, соответственно это влечет за собой загромождение схемы и лишнюю нагрузку на систему.
Все события и изменения на лицевой панели старайтесь обрабатывать в теле одного(основного) цикла программы. Прикрепил картинку и исходник своей реализации примера(вся программа состоит из 1го цикла и 2х событий).
Вложения
Картинка с примером
Картинка с примером
Event.vi
Исходник
(14.61 КБ) 78 скачиваний
Artem.spb

Activity Автор
professor
professor
Сообщения: 3391
Зарегистрирован: 31 июл 2011, 23:05
Награды: 2
Версия LabVIEW: 12-18
Благодарил (а): 49 раз
Поблагодарили: 172 раза
Контактная информация:

Re: Отслеживание события в цикле

Сообщение Artem.spb »

Rayfat писал(а):Понимаю что актуальность темы данным давно утрачена, но оставляю этот комментарий на случай, если кто-то наткнется на эту тему в поисках ответа на свой вопрос.
Oleg B. писал(а):
Ella писал(а):Вопрос ведь от чайника... Вот так - как-то не так...?
Вот именно - как-то не так.....
Выше приведенная реализация примера как минимум не корректна из-за лишнего цикла и дополнительных обрабатываемых событий, соответственно это влечет за собой загромождение схемы и лишнюю нагрузку на систему.
Все события и изменения на лицевой панели старайтесь обрабатывать в теле одного(основного) цикла программы. Прикрепил картинку и исходник своей реализации примера(вся программа состоит из 1го цикла и 2х событий).
ну у вас тоже не самый идеальный вариант.
Ставить лучше избегать таймаутов внутри событий.
К тому же в таком варианте параметр "частота" не корректен. Реальная частота будет в 2 раза ниже указанной: прогромама подождёт таймаут, а потом ещё раз сделает паузу.
Ну и кнопка стоп ВНЕ событий - тоже плохой тон. Корректно было бы добавить событие этой кнопки и выходить по нему.
Rayfat
interested
interested
Сообщения: 5
Зарегистрирован: 18 май 2019, 22:16
Версия LabVIEW: 8.5;18
Контактная информация:

Re: Отслеживание события в цикле

Сообщение Rayfat »

Artem.spb, Доброго времени суток вам! Полностью с вами согласен, хотя я и не претендовал на идеальный вариант моего исполнения(Я накидал исходник по-быстрому на коленке). :drink:
В общем ваше сообщение заставило меня задуматься и переделать эту миниатюрною программку.
Также поясню свои ошибки (Кстати вас тоже прошу, в будущем когда критикуете, поясняйте пожалуйста... Мы всё-таки в разделе "для чайников" пояснения людям здесь очень полезны могу быть. ).
Ставить лучше избегать таймаутов внутри событий.
Полностью согласен что подобных конструкций нужно избегать, ибо wait в структуре event могут "замораживать" работу программы(к примеру когда мы обновляем в основном цикле контроллеры но лицевой панели), особенно при частом срабатывании событий использование подобной конструкции намертво "заморозит" программу.
К тому же в таком варианте параметр "частота" не корректен. Реальная частота будет в 2 раза ниже указанной: программа подождёт таймаут, а потом ещё раз сделает паузу.
Здесь не соглашусь с вами, поясню почему.
Предположим у нас 1я итерация, структура event ждет заданное время(терминал timeout) событие, по истечению заданного времени начинается выполнятся тело селектора timeout структуры event, в котором генерируется событие, после выполнения тела селектора timeout 1я итерация заканчивается(все это время булевое значение индикатора не менялось).
Начинается 2я итерация, поскольку было сгенерировано событие в предыдущей итерации, то начинается выполнятся тело селектора "Waveform": Value Change структуры event, в теле этого селектора булевое значение инвертируется(хоть и не явно) и выполняется функция wait которая ждет заданное время затем 2я итерация заканчивается. Таким образом 2я итерация цикла по длительности времени равна первой.
На 3й итерации все повторяется в точности также как при 1й итерации, отсюда вывод четные итерации генерируют событие, нечетные их обрабатывают. Можете проверить в режиме дебаг.
Ну и кнопка стоп ВНЕ событий - тоже плохой тон. Корректно было бы добавить событие этой кнопки и выходить по нему.
Здесь я погорячился. Выход из программ корректен по прерыванию, спасет в случаи если программа не откликается. :)

Надеюсь информация приведенная в моем посту будет хоть кому-то полезна, файлик без использования функции wait и другими коррективами прикреплю к посту. Вообще забавно, сколько смысла может нести такая мелкая программка.
Вложения
CODE.vi
(15.47 КБ) 78 скачиваний
Аватара пользователя
Kosist

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

Re: Отслеживание события в цикле

Сообщение Kosist »

Вот именно - у Вас между обновлениями булевского индикатор происходит две итерации. А должна обновляться каждую итерацию, ибо смысл потом иметь частоту обновления?
А вообще, если нужно определить изменилось ли какое-то значение, нужно использовать push, а не pull. Т.е. отслеживать данные на той частоте, на которой они генерятся. Для этого можно использовать User Event, если нужно использовать в том же цикле Event Structure.
Generate numbers.png
Мы делили апельсин - много наших полегло...
Rayfat
interested
interested
Сообщения: 5
Зарегистрирован: 18 май 2019, 22:16
Версия LabVIEW: 8.5;18
Контактная информация:

Re: Отслеживание события в цикле

Сообщение Rayfat »

Kosist, важно сделать тогда уточнение о какой частоте мы говорим, вы говорите о частоте повторений, а я о частоте изменений. На практике часто бывает необходимость использовать как и ту так и другую.
Для частоты повторений в моем примере вводимая частота должна быть в 2 раза больше.
Ответить

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