主要内容

使用使用的反馈循环使用looptune

此示例显示了调谐反馈循环的基本工作流程looptune命令。looptune类似于Systune并旨在通过自动生成调整要求来促进循环塑造设计。

发动机速度控制

本示例使用一个简单的发动机速度控制应用程序,如下图所示。控制系统由单个PID循环组成,必须调整PID控制器的收益以充分响应所需速度的步骤变化。具体来说,您希望回复在不到5秒钟的时间内解决,几乎没有或没有过冲。

使用以下引擎动力学的四阶模型。

加载rctexamples引擎博德(发动机)网格

图包含2个轴对象。轴对象1带有以下标题的对象1:速度包含类型线的对象。此对象代表引擎。轴对象2包含类型行的对象。此对象代表引擎。

指定可调元素

您需要调整四个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反馈回路。此反馈回路对工厂和控制器之间的相互作用进行了建模。请注意,这是一个积极的反馈互连。

对于速度控制循环,植物 G 是发动机型号和控制器 C 由PID控制器和前滤器组成 F

使用looptune,创建模型 G C 。将名称分配给每个模型的输入和输出,以指定工厂和控制器之间的反馈路径。请注意控制器 C 有两个输入:速度参考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)

图包含3个轴对象。轴对象1包含4个类型行的对象。这些对象代表S,T,环增益,目标环形状,s结合,t结合。轴对象2包含类型行的对象。这些对象代表所需的边距,稳定边距。轴对象3包含类型行的对象。这些对象代表所需的边缘,稳定边缘,调谐下限。

接下来,以发动机速度绘制对步骤命令的闭环响应。调整的响应满足了要求。

t =连接(g,c,'r',,,,'速度');%闭环转移功能从R到速度CLF步骤(T)

图包含一个轴对象。带有标题的轴对象从:r到:速度包含一个类型行的对象。该对象代表T。

也可以看看

相关话题