реклама на сайте
подробности

 
 
> Как внести иннерционность в измерение?
hwdev
сообщение Dec 2 2008, 19:11
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 334
Регистрация: 1-09-06
Из: Москва
Пользователь №: 20 008



Есть измерительная система, измеряемый параметр имеет свойство "дрожать" около динамически меняющейся средней точки. Т.е. например значение параметра начинает нарастать, но нарастание это происходит "шаг вперед и 2 назад, потом наоборот". Или остановится около какого-то значения и давай болтаться.

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

Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Stanislav
сообщение Dec 2 2008, 21:17
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(hwdev @ Dec 2 2008, 22:11) *
...Дайте, пожалуйста, ссылку на теорию с примерами или сюда напишите готовый код.
Спасибо!
Простейшая адаптивная система:

,

где - выходные отсчёты; - входные отсчёты (измерения); - константа адаптации.


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
777777
сообщение Dec 4 2008, 07:11
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1 091
Регистрация: 25-07-07
Из: Саратов
Пользователь №: 29 357



Цитата(Stanislav @ Dec 3 2008, 00:17) *
Простейшая адаптивная система:

,

где - выходные отсчёты; - входные отсчёты (измерения); - константа адаптации.

А почему >0.5? Можно и меньше, нужно лишь, чтобы этот коэффициент был больше нуля.
В программе эта формула кодируется так:

y += (xn - y)*alpha;

правда, в этом случае альфа приобретает иной смысл - чем она меньше, тем сильнее сглаживание, при 1 сглаживание полностью отсутствует.

Можно даже вычслить этот коэффициент, если известна требуемая постоянная времени

,

где - период следования входных отсчётов; - требуемая постоянная фильтра в секундах. Эта формула реализует цифровой аналог RC-цепочки с постоянной времени ,

Сообщение отредактировал 777777 - Dec 4 2008, 07:37
Go to the top of the page
 
+Quote Post
Stanislav
сообщение Dec 4 2008, 07:42
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 4 363
Регистрация: 13-05-05
Из: Москва
Пользователь №: 4 987



Цитата(777777 @ Dec 4 2008, 10:11) *
А почему >0.5? Можно и меньше, нужно лишь, чтобы этот коэффициент был больше нуля.
Чтобы было хоть какое-нить сглаживание.
Можно и меньше, но это не имеет смысла. Вообще, обычно выбирают в районе 0,9 и больше.

Цитата(777777 @ Dec 4 2008, 10:11) *
...В программе эта формула кодируется так:

y += (xn - y)*alpha;

правда, в этом случае альфа приобретает иной смысл - чем она меньше, тем сильнее сглаживание, при 1 сглаживание полностью отсутствует.
Ну да, то же самое.

Кстати, забыл написать.
Инициализировать адаптивную систему можно так:
,
т.е., выбрать в качестве начального приближения первый же входной отсчёт, а потом уже усреднять. Иначе долго ждать придётся. smile.gif


--------------------
Самонадеянность слепа. Сомнения - спутник разума. (с)
Go to the top of the page
 
+Quote Post
hwdev
сообщение Dec 4 2008, 15:40
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 334
Регистрация: 1-09-06
Из: Москва
Пользователь №: 20 008



Цитата(Stanislav @ Dec 4 2008, 10:42) *
Чтобы было хоть какое-нить сглаживание.
Можно и меньше, но это не имеет смысла. Вообще, обычно выбирают в районе 0,9 и больше.

Ну да, то же самое.

Кстати, забыл написать.
Инициализировать адаптивную систему можно так:
,
т.е., выбрать в качестве начального приближения первый же входной отсчёт, а потом уже усреднять. Иначе долго ждать придётся. smile.gif

Спасибо!
Буду применять. А как этот алгоритм переделать в целые числа? Алгоритм всё таки на контроллере будет крутиться, не пентиум smile.gif
Go to the top of the page
 
+Quote Post
rezident
сообщение Dec 4 2008, 16:04
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(hwdev @ Dec 4 2008, 20:40) *
А как этот алгоритм переделать в целые числа? Алгоритм всё таки на контроллере будет крутиться, не пентиум smile.gif
Если коэффициент будет константой, а диапазон изменения параметра заранее известен, то дробный коэффициент можно представить как целое число домноженное на 2^N. После умножения достаточно будет арифметическими сдвигами на N разрядов вправо привести результат к правильному значению.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 12:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01437 секунд с 7
ELECTRONIX ©2004-2016