Определение момента выборки для дискретного контроллера в MATLAB/Simulink
Предположим, что у меня есть непрерывная система в Simulink, которой нужно управлять. Сначала я применяю фильтр Калмана для оценки состояний системы. На следующем этапе я буду использовать предполагаемое состояние (x_hat
) во встроенной функции MATLAB, которая вызывает функцию прогнозирующего контроллера модели my_mpc
вот так:
function [u]= emd_fcn(x_hat , r, t, Ts)
% x_hat: estimated state, r: reference to be tracked,
t: clock time, Ts: sampling period
%#codegen
coder.extrinsic('my_mpc'); % to call the function my_mpc
----- % some initialization code
if mod(t, Ts)==0
u=my_mpc(x, r)
else
u=-----; % some code.
end
end
Тем не менее, так как время на часах t
переменная, mod(t, Ts) == 0
не будет дела. Мой вопрос: как мы можем определить момент выборки, чтобы применить дискретный управляющий вход mpc к непрерывной системе?
1 ответ
Вы должны просто сделать контроллер дискретным. Щелкните правой кнопкой мыши функциональный блок MATLAB, выберите "Параметры блока" и укажите дискретное время выборки.