主要内容

优化控制系统仿真软件金宝app

这个例子展示了如何使用systunelooptune自动调节控制系统建模仿真软件®。金宝app

发动机转速控制

在这个例子中,我们使用以下模型的发动机转速控制系统:

open_system (“rct_engine_speed”)

控制系统由一个单一的PID回路和PID控制器的收益必须调整充分应对步骤所需的速度的变化。具体地说,我们想要解决在不到5秒的响应很少或根本没有过度。而pidtune更快的选择优化一个PID控制器,这个简单的例子非常适合一个介绍吗systunelooptune工作流模型。金宝app

与SYSTUNE控制器调优

slTuner接口提供了一个方便的途径systune控制系统建模仿真软件。金宝app这个接口允许您指定块的仿真软件模型可调以及信号开放——或者感兴趣的闭环验证。金宝app创建一个slTuner实例rct_engine_speed模型和PID控制器”的块列表(橙色高亮显示)可调。注意所有线性模型中分析点(信号“Ref”和“速度”)自动可用作为优化的兴趣点。

ST0 = slTuner (“rct_engine_speed”,PID控制器的);

PID块初始化的值在仿真软件模型中,您可以访问使用金宝appgetBlockValue。注意,比例和微分获得初始化为零。

getBlockValue (ST0PID控制器的)
ans = 1 Ki * s和Ki - - - = 0.01名称:PID_Controller连续时间我只控制器。

下一步创建一个跟踪需求捕获的目标稳定时间5秒。仿真软件模型中使用的信号名称来引用的引用和输出信号,并指金宝app定目标响应作为一阶响应时间常数的1秒。

TrackReq = TuningGoal.StepTracking (“Ref”,“速度”1);

你现在可以优化控制系统ST0主题的要求TrackReq

相约= systune (ST0 TrackReq);
最后:软= 0.282,=无穷,迭代= 65

最后的值接近1,表明跟踪需求满足。systune返回一个“调谐”版本相约控制系统的描述ST0。再次使用getBlockValue访问优化的PID增益值:

getBlockValue(相约,PID控制器的)
ans = 1 s Kp + Ki * - + Kd * - - - - - - - - - - Tf *年代和Kp = 0.00217 + 1, Ki = 0.00341, Kd = 0.000513, = 1.82 e-06特遣部队的名字:PID_Controller连续时间PIDF控制器并联形式。

模拟闭环反应步骤命令在速度,得到初始和调谐功能转移的速度命令“Ref”到“速度”输出和情节一步反应:

T0 = getIOTransfer (ST0,“Ref”,“速度”);T1 = getIOTransfer(相约,“Ref”,“速度”);步骤(T0, T1)传说(“初始”,“调”)

与LOOPTUNE控制器调优

您还可以使用looptune调整控制系统建模仿真软件。金宝app的looptune工作流非常相似systune工作流。一个区别是,looptune需要知道工厂和控制器之间的边界,这是指定的控制测量信号。为一个循环的性能基本上是被响应时间,或等价的开环交叉频率。基于一阶特征交叉频率应该超过1 rad / s的闭环响应解决在不到5秒。您可以使用1因此调整PID回路rad / s作为目标0分贝交叉频率。

%的信号“u”作为一个兴趣点addPoint (ST0“u”)%调整控制器参数控制=“u”;测量=“速度”;wc = 1;相约= looptune (ST0、控制、测量、wc);
最后:峰值增益= 0.979、迭代TargetGain = 1 = 4实现目标获得价值。

再最后的值接近1,表明目标控制带宽。与systune,使用getIOTransfer计算和情节的闭环反应速度命令实际速度。得到的结果非常相似systune

T0 = getIOTransfer (ST0,“Ref”,“速度”);T1 = getIOTransfer(相约,“Ref”,“速度”);步骤(T0, T1)传说(“初始”,“调”)

您还可以执行开环分析,例如,核电站利润率计算增益和相位的输入u

%注意:1因为| |利润率预计负反馈循环转移L = getLoopTransfer(相约,“u”1);保证金(L)、网格

在仿真软件验证金宝app

一旦你感到满意systunelooptune结果,你可以上传调整控制器参数模型与非线性模型进行进一步的验证。金宝app

writeBlockValue(死神)

你现在可以模拟发动机响应调整PID控制器。

非线性仿真结果匹配在MATLAB获得的线性响应。

限制PID收益

通常很有用的范围限制调优参数剔除不良的解决方案。金宝搏官方网站例如,您可能需要PID控制器的比例和衍生品收益是负的。要做到这一点,访问调谐块参数化。

C = getBlockParam (ST0PID控制器的)
可调连续PID控制器与公式:“PID_Controller”1 s Kp + Ki * -, + Kd * - - - - - - - Tf *年代+ 1和可调参数Kp, Ki, Kd,特遣部队。输入“pid (C)”的当前值。

设置“最低”价值的可调参数KpKd为0。

C.Kp。最小值= 0;C.Kd。最小值= 0;

最后,将修改后的参数化与调整块。

setBlockParam (ST0PID控制器的C)

重新调整PID收益,并验证比例和衍生品的确是负的。

相约= looptune (ST0、控制、测量、wc);showTunable(死神)
最后:峰值增益= 0.968、迭代TargetGain = 1 = 4实现目标获得价值。块1:rct_engine_speed / PID控制器= 1 s Kp + Ki * -, + Kd * - - - - - - - Tf *年代和Kp = 0.000903 + 1, Ki = 0.00252, Kd = 0.000146, = 0.01特遣部队的名字:PID_Controller连续时间PIDF控制器并联形式。

比较PI和PID控制器

仔细检查调整PID的成果表明,导数项的贡献较小。这表明使用一个简单的PI控制器。为此,覆盖默认的参数化的“PID控制器”块:

setBlockParam (ST0PID控制器的tunablePID (“C”,“π”))

这指定“PID控制器”块现在应该仅仅是一个比例积分控制器进行参数化。下一个这个简单的控制器调节肌体控制系统:

ST2 = looptune (ST0、控制、测量、wc);
最后:峰值增益= 0.95、迭代TargetGain = 1 = 4实现目标获得价值。

再最后的值小于1表明成功。比较与先前的闭环响应:

T2 = getIOTransfer (ST2,“Ref”,“速度”);步骤(T0, T1, T2,“r——”)传说(“初始”,“PID”,“π”)

显然一个PI控制器是足够的对于这个应用程序。

另请参阅

||

相关的话题