优化多回路控制系统
属性共同调优级联体系结构的内部和外部循环systune
命令。
级联PID回路
串级控制通常用于实现平滑跟踪和快速干扰抑制。最简单的级联架构包括两个控制循环(内部和外部),如下面的框图所示。内环通常比外环更快地在干扰传播到外环之前拒绝干扰。(MATLAB®Online不支持Simulink®)
open_system (“rct_cascade”)
工厂模型和带宽要求
在本例中,是内环植物G2
是
还有外环植物G1
是
G2 = zpk([],-2,3);G1 = zpk([],[-1 -1 -1],10);
内环采用PI控制器,外环采用PID控制器。外环的带宽必须至少为0.2 rad/s,而内环的带宽应为足够的干扰抑制的十倍。
整定PID控制器与SYSTUNE
在Simulink中对控制系统建模时,使用slTuner
接口在Simulink控制设计™中设置调优任务。列出可调块,标记信号r
而且d2
作为感兴趣的输入,并标记信号日元
而且y2
作为测量开环传输和指定环形状的位置。
ST0 = slTuner(“rct_cascade”, {“C1”,C2的});addPoint (ST0, {“r”,“d2”,“日元”,“日元”})
的当前值C1
而且C2
在Simulink模型中使用showTunable
.通过Simulink模型的仿真,证实了控制系统在这些初始值下是不稳定的。
showTunable (ST0)
Block 1: rct_cascade/C1 = 1 Kp + Ki *——s with Kp = 0.1, Ki = 0.1名称:C1并行形式的连续时间PI控制器。----------------------------------- 块2:rct_cascade / C2 = 1 + Ki *——年代Kp = 0.1, Ki = 0.1名称:C2连续时间比例积分控制器并联形式。
接下来使用“LoopShape”要求为内外循环指定所需的带宽。使用作为外环的目标环路形状,以0.2 rad/s的增益交叉频率强制积分动作:
%外环带宽= 0.2S = tf(“年代”);Req1 = TuningGoal。LoopShape (“日元”, 0.2 / s);%环传输测量在y1Req1。Name =“外循环”;
使用对于内环,使其比外环快十倍(更高的带宽)。若要约束内部循环传输,请确保通过指定打开外部循环日元
作为循环开口:
%内环带宽= 2Req2 = TuningGoal。LoopShape (“日元”2 / s);%环转移测量在y2Req2。机会=“日元”;%,外层环在y1打开Req2。Name =“内循环”;
你现在可以调整PID增益C1
而且C2
与systune
:
ST = systune(ST0,[Req1,Req2]);
最终:软= 0.859,硬= -Inf,迭代= 67
使用showTunable
以查看调整后的PID增益。
showTunable (ST)
Block 1: rct_cascade/C1 = 1 s Kp + Ki *——+ Kd * -------- s Tf*s+1 with Kp = 0.0521, Ki = 0.0186, Kd = 0.0473, Tf = 0.00696名称:C1并行形式的连续时间PIDF控制器。----------------------------------- 块2:rct_cascade / C2 = 1 + Ki *——年代Kp = 0.721, Ki = 1.23名称:C2连续时间比例积分控制器并联形式。
验证设计
最终值小于1,这意味着systune
成功满足两个环的形状要求。通过检查调优的控制系统来确认这一点圣
与viewGoal
viewGoal ([Req1, Req2],圣)
请注意,内圈和外圈具有所需的增益交叉频率。为了进一步验证设计,绘制阶跃命令r和阶跃扰动d2的调优响应:
对步骤命令的响应H = getIOTransfer(ST,“r”,“日元”);clf, step(H,30), title(“命令”)
%对阶跃干扰的响应H = getIOTransfer(ST,“d2”,“日元”);步骤(H, 30)、标题(“扰动步”)
一旦你对线性分析结果感到满意,就可以使用writeBlockValue
将调整后的PID增益写回Simulink块。然后您可以在Simulink中进行更彻底的验证。
writeBlockValue (ST)
MATLAB等效工作流
如果您没有控制系统的Simulink模型,您可以使用设备和控制设计块的LTI模型来对可调元素建模,从而执行相同的步骤。
图1:级联架构
首先创建可调PI和PID控制器的参数模型。
C1 =可调谐pid (“C1”,“pid”);C2 =可调谐pid (C2的,“π”);
然后使用“分析点”块来标记环路开口位置日元
而且y2
.
LS1 =分析点(“日元”);LS2 =分析点(“日元”);
最后,创建一个闭环模型T0
通过关闭每个反馈回路来控制整个控制系统。结果是一个依赖于可调元素的广义状态空间模型C1
而且C2
.
InnerCL =反馈(LS2*G2*C2,1);T0 =反馈(G1*InnerCL*C1,LS1);T0。InputName =“r”;T0。OutputName =“日元”;
你现在可以调整PID增益C1
而且C2
与systune
.
T = systune(T0,[Req1,Req2]);
最终:软= 0.859,硬= -Inf,迭代= 118
和以前一样,使用getIOTransfer
计算并绘制对阶跃命令r和进入该位置的阶跃扰动的调优响应y2
:
对步骤命令的响应H = getIOTransfer(T,“r”,“日元”);clf, step(H,30), title(“命令”)
%对阶跃干扰的响应H = getIOTransfer(T,“日元”,“日元”);步骤(H, 30)、标题(“扰动步”)
您还可以绘制内部和外部循环的开环增益,以验证带宽需求。注意-1符号用于计算负反馈开环传输:
L1 = getLoopTransfer(T,“日元”1);%交叉点应该是。2L2 = getLoopTransfer(T,“日元”, 1“日元”);%交叉应该是2bodemag(L2,L1,{1e-2,1e2}),网格图例(“内循环”,“外循环”)