此示例显示了如何使用SLTUNER.
和Systune.
调整多环控制器的旋翼飞行器。
此示例在悬停修剪条件下使用8状态直升机模型。国家矢量x = [u,w,q,theta,v,p,phi,r]
由组成
纵向速度你
(米/秒)
横向速度V.
(米/秒)
正常的速度W.
(米/秒)
螺旋角θ.
(度)
滚动角度φ
(度)
滚转率P.
(deg / s)
俯仰率问:
(deg / s)
偏航率R.
(度/秒)。
控制器生成命令ds特区dT
以纵向循环,横向循环和尾转子集体使用测量值θ.
那φ
那P.
那问:
,R.
。
以下Simulink模型描绘金宝app了控制架构:
open_system ('rct_helico')
控制系统由两个反馈循环组成。内环(静态输出反馈)提供稳定性增强和去耦。外环(PI控制器)提供所需的设定点跟踪性能。主要控制目标如下:
跟踪设置点的变化θ.
那φ
,R.
零稳态误差,上升时间约2秒,最小超调,最小交叉耦合
限制控制带宽以防止被忽略的高频转子动力学和测量噪声
提供强大的多变量增益和相位裕度(对设备输入和输出同时增益/相位变化的稳健性,见diskmargin
详情)。
我们使用40 rad / s的截止点的低通滤波器部分强制执行第二个目标。
您可以共同调整内部和外部环路Systune.
命令。该命令仅需要工厂和控制器的模型以及所需的带宽(其是所需响应时间的功能)。当控制系统在Simulink中建模时,您可以使用金宝appSLTUNER.
接口来快速设置调优任务。使用要调优的块列表创建该接口的实例。
ST0 = slTuner ('rct_helico',{'pi1'那'pi2'那'pi3'那'SOF'});
每个可调参数块根据其类型自动参数化,并在Simulink模型中使用其值初始化(金宝app为PI控制器,零为静态输出反馈增益)。仿真结果表明,在这些初始值下,控制系统是不稳定的:
标记对设定值跟踪感兴趣的I/O信号,并识别测量稳定裕度的装置输入和输出(控制和测量信号)。
addpoint(st0,{“theta-ref”那“phi-ref”那“r-ref”})%setpoint命令addpoint(st0,{'theta'那“φ”那'r'})%相应的输出addpoint(st0,{'U'那“y”});
最后,捕获设计要求使用TuningGoal
对象。我们在这个例子中使用了以下需求:
跟踪要求:回应θ.
那φ
那R.
步骤命令theta_ref
那Phi_ref.
那r_ref
一定类似于一阶解耦响应具有一秒时间常数
稳定性边距:工厂输入处的多变量增益和相位裕度你
和植物产出y
必须至少为5 dB和40度
快速动态:闭环磁极的幅度不得超过25,以防止快速动态和生涩的瞬变
与参考型号1/(s+1)不匹配小于20%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,Margereq1,Marginreq2,Polereq];ST1 = SYSTUNE(ST0,ALLEQS);
Final:Soft = 1.12,硬= -Inf,迭代= 71
最后的值接近于1,因此需求几乎得到满足。绘制以theta, phi, r为单位的阶跃命令的调谐响应:
t1 = getiotransfer(st1,{“theta-ref”那“phi-ref”那“r-ref”},{'theta'那“φ”那'r'});步骤(T1, 5)
上升时间约为两秒,没有超调和很少的交叉耦合。您可以使用viewgoal.
对于每个需求的更彻底的验证,包括对多变量稳定性裕度的可视化评估(参见diskmargin
细节):
图(“位置”,[100,100,900,474])ViewGoal(Allreqs,ST1)
检查PI控制器的调谐值和静态输出反馈增益。
showTunable(死神)
框1:rct_helico / pi1 = 1 kp + ki * --- s用kp = 1.04,ki = 2.07名称:Pi1以并行形式的连续时间Pi控制器。--------------------------------------------- rct_helico / pi2 = 1 kp + ki * ---kp = -0.0994,ki = -1.35名称:PI2以并行形式的连续时间PI控制器。--------------------------------------------- rct_helico / pi3 = 1 kp + ki * ---S kp = 0.138,ki = -2.2名称:PI3以并行形式的连续时间PI控制器。-------------------------------------------------------- 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')
然后删除SOF
从可调块列表中块并将PI块重新参数化为具有正确的环路标志的全吹PID(从第一个设计中推断)。
PID = PID(0,0.001,0.001,.01);PID控制器的初始猜测删除(ST0,'SOF');SetBlockParam(ST0,......'pi1',调音('c1',pid),......'pi2',调音('c2',-pid),......'pi3',调音('c3'pid));
重新调整三个PID控制器,并绘制闭环步进响应。
ST2 = SYSTUNE(ST0,ALLEQS);
最终:软= 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 Control Design)|Systune(SLTuner)
(金宝appSimulink Control Design)