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