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

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

Проблема в качестве примера

В модели 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.