Автор: Shchekin Sergei I.
Дата: 28.01.05 13:24
> -----Original Message-----
> From: Dorofeev [mailto:dorofeev@xxxxxxxxxxx.xx]
> Sent: Thursday, January 27, 2005 4:36 PM
> Научите какой алгоритм (формулу) требуется установить в контроллер
> для реализации инерционного звена 1-го порядка...
Обозначим X - вход звена, Y - выход звена.
Формула для вычисления выхода инерционного звена 1-го порядка (на языке ST):
Y := Y + (X-Y)*K;
Где K - коэффициент, который обычно вычисляется заранее (один раз) по формуле:
K:=T/(t+T);
Где
t - постоянная времени инерционного звена,
T - период расчета (если расчет выполняется в каждом скане контроллера, то берется время скана; если по прерыванию - то тик прерывания и т.д. )
K имеет смысл в пределах от 0 до 1 (не включая границ). При K=0 выход звена "замораживается" (т.е. постоянная времени звена равна бесконечности), при K=1 звено превращается в повторитель (т.е. постоянная времени звена равна нулю).
>..., интегратора
> (здесь вроде все
> понятно),
> реального дифференциала...
Требуется дополнительная переменная X0 для хранения значения входа из предыдущего скана. Расчет:
Y := (X-X0)*K;
X0 := X;
Где K - коэффициент, который обычно вычисляется заранее (один раз) по формуле:
K:=t/T;
Где
t - постоянная времени дифференцирующего звена,
T - период расчета (если расчет выполняется в каждом скане контроллера, то берется время скана; если по прерыванию - то тик прерывания и т.д.)
> ..., скользящего среднего?
Поскольку Виктор Бардичев уже ответил, добавлю только, что реализация скользящего среднего (СС) в контроллере требует работы с массивами и индексной или косвенной адресацией. Преимущества СС по сравнению с инерционным звеном (экспоненциальным фильтром) неочевидны, поэтому на практике я никогда не сталкивался с необходимостью реализовать именно СС.
С уважением,
Сергей Щекин
TRICONEX
|
|