位置伺服机构的MPC控制器设计
本例展示了如何为位置伺服机构设计模型预测控制器MPC设计师.
系统模型
位置伺服机构由直流电机、齿轮箱、弹性轴和负载组成。
表示这个方程组的微分方程是
在那里,
V是外加电压。
T是作用在负载上的扭矩。
是负载角速度。
是电机轴的角速度。
剩下的项是常数参数。
伺服机构模型的常数参数
象征 |
数值(SI单位) |
定义 |
---|---|---|
kT | 1280.2 |
抗扭刚度 |
k米 | 10 |
电机常数 |
J米 | 0.5 |
电动机惯性 |
Jl | 50J米 |
负载惯性 |
ρ | 20. |
齿轮传动比 |
β米 | 0.1 |
电机粘性摩擦系数 |
βl | 25 |
载荷粘性摩擦系数 |
R | 20. |
电枢电阻 |
如果你把状态变量定义为
那么你就可以将伺服机制建模为LTI状态空间系统。
控制器必须设置负载的角度位置,θl,通过调整施加电压,使其达到所需的值,V.
然而,由于弹性轴具有有限的剪切强度,扭矩,T,必须保持在范围内|T|≤78.5 Nm.此外,电压源物理上将施加电压限制在该范围内|V|≤220v.
构建植物模型
指定模型常数(单位为MKS)。
Kt = 1280.2;抗扭刚度%Km = 10;%电机常数Jm = 0.5;%电机惯性Jl = 50*Jm;负载惯性%N = 20;齿轮传动比Bm = 0.1;转子粘性摩擦Bl = 25;%负载粘性摩擦R = 20;%电枢电阻
定义由模型方程导出的状态空间矩阵。
A = [0 1 0 0;-Kt/Jl -Bl/Jl Kt/(N*Jl) 0;0 0 0 1;Kt/(Jm*N) 0 -Kt/(Jm*N²)-(Bm+Km²/R)/Jm];B = [0;0;0;公里/ (R * Jm)];C = [1 0 0 0;Kt 0 -Kt/N 0]; D = [0; 0];
创建一个状态空间模型。
plant = ss(A,B,C,D);
打开MPC设计程序
mpcDesigner
导入设备并定义信号配置
在MPC设计师,在MPC设计师选项卡上,选择MPC结构.
在“通过导入定义MPC结构”对话框中,选择植物
,并将工厂I/O通道分配给以下信号类型:
操纵变量-电压,V
测量输出-负载角位置,θl
未测量输出-扭矩,T
点击进口.
MPC设计师导入指定的工厂并创建MPC控制器和模拟场景:
mpc1
—创建的默认MPC控制器植物
作为内部模型。scenario1
—默认模拟场景。模拟结果显示在输入响应而且输出响应情节。
植物,控制器和模拟场景可通过数据浏览器访问,在左侧MPC设计师.
定义输入和输出通道属性
在MPC设计师选项卡,在结构部分中,点击I / O属性.
在“输入输出通道规格”对话框中,对于每个输入输出通道:
指定一个有意义的的名字而且单位.
保持名义价值的默认值
0
.指定一个比例因子对信号进行归一化。选择一个近似于信号预测工作范围的值:
通道名称 最小值 最大值 比例因子 电压
-220 V 220 V 440
θ
- - - - - -π弧度 π弧度 6.28
转矩
-78.5纳米 78.5纳米 157
点击好吧命令,更新通道属性并关闭对话框。
修改场景以模拟Angular的位置步进响应
在场景节中,编辑场景下拉列表,选择scenario1
修改默认的模拟场景。
在“模拟场景”对话框中保持仿真时间的10
秒。
在参考信号表中,第一条通道保持默认配置。这些设置创建一个一步
的变化1
弧度在角位置设定值a处时间的1
第二。
的第二个输出信号下拉列表,选择常数
保持扭矩设定值在其标称值。
点击好吧.
该应用程序运行模拟与新的场景设置和更新输入响应而且输出响应情节。
指定控制器采样时间和范围
在调优选项卡,在地平线部分,指定样品时间的0.1
秒。
对于指定的采样时间,T年代的期望响应时间Tr= 2秒,选择一个预测范围,p,使:
因此,请指定预测地平线的20.
.
指定一个控制层的5
.
在更新示例时间和视界值时,输入响应而且输出响应情节会自动更新。输入电压和扭矩值都超过了系统模型规格中定义的约束条件。
指定的约束
在设计部分中,选择约束.
在“约束”对话框中,在输入约束部分,指定最小值而且马克斯被操纵变量的电压值(MV)。
在输出约束节中,指定最小值而且马克斯未测量输出(UO)的扭矩值。
没有额外的约束,也就是说其他约束保持默认的最大值和最小值,负
而且正
分别
点击好吧.
响应图更新以反映新的约束。在输入响应图中,输入电压有不可取的大变化。
指定调优权重
在设计部分中,选择权重.
在“权重”对话框中输入重量表中,增加操纵变量率的重量.
调优重量为被操纵变量MV0
.这个权重表示控制器可以允许输入电压在其约束范围内变化。增加率的重量限制操作变量更改的大小。
由于控制目标是为负载的角位置跟踪其设定值,调优重量上测输出为1
.施加的扭矩没有设定值,因此控制器可以允许第二个输出在其约束范围内变化。因此,重量上的不可测输出(UO)为0
,使控制器忽略转矩设定值。
点击好吧.
响应图更新以反映增加的速率权重。的输入响应电压变化较小时更平滑。
检查输出响应
在输出响应绘图,右键单击θ绘制区域,并选择特征>峰值响应.
峰值输出响应发生在3秒时,最大超调量为3%。由于参考信号步长变化为1秒,控制器的峰值时间为2秒。
改进控制器响应时间
单击并拖动闭环性能向右滑动可产生更多咄咄逼人的响应。向右拖动滑块越远,控制器的响应就越快。选择一个滑块位置,使峰值响应发生在2.6秒。
最终控制器峰值时间为1.6秒。减少响应时间进一步导致过度激进的输入电压变化。
生成并运行MATLAB脚本
在分析部分,单击出口控制器箭头.
下出口控制器,点击生成脚本
.
在生成MATLAB中®脚本对话框,选中旁边的复选框scenario1
.
点击生成脚本.
该应用程序导出了植物模型的副本,plant_C
,到MATLAB工作空间,以及仿真输入和参考信号。
此外,该应用程序在MATLAB编辑器中生成以下代码。
使用采样时间创建MPC控制器对象mpc1 = mpc(plant_C, 0.1);指定预测范围mpc1。PredictionHorizon = 20;指定控制范围mpc1。ControlHorizon = 5;指定输入和输出的标称值mpc1.Model.Nominal。U = 0;mpc1.Model.Nominal。Y = [0;0];指定输入和输出的比例因子mpc1.MV(1)。ScaleFactor = 440;mpc1.OV(1)。ScaleFactor = 6.28;mpc1.OV(2)。ScaleFactor = 157;为MV和MV速率指定约束mpc1.MV(1)。最小值=-220; mpc1.MV(1).Max = 220;为OV指定约束mpc1.OV(2)。最小值=-78.5; mpc1.OV(2).Max = 78.5;指定应用于权重的整体调整因子Beta = 1.2712;%%指定权重mpc1.Weights。MV = 0*beta;mpc1.Weights。米VRate = 0.4/beta; mpc1.Weights.OV = [1 0]*beta; mpc1.Weights.ECR = 100000;指定模拟选项选项= mpcsimopt();选项。RefLookAhead =“关闭”;选项。米DLookAhead =“关闭”;选项。约束=“上”;选项。OpenLoop =“关闭”;%%运行模拟sim(mpc1, 101, mpc1_RefSignal, mpc1_MDSignal, options);
在MATLAB窗口中,在编辑器选项卡上,选择保存.
完成“保存”对话框,然后单击保存.
在编辑器选项卡上,单击运行.
脚本创建控制器,mpc1
,并运行仿真场景。输入和输出响应与应用程序的模拟结果相匹配。
验证控制器性能金宝app
如果你有Simulink金宝app®模型,您可以模拟您的控制器,并验证其性能。
打开模型。
open_system (“mpc_motor”)
此模型使用MPC控制器块来控制伺服机构装置。的伺服机构模型块已配置为使用植物
来自MATLAB工作区的模型。
的角的参考源块创建一个频率为的正弦参考信号0.4
拉德/秒,振幅为π.
双击MPC控制器块。
在“MPC控制器块参数”对话框中指定MPC控制器从MATLAB工作空间。使用mpc1
使用生成的脚本创建的控制器。
点击好吧.
在MATLAB命令行中,指定一个扭矩大小约束变量。
Tau = 78.5;
该模型使用该值绘制扭矩输出范围的约束限制。
2 .在Sim金宝appulink模型窗口中,单击运行模拟模型。
在角范围,输出响应,黄色,密切跟踪角位置设定值,蓝色,。