looptune
此示例显示了调谐反馈循环的基本工作流程looptune
命令。looptune
类似于Systune
并旨在通过自动生成调整要求来促进循环塑造设计。
本示例使用一个简单的发动机速度控制应用程序,如下图所示。控制系统由单个PID循环组成,必须调整PID控制器的收益以充分响应所需速度的步骤变化。具体来说,您希望回复在不到5秒钟的时间内解决,几乎没有或没有过冲。
使用以下引擎动力学的四阶模型。
加载rctexamples引擎博德(发动机)网格
您需要调整四个PID增益以实现所需的性能。用一个可调夹
对象以参数化PID控制器。
pid0 = tunablepid(“ speedcontroller”,,,,'pid')
PID0 = Tunable continuous-time PID controller "SpeedController" with formula: 1 s Kp + Ki * --- + Kd * -------- s Tf*s+1 and tunable parameters Kp, Ki, Kd, Tf。键入“ PID(PID0)”以查看当前值和“ GET(PID0)”以查看所有属性。
looptune
调谐下图所示的通用SISO或MIMO反馈回路。此反馈回路对工厂和控制器之间的相互作用进行了建模。请注意,这是一个积极的反馈互连。
对于速度控制循环,植物 是发动机型号和控制器 由PID控制器和前滤器组成 。
使用looptune
,创建模型
和
。将名称分配给每个模型的输入和输出,以指定工厂和控制器之间的反馈路径。请注意控制器
有两个输入:速度参考r
和速度测量速度
。
f = tf(10,[1 10]);%前滤器g =发动机;G.InputName ='风门';G.Outputname ='速度';C0 = PID0 * [F,-1];c0.inputname = {'r',,,,'速度'};c0.outputname ='风门';
这里,C0
是广义状态空间模型(Genss
)取决于可调的PID块PID0
。
您现在可以使用looptune
调整PID的收益受到简单的控制带宽要求。为了达到5秒的沉降时间,开环响应的增益交叉频率应约为1 rad/s。考虑到这个基本要求,looptune
自动塑造开环响应,以提供积分动作,高频滚动和足够的稳定性边缘。请注意,您可以指定其他要求以进一步限制设计。例如,请参阅蒸馏柱的解耦控制器。
wc = 1;目标增益分频频率%[〜,c,〜,info] = looptune(g,c0,wc);
最终:峰值增益= 0.892,迭代= 7实现目标增益值targetgain = 1。
最终值小于1,表明所需的带宽是通过足够的滚动和稳定性边缘实现的。looptune
返回调谐控制器C
。采用getBlockValue
检索PID块的调谐值。
pidt = getBlockValue(c,“ speedcontroller”)
pidt = 1 s kp + ki * --- + kd * --------------------- s tf * s + 1 with kp = 0.000958,ki = 0.00288,kd = 0.00014,tf = 0.845名称:speedcontroller连续时间PIDF控制器并行形式。
采用loopview
验证设计并可视化循环塑形要求隐含地执行looptune
。
CLF loopview(g,c,info)
接下来,以发动机速度绘制对步骤命令的闭环响应。调整的响应满足了要求。
t =连接(g,c,'r',,,,'速度');%闭环转移功能从R到速度CLF步骤(T)