Блокируйте переполнение интегратора в Simulink

Я работаю над блоком Simulink Matlab: Среднее (переменная частота). Блок показан на 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.

Если мы посмотрим на входной сигнал со смещением постоянного тока, например

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 на фильтр нижних частот с конечным усилением на постоянном токе, например. 1/(1+s) хотя это (а также антизаключительный контроллер, предложенный @thewaywewalk) будет искажать ваш сигнал по сравнению с идеальным поведением.

PS: спасибо stackoverflow за то, что он не поддерживает правильную математическую запись... :-/

person mbschenkel    schedule 25.01.2015

Вам необходимо реализовать элемент управления Anti-Windup. Самый простой способ — использовать ПИД-регулятор и установить постоянное и дифференциальное усиление равными нулю. Для Anti-Windup у вас есть два варианта: обратный расчет и фиксация. Различия и ссылки можно найти в этой статье: Антизаключительное управление с помощью ПИД-регулятора

person thewaywewalk    schedule 25.01.2015