• Регистрация
Christopher
Christopher 0.00
н/д

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

08.09.2021

Здравствуйте.

    Реализовал модель динамики катера (плоское движение, два управляющих сигнала (сила и момент), 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 

Что это значит?

Подскажите как реализовать автоматический алгоритм линеаризации.

Заранее спасибо!

 

Теги

    08.09.2021

    Ответы

    • andrewrays
      andrewrays+3115.30
      21.09.2021 07:55

      Здравствуйте

      Функция рабочая, проверил на модели из документации (пример Linearize Model at Simulation Snapshot Time).

      Скажите, в чем необходимость вызывать эту функцию их Simulink? Можно написать скрипт, который будет вызывать эту функцию много раз с разным аргументом.