拒绝瞎调,用matlab,自动调节PID参数

您所在的位置:网站首页 simulink中pid控制器 拒绝瞎调,用matlab,自动调节PID参数

拒绝瞎调,用matlab,自动调节PID参数

#拒绝瞎调,用matlab,自动调节PID参数| 来源: 网络整理| 查看: 265

写在最前,在经验调参双环PID的时候,发现无论如何调都不能够满意,而且很浪费时间。因此,想找到更合理更科学地方法,来得出PID参数,于是发现了一个新大陆 -- 系统辨识

最终效果:自动调出PID三项对应的参数,控制效果很不错。

目的:通过matlab,辨识出系统的传递函数,找到最理想的PID参数。

优点:1.节省“盲调PID”的时间。2.在辨识出传递函数后,还可以设计专门的控制器,达到经验调参不能做到的效果,逼近完美。

用到的工具:1.matlab的system identification 和PID tunner app2.simulink。

只要跟我做以下几步就可以啦:

1.得到你的电机的输入输出曲线(数据),导入matlab里。

2.用system Identification app,系统辨识,得到传递函数;

3.用PID tunner自动整定PID参数。

一、伪造数据

tips:这一部分操作的目的,是模拟电机正常运行,得到相类似的数据。如果你已经有实际真实的数据,跳过这一步!

由于疫情原因,现在手头没有真实的电机数据,所以我只能假装我有数据(伪造)。

首先,设计一个电机的传递函数

接着在simulink上搭建简单的1DOF的PID控制器,给定PID初始参数是:P为1,I和D都为0。这样,这个控制器从输入到输出的传递函数即为电机的传递函数。

仿真后,导出你的输入和输出数据到matlab的工作区里,这一步就完成啦。

tips:该例子中,输入是一个单位阶跃信号。

二、导入数据

打开system identification app,并把工作区中的输入和输出数据导入进来,点击import即可。

三、辨识系统

首先,把原始数据分开为两部分:训练部分和验证部分(其实本质就是用神经网络辨识);

接着,把mydatae拖动到workspace Data中,把mydatav拖动到mydata中。

之后,选择估算传递函数,设置好合适的零点极点后,便可得出系统的传递函数。

双击tf2,你能看到它的详细数据,从中我们可以看到一些主要信息:辨识出来的传递函数,以及它的拟合度为100%。

四、自动整定PID,使用PID tuner工具

打开simulink,双击你的PID控制器,点击tune

自动打开PID tuner之后,调节两个按钮,一个是响应速度,另一个是选择超调量。随后,它会自动更新新的曲线,以及保留原来方案的响应曲线,方便我们对比。

得到一个较满意的响应后,我们选择update,更新PID参数到simulink中。

个人总结:以上步骤做出来的效果,也是和经验调参差不多的。要想做到更好的控制效果,还需要去根据传递函数与实际情况,设计一个新的控制器,matlab只是辅助工具,要懂得原理才是最重要的。

更新:最新一篇文章,系统辩识+调pid+机器人仿真平台上调角度环的完整流程,非常详细了,让你更清晰pid tuner的威力

二更:后面又对单关节(单摆模型)进行动力学参数的辨识,还加上了力矩前馈控制。重新写了三篇文章:黑箱辨识、灰箱辨识以及力矩前馈控制。控制效果比上面那篇文章做的更好



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3