利用matlab的system identification获取系统的传递函数加速你的环路设计

前言:昨天晚上发了一篇用手动添加零极点来模拟系统传递函数的文章利用matlab中的controlSystemDesigner加速你的环路设计,今天跟大神请教了一番,利用system identification来识别bode图,可以获得更加精确的模型,从而以更准确更迅速的来实现环路设计,这里要感谢王磊大大,感谢您的帮助。

实现方法:利用仿真软件获得系统从控制到输出的bode图数据,然后将数据导入到system identification,使用波形分析功能来获得传递函数,一般能达到90%以上的吻合度,这就说明是识别出来的传递函数已经足够精确,完全可考虑拿来使用了。有了准确的传递函数就可以利用昨天发的那篇文章来实现设计。

软件:

1,plecs  或其他能仿真环路的软件,要求能导出cvs格式的文件。

2,matlab

3,execl

获得仿真文件后,选择导出文件:

然后导入到excel表格中,对数据进行修改。因为plces导出的频率是Hzmatlab中是rad/s,所有要修改频率。然后还要将db修改为正常值,使用10^(db/20)来换算一下。然后excel的数据导入到matlab中。

然后打开system identification选择导入数据。

如果没有错误就可以打开导入波形看看bode有米有问题。

可见上图,导入数据正常。然后开始模型识别,使用3P2Z来进行识别,吻合度达到98.2%。

识别后的传递函数:

观察一下识别出来的传递的bode是不是和导入的一样?可以看到,和仿真得到的数据基本一致,就可以根据该传递函数进行环路设计了。

m代码:

% LLC SISO TF%时间:2019年1月05日

clear all;echo offclc

% TF:num = [3698 -4.641e7 -1.321e13];den = [1 9.807e4 1.212e9 4.8913e13];

Gx = tf(num, den); zpk(Gx)  bode = (Gx)  h = bodeplot(Gx) grid on; setoptions(h,'FreqUnits','Hz','PhaseVisible','on');

controlSystemDesigner(Gx)

反馈传递函数:

以上,结束。

致谢:王磊大师

声明:本内容为作者独立观点,不代表电子星球立场。未经允许不得转载。授权事宜与稿件投诉,请联系:editor@netbroad.com
觉得内容不错的朋友,别忘了一键三连哦!
赞 2
收藏 5
关注 598
成为作者 赚取收益
全部留言
0/200
成为第一个和作者交流的人吧