PID自动调参----simulink仿真-----如何高效调参
设计PID控制器
系统识别APP识别传递函数
Simulink搭建仿真控制系统
使用Maltab自动调参工具PID Tuner调节PID参数
设计PID控制器
我们先看这张经典的PID控制器的图片,可以看e(t)与u(t)与c(t),会发现控制器是控制e(t),也就是反馈值的偏差来输出控制量(u(t))给执行机构的。也就是通过控制执行机构间接控制被控对象。所以,设计PID控制器的关键是找出反馈量,也就是你想要控制的对象。
在这里插入图片描述

这个控制对象与执行机构有一定的联系,比如说,你想设计PID控制器控制小车的速度,那么这个反馈量c(t),就要是速度,控制速度的执行机构自然就是电机了。检测速度自然就要用到编码器。

系统识别APP识别传递函数
我们已经设计出了PID控制器(速度PID控制器),那比较关键部分,也就是执行机构与控制对象的关系我们还不知道。又由于,个人专业知识不能够识别出这两者的关系。但我们有工具可以识别出来。
请出我们的第一个小助手:

maltab的system identification
在这里插入图片描述

通过它,我们只需要知道系统的输入与输出就可以知道系统的特征,也就是用用黑箱方法得到的对一个系统规律的认识。

首先,我们需要又系统的输入输出数据,由于我手头上没有,便作罢(不过可以随便用一些数据玩一下)。下面假装我有电机的输入与输出的数据。采集数据的时候,一般使用开环控制的方式采集输入与输出数据。

输入数据
选择时间域信号

在Maltab工作区中导入数据即可,可以将变量拖动到区域中或者在区域中输入变量名

在这里插入图片描述

接着输入你的采样时间(以s为单位)和数据名称,按下import就可以把数据输入到app中,接下来可以进行系统识别了。

在这里插入图片描述

然后快速生成,就会自动生成一些数据,一部分是用来识别系统特征的,一部分是用来训练的,还有一些我也不清楚。
圈起来的①是生成模型的数据,②是训练的数据。在time plot可以查看曲线。

在这里插入图片描述

主要是看拟合率,拟合率超过80%较佳,也要防止过拟合,个人一般采取增大数据量的方法。图中拟合率100%,应该是过拟合了。

在这里插入图片描述

把输出的模型拖动到工作区中(To workspace),以便在simulink中调用。

Simulink搭建仿真控制系统
搭建仿真模型,模拟单片机控制电机速度,信号输入的频率我设置为1ms,离散PID控制模块的控制频率也是10ms,反馈的延迟是5ms,由于两者的频率不一致,采用RateTransition ZOH是采样率转换,加一个零阶保持器。
在这里插入图片描述

把系统辨别app辨识出的模型,从工作区中写入到simulink中。

在这里插入图片描述

运行仿真

在这里插入图片描述

使用Maltab自动调参工具PID Tuner调节PID参数

打开PID controller,可以选择PID控制,输出限制幅度,PI,P,PD控制等等,设置好了。

打开PID Tuner即可开始调节

在这里插入图片描述

界面如下,拖动两个按钮可以修改曲线参数,按下按钮两边得大于/小于号,可以拓宽,收缩调节范围。

点击show Parameter 显示曲线信息,有曲线的超调量,增益,达到设定值的时间,曲线是否稳定等。可以边拖动曲线,边看表格。

可以看到有两条曲线,一条是上次PID值下得曲线,一条是目前PID值下得曲线。
在这里插入图片描述

当反应时间调节过短,曲线变得逐渐不光滑

在这里插入图片描述

调节过量,曲线变得不稳定

在这里插入图片描述

找到比较合适的曲线,更新到simulink

在这里插入图片描述

可以看到,曲线比较合适,PID的值合适。

在这里插入图片描述

通过simulink可以给我们制作智能车或者其他调节PID时候一个大的方向,找到一个比较合适的区间,在这个区间进行实际中的调节。特别是对于新手,不怎么会调节PID的,一个比较好的方向。

值得注意的是,这些都是一些方法,合不合适,主要看模拟出来的系统是否好,也就是创建一个好的系统模型这个是比较重要的。

参考文章:
嵌入式小车
串级PID
系统辨识