前言:昨天晚上發了一篇用手動添加零極點來模擬系統傳遞函數的文章《利用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)
反饋傳遞函數:
以上,結束。
致謝:王磊大師