IGBT サブサーキットの SPICE 変換のトラブルシューティング
この例では、SPICE の絶縁ゲート バイポーラ トランジスタ (IGBT) サブサーキットの変換をトラブルシューティングして、等価の Simscape™ コンポーネントに変換する方法を説明します。関数 subcircuit2ssc
は、SPICE ネットリスト ファイル内のすべてのサブサーキット コンポーネントを、1 つ以上の等価の Simscape ファイルに変換します。ただし、場合によっては、元の SPICE ネットリストを手動で編集しなければなりません。
IGBT サブサーキットを開く
この例では、この IGBT を Simscape コンポーネントに変換し、それをモデルに追加して、モデルをシミュレートします。IGBT サブサーキットは、バイポーラ接合型トランジスタ (BJT) と SPICE レベル 1 の金属酸化物半導体電界効果トランジスタ (MOSFET) のモデルと方程式を、ドレイン-ゲート静電容量モデルと組み合わせます。SPICE ネットリストを開くには、MATLAB コマンド ウィンドウで、「edit IGBTCharacteristicsSubcircuitOriginal.cir」と入力します。
* Fast and accurate SPICE IGBT model .SUBCKT IGBTMODEL C G 0 .FUNC WDSJ(X1,X2) {SQRT(12.422*{ESI}*VDS(X1)/(X2))} .FUNC VDS(X) {SQRT(X^2+0.01^2)/2} M1 N1 N2 0 0 MOSN RG G N2 {5.7-7M*(125-TEMP)} Q1 0 N1 C BJTP CGDOX N3 N2 0.1N VICGDOX N1 N3 0 GCGD N1 N2 +VALUE = {(COXD*AGD*ESI/(WDSJ(V(N1,N2),{NB})*COXD+AGD*ESI))*I(VICGDOX)} .PARAM TEMP=25 .PARAM AGD=50 ESI=1.0359 NB=2 COXD=175 VTO={4+7M*(125-TEMP)} .MODEL MOSN NMOS (IS=20N KP=20 VTO={VTO} RD=0.5M CGSO=160U) .MODEL BJTP PNP (BF=0.26 TF=1.5U CJC=0.6N RE=1M BR=0.44 IS=2E-15 NF=2 XTI=6 XTB=5) .ENDS IGBTMODEL
IGBT SPICE サブサーキットの変更
すべての SPICE サブサーキットを関数 subcircuit2ssc
で直接変換できるわけではありません。このファイル上で直接 subcircuit2ssc
変換を実行すると、次のエラーが表示されます。
"Error using spiceSubckt/extractSubcktDefinitionStrings (line 1182)" "Connecting public nodes to ground is illegal."
"Error in spiceSubckt/loadSubckt (line 379)" "this.extractSubcktDefinitionStrings; % parse the subckt line"
"Error in spiceSubckt (line 69)" "this.loadSubckt(fullNetlist); % populate the object properties"
"Error in subcircuit2ssc (line 55)" "subcircuitArray(ii) = spiceSubckt(file,subcctName(ii));"
"Error in subcircuit2ssc (line 31)" "subcircuit2ssc(netlist,target);"
変換でエラーが生成されるのは、SPICE サブサーキットがパブリック ノードをノード 0 に直接接続したからです。SPICE では、ノード 0 は接地です。このエラーを解決するには、ノード 0 をノード E に名称変更することによって、SPICE ネットリストを更新します。
ここで subcircuit2ssc
を実行し、次に ssc_build
を実行すると、次のエラーが表示されます。
"Failed to generate 'myIGBT_lib'"
"Caused by:" "Error using ne_parselibrarypackage (line 66)" "Error: Class member redefinition has been found:" "Error using myIGBT.igbtmodel> (line 22)" "Class member 'temp' is defined." "Error using myIGBT.igbtmodel> (line 31)" "Class member 'temp' is defined."
このビルドでエラーが生成されるのは、SPICE サブサーキットに TEMP という名前のローカル パラメーターの定義が含まれており、それがグローバル温度用に予約されている SPICE の変数名だからです。エラーを解決してグローバル温度を使用するには、TEMP のローカル パラメーター定義を SPICE ライブラリ ファイルから削除します。あるいは、ローカル温度を指定する場合は、ローカル パラメーターに TEMP 以外の名前を選択します。
TroubleshootSPICEImportModified.cir
という名前の新しいファイルに変更を保存します。
* Fast and accurate SPICE IGBT model .SUBCKT IGBTMODEL C G E .FUNC WDSJ(X1,X2) {SQRT(12.422*{ESI}*VDS(X1)/(X2))} .FUNC VDS(X) {SQRT(X^2+0.01^2)/2} M1 N1 N2 E E MOSN RG G N2 {5.7-7M*(125-TEMP)} Q1 E N1 C BJTP CGDOX N3 N2 0.1N VICGDOX N1 N3 0 GCGD N1 N2 +VALUE = {(COXD*AGD*ESI/(WDSJ(V(N1,N2),{NB})*COXD+AGD*ESI))*I(VICGDOX)} .PARAM AGD=50 ESI=1.0359 NB=2 COXD=175 VTO={4+7M*(125-TEMP)} .MODEL MOSN NMOS (IS=20N KP=20 VTO={VTO} RD=0.5M CGSO=160U) .MODEL BJTP PNP (BF=0.26 TF=1.5U CJC=0.6N RE=1M BR=0.44 IS=2E-15 NF=2 XTI=6 XTB=5) .ENDS IGBTMODEL
2 つのファイルの違いを確認するには、MATLAB コマンド ウィンドウで、「visdiff('IGBTCharacteristicsSubcircuitOriginal.cir','TroubleshootSPICEImportModified.cir')」と入力します。
このコマンドを実行して TroubleshootSPICEImportModified.cir
モデルの SPICE サブサーキットを Simscape コンポーネントに変換し、生成されるファイルを +myIGBT
という新しく作成されたディレクトリに配置します。
Netlist converted. Review Simscape component files and make manual edits for any unsupported items before building the Simscape library located at: +myIGBT.
関数 ssc_build
を使用して Simscape ライブラリを生成します。
Generating Simulink library 'myIGBT_lib' in the current directory '/tmp/Bdoc24a_2528353_1020267/tp4001e0e8/simscapeelectrical-ex00700102' ...
変換後の IGBT モデルを開く
+myIGBT
ディレクトリに保存されている igbtmodel.ssc
ファイルは、変換後の Simscape コンポーネントであり、変更された SPICE ネットリストで関数 subcircuit2ssc
を実行することで取得します。関数 subcircuit2ssc
は、SPICE サブサーキットに実装されているすべての関数も変換し、それらを +igbtmodel_simscape_functions
という名前のサブディレクトリに保存しています。生成された Simscape コンポーネントを編集するには、MATLAB コマンド ウィンドウで、edit +myIGBT/igbtmodel.ssc と入力します。
Simscape のグローバル温度を調整するには、Environment Parameters ブロックで、[温度] パラメーターを変更します。
シミュレーション結果の検証
IGBTCharacteristicsSubcircuitVerification
スクリプトは、コレクター電流とコレクター-エミッター電圧の曲線を、ゲート-エミッター電圧の範囲において、MAT ファイル IGBTCharacteristicsSubcircuitData.mat
に保存されている SPICE ネットリストのシミュレーション結果によって比較します。ゲート-エミッター電圧 Vge は、8 V、10 V、12 V、15 V、および 20 V です。Vce 電圧は 0 V から 10 V へとスイープします。
これらの特性をさまざまな設定でプロットするには、Define Conditions (Vge and Vce) というラベルの付いたブロックをダブルクリックして、Vge のベクトルと、最小、最大の Vce 電圧を定義します。モデル内で、シミュレーションを実行して結果をプロットするには、[plot curves] をクリックします。
リアルタイム シミュレーションの結果
この例は、Intel® 3.5 GHz i7 マルチコア CPU を搭載した Speedgoat Performance リアルタイム ターゲット マシンでテストされました。このモデルは、50 マイクロ秒のステップ サイズでリアル タイム実行できます。