PDA

Просмотр полной версии : Программные фильтры



anthrwpos
02.03.2017, 05:45
Есть такая тема как программные фильтры, многие из которых требуют преобразование типа y_n=f(y_n-1,Δt).
Это всякие интеграторы, дифференциаторы, скользящая средняя и тому подобное.
Соответственно возникает два вопроса:
- Каким способом предпочтительно изменять значение y? Простая связь, "явная обратная связь", или через промежуточные переменные? Как добиться того, чтобы промежуточные вычисления, приводящие к смене y выполнялись стабильно в правильном порядке?
- Каким способом предпочтительно вычислять Δt? Тактовый генератор на основе Blink с фиксированной длительностью Δt или каким либо образом определять, сколько времени прошло с момента предыдущего программного цикла?

Павел Братковский
02.03.2017, 09:32
Аналоговый вход сам по себе имеет фильтр, а дальше все зависит от задачи.....на форуме много было информации по этому поводу

rovki
02.03.2017, 10:27
И цифровые входа так же имет фильтр

Владимир Ситников
02.03.2017, 10:34
Есть такая тема как программные фильтры, многие из которых требуют преобразование типа y_n=f(y_n-1,Δt).
Это всякие интеграторы, дифференциаторы, скользящая средняя и тому подобное.
Соответственно возникает два вопроса:
Вопросы правильные, но, по факту, в ОЛ с этим беда.


- Каким способом предпочтительно изменять значение y? Простая связь, "явная обратная связь", или через промежуточные переменные? Как добиться того, чтобы промежуточные вычисления, приводящие к смене y выполнялись стабильно в правильном порядке?
У линий задержки (они же "обратные связи") порядок выполнения вполне ясен. Думаю, лучше использовать их.


- Каким способом предпочтительно вычислять Δt? Тактовый генератор на основе Blink с фиксированной длительностью Δt или каким либо образом определять, сколько времени прошло с момента предыдущего программного цикла?
Да, blink как вариант. Возможность обращения к "текущему времени" давным-давно просят, но в ОЛ никак не появится.

lara197a
02.03.2017, 11:43
напишите макрос, типа как на картинке и вставляйте во все проекты
Зачем усложнять?
в 99.999% случаев этого будет достаточно

Василий Кашуба
02.03.2017, 11:55
напишите макрос, типа как на картинке и вставляйте во все проекты
Зачем усложнять?
в 99.999% случаев этого будет достаточно
Типа вот такого?
29811

anthrwpos
02.03.2017, 13:11
Придумал счетчик числа циклов за секунду. Надо будет проверить, будет ли работать адекватно в железе.
29814
Если да, то из него можно непосредственно делать макрос вычисления кванта времени Δt и делать фильтры и интеграторы.

Алексей Геннадьевич
02.03.2017, 14:38
Придумал счетчик числа циклов за секунду. Надо будет проверить, будет ли работать адекватно в железе.
29814
Если да, то из него можно непосредственно делать макрос вычисления кванта времени Δt и делать фильтры и интеграторы.

http://www.owen.ru/forum/showthread.php?t=25068&page=12&p=233746&viewfull=1#post233746
Уже применял подобное решение. Обратная связь не нужна - будет подсчитывать только каждый второй такт.29816