Препълване на блок интегратор в Simulink

Работя върху блока Matlab simulink: Средно (променлива честота). Блокът е показан на http://www.mathworks.com/help/physmod/sps/powersys/ref/meanvariablefrequency.html

Първата стъпка на този алгоритъм е интегрирането на входния сигнал. Въпреки това, когато входният сигнал е постоянен, интеграторът ще се натрупва, докато препълни. Някой знае ли как да се реши този проблем в такъв блок.

Прилагам и диаграмата на този блок по-долу: въведете описание на изображението тукПо-късно ще го променя на дискретно- времеви модел и прилагам такъв алгоритъм в моя DSP. Ако имате някакви предложения, аз съм добър слушател.


person HeyMan    schedule 25.01.2015    source източник


Отговори (2)


Функцията, която прилагате, е

y(t) = Integrate_{x=0->t} u(x) dx  -  Integrate_{y=0->t-T} u(y) dy          (1)

където T е транспортното забавяне. Това може да се пренареди чрез заместване на z = y + T и поради линейността на интеграла към

y(t) = Integrate_{x=0->t} u(x) dx  -  Integrate_{z=T->t} u(z - T) dz
     = Integrate_{x=0->t} [ u(x) - u(x - T) ] dx + C                        (2)

където

C = Integrate_{z=0->T} u(z) dz

е крайна константа, която зависи от началните условия и може да се приеме, че е 0, ако вашият сигнал u е нула за първоначалното време t = 0 ... T.

Ако разгледаме входен сигнал с DC-офсет като напр

u(t) = DC + sin(w*t)

тогава изпълнението (1) първо ще интегрира и след това ще извади, което ще насити или ще доведе до загуба на точност, както отбелязахте. Но (2) първо ще извади и по този начин ще премахне всеки DC

u(x) - u(x - T) = DC - DC + sin(w*t) - sin(w*t - w*T)
                = 0         sin(w*t) - sin(w*t - w*T)

и след това интегрирайте, без да рискувате насищане. Затова препоръчвам да промените изпълнението, както следва:

дизайн на simulink

Като алтернатива можете да промените идеалния интегратор 1/s на нискочестотен филтър с ограничено усилване при DC, напр. 1/(1+s) въпреки че това (както и контролерът против навиване, предложен от @thewaywewalk) ще изкриви сигнала ви в сравнение с идеалното поведение.

PS: Благодарение на stackoverflow за това, че не поддържа правилна математическа нотация... :-/

person mbschenkel    schedule 25.01.2015

Трябва да внедрите контрола Anti-Windup. Най-лесният начин е да използвате PID-регулатор и да настроите постоянното и диференциалното усилване на нула. За Anti-Windup имате две опции като цяло: обратно изчисление и затягане. За разлики и справка вижте тази статия: Управление против навиване с помощта на PID-контролер

person thewaywewalk    schedule 25.01.2015