Enter I-V curves data in Simscape IGBT block

9 ビュー (過去 30 日間)
Chwan-Hsen Chen
Chwan-Hsen Chen 2025 年 11 月 25 日 12:25
回答済み: Chwan-Hsen Chen 2025 年 11 月 28 日 10:25
I wish to enter the tabulated data of multiple Ic-Vce curves into the block parameters of an IGBT block. These data from multiple curve are extracted from data sheet using GraphData Extractor.
It seems that IGBT block accepts only data points (Y values) sampled at the same X-value. But the Vce curve for high Vge (=20) has a short X range.
If I choose gridded data to export. The APP will truncate all data points greater than 5V (the largest X values of the leftmost curve).
My question is whether there a remedy to avoid the data truncation.
  1 件のコメント
Umar
Umar 2025 年 11 月 26 日 17:52

Hi @Chwan-Hsen Chen,

I am here to help you. Please let me know if you need further assistance or help.

サインインしてコメントする。

採用された回答

Umar
Umar 2025 年 11 月 26 日 8:36

Hi @Chwan-Hsen,

I saw your question about entering the IGBT I-V curve data into Simscape and totally understand your frustration. Looking at your datasheet plots, I can see exactly what you mean - the Vge=20V curve (the top green one) saturates really early around 2-3V, while the lower gate voltage curves like Vge=9V and 10V extend all the way out to 10V. When GraphData Extractor forces everything onto a common grid, it's truncating at the shortest curve and you lose all that valuable data from the other curves.

The good news is there's a straightforward remedy that's actually physically justified. The N-Channel IGBT block does require a common Vce grid for all your gate voltages, but you can extend the short curves yourself before entering the data. Here's the approach: Extract each curve individually from your datasheet with its natural voltage range first. Then for the saturated curves (like your Vge=20V, 15V, 13V, and 12V curves that end early), extend them by calculating the on-state resistance from their last few data points and extrapolating linearly. This makes physical sense because at high gate voltages, the IGBT is fully saturated and just behaves like a resistor beyond the saturation point.

Here's a quick MATLAB snippet:

% Create common grid based on your longest curve (goes to 10V)
Vce_common = 0:0.5:10;
% After extracting your Vge=20V curve (ends around 2-3V)
Vce_20V = [0, 0.5, 1.0, 1.5, 2.0, 2.5];  % your extracted points
Ic_20V = [0, 150, 400, 520, 580, 600];   % approximate from your plot
Ic_20V_extended = interp1(Vce_20V, Ic_20V, Vce_common, 'linear', 'extrap');
% After extracting your Vge=15V curve
Vce_15V = [0, 0.5, 1.0, 1.5, 2.0, 3.0];
Ic_15V = [0, 120, 350, 480, 550, 590];
Ic_15V_extended = interp1(Vce_15V, Ic_15V, Vce_common, 'linear', 'extrap');
% After extracting your Vge=13V curve
Vce_13V = [0, 0.5, 1.0, 2.0, 3.0, 4.0];
Ic_13V = [0, 100, 300, 450, 510, 540];
Ic_13V_extended = interp1(Vce_13V, Ic_13V, Vce_common, 'linear', 'extrap');
% After extracting your Vge=12V curve
Vce_12V = [0, 0.5, 1.0, 2.0, 4.0, 6.0];
Ic_12V = [0, 80, 250, 380, 450, 480];
Ic_12V_extended = interp1(Vce_12V, Ic_12V, Vce_common, 'linear', 'extrap');
% After extracting your Vge=11V curve (extends further)
Vce_11V = [0, 1.0, 2.0, 4.0, 6.0, 8.0, 10.0];
Ic_11V = [0, 200, 320, 390, 420, 440, 450];
Ic_11V_extended = interp1(Vce_11V, Ic_11V, Vce_common, 'linear', 'extrap');
% After extracting your Vge=10V curve
Vce_10V = [0, 1.0, 2.0, 4.0, 6.0, 8.0, 10.0];
Ic_10V = [0, 150, 240, 300, 330, 350, 360];
Ic_10V_extended = interp1(Vce_10V, Ic_10V, Vce_common, 'linear', 'extrap');
% After extracting your Vge=9V curve (longest range)
Vce_9V = [0, 1.0, 2.0, 4.0, 6.0, 8.0, 10.0];
Ic_9V = [0, 100, 180, 230, 260, 280, 290];
Ic_9V_extended = interp1(Vce_9V, Ic_9V, Vce_common, 'linear', 'extrap');
% Build matrix for Simscape (rows = Vge, columns = Vce)
Vge_vector = [9, 10, 11, 12, 13, 15, 20];  % from your plot
Ic_matrix = [
  Ic_9V_extended;
  Ic_10V_extended;
  Ic_11V_extended;
  Ic_12V_extended;
  Ic_13V_extended;
  Ic_15V_extended;
  Ic_20V_extended
];

Validation tip: Plot everything after you create the common grid to make sure it looks right:

figure;
plot(Vce_common, Ic_matrix');
xlabel('Vce (V)');
ylabel('Ic (A)');
legend(string(Vge_vector) + 'V');
grid on;
title('Extended IGBT I-V Characteristics');

Please see attached.

Looking at your second image, I can see the truncation problem clearly - all your curves get cut off at around 5V and you're losing the extended data. By handling the extrapolation manually like I described above, you avoid this truncation and get to use the full voltage range for the curves that need it.

One caution: the Simscape block has some requirements - current must be zero when voltage is zero, and conductance (dIc/dVce) must be positive everywhere. The extrapolation approach I described should naturally satisfy these.

Entering the Data into Simscape Once you've validated your plot and everything looks good, you can enter the data into the N-Channel IGBT block:

1. Open your N-Channel IGBT block 2. Set Modeling option to: Full I-V and capacitance characteristics | No thermal port 3. Set I-V characteristics defined by to: Lookup table (2D, temperature independent) 4. In the Main tab, enter: * Vector of gate-emitter voltages, Vge: Vge_vector * Vector of collector-emitter voltages, Vce: Vce_common * Tabulated collector currents, Ic(Vge,Vce): Ic_matrix

The block will now use your complete, non-truncated I-V characteristics for simulation.

Hope this helps!

その他の回答 (1 件)

Chwan-Hsen Chen
Chwan-Hsen Chen 2025 年 11 月 28 日 10:25
Hi! Umar,
It works great! Thanks for your help.

カテゴリ

Help Center および File ExchangeChoose and Parameterize Blocks についてさらに検索

製品


リリース

R2025b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by