主要内容

このページの翻訳は最新ではありません。ここをクリックして,英語の最新版を参照してください。

SYSTUNEを使用したフィールドオリエンテッドコントローラーの調整

この例では,systuneコマンドを使用して,周波数応答推定)の結果に基づき永久磁石同期機永磁同步电动机のフィールドオリエンテッド制御船を調整する方法を説明します。

フィールドオリエンテッド制御の紹介

この例では,永久磁石同期機永磁同步电动机のフィールドオリエンテッド制御(FOC)をSimscape™电气™コンポーネントを使用して仿真软件®でモデル化します。金宝app

mdl =“scdfocmotorSystune”;open_system(mdl) SignalBuilderPath = [mdl,“/ System_Inputs / Signal_Builder_Experiments”];

フィールドオリエンテッド制御は三相固定子電流をベクトルとして制御します。FOCは,時間および速度に依存する三相システムを2つの時不変座標系に変換する投影に基づいています。これらの変換は,克拉克変換,公园変換,およびそのそれぞれの逆変換です。これらの変換はController_Algorithmサブシステム内のブロックとして実装されます。

ACモーターの制御にFOCを使用する利点には次が含まれます。

  • トルクと磁束を個別に直接制御

  • 過渡状態および定常状態を正確に管理

  • 直流モーターと比べて同様の性能

Controller_Algorithmサブシステムは3つすべてのπコントローラーを含みます。外側のループのπコントローラーはモーターの速度を調整します。内側のループのπコントローラー2つはd軸と问軸の電流を個別に制御します。外側のループのπコントローラーからのコマンドは,问軸に直接送られてトルクを制御します。このタイプのACモーターでは回転子の磁束が永久磁石で固定されているため,d軸のコマンドは永磁同步电动机ではゼロになります。

コントローラーを調整する前に,元のコントローラーでの速度応答を確認し,シミュレーション結果を垫ファイルSystunedSpeed.matに保存します。既存の速度のπコントローラーのゲインはP = 0.08655およびI = 0.1997です。電流のπコントローラーのゲインはどちらもP = 1および我= 200です。

scdfocmotorSystuneOriginalResponse

周波数応答データの収集

周波数応答データを収集するには,150ラジアン/秒の速度での操作点を見つけ,線形解析ポイントを指定し,入力信号を定義して,周波数応答を推定します。

元のコントローラーを切断し,VDコマンドとVQコマンドで開ループシステムモデルをシミュレートします。操作点に到達するために,ctrlIniValues構造体を使用して初期の電圧をVDでは-0.1 V, VQでは3.465 Vに指定します。定電圧コマンドブロックはswitchIniValue構造体でスイッチ信号を設定することにより接続されます。

switchIniValue。openLoopD = 1;switchIniValue。openLoopQ = 1;ctrlIniValues。电压= -0.1;ctrlIniValues。voltageQ = 3.465;

3.秒でのシミュレーションのスナップショットを周波数応答推定のための操作点として取得します。

signalbuilder (SignalBuilderPath“activegroup”1);op = findop (mdl 3);

シミュレーションのスナップショットの操作点をモデルの初期条件として使用します。ctrlIniValues構造体内のモデルの初期値を,この定常状態になるよう変更します。d軸の電流コントローラーでは電が流ID0一个です。问軸の電流コントローラーでは電流智商が0.1一个です。外側のループの速度コントローラーでは指令電流が0.122一个,速度が150rad / sです。永磁同步电动机プラントで,永磁同步电动机構造体の回転子速度を150rad / sに設定します。

set_param (mdl“LoadInitialState”“上”);set_param (mdl“InitialState”“getstatestruct (op) ');ctrlIniValues。currentDIC = 0;ctrlIniValues。currentQIC = 0.1;ctrlIniValues。speedIC = 150;ctrlIniValues。speedCurrent = 0.122;永磁同步电动机。RotorVelocityInit = 150;

周波数応答推定のための線形解析ポイントをモデルに追加します。開ループの入力ポイントをVDとVQに追加します。開ループの出力ポイントをID、智商、および速度に追加します。さらに,ループの中断の解析ポイントを速度測定に追加します。

io = getlinio (mdl);

固定サンプル時間4 e-6秒で,10から10,000ラジアン/秒までの入力sinestream信号を定義します。sinestream信号の振幅は0.25Vです。この振幅により,プラントは飽和制限内で確実に正しく励起されます。励起の振幅が大きすぎたり小さすぎたりすると,周波数応答の推定結果が不正確になります。

在= frest.createFixedTsSinestream (4 e-6, {10 1 e4});在。幅值= 0.25;

ioの線形解析ポイントおよびの入力信号を使用して,指定された定常状態操作点人事处での周波数応答を推定します。周波数応答の推定を終了した後,結果のモデルで入出力チャネル名を変更し,周波数応答をプロットします。

estsys = frestimate (mdl, op, io);estsys。InputName = {Vd的矢量量化的};estsys。OutputName = {“Id”“智商”“速度”};波德(estsys“。”

systuneによる制御システムの調整

周波数応答推定の結果から状態空間の線形システムモデルを取得します。関数党卫军のオプションセットを使用して,この反復パラメーター推定に使用される数値探索法をレーベンバーグ・マルカート法の最小二乗探索に設定します。4つの状態と4 e-6秒の周期をもつ状態空間モデルを推定します。

选择= ssestOptions (“SearchMethod”“lm”);optssest.Regularization.Lambda = 0.1;sys_singletune = ss (estsys 4“t”4 e-6选择);

永磁同步电动机FOCモデルの3つすべてのπコントローラーを調整するには,次のブロック線図に示すような制御システムを作成しなければなりません。

3つの調整可能な離散時間PIDブロックと,d軸電流制御,问軸電流制御,および速度制御のためのI / Oを定義します。

Cd = tunablePID (“Cd”“π”4 e-6);Cd.u =“Id_e”;Cd.y =Vd的;Cq = tunablePID (“Cq”“π”4 e-6);Cq。u =“Iq_e”;Cq。y =矢量量化的;Cspeed = tunablePID (“Cspeed”“π”4 e-6);Cspeed。u =“speed_e”;Cspeed。y =“Iq_ref”

内側と外側のフィードバックループのために3つの加算結合を作成します。

sum_speed = sumblk ('speed_e = speed_ref - speed');sum_id = sumblk ('Id = Id');sum_iq = sumblk ('Iq = Iq');

コントローラーを調整するための入力,出力,および解析ポイントを定義します。

输入= {“Id_ref”“speed_ref”};输出= {“Id”“智商”“速度”};APs = {“Iq_ref”Vd的矢量量化的“Id”“智商”“速度”};

最後に,これらのコンポーネントを使用して完全な制御システムST0を組み立てます。

ST0 =连接(sys_singletune、Cd、Cq Cspeed, sum_speed, sum_id, sum_iq,输入,输出,APs);

コマンドの追従を確実にするための追従目標とループ整形目標や,飽和を回避するためのゲイン目標を含む,調整目標を定義します。速度コントローラーでは,追従帯域幅を150rad / sに設定します。この帯域幅は追従目標とループ整形目標の両方で使用されます。さらに特区誤差を0.001に設定して,最大定常状態誤差の0.1%を反映させます。ピーク偏差は10に設定します。d軸の電流コントローラーでは,追従帯域幅を2500rad / sに設定します。これは外側のループの速度コントローラーよりもずっと高速です。コントローラーの飽和を防ぐため,3つすべてのコントローラーのゲインを制約する目標を指定します。

TR1 = TuningGoal。跟踪(“speed_ref”“速度”, 2/150, 0.001, 10);TR2 = TuningGoal。跟踪(“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つすべてのπコントローラーを調整します。すべての設計要件を満たすパラメーター値の検出確率を高めるため、ランダムに生成された 5 つのパラメーター値で開始する追加の最適化を 5 つ実行するようにsystuneのオプションを設定します。

选择= systuneOptions (“RandomStart”5);rng (2);[相约,fSoft] = systune (ST0 (TR1、TR2 LS1, LS2, MG1, MG2, MG3],选择);
最后:软= 1.03,=无穷,迭代= 104一些闭环极点略微稳定(衰变率接近1 e-07)最后:软= 1.01,=无穷,迭代= 65一些闭环极点略微稳定(衰变率接近1 e-07)最后:软= 1.01,=无穷,最后迭代= 62:Final: Soft = 1.01, Hard = -Inf, Iterations = 50 . Final: Soft = 1.01, Hard = -Inf, Iterations = 50

systuneを使用して解を見つけた後,調整されたモデル相约でどのように調整目標が満たされているかを確認します。追従,ループ整形,およびゲイン調整の目標を別々に表示します。次の図では,破線が調整目標を表し,実線は調整されたコントローラーの結果です。

图viewGoal (TR1, TR2,相约);图viewGoal ([LS1 LS2],相约);图viewGoal (MG1、MG2的MG3,相约);

調整目標を確認した後,調整されたモデル相约からコントローラーパラメーターを抽出します。調整されたπコントローラーパラメーターを使用して,πコントローラーブロックのワークスペースパラメーターを更新します。

Cd = getBlockValue(相约,“Cd”);Cq = getBlockValue(相约,“Cq”);Cspeed = getBlockValue(相约,“Cspeed”);paramCurrentControlPD = Cd.Kp;paramCurrentControlID = Cd.Ki;paramCurrentControlPQ = Cq.Kp;paramCurrentControlIQ = Cq.Ki;paramVelocityControlTuneP = Cspeed.Kp;paramVelocityControlTuneI = Cspeed.Ki;

systuneを使用して3つすべてのコントローラーを一緒に調整した後,コントローラーゲインは次のようになります。

  • 速度のπコントローラーのゲインはP = 0.3609およびI = 0.1434。

  • d軸の電流のπコントローラーのゲインはP = 2.7877およびI = 2676.7。

  • 问軸の電流のπコントローラーのゲインはP = 1.3371およびI = 881.3072。

調整されたコントローラーの検証

調整されたコントローラーゲインを使用して性能を調べます。最初に,ctrlIniValuesを使用して,モデルをそのゼロ初期条件に初期化します。switchIniValueのスイッチ信号を設定してPIDコントローラーブロックを接続し,適切な初期条件を永磁同步电动机プラントモデルに設定します。

switchIniValue。openLoopQ = 0;switchIniValue。openLoopD = 0;ctrlIniValues。currentDIC = 0;ctrlIniValues。电压= 0;ctrlIniValues。currentQIC = 0;ctrlIniValues。voltageQ = 0;ctrlIniValues。speedIC = 0;ctrlIniValues。speedCurrent = 0; pmsm.RotorVelocityInit = 0; set_param(mdl,“LoadInitialState”“关闭”);

片側速度コマンド信号を使用するようにモデルを設定し,モデルをシミュレートします。0.05秒時点で0rad / sから150rad / sに上昇し,その後0.8秒時点で200rad / sへと上昇する片側速度コマンドに対する,モデルの速度応答を表示します。シミュレーション結果を垫ファイルSystunedSpeed.matlogsout_tuned_onesideに保存します。

signalbuilder (SignalBuilderPath“activegroup”2);sim (mdl);logsout_tuned_oneside = logsout;保存(“SystunedSpeed”“logsout_tuned_oneside”“添加”

両側速度コマンド信号を使用するようにモデルを設定し,モデルをシミュレートします。0.05秒時点で0rad / sから150rad / sに上昇し,0.5秒時点で方向を反転して0.8秒時点で0rad / sに戻る両側速度コマンドに対する,モデルの速度応答を表示します。シミュレーション結果を垫ファイルSystunedSpeed.matlogsout_tuned_twosideに保存します。

signalbuilder (SignalBuilderPath“activegroup”3);sim (mdl);logsout_tuned_twoside = logsout;保存(“SystunedSpeed”“logsout_tuned_twoside”“添加”

既存のコントローラーゲインと調整された結果の間でモーター速度応答を比較します。1秒のシミュレーションにわたる速度応答が並んで表示されています。速度応答はステップコマンドにさらによく従っています。定常状態誤差もπコントローラーがsystuneで調整された後に減少しています。

scdfocmotorSystunePlotSpeed

コントローラーを調整した後,両方のタイプの速度コマンドについて,モーターの応答は過渡応答がより高速になり,定常状態誤差がより小さくなります。

bdclose (mdl)

参考

関連するトピック