Этот пример показывает, как решить проблему преобразования двухполярного транзистора (IGBT) с изолированным затвором SPICE и преобразовать его в эквивалентный Simscape™ компонент. The subcircuit2ssc
функция преобразует все компоненты подсхемы в файле списка цепей SPICE в один или несколько эквивалентных файлов Simscape. Однако в некоторых случаях необходимо вручную отредактировать исходный список цепей SPICE.
В этом примере вы преобразуете этот 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
Не все подсхемы 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' ...
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