exponenta event banner

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

В этом примере показан процесс, используемый командой linearize при извлечении линейной модели нелинейной многоскоростной модели Simulink. Для иллюстрации концепции процесс сначала выполняется с помощью функций панели инструментов системы управления, а затем повторяется с помощью команды линеаризации.

Пример проблемы

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

В этом примере мы линеаризуем модель между выходом блока константы и выходом блока 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.