前言:昨天晚上发了一篇用手动添加零极点来模拟系统传递函数的文章《利用matlab中的controlSystemDesigner加速你的环路设计》,今天跟大神请教了一番,利用system identification来识别bode图,可以获得更加精确的模型,从而以更准确更迅速的来实现环路设计,这里要感谢王磊大大,感谢您的帮助。
实现方法:利用仿真软件获得系统从控制到输出的bode图数据,然后将数据导入到system identification,使用波形分析功能来获得传递函数,一般能达到90%以上的吻合度,这就说明是识别出来的传递函数已经足够精确,完全可考虑拿来使用了。有了准确的传递函数就可以利用昨天发的那篇文章来实现设计。
软件:
1,plecs 或其他能仿真环路的软件,要求能导出cvs格式的文件。
2,matlab
3,execl
获得仿真文件后,选择导出文件:
然后导入到excel表格中,对数据进行修改。因为plces导出的频率是Hz,matlab中是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)
反馈传递函数:
以上,结束。
致谢:王磊大师