Определение пользовательской линеаризации для блоков Simulink

Этот пример показывает, как задать линеаризацию блока Simulink или подсистемы.

Введение

Команда LINEARIZE в Simulink Control Design дает линейную аппроксимацию модели Simulink с помощью точного подхода линеаризации. Эта линеаризация допустима в небольшой области вокруг данной рабочей точки. Этот подход работает хорошо на большинство моделей Simulink, но в некоторых случаях необходимо изменить точный подход линеаризации, чтобы учесть эффекты разрывов или аппроксимировать динамику действия задержки или производной. Много встроенных блоков Simulink, таких как насыщение или мертвая зональная нелинейность, обеспечивают способность выбрать "Treat as gain when linearizing", чтобы управлять этим поведением. В этом примере вы задаете пользовательскую линеаризацию для подсистемы, чтобы аппроксимировать линеаризацию сигнала PWM.

Линеаризация модели с подсистемой генерации PWM

Следующая модель в качестве примера имеет подсистему scdpwm/Voltage to PWM, который моделирует сигнал PWM, который вводит модель объекта управления.

mdl = 'scdpwm';
open_system(mdl);

Когда вы линеаризуете эту модель с помощью стандартной настройки, получившаяся линейная модель имеет усиление нуля.

io = getlinio(mdl);
sys = linearize(mdl,io)
sys =
 
  D = 
                Step
   Plant Model     0
 
Static gain.

Блок scdpwm/Voltage to PWM/Compare To Zero заставляет эту линеаризацию быть нулем.

pwmblk = 'scdpwm/Voltage to PWM';
open_system(pwmblk)

Линеаризация является нулем, потому что блок представляет чистую прерывистую нелинейность.

u = [-1:0.1:0,0:0.1:1];
y = [zeros(11,1);ones(11,1)];
plot(u,y)
xlabel('Block Input - u')
ylabel('Block Output - y')
ylim([-0.1 1.1]);

Определение пользовательской линеаризации для подсистемы PWM

С Simulink Control Design можно управлять линеаризацией блоков в модели Simulink. Можно задать линеаризацию использования блока:

  • Матрицы

  • Линейные независимые от времени модели, такие как передаточные функции или пространство состояний

  • Устойчивое Управление неопределенные параметры/модели в пространстве состояний

В этом примере подсистема PWM содержит задержку

Эта задержка составляет частоту рабочего цикла сигнала PWM, который является на уровне 100 Гц. Задать задержку при щелчке правой кнопкой scdpwm/Voltage to PWM подсистемы по блоку и выбрать Linear Analysis-> Specify Linearization. Следующее диалоговое окно блока, в котором вы задаете динамику задержки, открывается.

Следующий код эквивалентен вводу задержки в диалоговое окно спецификации.

set_param(pwmblk,'SCDEnableBlockLinearizationSpecification','on');
rep = struct('Specification','ss(1,''OutputDelay'',1/100)',...
             'Type','Expression',...
             'ParameterNames','',...
             'ParameterValues','');
set_param(pwmblk,'SCDBlockLinearizationSpecification',rep);

Линеаризация модели с заданной линеаризацией подсистемы теперь дает ожидаемый результат.

opt = linearizeOptions('SampleTime',0);
sys = zpk(linearize(mdl,io,opt))
sys =
 
  From input "Step" to output "Plant Model":
                       1
  exp(-0.01*s) * -------------
                 (s^2 + s + 1)
 
Continuous-time zero/pole/gain model.

Сравнение линеаризации и симуляции

Можно сравнить линеаризацию модели к фактической линеаризации с помощью сигнала frest.createStep. Важно отметить, что спецификация линеаризации не должна быть удалена, чтобы моделировать использование исходной настройки модели. Спецификация линеаризации не оказывает влияние на симуляцию, только линеаризация. Визуальный осмотр показывает, что линеаризация точно представляет динамику.

cla
instep = frest.createStep('Ts',1/10000,'StepTime',1,...
                          'StepSize',1e-1,'FinalTime',15);
[sysf,simoutstep] = frestimate(mdl,io,instep);
frest.simCompare(simoutstep,sys,instep)
legend('Linearization with PWM Subsystem Specification',...
            'Simulated Step Response','Location','East')

Другие приложения определения пользовательской линеаризации для блоков Simulink

Блокируйтесь спецификация линеаризации не ограничивается линейными независимыми от времени моделями. С Robust Control Toolbox можно задать неопределенные параметры и модели неопределенного пространства состояний (USS) для блоков в модели. Получившаяся линеаризация является затем неопределенной моделью. Пример "Линеаризация моделей Simulink с Неуверенностью" показывает, как вычислить линеаризацию с неуверенностью (Требует Robust Control Toolbox).

Можно также выполнить анализ моделей с дискретными контроллерами и непрерывной динамикой объекта в непрерывной области. Смотрите, что пример "Моделирует Вычислительную Задержку и Выбирает Эффекты" для получения дополнительной информации.

Закройте модель Simulink.

bdclose(mdl)