Этот пример показывает, как подтвердить результаты линеаризации путем сравнения моделируемого выхода нелинейной модели и линеаризированной модели.
Линеаризация Simulink® модель.
Для примера:
sys = 'watertank'; load_system(sys); sys_io(1) = linio('watertank/PID Controller',1,'input'); sys_io(2) = linio('watertank/Water-Tank System',1,'openoutput'); opspec = operspec(sys); op = findop(sys,opspec,findopOptions('DisplayReport','off')); linsys = linearize(sys,op,sys_io);
Если вы линеаризировали модель в Model Linearizer, необходимо экспортировать линейную модель в MATLAB® рабочей области.
Создайте входной сигнал для валидации. Для примера, шаговый входной сигнал:
input = frest.createStep('Ts',0.1,... 'StepTime',1,... 'StepSize',1e-5,... 'FinalTime',500);
Симулируйте модель Simulink, используя входной сигнал.
[~,simout] = frestimate(sys,op,sys_io,input);
simout
является моделируемым выходом нелинейной модели.
Симулируйте линейную модель sys
, и сравните временных характеристик линейной и нелинейной модели Simulink.
frest.simCompare(simout,linsys,input) legend('FRESTIMATE results with Custom input',... 'Linear simulation of linsys with Custom input',... 'Location','SouthEast');
Переходной характеристике нелинейной модели и линеаризированной модели близки, что подтверждает точность линеаризации.
Увеличьте амплитуду шагового сигнала от 1.0e-005
на 1
.
input = frest.createStep('Ts',0.1,... 'StepTime',1,... 'StepSize',1,... 'FinalTime',500);
Повторите оценку частотной характеристики с увеличенной амплитудой входного сигнала и сравните это время в график отклика с точными результатами линеаризации.
[~,simout2] = frestimate(sys,op,sys_io,input); frest.simCompare(simout2,linsys,input) legend('FRESTIMATE results with Custom input',... 'Linear simulation of linsys with Custom input',... 'Location','SouthEast');
Переходная реакция линейной системы, полученная вами с помощью точной линеаризации, не совпадает с переходной характеристикой расчетной частотной характеристики с большой амплитудой входного сигнала. Линейная модель, полученная с помощью точной линеаризации, не совпадает с полной нелинейной моделью при амплитудах, достаточно больших, чтобы отклониться от заданной рабочей точки.
Для валидации линеаризации во временной области используйте frest.createStep
чтобы создать сигнал шага. Используйте шаговый сигнал как вход для frest.simCompare
, который сравнивает моделируемый выход нелинейной модели и линеаризированной модели.
Вход шага помогает вам оценить, точно ли линейная модель захватывает доминирующие временные константы во время прохождения переходных процессов шага.
Вход шага также показывает, правильно ли вы захватили коэффициент усиления постоянного тока модели Simulink, сравнивая окончательное значение точной симуляции линеаризации с оценкой частотной характеристики.