Main Content

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 マイクロ秒のステップ サイズでリアル タイム実行できます。