Диагностируйте преобразование SPICE подсхемы IGBT

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

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

В этом примере вы преобразуете этот IGBT в компонент Simscape, добавить его в модель и симулировать модель. Подсхема IGBT комбинирует биполярный транзистор соединения (BJT) и модели полевого транзистора металлооксидного полупроводника (MOSFET) Уровня 1 SPICE и уравнения с моделью емкости логического элемента дренажа. Чтобы открыть список соединений SPICE, в окне команды MATLAB, вводят редактирование 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 включает определение локального параметра под названием ВРЕМЕННЫЙ ФАЙЛ, который является зарезервированным именем переменной SPICE для глобальной температуры. Чтобы разрешить ошибку и использовать глобальную температуру, удалите локальное определение параметра ВРЕМЕННОГО ФАЙЛА из файла библиотеки SPICE. В качестве альтернативы, если вы хотите задать локальную температуру, выбрать имя кроме ВРЕМЕННОГО ФАЙЛА для локального параметра.

Сохраните изменения в новый файл с именем 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/BR2021bd_1724986_5107/publish_examples0/tpc801d16c_bd36_4e41_89aa_cd4a361e8c98' ...

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

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

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

Чтобы скорректировать глобальную температуру Simscape, в блоке Environment Parameters, изменяют Температурный параметр.

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

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

ee_igbt_subckt_verification;

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

Очистка

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

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