• Регистрация
Christopher
Christopher0.00
н/д
  • Написать
  • Подписаться

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

Здравствуйте.     Реализовал модель динамики катера (плоское движение, два управляющих сигнала (сила и момент), 6 параметров состояния)  и его систему управления через LQR регулятор, то...

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

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

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

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

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