这个示例使用systune
控制小车上的倒立摆。
小车/摆组件如图1所示,并使用Simscape™Multibody™在Simulink®中建模。金宝app
图1:小车上的倒立摆
图2:Simscape多体模型
这个系统通过施加一个可变的力来控制在购物车。控制器需要保持摆直立,同时移动小车到一个新的位置或当摆向前推动(脉冲干扰).
直立位置是倒立摆的不稳定平衡。电厂的不稳定性使控制任务更具挑战性。对于本例,您使用以下双循环控制结构:
open_system (“rct_pendulum.slx”) set_param (“rct_pendulum”,“SimMechanicsOpenEditorOnUpdate”,“关闭”);
内环使用二阶状态空间控制器稳定摆在其直立位置(控制),而外部回路使用比例导数(PD)控制器控制小车的位置。你使用一个PD而不是PID控制器,因为植物已经提供了一些积分动作。
使用TuningGoal
要求指定所需的闭环行为。指定3秒的响应时间,用于跟踪购物车位置的设置点变化.
%跟踪x命令req1 = TuningGoal。跟踪(“xref”,“x”3);
充分拒绝脉冲干扰在钟摆的顶端,使用LQR惩罚的形式
这强调了一个小的角度偏差限制了控制的努力.
%脉冲干扰抑制Qxu = diag([16 1 0.01]);req2 = TuningGoal。LQG (“dF”, {“θ”,“x”,“F”} 1 Qxu);
为了稳健性,需要至少6 dB的增益裕度和40度的相位裕度在植物输入。
%稳定利润req3 = TuningGoal。利润(“F”6、40);
最后,约束闭环极点的阻尼和固有频率,以防止突跳或欠阻尼瞬态。
%杆位置MinDamping = 0.5;MaxFrequency = 45;req4 = TuningGoal.Poles (0 MinDamping MaxFrequency);
闭环系统对于PD和状态空间控制器(1和分别)。您可以使用systune
来联合调优这两个控制器。使用slTuner
接口来指定可调块并注册植物输入F
作为测量稳定性裕度的分析点。
ST0 = slTuner (“rct_pendulum”, {位置控制器的,“角控制器”});addPoint (ST0“F”);
下一步,使用systune
根据上面指定的性能要求调优PD和状态空间控制器。优化跟踪和干扰抑制性能(软要求)受制于稳定性裕度和极点位置约束(硬要求)。
rng(0) Options = systuneOptions()“RandomStart”5);[ST, fSoft] = systune(ST0,[req1,req2],[req3,req4],Options);
最后:软= 1.36,= 0.9982,最后迭代= 274:软= 1.44,= 0.99907,最后迭代= 154:软= 1.44,= 0.99859,最后迭代= 293:软= 1.26,= 0.99958,最后迭代= 283:软= 1.44,= 0.99753,最后迭代= 272:迭代软= 1.26,= 0.99997,= 236
最佳设计在满足硬需求的同时达到接近1的软需求值(硬
< 1)。这意味着,调谐控制系统在满足稳定裕度和极点位置约束的情况下,几乎达到了跟踪和抑制扰动的目标性能。
使用viewGoal
进一步分析最佳设计如何针对每种需求。
图(“位置”viewGoal([req1,req3,req4],ST)
这些图确认了前两个要求几乎得到了满足,而后两个严格执行。接下来,绘制对位置上的一步变化和对小车上的力脉冲的响应。
T = getIOTransfer (ST, {“xref”,“dF”},{“x”,“θ”});图(“位置”,[100 100 650 420]);次要情节(121),步骤(T(: 1), 10)标题(“跟踪设置点位置变化”subplot(122), impulse(T(:,2),10) title(“抑制冲动干扰”)
在期望的稳定时间内,响应是平滑的。检查调优的控制器值。
C1 = getBlockValue(圣位置控制器的)
C1 = s Kp + Kd * -------- Tf*s+1与Kp = 5.9, Kd = 1.93, Tf = 0.051名称:Position_Controller连续时间PDF控制器并行形式。
C2 = zpk (getBlockValue(圣“角控制器”))
C2 (s + 4.317) = -1616.6 (s + 12.9 ) -------------------------- ( s + 135.3) (s - 14.31)名称:Angle_Controller连续时间零/钢管/增益模型。
注意,角度控制器有一个不稳定杆,与装置的不稳定杆配对,以稳定倒立摆。为了看到这一点,在植物输入处得到开环转移,并绘制根轨迹。
L = getLoopTransfer(圣,“F”1);图rlocus (L)集(gca,“XLim”20 [-25],“YLim”20 [-20])
为了完成验证,将调整后的值上传到Simulink并模拟小车/摆组件的非线性响应。金宝app模拟结果的视频如下所示。
writeBlockValue (ST)
图3:带有调谐控制器的小车/摆仿真。
仿真完成后关闭模型。
set_param (“rct_pendulum”,“SimMechanicsOpenEditorOnUpdate”,“上”);close_system (“rct_pendulum”, 0);
systune
(金宝app仿真软件控制设计)|slTuner
(金宝app仿真软件控制设计)