電力電子轉換器(Power Electronics Converter)指的是主要通過開關器件和其他電路的組合將一種形式的電源轉化成另外一種形式的電源。
控制技術在電力電子變換器中發揮了極其重要的作用。
直播預告
電力電子系統仿真與分析
2020年9月24日19:30-21:00
仿真是電力電子工程師產品設計過程中的必經之路,可以有效幫助工程師發現問題、驗證設計。Simscape Electrical 是電力電子工程師常用的選擇,它為電力電子設計提供了多方面的支持,幫助我們做好拓撲分析、器件選型和控制設計等方方面面。在使用時工程師可能會面臨很多問題,如該選擇哪種模塊?仿真慢該如何處理?本講將帶領您從基礎建模開始,逐步深入,完成電力電子系統仿真。
無論是家用的手機電源適配器(AC/DC)、光伏逆變器(DC/AC)、車用電源轉換器(DC/DC),再到電網的高壓直流輸電技術(AC/DC/AC), 電力電子轉換器是通過數字控制器(digital controller)控制開關器件(IGBT、MOSFET 等)的開關時間和頻率來決定輸出的電壓和電流。
其中電子控制器大致包含如下的功能:
- 反饋(閉環)控制。 這是控制器的核心部分,利用了控制反饋來決定輸出電壓和電流。PID控制就是其中應用最廣泛的控制技術。
- 上層邏輯控制。 例如,電力電子系統運行模式的切換和狀態邏輯控制。
- 監控部分。 用來監測和保護電力電子系統或者其它連接系統,從而免受故障影響。
Simulink 非常適合用來做電子控制器的設計、仿真和開發。原因在于它有豐富的功能:
- Simscape Electrical 自帶了很多電力電子的模塊和組件被控對象模型。例如各種電力電子器件、電機和轉換器、電源、變壓器和傳輸線、甚至還有 FACTS(柔性交流輸電系統)/HVDC(高壓直流輸電技術)的基本模型。還可以通過 PowerGUI 進行交互性分析。
- Simulink 快速搭建控制原型,配合被控對象模型進行 PID 或者其它控制方法的調試和仿真。
- Stateflow 和 Simulink 結合,進行上層邏輯和監控部分的算法搭建。
- Simulink 配合諸如 SpeedGoat、RT-Lab 等實時仿真機,進行快速原型仿真或者各級在環仿真測試。
- 代碼生成。Simulink 可直接生成 C、C++ 或者 PLC。
本文的將通過以****下示例,著重介紹 6 種 PID 參數調試的方法:
- 基于開關平均模型進行 PID 調試
- 基于詳細開關模型進行 AC Sweeping 頻域掃描辨識
- 基于詳細開關模型進行 Frequence Resonse Based Tuning
- 基于詳細開關模型進行時域階躍響應辨識
- 基于詳細開關模型進行 Auto Tuning
- MIMO 多 PID 的集中調試
◆ ** ◆ ◆ ◆ **
這是一個簡單的 DC/DC 模型,目的是將 24V DC 變換為 12V DC:
電子線路被控對象:
PID 控制器需要被控對象為線性化。由于 MOSFET 或者 IGBT 這類的電子開關的存在,無法讓 Simulink 為它自動線性化。
經典的線性化方法一般為小信號分析法(small signal analysis)。小信號分析分為三步:
- 在一個開關周期內進行狀態空間平均,得到非線性化模型。
- 在工作點(operating point)進行小信號注入和分析,獲取平均模型。這個平均模型(averaged model) 為線性模型。
- 推算被控對象的傳遞函數。在有了系統的傳遞函數后,進行控制器設計(例如PID)。
這種方法的局限性在于,對任何一個電子線路都需要做整體的小信號分析。
例如一些比較常見的電子線路(buck converer、booster converter)等等,已經有了現成的平均模型。但對于一些復雜的電子線路,更加常用的方法是用開關平均模型(average switch model)去代替平均模型。開關平均模型只對開關網絡部分進行小信號分析,而將剩余的部分作為線性不變系統處理。
Simulink 也采取了類似開關平均模型的方式,將開關網絡做了平均化處理,便于做線性化分析。
本文介紹以下 6 種解決方法:
方法 1 —— 用開關平均模型做 PID 設計 。 在很多場合,平均模型是很有效的。
也有一些情況,用戶需要用帶詳細開關的模型進行線性化分析。這時候,通常采取的方式是系統辨識(system identification)。把被控對象看成黑盒,輸入一些激勵信號,通過分析系統輸出來辨識出被控對象。系統辨識的方式可以是頻域或者時域。
方法 2 介紹了 通過頻域掃描(AC sweeping)的辦法來辨識被控對象 。方法 2 是業界常用的方法,優點是可以完全從頻域辨識系統,缺點是速度慢。
基于方法 2 的改進,即不做全頻域域辨識,而對系統幾個比較關鍵的頻率進行辨識,這就是方法 3 —— Frequence Response Based Tuning 。
在一些階數比較少(例如二階三階電路)的系統,也可以通過時域辨識的方法來辨識被控對象,這就是方法 4 —— 階躍響應辨識法 。
基于方法 3,設想有這種情況:
我需要 PID 在被控對象發生變化(例如負載變化等)的時候,Simulink 能自動的進行 PID 參數調整,做到“智能化自適應參數整定”,這就是方法 5,也是 Simulink 比較新的方法 —— Auto Tuning 。
上述 5 種方法僅僅談到了單個 PID(即 single-input-single-out,SISO)。如果多個 PID 需要一起調試(或者叫 multi-input-multi-output,MIMO),那我們介紹另外一種調試方式。即方法6 —— MIMO 多 PID 的集中調試 。
基于開關平均模型進行 PID 調試
將上圖中的開關網絡用 “Average-Model Based VSC” 替代 —— Simscape Electrical 中的 “Universal Bridege” 中選擇這個類型即可。這樣就是一個開關平均模型。
然后在雙擊 PID 模塊,選擇 Tune。
這一步會打開 PID tuner。在此之后,需要找一個穩態工作點來線性化被控對象。由于在 0.005s 有一個負載變化。所以不妨選擇 0.007s 為穩態工作點。
打開 PID tuner 后,選擇:
plant -> re-linearize Close-Loop -> Snapshot time = 0.007 -> Linearize
這一步后,Simulink 會將 0.007s 作為穩態工作點的系統響應作為被控對象,然后自動打開 PID tuner,進行交互式調試。在系統性能滿意后,選擇 Update Block。
在閉環仿真的結果可以看出:
- 在0.005 秒由于負載變化,電壓有變化,但之后很快恢復到 12V。
- 輸出電壓電流沒有開關紋波 —— 這是由于使用開關平均模型的原因。
開關平均模型的另一個好處是仿真速度極快。
工程師可以在開關平均模型仿真后得到了控制參數,然后很快將被控對象切換到實際的詳細開關(例如 MOSFET)模型中去驗證前面得到的參數。絕大多數情況下,會有很好的結果。
基于詳細開關模型進行 AC Sweeping 頻域掃描辨識
將上圖中的開關網絡用 “MOSFET/Diodes” 替代 —— Simscape Electrical 中的 “Universal Bridege” 中選擇這個類型即可。這樣就是一個詳細開關模型。
在這種選擇下,由于開關元器件具有斷續性,所以 Simulink 無法自動對模型進行線性化處理。此時,可用 AC Sweeping(頻域掃描辨識)的方法辨識出系統的傳遞函數。這是業界的標準方法。
第一步先改造模型,由于本電路是將 24V 變化為 12V。所以先將 PID 輸出的 duty 改為恒定值 0.5(12/24)。并且在輸入線上右鍵選擇:
Linear Analysis Point -> Input Pertubation。
在實際輸出電壓(Sensor Dynamics)處選擇:
Linear Analysis Point -> Output Mearsurement。
在 MATLAB 的 Linear Analysis Tool 中選擇 estimation tab。
Operating Point 選擇:
take simulation snapshot = 0.007s
即把這個時間點作為穩態工作點(避開 0.005s 的負載變化)。Analysis I/O 就是 Model I/O,即剛才做的 Linear Analysis Points。
Input Signal 選擇 Fixed Sample Time Sinewave。Sample Time 選擇為系統的 Sample Time = 1e-7s。在選擇激勵的 sinewave 時候,將 Amplitude 設定為 0.025(大概為穩態 duty cycle 的 1/20),頻域范圍為 100 ~ 30000Hz。
在選擇 “Bode Diagram” 后,Linear Analysis Point 會給出系統的頻域響應,即 Bode Diagram。
然后將頻域響應,保存為一個 frd(frequence response data)。
打開:
PID tuner ->Transfer Function based -> Tune
然后在 Plant 中選擇 import 剛才保存的 frd,這樣 PID tuner 會自動進行調試,用戶也可自己調整帶寬和相位裕度等參數。
查看輸出電壓。發現和剛才的開關平均模型相比較,詳細開關模型會帶來紋波,這正是 MOSFET 開關帶來的效果。
基于詳細開關模型進行 Frequency Response Based Tuning
在剛才的 AC sweeping 方法中,我們實際上進行了全頻域掃描(100 ~ 30000Hz)來確定被控對象的頻域響應。在系統仿真步長很小獲取頻域響應的速度會比較慢,在這種情況下可以試一下 Frequency Response Based tuning。此時,系統根據給定的帶寬(0dB crossover frequency)進行 [1/3 , 1 , 3 , 10] 倍的帶寬頻域注入,結合一個時域的階躍信號,可估計出系統的頻域響應。從而可以自動調用 PID Tuner。
此處,start time 為系統的穩態工作點(0.006s),Duration 一般設定為 100/帶寬,Astep 為穩態點的 duty cycle(0.5);Asin 為 sine 激勵信號的幅值(0.025),一般設定為 duty cycle 的 1/20。在按下 “tune” 后,會發現 PID tuner 把頻域響應和 PID tuning 的工作合二為一都完成了,直接給出 PID 的參數。在 “Update PID Block” 后,可查看電壓的波形圖。
基于詳細開關模型進行時域階躍響應辨識
在階數較低(例如 2、3 階)的電路中,也可用時域的階躍響應信號進行辨識,得到被控對象的傳遞函數。
打開:
PID tuner -> Transfer Function based -> Tune
選擇 :
Get I/O Data -> Simulate Data
Sample time 和系統的步長一致。Offset 為系統穩態的 duty cycle(0.5), Onset lag 為開始時間(0.05),Stop Time 為結束時間(0.052)。
然后讓 Simulink 用一個 “underdamped pait” 去進行參數估計:達到 98.99% 的準確率。
這時候,PID tuner 就將這個辨識出的傳遞函數作為被控對象,進行 PID 調試。步驟不再贅述。
基于詳細開關模型進行 Auto Tuning
剛才集中調試方式都是利用了系統的頻域或者時域響應進行系統辨識,然后進行 PID 的半自動化參數調試。將:
- 頻域響應辨識
- PID 參數調試
這兩步合二為一,做成一個 Simulink Block,不僅可以自動化上述過程,更可以自動化代碼生成。這就是如下的 Block:
在 0.04s 到 0.06s 之間,PID AutoTuner 進行頻域響應辨識,然后根據頻域辨識的結果進行自動 PID 調試。
最終的仿真結果如下:
這種方式的好處可以將控制器做成“自適應”,PID 參數可以自己適應外界的變化。
MIMO 多 PID 的集中調試
剛才我們提到的例子都是單個 PID 的調試。
大家知道如果有多個 PID 的情況,先調內環再調外環。這些情況可視為 SISO (single-input-single-output)。 下面這個例子:是一個機械臂控制的一個例子,6 個電機分別控制 6 個機械關節,6 個電機的位置控制由 6 個 PID 分別控制。
由于機械臂存在 “耦合” 現象,即一個關節的移動會對其它關節造成影響。
那這時候,我們如果單獨對某個關節進行 PID 調試可能整體效果不佳,這就是一個典型的 MIMO(multi-input-multi-output) 問題。
這種問題可以用 MATLAB 的 “Control System Tuner” 來進行多 PID 集中調試來解決。
首先在 Control System Tuner 中選擇一個穩態工作點,例如 take snapshot at 3 seconds。
然后將 6 個 PID 選為需要調試的模塊。
下一步選擇一個 goal:本例中,機械臂的作用為路徑跟隨,所以選擇 reference tracking。
在 Simulink 中選擇參考值和反饋值的線路后,同步到 Control System Tuner 對話框中,并輸入控制響應性能要求。
Control System Tuner 將調試的目標用頻域形式表述如下:tracking error 必須要在虛線之下。
PID 參數調試前的機械臂角度跟隨曲線:藍色的為參考值,橙色為實際反饋值。
在 PID 調試后,tracking error 在虛線之下。
參數調試后的機械臂角度跟隨曲線:藍色的為參考值,橙色為實際反饋值。看到它們幾乎重合,說明 PID 調試得很成功。
評論
查看更多