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')










