让我们假设我在 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 控制输入应用于连续系统?