Линеаризация динамической модели катера
Здравствуйте.
Реализовал модель динамики катера (плоское движение, два управляющих сигнала (сила и момент), 6 параметров состояния) и его систему управления через LQR регулятор, точки линеаризации получал вручную, используя блок Model linearizer.
Сейчас пытаюсь реализовать алгоритм автоматической линеаризации используя текущие точки (параметры состояния) системы при условии изменения последних на какую-то, определяемую мной величину.
Подхожу к этой задаче постепенно, например линеаризовав в начальной точке х0 через следующий код, подгружаемый в simulink через interpreted MATLAB Fcn:
function A = ls(x0)
op = x0; %linearization point
io = getlinio('SimPlanarVehicle');%
%% Create the options
opt = linearizeOptions('StoreAdvisor',true);
%% Linearize the model
sys = linearize('SimPlanarVehicle',io,op,opt);
A=sys.a;
end
При запуске симуляции выдает ошибку:
Cannot change the 'ModelReferenceNormalModeCallback' parameter while the model 'SimPlanarVehicle' is running
Что это значит?
Подскажите как реализовать автоматический алгоритм линеаризации.
Заранее спасибо!
Комментарии
Здравствуйте
Функция рабочая, проверил на модели из документации (пример Linearize Model at Simulation Snapshot Time).
Скажите, в чем необходимость вызывать эту функцию их Simulink? Можно написать скрипт, который будет вызывать эту функцию много раз с разным аргументом.