这个例子说明如何使用slTuner
和systune
来调谐多环控制器,用于旋翼飞行器。
此示例使用在悬停修整条件的8状态直升机模型。状态向量X = [U,W,Q,θ,V,P,PHI,R]
由组成
纵向速度你
(米/秒)
横向速度V.
(米/秒)
正常的速度W.
(米/秒)
螺旋角THETA
(度)
侧倾角φ
(度)
滚转率P.
(度/秒)
俯仰率问:
(度/秒)
偏航率R.
(度/秒)。
控制器生成命令ds特区dT
以度为纵环状,横向周期,和尾部旋翼集体使用的测量THETA
那φ
那P.
那问:
,R.
。
以下Simulink模型描述金宝app了控制架构:
open_system ('rct_helico')
控制系统由两个反馈回路。内环(静态输出反馈)提供增稳和解耦。外环(PI控制器)提供了期望的设定点的跟踪性能。主要控制目标如下:
轨迹设定点的变化THETA
那φ
,R.
稳定状态误差为零,上升时间约为2秒,超调量最小,交叉耦合最小
限制控制带宽,以防止忽略高频转子动力学和测量噪声
提供强的多变量增益和相位裕度(对工厂输入和输出同步增益/相位变化的稳健性,参见diskmargin
详情)。
我们在40弧度使用低通滤波器的截止/ s至部分地强制执行所述第二目标。
您可以共同调整内环和外环与systune
命令。该命令只需要对象和控制器的模型与所需的带宽(这是所希望的响应时间的函数)一起。当控制系统在Simulink中建模,您可以使用金宝appslTuner
接口来快速设置调优任务。使用要调优的块列表创建此接口的实例。
ST0 = slTuner ('rct_helico', {'PI1'那'PI2'那“PI3”那“特种部队”});
每个可调块根据其类型自动参数化,并使用其在Simulink模型中的值进行初始化(金宝appPI控制器为零,静态输出反馈增益为零)。仿真模型表明,对于这些初始值,控制系统是不稳定的:
为设置点跟踪标记感兴趣的I/O信号,并识别测量稳定裕度的工厂输入和输出(控制和测量信号)。
addPoint(ST0,{“theta-ref”那“phi-ref”那“r-ref”})%设定点命令addPoint(ST0,{'THETA'那“φ”那'R'})%相应的输出addPoint(ST0,{'U'那“y”});
最后,使用捕捉设计要求TuningGoal
对象。我们在这个例子中使用了以下要求:
跟踪需求:的响应THETA
那φ
那R.
到步骤命令theta_ref
那phi_ref
那r_ref
必须类似于一秒时间常数的一阶解耦响应
稳定裕度:工厂投入的多变量增益和相位裕度你
和植物输出y
必须至少5分贝和40度
快速动态:闭环极点的幅度不得超过25,以防止快速的动态和瞬态生涩
与参考模型1不匹配小于20% /(s+1)TrackReq = TuningGoal.StepTracking({“theta-ref”那“phi-ref”那“r-ref”},{'THETA'那“φ”那'R'1)};TrackReq。RelGap = 0.2;%的增益和相位裕度在工厂输入和输出MarginReq1 = TuningGoal.Margins('U',5,40);MarginReq2 = TuningGoal.Margins(“y”,5,40);%限制快速动态MaxFrequency = 25;PoleReq = TuningGoal.Poles(0,0,MaxFrequency);
您现在可以使用systune
共同调整所有控制器参数。这将返回调谐版相约
控制系统的ST0
。
AllReqs = [TrackReq,MarginReq1,MarginReq2,PoleReq];ST1 = systune(ST0,AllReqs);
决赛:软= 1.12,硬= -Inf,迭代次数= 71
最后的值接近1,所以要求几乎满足。绘制对阶跃命令的调谐响应,单位为,r:
T1 = getIOTransfer(ST1,{“theta-ref”那“phi-ref”那“r-ref”},{'THETA'那“φ”那'R'});步骤(T1, 5)
上升时间约2秒,没有超调,交叉耦合少。您可以使用viewGoal
对于每个需求的更彻底的验证,包括多变量稳定裕度的目视评估(见diskmargin
细节):
图(“位置”[100100900474]) viewGoal (AllReqs相约)
检查PI控制器和静态输出反馈增益的调谐值。
showTunable(死神)
块1:rct_helico / PI1 = 1的Kp +的Ki * --- S采用的Kp = 1.04,奇= 2.07名称:并联形式PI1连续时间PI控制器。-----------------------------------块2:rct_helico / PI2 = 1的Kp +的Ki * ---S采用的Kp = -0.0994,奇= -1.35名称:并联形式PI2连续时间PI控制器。-----------------------------------块3:rct_helico / PI3 = 1的Kp +的Ki * ---S采用的Kp = 0.138,奇= -2.2名称:并联形式PI3连续时间PI控制器。-----------------------------------块4:rct_helico / SOF = d = U1 U2 U3 U4 U5 Y12.214 -0.3123 -0.003393 0.7855 -0.01528 Y2 -0.1918 -1.293 0.01821 -0.08494 -0.1195 Y3 -0.02143 -0.01528 -1.897 -0.002676 0.06789名称:SOF静态增益。
你可能想知道是否静态输出反馈是必要的,是否PID控制器不足以控制直升机。这个问题很容易回答,通过重新调整控制器与内环打开。的后面添加一个打开的循环,首先打破内部循环SOF
堵塞:
addOpening (ST0“特种部队”)
然后取出SOF
从可调谐块列表框和重新参数化该PI块作为与正确的循环体征盛放的PID(如从第一设计推断)。
PID = PID(0,0.001,0.001,0.01);%为PID控制器的初始猜测removeBlock(ST0,“特种部队”);setBlockParam(ST0,......'PI1',tunablePID('C1',PID),......'PI2',tunablePID('C2',-pid)......“PI3”,tunablePID('C3'pid));
重新调整三个PID控制器并绘制闭环步进响应。
ST2 = systune(ST0,AllReqs);
Final:软= 4.94,硬= -Inf,迭代= 67
T2 = getIOTransfer (ST2, {“theta-ref”那“phi-ref”那“r-ref”},{'THETA'那“φ”那'R'});图中,步骤(T2,5)
最终值是不再接近1和步骤就可以确认关于性能较差上升时间,过冲和去耦。这表明,内环具有应保留的一个重要的稳定作用。
TuningGoal.Margins
|TuningGoal.Poles
|TuningGoal。StepTracking
|slTuner
(金宝appSimulink的控制设计)|systune(slTuner)
(金宝appSimulink的控制设计)