Реализация Калмана Фильтра в LabView

Захват, обработка и генерирование сигнала
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Реализация Калмана Фильтра в LabView

Сообщение dadreamer »

Borjomy_1 писал(а):Функция нереентрантная
А как вы это определили? Вообще, что мешает использовать её в качестве реентерантной?
Borjomy_1 писал(а):невозможно получить доступ даже к передней панели VI
Это XNode. Добавьте в LabVIEW.ini строчку XNodeWizardMode=True, затем ПКМ на VI -> XNodeWizardMenu -> Generated Code. Насколько я вижу, сам :vi: SIM Disc KF Pred and Corr with Pred Gain with Checking Direct LV.vi и все его SubVI имеют параметр Reentrant execution: Share clones between instances.

Из прочих вариантов (хотя, имхо, это излишне):
- сделать реентерантную :vi: -обёртку, куда поместить Discrete Kalman Filter;
- сделать отдельное приложение, вызывающее этот фильтр (отдельный процесс - отдельная область памяти);
- попробовать сторонние реализации фильтра (на худой конец).
Konstantin Sumenko писал(а):Фильтр калмана... забавный фильтр. Я нашел готовое решение, но его не проверял: http://home.cfl.rr.com/csduffey/Kalman.zip
Обновил ссылку:
Cesium Kalman Simulation.llb
lv7.1
(203.35 КБ) 203 скачивания
Оригинал лежит здесь.
Borjomy_1

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

Re: Реализация Калмана Фильтра в LabView

Сообщение Borjomy_1 »

Это XNode. Добавьте в LabVIEW.ini строчку XNodeWizardMode=True, затем ПКМ на VI -> XNodeWizardMenu -> Generated Code.
Ок, попробую в понедельник.
Насколько я вижу, сам :vi: SIM Disc KF Pred and Corr with Pred Gain with Checking Direct LV.vi и все его SubVI имеют параметр Reentrant execution: Share clones between instances.
По факту два фильтра, запущенные параллельно, влияют друг на друга. Мало того, последовательное друг за другом выполнение вызывает ошибку (если я правильно понял - у коллеги :labview: падает)
сделать реентерантную :vi: -обёртку, куда поместить Discrete Kalman Filter;
Пробовали - не работает (и не должна работать, вообще-то, если в :vi: сохраняются локальные значения), точнее ситуация не меняется, так-же, как и в комментарии выше
попробовать сторонние реализации фильтра (на худой конец).
Хорошая идея, пытаемся разобраться в одной из реализаций.
Borjomy_1

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

Re: Реализация Калмана Фильтра в LabView

Сообщение Borjomy_1 »

Решение проблемы в лоб, предложенное dadreamer,
Добавьте в LabVIEW.ini строчку XNodeWizardMode=True, затем ПКМ на VI -> XNodeWizardMenu -> Generated Code.
решает проблему, причем, судя по всему, для ВСЕГО пакета Control Design & Simulation. Ибо обнаруживается, что :vi:- обертка функций не является реентрантной, посему реентрантность самой функции ничего не дает. Это надо иметь в виду и считать багом...
Аватара пользователя
dadreamer

Activity Professionalism Автор
professor
professor
Сообщения: 3926
Зарегистрирован: 17 фев 2013, 16:33
Награды: 4
Версия LabVIEW: 2.5 — 2022
Благодарил (а): 11 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Реализация Калмана Фильтра в LabView

Сообщение dadreamer »

Вы имеете в виду, что вот эта обёртка нереентерантная?
2015-11-23_21-55-02.jpg
Потому что дальше уже идут реентерантные SubVI. Проверял на :labview: 2011 32-bit. Кстати, основной :vi: можно и без xnode использовать. Все эти инструменты лежат в C:\Program Files (x86)\National Instruments\LabVIEW 2011\vi.lib\Simulation\Estimation\Implementation\NILVSim Discrete Kalman Filter.llb, а XNode сделаны чисто для удобства, чтобы можно было интерактивно настроить. Ну, и основные фишки XNode наверняка используются, типа адаптируемости к входам.
Borjomy_1

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

Re: Реализация Калмана Фильтра в LabView

Сообщение Borjomy_1 »

Вы имеете в виду, что вот эта обёртка нереентерантная?
Именно так. Что касается инструментов, то их можно, конечно, использовать, но для начала надо знать что где лежит. Меня насторожило то, что :vi: , вызываемые из XNode, нигде явно не видны.
Ответить
  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Обработка сигнала»