Предположим, что у меня есть непрерывная система в 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 к непрерывной системе?