此示例显示了如何在电压和轴扭矩约束下设计用于DC伺服机构的模型预测控制器。
对于使用显式MPC的类似示例,请参阅具有对未测量输出约束的直流伺服电机的显式MPC控制。
线性开环动态模型定义为植物
。多变的TAU
是要用作输出约束的最大可接受扭矩。
[植物,tau] = mpcmotormodel;
为MPC控制器指定输入和输出信号类型。第二个输出扭矩,是不可测量的。
植物= setmpcsignals(植物,'mv',1,'莫',1,'uo',2);
操纵变量受到+/- 220伏之间的约束。由于工厂输入和输出具有不同的数量级,因此您还使用比例因子来促进MPC调整。比例因子的典型选择是上限/下限或工作范围。
mv = struct('min',-220,'最大限度',220,'比例因子',440);
扭矩约束仅在前三个预测步骤期间施加。
ov = struct('min',{ - inf,[-tau; -tau; -tau; -inf]},......'最大限度',{inf,[tau; tau; tau; inf]},......'比例因子',{2 * pi,2 * tau});
控制任务是为了获得角度位置的零跟踪偏移。由于只有一个操纵变量,允许轴扭矩通过将其重量设定为零而在其约束内浮动。
权重= struct('mv',0,'mvrate',0.1,'ov',[0.1 0]);
使用采样时间创建MPC控制器TS.
,预测地平线P.
和控制地平线m
。
ts = 0.1;p = 10;m = 2;MPCOBJ = MPC(植物,TS,P,M,重量,MV,OV);
SIM
功能使用SIM
模拟MATLAB线性植物模型的闭环控制功能。
DISP('现在模拟标称闭环行为');tstop = 8;%秒tf = round(tstop / ts);%模拟迭代r = [pi * on(tf,1)零(tf,1)];%参考信号[Y1,T1,U1] = SIM(MPCOBJ,TF,R);
现在模拟标称闭环行为 - >将模型转换为离散时间。假设没有添加到测量的输出通道#1中的干扰。- >“MPC”对象的“Model.Noise”属性为空。假设每个测量的输出通道上的白噪声。
情节结果。
子图(3,1,1)楼梯(T1,Y1(:1))保持在楼梯(T1,R(:,1))保持离开标题('角度位置')子图(3,1,2)楼梯(T1,Y1(:,2))标题('扭矩')子图(3,1,3)楼梯(T1,U1)标题('电压')
要运行此示例,需要Simulink®。万博1manbetx
如果〜mpcchecktoolboxinstalled('万博1manbetxsimulink')disp('万博1manbetxSimulink(R)需要运行此示例。')返回结尾
模拟Simulink中线性植物模型的闭环控制。万博1manbetxMPC控制器块配置为使用mpcobj.
作为其控制器。
mdl ='mpc_motor';Open_System(MDL)SIM(MDL)
闭环响应与MATLAB中的仿真结果相同。
[1] A. Bemporad和E. MOSCA,“通过参考管理,”在不确定的线性系统中满足困难的限制“自动,卷。34,没有。4,第451-461,998。
BdClose(MDL)