Поиск и устранение проблем преобразования SPICE подсхемы IGBT

Этот пример показывает, как решить проблему преобразования двухполярного транзистора (IGBT) с изолированным затвором SPICE и преобразовать его в эквивалентный Simscape™ компонент. The subcircuit2ssc функция преобразует все компоненты подсхемы в файле списка цепей SPICE в один или несколько эквивалентных файлов Simscape. Однако в некоторых случаях необходимо вручную отредактировать исходный список цепей SPICE.

Откройте подсхему IGBT

В этом примере вы преобразуете этот IGBT в компонент Simscape, добавите его в модель и симулируете модель. Подсхема IGBT объединяет биполярный транзистор соединения (BJT) и модели транзистора полевого эффекта металлического окисного полупроводника (MOSFET) Уровня 1 СПЕЦИИ и уравнения с моделью емкости ворот утечки. Чтобы открыть список сетей SPICE, в командном окне MATLAB введите edit ee_igbt_subckt_original.cir.

% Display ee_igbt_subckt_original.cir
type('ee_igbt_subckt_original.cir')

% Create a temporary directory and change present working directory
ee_igbt_subckt_temporary_directory;

% Create a subdirectory called +myIGBT
if ~exist('+myIGBT', 'dir')
    mkdir('+myIGBT')
end
* 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 заземляется. Чтобы устранить ошибку, обновите файл списка сетей SPICE, переименовав узел 0 в узел E.

Если вы сейчас запускаете 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, для локального параметра.

Сохраните изменения в новый файл с именем ee_igbt_subckt_modified.cir.

% Display ee_igbt_subckt_modified.cir
type('ee_igbt_subckt_modified.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

Чтобы увидеть различия между этими двумя файлами, в командном окне MATLAB введите visdiff ('ee _ igbt _ subckt _ original.cir', 'ee _ igbt _ subckt _ modified.cir').

Выполните эту команду, чтобы преобразовать подсхему SPICE ee_igbt_subckt_modified.cir модели компонента Simscape и размещения сгенерированных файлов во вновь созданной директории с именем +myIGBT:

subcircuit2ssc('ee_igbt_subckt_modified.cir','+myIGBT')
Netlist converted. Review Simscape component files and make
manual edits for any unsupported items before building the
Simscape library located at:
+myIGBT.

Сгенерируйте библиотеку Simscape с помощью ssc_build функция.

ssc_build myIGBT
Generating Simulink library 'myIGBT_lib' in the current directory '/tmp/BR2021ad_1584584_202060/publish_examples0/tpbd4d9f17_49df_435a_b73d_e1f2533e9c9c' ...

Откройте преобразованную модель IGBT

The igbtmodel.ssc файл, хранящийся в +myIGBT директория является преобразованным компонентом Simscape, полученным при запуске subcircuit2ssc функция в измененном списке сетей SPICE. The subcircuit2ssc функция также преобразовала все функции, реализованные в подсхеме SPICE, и хранила их в подкаталоге с именем +igbtmodel_simscape_functions. Чтобы отредактировать сгенерированный компонент simscape, в командном окне MATLAB, введите edit + myIGBT/igbtmodel.ssc.

open_system('ee_igbt_subckt')
set_param(find_system('ee_igbt_subckt','FindAll', 'on','type','annotation','Tag','ModelFeatures'),'Interpreter','off')

Чтобы настроить глобальную температуру Simscape, в блоке Окружения Параметров измените параметр Temperature.

Проверьте результаты симуляции

The ee_igbt_subckt_verification скрипт сравнивает ток коллектора с кривыми напряжения коллектора-эмиттера для области значений напряжений затвора-эмиттера с результатами симуляции нетлиста SPICE, которые хранятся в ee_igbt_subckt_data.mat MAT-файл. Напряжения затвора-эмиттера, Vge, составляют 8 В, 10 В, 12 В, 15 В и 20 В. Напряжение Vce растёт от 0 В до 10 В.

ee_igbt_subckt_verification;

Чтобы построить график этих характеристик с различными настройками, дважды кликните блок Define Conditions (Vge и Vce) и задайте вектор Vge и минимальное и максимальное напряжения Vce. В модели, чтобы запустить симуляции и построить график результатов, нажмите plot curves.

Очистка

Наконец, удалите временную директорию и все его подкаталоги.

% Delete temporary directory
if exist('originalDirectory','var')
    cd (originalDirectory);
    rmdir(temporaryDirectory,'s')
    clear temporaryDirectory originalDirectory;
end