Specifications

Simulate Controller with Nonlinear Plant
4-11
% Define MPC Toolbox controller for the latest model
MPCobj = mpc(Model, Ts);
MPCobj.W.Output = [0 1];
% Ramp the setpoint
r = max([8.57 - 0.25*t, 2]);
% Compute the control action
if t <= 0
xd = [0; 0];
x = mpcstate(MPCobj, xp, xd, [], u);
end
u = mpcmove(MPCobj, x, yp, [0 r], []);
% Simulate the plant for one control interval
up(3) = u;
simOptions.StartTime = num2str(t);
simOptions.StopTime = num2str(t+Ts);
simOptions.InitialState = 'xp';
simOptions.ExternalInput = '[t up; t+Ts up]';
simOut = sim('CSTR_INOUT',simOptions);
T = simOut.get('tout');
XP = simOut.get('xout');
YP = simOut.get('yout');
% Save results for plotting
tsave = [tsave; T];
ysave = [ysave; YP];
usave = [usave; up(ones(length(T),1),:)];
rsave = [rsave; r(ones(length(T),1),:)];
xp = XP(end,:)';
t = t + Ts;
end
figure(1)
plot(tsave,[ysave(:,2) rsave])
title('Residual Concentration')