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

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

Введение

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

Эта задержка учитывает частоту коэффициента заполнения сигнала ШИМ, которая находится на частоте 100 Гц. Чтобы задать задержку в подсистеме scdpwm/Voltage to PWM щелкните правой нажатие кнопки на блоке и выберите «Линейный анализ» - > «Задать линеаризацию». Откроется следующее диалоговое окно блоков, в котором вы задаете динамику задержки.

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

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)