Systuneを使用したベクトルコントロ,ラ,の調整
この例では,systune
コマンドを使用して,周波数応答推定)の結果に基づき永久磁石同期機永磁同步电动机のベクトル制御船を調整する方法を説明します。
ベクトル制御
この例では,永久磁石同期機永磁同步电动机のベクトル制御(FOC)をSimscape™电气™コンポーネントを使用して仿真软件®でモデル化します。万博1manbetx
mdl =“scdfocmotorSystune”;open_system(mdl) SignalBuilderPath = [mdl,“/ System_Inputs / Signal_Builder_Experiments”];
ベクトル制御は三相固定子電流をベクトルとして制御します。FOCは,時間および速度に依存する三相システムを2つの時不変座標系に変換する投影に基づいています。これらの変換は,克拉克変換,朴変換,およびそのそれぞれの逆変換です。これらの変換はController_Algorithmサブシステム内のブロックとして実装されます。
Acモ,タ,の制御にfocを使用する利点には次が含まれます。
トルクと磁束を個別に直接制御
過渡状態および定常状態を正確に管理
Dcモ,タ,と比べて同様の性能
Controller_Algorithmサブシステムは3つすべてのπコントローラーを含みます。外側のルプのPIコントロラはモタの速度を調整します。内側のルプのPIコントロラ2はd軸とq軸の電流を個別に制御します。外側のルプのPIコントロラからのコマンドは,q軸に直接送られてトルクを制御します。このタイプのACモーターでは回転子の磁束が永久磁石で固定されているため,d軸のコマンドは永磁同步电动机ではゼロになります。
コントローラーを調整する前に,元のコントローラーでの速度応答を確認し,シミュレーション結果を垫ファイルSystunedSpeed.mat
に保存します。既存の速度のπコントローラーのゲインはP = 0.08655およびI = 0.1997です。電流のPIコントロラのゲンはどらもp = 1およびI = 200です。
scdfocmotorSystuneOriginalResponse
元のコントロ,ラ,での速度応答をプロットします。プロットは定常偏差を示し,過渡動作が比較的遅いことがわかります。コントロ,ラ,を調整して性能を向上できます。
图绘制(logsout_original_oneside {2} . values);持有在情节(logsout_original_oneside {1} . values);传奇(“原始控制器”,“速度参考”,“位置”,“东南”);网格在持有从图绘制(logsout_original_twoside {2} . values);持有在情节(logsout_original_twoside {1} . values);传奇(“原始控制器”,“速度参考”,“位置”,“东北”);网格在持有从
周波数応答デ,タの収集
周波数応答デ,タを収集するには,150
ラジアン/秒の速度での操作点を見つけ,線形解析ポイントを指定し,入力信号を定義して,周波数応答を推定します。
元のコントローラーを切断し,VDコマンドとVQコマンドで開ループシステムモデルをシミュレートします。操作点に到達するために,ctrlIniValues
構造体を使用して初期の電圧をvdでは-0.1 v, vqでは3.465 vに指定します。定電圧コマンドブロックはswitchIniValue
構造体でス@ @ッチ信号を設定することにより接続されます。
switchIniValue。openLoopD = 1;switchIniValue。openLoopQ = 1;ctrlIniValues。voltage = -0.1;ctrlIniValues。voltageQ = 3.465;
3.
秒でのシミュレ,ションのスナップショットを周波数応答推定のための操作点として取得します。
signalbuilder (SignalBuilderPath“activegroup”1);Op = findop(mdl,3);
シミュレ,ションのスナップショットの操作点をモデルの初期条件として使用します。ctrlIniValues
構造体内のモデルの初期値を,この定常状態になるよう変更します。d軸の電流コントロ,ラ,では電流IDが0
Aです。q軸の電流コントロ,ラ,では電流IQが0.1
Aです。外側のル,プの速度コントロ,ラ,では指令電流が0.122
a,速度が150
Rad /sです。PMSMプラントで,永磁同步电动机
構造体の回転子速度を150
Rad /sに設定します。
set_param (mdl“LoadInitialState”,“上”);set_param (mdl“InitialState”,“getstatestruct (op) ');ctrlIniValues。currentDIC = 0;ctrlIniValues。currentQIC = 0.1;ctrlIniValues。speeddic = 150;ctrlIniValues。speedCurrent = 0.122;永磁同步电动机。RotorVelocityInit = 150;
周波数応答推定のための線形解析ポ@ @ントをモデルに追加します。開ルプの入力ポントをvdとvqに追加します。開ルプの出力ポントをid, iq,および速度に追加します。さらに,ル,プの中断の解析ポ,ントを速度測定に追加します。
IO = getlinio(mdl);
固定サンプル時間4 e-6
秒,まり電流制御ルsampleTime。CurrentControl
のサンプル時間で,10
から10000年
Rad /sまでの入力sinestream信号を定義します。Sinestream信号の振幅は0.25
Vです。この振幅により,プラントは飽和制限内で確実に正しく励起されます。励起の振幅が大きすぎたり小さすぎたりすると,周波数応答の推定結果が不正確になります。
in = frest.createFixedTsSinestream(sampleTime.CurrentControl,{10,1e4});在。振幅= 0.25;
io
の線形解析ポ@ @ントおよび在
の入力信号を使用して,指定された定常状態操作点人事处
での周波数応答を推定します。周波数応答の推定を終了した後,結果のモデルで入出力チャネル名を変更し,周波数応答をプロットします。
Estsys = fretimate (mdl,op,io,in);estsys。InputName = {Vd的,矢量量化的};estsys。OutputName = {“Id”,“智商”,“速度”};波德(estsys“。”)
systune
を使用した制御システムの調整
周波数応答推定の結果から状態空間の線形システムモデルを取得します。関数党卫军
のオプションセットを使用して,この反復パラメーター推定に使用される数値探索法をレーベンバーグ・マルカート法の最小二乗探索に設定します。4の状態と4 e-6
秒の周期をも状態空間モデルを推定します。この手順には系统辨识工具箱™ソフトウェアが必要です。
optssest = ssestOptions(“SearchMethod”,“lm”);optsset . regulalizing . lambda = 0.1;Sys_singletune = ssest(estsys,4,“t”、sampleTime.CurrentControl选择);
永磁同步电动机FOCモデルの3つすべてのπコントローラーを調整するには,次のブロック線図に示すような制御システムを作成します。
3つの調整可能な離散時間PIDブロックと,d軸電流制御,问軸電流制御,および速度制御のためのI / Oを定義します。これらの離散時間PIDコントローラーのサンプル時間は一貫していなければならず,電流制御ループのサンプル時間と同じでなければなりません。高速なコントローラーの近似の精度が元の低速なコントローラーと比較して確実に高くなるように,各PIDコントローラーの離散積分器の式を“梯形”
に設定します。
Cd =可调谐pid (“Cd”,“π”, sampleTime.CurrentControl);Cd.IFormula =“梯形”;Cd.u =“Id_e”;Cd.y =Vd的;Cq =可调谐pid (“Cq”,“π”, sampleTime.CurrentControl);Cq。IFormula =“梯形”;Cq。u =“Iq_e”;Cq。y =矢量量化的;Cspeed =可调谐pid (“Cspeed”,“π”, sampleTime.CurrentControl);Cspeed。IFormula =“梯形”;Cspeed。u =“speed_e”;Cspeed。y =“Iq_ref”;
内側と外側のフィドバックルプのために3の加算結合を作成します。
Sum_speed = sumblk('speed_e = speed_ref - speed');Sum_id = sumblk('Id_e = Id_ref - Id');Sum_iq = sumblk('Iq_e = Iq_ref - Iq');
コントロラを調整するための入力,出力,および解析ポントを定義します。
输入= {“Id_ref”,“speed_ref”};输出= {“Id”,“智商”,“速度”};ap = {“Iq_ref”,Vd的,矢量量化的,“Id”,“智商”,“速度”};
最後に,これらのコンポ,ネントを使用して完全な制御システムST0
を組み立てます。
ST0 = connect(sys_singletune,Cd,Cq,Cspeed,sum_speed,sum_id,sum_iq,输入,输出,ap);
コマンドの追従を確実にするための追従目標とループ整形目標や,飽和を回避するためのゲイン目標を含む,調整目標を定義します。速度コントロ,ラ,では,追従帯域幅を150
Rad /sに設定します。この帯域幅は追従目標とル,プ整形目標の両方で使用されます。さらに,dc誤差を0.001
に設定して,最大定常状態誤差の0.1
を反映させます。ピ,ク偏差は10
に設定します。D軸の電流コントロ,ラ,では,追従帯域幅を2500
Rad /sに設定します。これは外側のル,プの速度コントロ,ラ,よりもずっと高速です。コントロラの飽和を防ぐため,3すべてのコントロラのゲンを制約する目標を指定します。
TR1 =调谐目标。跟踪(“speed_ref”,“速度”, 2/150, 0.001, 10);TR2 =调优目标。跟踪(“Id_ref”,“Id”, 2/2500);LS1 = TuningGoal。LoopShape (“Id”, 2500);LS2 = TuningGoal。LoopShape (“速度”, 150);MG1 = TuningGoal。获得(“speed_ref”,“Iq_ref”2);MG2 = TuningGoal。获得(“speed_ref”,矢量量化的, 50);MG3 = TuningGoal。获得(“Id_ref”,Vd的, 20);
作成したモデルST0
を基にすべての調整目標を指定し,systune
を使用して3すべてのPIコントロラを調整します。すべての設計要件を満たすパラメーター値の検出確率を高めるため,ランダムに生成された5つのパラメーター値で開始する追加の最適化を5つ実行するようにsystune
のオプションを設定します。
opt = systuneOptions(“RandomStart”5);rng(2) [ST1,fSoft] = systune(ST0,[TR1,TR2,LS1,LS2,MG1,MG2,MG3],opt);
最终:软= 1.01,硬= -Inf,迭代= 73一些闭环极点是边缘稳定(衰减率接近1e-07)最终:软= 1.01,硬= -Inf,迭代= 87最终:软= 1.01,硬= -Inf,迭代= 59一些闭环极点是边缘稳定(衰减率接近1e-07)最终:软= 1.01,硬= -Inf,迭代= 66一些闭环极点是边缘稳定(衰减率接近1e-07)软= 1.01,硬= -Inf,迭代= 61一些闭环极点是边缘稳定的(衰减率接近1e-07)最终:软= 1.01,硬= -Inf,迭代= 60
systune
を使用して解を見けた後,調整されたモデル相约
でどのように調整目標が満たされているかを確認します。追従,ル,プ整形,およびゲ,ン調整の目標を別々に表示します。次の図では,破線が調整目標を表し,実線は調整されたコントロ,ラ,の結果です。
图viewGoal([TR1,TR2],ST1)图viewGoal([LS1,LS2],ST1)图viewGoal([MG1,MG2,MG3],ST1)
調整目標を確認した後,調整されたモデル相约
からコントロ,ラ,パラメ,タ,を抽出します。調整されたπコントローラーパラメーターを使用して,πコントローラーブロックのワークスペースパラメーターを更新します。
Cd = getBlockValue(ST1,“Cd”);Cq = getBlockValue(ST1,“Cq”);Cspeed = getBlockValue(ST1,“Cspeed”);
d軸の電流のPIコントロラの調整されたゲンは次のようになります。
paramCurrentControlPD = Cd.Kp paramCurrentControlID = Cd.Ki
paramCurrentControlPD = 2.8898 paramCurrentControlID = 2.6370e+03
q軸の電流のPIコントロラの調整されたゲンは次のようになります。
paramCurrentControlPQ = Cq。Kp paramCurrentControlIQ = Cq。Ki
paramCurrentControlPQ = 1.4964 paramCurrentControlIQ = 679.7979
速度のPIコントロラの調整されたゲンは次のようになります。
paramVelocityControlTuneP = Cspeed。Kp paramVelocityControlTuneI = Cspeed。Ki
paramVelocityControlTuneP = 0.3713 paramVelocityControlTuneI = 0.0179
systune
を使用して3つすべてのコントローラーを一緒に調整した後,コントローラーのゲインが元の値と大きく異なっています。速度制御ルプのpidコントロラはサンプル時間が異なり,0.001
秒です。調整された結果では異なるサンプル時間4 e-6
秒を使用していますが、コントロ、ラ、のゲ、ンは同じです。異なるサンプル時間でコントローラーの性能が同一になることを確認するために,この例ではPIDコントローラーの離散積分器の形式を“台形則”にしています。
調整されたコントロ,ラ,の検証
調整されたコントロラゲンを使用して性能を調べます。最初に,ctrlIniValues
を使用して,モデルをそのゼロ初期条件に初期化します。switchIniValue
のスイッチ信号を設定してPIDコントローラーブロックを接続し,適切な初期条件を永磁同步电动机プラントモデルに設定します。
switchIniValue。openLoopQ = 0;switchIniValue。openLoopD = 0;ctrlIniValues。currentDIC = 0;ctrlIniValues。voltage = 0;ctrlIniValues。currentQIC = 0;ctrlIniValues。电压eq = 0;ctrlIniValues。speeddic = 0;ctrlIniValues。speedCurrent = 0; pmsm.RotorVelocityInit = 0; set_param(mdl,“LoadInitialState”,“关闭”)
片側速度コマンド信号を使用するようにモデルを設定し,モデルをシミュレ,トします。0.05
秒時点で0
Rad /sから150
Rad /sに上昇し,その後0.8
秒時点で200
Rad /sへと上昇する片側速度コマンドに対する,モデルの速度応答を表示します。シミュレション結果をmatファルSystunedSpeed.mat
のlogsout_tuned_oneside
に保存します。
signalbuilder (SignalBuilderPath“activegroup”2);sim (mdl);Logsout_tuned_oneside = logsout;保存(“SystunedSpeed”,“logsout_tuned_oneside”,“添加”)
両側速度コマンド信号を使用するようにモデルを設定し,モデルをシミュレ,トします。0.05
秒時点で0
Rad /sから150
Rad /sに上昇し,0.5
秒時点で方向を反転して0.8
秒時点で0
Rad /sに戻る両側速度コマンドに対する,モデルの速度応答を表示します。シミュレション結果をmatファルSystunedSpeed.mat
のlogsout_tuned_twoside
に保存します。
signalbuilder (SignalBuilderPath“activegroup”3);sim (mdl);Logsout_tuned_twoside = logsout;保存(“SystunedSpeed”,“logsout_tuned_twoside”,“添加”)
既存のコントロラゲンと調整された結果の間でモタ速度応答を比較します。1秒のシミュレ,ションにわたる速度応答が並んで表示されています。速度応答はステップコマンドにさらによく従っています。定常状態誤差も,piコントロ,ラ,がsystune
で調整された後に減少しています。
scdfocmotorSystunePlotSpeed
コントローラーを調整した後,両方のタイプの速度コマンドについて,モーターの応答は過渡応答がより高速になり,定常状態誤差がより小さくなります。
bdclose (mdl)