ещё раз о FeedBack node
-
- assistant
- Сообщения: 119
- Зарегистрирован: 16 фев 2009, 12:55
- Версия LabVIEW: 8.6
- Контактная информация:
ещё раз о FeedBack node
Хорошего дня.
Подскажите, пожалуйста, как работает Feedback node в режиме global initialize? С локальным использованием feedback node в циклах всё вроде понятно.
А как работает глобальный feedback node?
Вопрос вот к чему: два разных модуля используют clone одной и той же функции, внутри которой есть глобальный feedback node,
начальное значение feedback node при каждом вызове клона будет глобальным ? или у каждого клона будет своё значение feedback node?
и какое будет поведение feedback node в случае, есть есть общий класс, с методом внутри которого есть feedback node в режиме global initialize. И есть два класса, наследника, которые
со своими значениями вызывают общий метод класса, у каждого будет собственное значение на входе feedback node или глобально на оба модуля?
Спасибо.
Подскажите, пожалуйста, как работает Feedback node в режиме global initialize? С локальным использованием feedback node в циклах всё вроде понятно.
А как работает глобальный feedback node?
Вопрос вот к чему: два разных модуля используют clone одной и той же функции, внутри которой есть глобальный feedback node,
начальное значение feedback node при каждом вызове клона будет глобальным ? или у каждого клона будет своё значение feedback node?
и какое будет поведение feedback node в случае, есть есть общий класс, с методом внутри которого есть feedback node в режиме global initialize. И есть два класса, наследника, которые
со своими значениями вызывают общий метод класса, у каждого будет собственное значение на входе feedback node или глобально на оба модуля?
Спасибо.
-
Kosist
- expert
- Сообщения: 1236
- Зарегистрирован: 21 фев 2011, 23:44
- Награды: 2
- Версия LabVIEW: 2013-2020
- Благодарил (а): 23 раза
- Поблагодарили: 30 раз
- Контактная информация:
Re: ещё раз о FeedBack node
Вначале, нужно понимать что виайка с FGV - functional global variable (неинициализированный шифт регистр) или Feedback Node не должна быть реетрантной.
Используя одну и ту же функцию с FGV (или же Feedback Node), значение FGV будет сохраняться.
В случае классов - каждая инстанция классов, если выполняет "родительский" метод, будет разделять значение тоже. Как пример - высылаю скрин простого эксперимента.
Кстати, иногда возможен "пропуск" выполнения такой виайки с FGV - это видно по значениям.
Используя одну и ту же функцию с FGV (или же Feedback Node), значение FGV будет сохраняться.
В случае классов - каждая инстанция классов, если выполняет "родительский" метод, будет разделять значение тоже. Как пример - высылаю скрин простого эксперимента.
Кстати, иногда возможен "пропуск" выполнения такой виайки с FGV - это видно по значениям.
Мы делили апельсин - много наших полегло...
-
IvanLis
- guru
- Сообщения: 5467
- Зарегистрирован: 02 дек 2009, 17:44
- Награды: 7
- Версия LabVIEW: 2015, 2016
- Откуда: СССР
- Благодарил (а): 28 раз
- Поблагодарили: 88 раз
Re: ещё раз о FeedBack node
РеентерабельностьKayfolom писал(а):Спасибо.
А, что такое реетрантной? и как дело у FGV обстоит с clone vi?
Знание нескольких принципов освобождает от знания многих фактов!
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Правила форума
Как добавить в сообщение картинку или файл
Конвертация / версий (форматов) VI
Как правильно задать вопрос...
Re: ещё раз о FeedBack node
Имеется subVI который крутится внутри while loopa main.vi
Проблема в том что после второго+ запуска фидбэк не обнуляется, а возвращает предыдущее значение.
Методом тыка настроить не удалось, подскажите как выставить все настройки так, чтобы происходило обнуление фидбэка при перезапуске main.vi, ибо на инглиш форумах не все настройки показывают и текст по теме на ингилише довольно трудно понимаю...
- Вложения
-
- img-2018-03-07-21-33-18.png (10.48 КБ) 7075 просмотров
-
- img-2018-03-07-21-33-05.png (9.39 КБ) 7075 просмотров
-
- leader
- Сообщения: 932
- Зарегистрирован: 17 янв 2016, 15:02
- Награды: 1
- Версия LabVIEW: 6.1,8.5,20
Re: ещё раз о FeedBack node
Поставьте "галку" на пункт меню Initialize On First Call. Должен измениться значок инициализации * на значок функции First Call.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: ещё раз о FeedBack node
Ну, по идее, достаточно выставить Globally Initialize = Initialize On First Call и завести на инициализатор дефолтное значение (ноль, например). Сейчас проверил, вроде всё норм обнуляется.Sevas писал(а):Проблема в том что после второго+ запуска фидбэк не обнуляется, а возвращает предыдущее значение.
В саб-ВИ вот так: В мэйне вот так:
Re: ещё раз о FeedBack node
Выставил Initialize On First Call (это первое с чем начал экспериментировать до того как спрашивать)
По прежнему после первого запуска значение не реинициализируется
Мне кажется я перебрад уже все комбинации настроек, которые на скриншотах, но ничего не помогает.
Возможно глюк LV? Версия 2013
По прежнему после первого запуска значение не реинициализируется
Мне кажется я перебрад уже все комбинации настроек, которые на скриншотах, но ничего не помогает.
Возможно глюк LV? Версия 2013
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: ещё раз о FeedBack node
Sevas, сделайте из вашей программы пример, на котором проблема воспроизводится. Выложите сюда. Поглядим.
Re: ещё раз о FeedBack node
Попытался сделать отдельный проект, но в нем не воспроизводится (!), я сверил все настройки со своим проблемным subVI, всё один в один.
Ничего не понимаю теперь.
Я записал короткое видео проблемы - вряд ли поможет конечно, но может какую-то упущенную деталь заметите.
Суть в том, что когда самолет подкатывается к точке, то проблемный subVI добавляет к текущему номеру точки +1 (это всё работает), и самолет должен рулить к следующей.
Но как видно, после перезапуска номер точки не обнуляется.
_WDwmUOd-Zc
Ничего не понимаю теперь.
Я записал короткое видео проблемы - вряд ли поможет конечно, но может какую-то упущенную деталь заметите.
Суть в том, что когда самолет подкатывается к точке, то проблемный subVI добавляет к текущему номеру точки +1 (это всё работает), и самолет должен рулить к следующей.
Но как видно, после перезапуска номер точки не обнуляется.
_WDwmUOd-Zc
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: ещё раз о FeedBack node
А вы всегда программу через Abort останавливаете? Эта кнопка только для отладки и критических ситуаций (когда прога зависла, например). Рекомендуется останавливать программу отдельной кнопкой. Попробуйте, может, из-за этого и Feedback не обнуляется. Также попробуйте запустить в более новом , 16 или 17 (на тот случай, если это какой-то баг). Также попробуйте заменить FN на сдвиговый регистр. В саб-ВИ это делается так - заключаете весь код в While Loop, создаёте регистр на рамке цикла, подключаете, на терминал остановки цикла заводите True. Таким образом цикл всегда будет выполняться 1 раз, но регистр будет хранить информацию подобно FN (это, кстати, широко использовалось в ранних версиях , когда FN ещё не изобрели).Sevas писал(а):Я записал короткое видео проблемы - вряд ли поможет конечно, но может какую-то упущенную деталь заметите.
Re: ещё раз о FeedBack node
Остановка программы не Abortom не помогла.
Попробовал с shift register, но теперь получается что индекс вообще не увеличивается при совпадении условия. всё время 0.
Попробовал с shift register, но теперь получается что индекс вообще не увеличивается при совпадении условия. всё время 0.
Re: ещё раз о FeedBack node
Хотя нет, я поспешил. забыл подключить результат к терминалу.
Но всё тоже самое, после рестарта (не abortom, а правильно по кнопке) индекс по прежнему сохраняется от предыдущего состояния, даже с шифт регистром.
Но всё тоже самое, после рестарта (не abortom, а правильно по кнопке) индекс по прежнему сохраняется от предыдущего состояния, даже с шифт регистром.
-
dadreamer
- professor
- Сообщения: 3926
- Зарегистрирован: 17 фев 2013, 16:33
- Награды: 4
- Версия LabVIEW: 2.5 — 2022
- Благодарил (а): 11 раз
- Поблагодарили: 127 раз
- Контактная информация:
Re: ещё раз о FeedBack node
Sevas, чудеса в решете!
Есть такая функция в - First Call. Находится в палитре синхронизации. Попробуйте использовать её - если первый запуск (First Call = True), то используется начальное значение, иначе значение из регистра. Конечно, должно всё работать и без таких "велосипедов". Но у меня не так много идей. Да и потестить нечего.
Также можно попробовать сохранить проект под новым именем в новую локацию и по кусочку удалять элементы кода, упрощая, пока не останется минимум, воспроизводящий этот глюк. Потом залить сюда "на посмотреть".
Есть такая функция в - First Call. Находится в палитре синхронизации. Попробуйте использовать её - если первый запуск (First Call = True), то используется начальное значение, иначе значение из регистра. Конечно, должно всё работать и без таких "велосипедов". Но у меня не так много идей. Да и потестить нечего.
Также можно попробовать сохранить проект под новым именем в новую локацию и по кусочку удалять элементы кода, упрощая, пока не останется минимум, воспроизводящий этот глюк. Потом залить сюда "на посмотреть".
Re: ещё раз о FeedBack node
Сам удивляюсь этим чудесам.
Попробовал и такой велосипед. Прилагаю скриншоты.
Результат по прежнему неверный, не уверен, правда, что правильно подключил.
Попробовал и такой велосипед. Прилагаю скриншоты.
Результат по прежнему неверный, не уверен, правда, что правильно подключил.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
- 8 Ответы
- 687 Просмотры
-
Последнее сообщение Select
-
- 8 Ответы
- 2045 Просмотры
-
Последнее сообщение Eugene_Eugene