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

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

Введение

Команда LINEARIZE в Simulink Control Design дает линейную аппроксимацию модели Simulink с помощью точного подхода линеаризации. Эта линеаризация допустима в небольшой области вокруг данной рабочей точки. Этот подход работает хорошо на большинство моделей Simulink, но в некоторых случаях необходимо изменить точный подход линеаризации, чтобы учесть эффекты разрывов или аппроксимировать динамику действия задержки или производной. Много встроенных блоков Simulink, таких как насыщение или мертвая зональная нелинейность, обеспечивают Обработку как усиление при линеаризации параметра, чтобы управлять этим поведением. В этом примере вы задаете пользовательскую линеаризацию для подсистемы, чтобы аппроксимировать линеаризацию сигнала 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(s) = e^{-sT_s}$$

Эта задержка составляет частоту рабочего цикла сигнала 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)