В этом примере показан процесс, используемый командой 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. Блоки LTI уже являются линейными и поэтому остаются прежними. Новая модель с линеаризованными блоками показана ниже.
scdmratestep1

Поскольку блоки в модели содержат различные скорости выборки, невозможно создать односкоростную линеаризованную модель для системы без предварительного использования функций преобразования скорости для преобразования различных скоростей выборки в репрезентативную единичную скорость. Функции преобразования ставок используют итеративный метод. Итерации начинаются с наименьшего общего кратного времени выборки в модели. В этом примере время образца равно 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.
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.