Линеаризация Многоскоростных моделей

Этот пример показывает процесс, который используется командой linearize при извлечении линейной модели нелинейной многоразовой модели Simulink. Чтобы проиллюстрировать концепции, процесс сначала выполняется с помощью функций из Control System Toolbox, прежде чем он будет повторен с помощью команды linearize.

Пример задачи

В модели Simulink scdmrate.slx Существует три различных частоты дискретизации, заданных в пяти блоках. Эти блоки:

  • sysC - непрерывный линейный блок,

  • Integrator - непрерывный интегратор,

  • sysTs1 - блок, который имеет шаг расчета 0,01 секунды,

  • sysTs2 - блок, который имеет шаг расчета 0,025 секунд, и

  • Zero-Order Hold - блок, который дискретизирует входящий сигнал в 0,01 секунде.

sysC = zpk(-2,-10,0.1);
Integrator = zpk([],0,1);
sysTs1 = zpk(-0.7463,[0.4251 0.9735],0.2212,0.01);
sysTs2 = zpk([],0.7788,0.2212,0.025);

Модель ниже показывает, как блоки соединяются.

scdmrate

В этом примере мы линеаризируем модель между выходом блока Constant и выходом блока sysTs2.

Шаг 1: Линеаризация блоков в модели

Первый шаг линеаризации - линеаризация каждого блока в модели. Линеаризация блоков Насыщения и Удержания Нулевого Порядка равна 1. Блоки LTI уже линейны и поэтому остаются прежними. Новая модель с линеаризированными блоками показана ниже.

scdmratestep1

Шаг 2: Преобразования скорости

Поскольку блоки в модели содержат различные частоты дискретизации, невозможно создать линейную модель с одной скоростью для системы, не используя сначала функции преобразования скорости для преобразования различных частот дискретизации в репрезентативную одну скорость. Функции преобразования скорости используют итерационный метод. Итерации начинаются с наименее распространённых кратных шагов расчета в модели. В этом примере шаги расчета составляют 0, 0,01 и 0,025 секунд, что приводит к наименьшему общему кратному 0,05. Функции преобразования скорости затем берут комбинацию блоков с самой быстрой частотой дискретизации и повторяют их с следующей самой быстрой частотой дискретизации. В этом примере первая итерация преобразует комбинацию линеаризированных непрерывных временных блоков, sysC и integrator во шаг расчета 0,01 с использованием удержания нулевого порядка непрерывно в дискретное преобразование.

sysC_Ts1 = c2d(sysC*Integrator,0.01);

Блоки sysC и Integrator теперь заменены sysC_Ts1.

scdmratestep2

Следующая итерация преобразует все блоки со шаг расчета 0,01 во шаг расчета 0,025. Во-первых, следующая команда представляет комбинацию этих блоков путем закрытия цикла обратной связи.

sysCL = feedback(sysTs1*sysC_Ts1,1);

Затем метод удержания нулевого порядка преобразует систему замкнутого цикла sysCL со скорости дискретизации 0,01 в 0,025.

sysCL_Ts2 = d2d(sysCL,0.025);

Система sysCL_Ts2 затем заменяет цикл обратной связи в модели.

scdmratestep3

Окончательная итерация переопределяет комбинацию системы замкнутого цикла и блока sysTs2 от скорости 0,025 секунд до скорости 0,05 секунд.

sys_L = d2d(sysCL_Ts2*sysTs2,0.05)
sys_L =
 
   0.0001057 (z+22.76) (z+0.912) (z-0.9048) (z+0.06495)
  -------------------------------------------------------
  (z-0.01373) (z-0.6065) (z-0.6386) (z-0.8588) (z-0.9754)
 
Sample time: 0.05 seconds
Discrete-time zero/pole/gain model.

Линеаризация модели с помощью команд Simulink Control Design

Мы можем воспроизвести эти результаты с помощью интерфейса командной строки Simulink Control Design.

model = 'scdmrate';
io(1) = linio('scdmrate/Constant',1,'input');
io(2) = linio('scdmrate/sysTs2',1,'openoutput');
sys = zpk(linearize(model,io))
sys =
 
  From input "Constant" to output "sysTs2":
   0.0001057 (z+22.76) (z+0.912) (z-0.9048) (z+0.06495)
  -------------------------------------------------------
  (z-0.6065) (z-0.6386) (z-0.8588) (z-0.9754) (z-0.01373)
 
Sample time: 0.05 seconds
Discrete-time zero/pole/gain model.