exponenta event banner

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

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

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

В этом примере необходимо преобразовать этот IGBT в компонент Simscape, добавить его в модель и смоделировать модель. Подсхема IGBT объединяет модели и уравнения транзистора биполярного перехода (BJT) и МОП-транзистора типа металл-оксид-полупроводник (SPICE Level 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

Изменение подустановки SPICE IGBT

Не все подкарты 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

igbtmodel.ssc файл, хранящийся в +myIGBT - преобразованный компонент Simscape, полученный при выполнении subcircuit2ssc в измененном списке соединений SPICE. 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 в блоке «Параметры среды» измените параметр «Температура».

Проверка результатов моделирования

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

ee_igbt_subckt_verification;

Чтобы отобразить эти характеристики с различными настройками, дважды щелкните блок «Определить условия» (Vge и Vce) и определите вектор Vge и минимальное и максимальное напряжения Vce. В модели для выполнения моделирования и построения графика результатов щелкните график кривых.

Очистить

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

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