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

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

В программном обеспечении Simulink Control Design™ линеаризация обеспечивает линейную аппроксимацию модели Simulink с помощью точного подхода линеаризации. Эта линеаризация допустима в небольшой области вокруг данной рабочей точки. Этот подход работает хорошо на большинство моделей Simulink. Однако в некоторых случаях необходимо изменить точный подход линеаризации, чтобы учесть эффекты разрывов или аппроксимировать динамику действия задержки или производной. Много встроенных блоков Simulink, таких как Насыщение или Мертвые Зональные блоки, обеспечивают Обработку как усиление при линеаризации параметра, чтобы управлять этим поведением. Для блоков или подсистем, которые не могут линеаризоваться, может быть необходимо задать линеаризацию. В этом примере вы задаете пользовательскую линеаризацию для подсистемы, чтобы аппроксимировать линеаризацию сигнала PWM.

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

scdpwm модель содержит Напряжение к подсистеме PWM, которая моделирует сигнал PWM, который затем вводит модель объекта управления.

mdl = 'scdpwm';
open_system(mdl)

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

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

Блок 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. Можно задать линеаризацию использования блока:

  • Матрицы

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

  • Неопределенные параметры или модели в пространстве состояний (требует Устойчивого Управления toolbox™ программное обеспечение),

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

$$PWM(s) = e^{-sT_s}$$

Эта задержка составляет частоту рабочего цикла сигнала PWM, который составляет 100 Гц. Чтобы задать задержку Напряжения к подсистеме PWM, сначала выберите блок. Затем на вкладке Apps нажмите Linearization Manager.

На вкладке Linearization нажмите Specify Block Linearization. Затем в диалоговом окне Block Linearization Specification выполните следующие шаги.

  1. Выберите линеаризацию блока Specify с помощью одного из следующего параметра.

  2. В выпадающем поле выберите MATLAB Expression.

  3. Задайте линеаризацию с помощью выражения ss(1,'OutputDelay',1/100).

Следующий код эквивалентен вводу задержки в диалоговое окно Block Linearization Specification.

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 = linearize(mdl,io,opt);

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

sys = zpk(sys)
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 входной сигнал.

Линеаризация, которую вы задали для Напряжения к подсистеме PWM, влияет только на линеаризацию и не симуляцию модели. Поэтому вы не должны удалять спецификацию линеаризации, прежде чем вы оцените частотную характеристику.

Создайте входной сигнал и оцените частотную характеристику модели.

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')

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

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

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

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

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

bdclose(mdl)

Смотрите также

Похожие темы