2016-09-28 7 views
1

У меня возникла проблема с созданием алгоритма ПИД с коэффициентом фильтрации. Структурная схема PID с коэффициентом фильтра выглядит следующим образом. enter image description hereКоэффициент фильтра ПИД-регулятора MATLAB

Я нашел алгоритм/код в этой ссылке. https://www.mathworks.com/matlabcentral/answers/63762-filter-coefficient-n-in-pid-block

enter image description here

Вопрос: Почему это FilterCoefficient имеет неизвестную переменную Filter_DSTATE, которая имеет неизвестную переменную FilterCoefficient? Код фильтраCoefficient имеет неизвестную переменную Filter_DSTATE, а код Filter_DSTATE имеет неизвестную переменную FilterCoefficient?

Гипотеза. Один из них должен быть инициализирован какой-то ценностью?

ответ

2

Если открыть пустую модель Simulink и добавить PID controller вы получите диалоговое окно, после того, как дважды щелкните

enter image description here

Производная член ПИД-регулятора никогда не реализован в виде чистого производного, потому что это будет чрезвычайно чувствительным к шуму. Следовательно, добавляется частота среза.

Таким образом, термин D будет действовать как почти производный до частоты через

  Ns 
s ---> -------- 
     s + N 

N является коэффициентом фильтра вы упоминаете. Это также позволяет реализовать термин D с использованием интегратора, избегая операции с шумовыми производными.

enter image description here

+0

я нужен ответ, почему это код, как это? его алгоритм выглядит так: x = y; затем y = x; , который невозможно реализовать с помощью программного обеспечения. – mubuss

+0

@PaulJabines Это внутри цикла моделирования. И последние два имеют '+ =', который не является обозначением matlab, но у оригинального автора был другой язык в виду C или python. Таким образом, это не равенство, а дополнение. Это должно имитировать поведение интегратора. Таким образом, вы можете инициализировать с помощью любого valur – percusse

+0

ah ok. поэтому FILTER_DSTATE инициализируется значением. в основном его 0, правильно? – mubuss