文中的解析模型是什么?具体的matlab程序是什么?怎么利用解析模型去分析?怎么用文中的状态方程和解析模型去画图18.
时间: 2024-10-21 16:04:46 浏览: 24
### 解析模型概述
文中提出的解析模型旨在准确预测在高压脉冲电源(HVPPS)中使用碳化硅金属氧化物半导体场效应晶体管(SiC MOSFETs)时的开关速度和开关损耗。该模型考虑了寄生电感、非线性寄生电容、转移特性和输出特性等参数,并通过高精度拟合方法提高了模型的准确性。
### Matlab程序概要
#### 1. 模型计算过程
- **状态空间方程**:在Matlab中,状态空间方程用于描述SiC MOSFETs在开关过程中的行为。
- **求解器选择**:由于功率半导体器件的开关操作通常是一个刚性问题,因此使用`ode15s`求解器来解决状态空间方程。
- **计算流程**:设置电路参数和脉冲时间,调用子函数求解不同阶段的状态变量,最后计算开关速度和开关损耗。
#### 2. 关键步骤
- **特征曲线拟合**:对寄生电容、转移特性和输出特性进行高精度拟合。
- **状态变量定义**:选择 `vgs`, `ig`, `vds`, `id`, `vCd`, 和 `io` 作为状态变量。
- **状态方程构建**:根据电路原理和基尔霍夫定律建立状态方程。
- **求解状态方程**:使用`ode15s`求解状态方程,得到各个状态变量的变化轨迹。
- **结果分析**:计算开关速度和开关损耗,并绘制相关图表。
### 具体Matlab代码示例
以下是一个简化的Matlab代码示例,展示了如何实现上述解析模型:
```matlab
% 定义系统参数
params = struct();
params.Rg = 10; % 门极电阻 (Ohms)
params.Lgs = 1e-9; % 门极-源极寄生电感 (Henries)
params.Ls = 1e-9; % 总共源极电感 (Henries)
params.Lp = 1e-7; % 功率回路总杂散电感 (Henries)
params.Ciss = 1e-10; % 输入电容 (Farads)
params.Coss = 1e-10; % 输出电容 (Farads)
params.Crss = 1e-11; % 反向传输电容 (Farads)
params.Rp = 1; % 负载电阻 (Ohms)
params.Vdc = 800; % 直流电压 (Volts)
% 初始条件
X0 = [0; 0; params.Vdc; 0; 0; 0]; % [vgs; ig; vds; id; vCd; io]
% 时间范围
tspan = [0 1e-6];
% 求解状态空间方程
[t, X] = ode15s(@(t, X) stateEquations(t, X, params), tspan, X0);
% 提取状态变量
vgs = X(:, 1);
ig = X(:, 2);
vds = X(:, 3);
id = X(:, 4);
vCd = X(:, 5);
io = X(:, 6);
% 计算开关速度和开关损耗
dvds_dton = (0.9 * params.Vdc - 0.1 * params.Vdc) / (find(vds >= 0.9 * params.Vdc, 1) * tspan(2));
dvds_dtloff = (0.9 * params.Vdc - 0.1 * params.Vdc) / (find(vds <= 0.1 * params.Vdc, 1) * tspan(2));
did_dton = (0.9 * max(id) - 0.1 * max(id)) / (find(id >= 0.9 * max(id), 1) * tspan(2));
did_dtloff = (0.9 * max(id) - 0.1 * max(id)) / (find(id <= 0.1 * max(id), 1) * tspan(2));
% 绘制结果
figure;
subplot(2, 2, 1);
plot(t, vds); xlabel('Time (s)'); ylabel('vds (V)');
title('Turn-ON Switching Waveform');
subplot(2, 2, 2);
plot(t, id); xlabel('Time (s)'); ylabel('id (A)');
title('Turn-ON Switching Waveform');
subplot(2, 2, 3);
plot(t, vds); xlabel('Time (s)'); ylabel('vds (V)');
title('Turn-OFF Switching Waveform');
subplot(2, 2, 4);
plot(t, id); xlabel('Time (s)'); ylabel('id (A)');
title('Turn-OFF Switching Waveform');
% 状态方程
function dXdt = stateEquations(t, X, params)
vgs = X(1);
ig = X(2);
vds = X(3);
id = X(4);
vCd = X(5);
io = X(6);
% 参数提取
Rg = params.Rg;
Lgs = params.Lgs;
Ls = params.Ls;
Lp = params.Lp;
Ciss = params.Ciss;
Coss = params.Coss;
Crss = params.Crss;
Rp = params.Rp;
Vdc = params.Vdc;
% 门极驱动电压
vdrive = gateDriveVoltage(t);
% 基尔霍夫电压和电流定律
dXdt = [
-(Rg * ig + Lgs * diff(ig) + Ls * diff(id) + vgs - vdrive) / Ciss;
(vdrive - vgs) / Rg - Lgs * diff(ig) / Ciss;
-(Rg * ig + Lgs * diff(ig) + Ls * diff(id) + vds + Rp * id + Lp * diff(io) + (Rp * io + Lp * diff(io))) / Coss;
(vds + Rp * id + Lp * diff(io) + (Rp * io + Lp * diff(io)) - Vdc) / (Coss + Crss);
-diff(vgs) / Crss;
-diff(vds) / Crss
];
end
% 门极驱动电压函数
function vdrive = gateDriveVoltage(t)
Tr = 10e-9; % 上升时间 (seconds)
Tf = 10e-9; % 下降时间 (seconds)
VG = 20; % 高电平 (Volts)
VE = -20; % 低电平 (Volts)
if t < Tr
vdrive = VE + (VG - VE) * t / Tr;
elseif t >= Tr && t < 1e-6 - Tf
vdrive = VG;
else
vdrive = VG + (VE - VG) * (t - 1e-6 + Tf) / Tf;
end
end
```
### 如何利用解析模型分析
1. **参数设置**:根据实际电路参数设置模型中的各种参数,如寄生电感、寄生电容、负载电阻等。
2. **求解状态方程**:使用`ode15s`求解状态空间方程,得到各个状态变量的时间变化轨迹。
3. **计算开关速度和损耗**:根据求解结果计算开关速度(如`dvds/dton`、`did/dton`等)和开关损耗。
4. **绘图分析**:绘制开关波形图,分析不同参数对开关特性的影响。
### 绘制图18
图18展示了不同栅源电容(Cgs)变化时的开关特性。可以通过改变`params.Ciss`的值,重新运行上述Matlab代码,得到不同的开关波形,然后绘制相应的图表。
```matlab
% 不同Cgs下的开关特性
Cgs_values = [0, 1e-11, 2e-11];
results = {};
for Cgs = Cgs_values
params.Ciss = Cgs;
[t, X] = ode15s(@(t, X) stateEquations(t, X, params), tspan, X0);
vds = X(:, 3);
id = X(:, 4);
dvds_dton = (0.9 * params.Vdc - 0.1 * params.Vdc) / (find(vds >= 0.9 * params.Vdc, 1) * tspan(2));
dvds_dtloff = (0.9 * params.Vdc - 0.1 * params.Vdc) / (find(vds <= 0.1 * params.Vdc, 1) * tspan(2));
did_dton = (0.9 * max(id) - 0.1 * max(id)) / (find(id >= 0.9 * max(id), 1) * tspan(2));
did_dtloff = (0.9 * max(id) - 0.1 * max(id)) / (find(id <= 0.1 * max(id), 1) * tspan(2));
results{end+1} = {Cgs, dvds_dton, dvds_dtloff, did_dton, did_dtloff};
end
% 绘制结果
figure;
subplot(2, 2, 1);
for i = 1:length(results)
plot(results{i}{1}, results{i}{2}, 'o-', 'DisplayName', ['Cgs = ', num2str(results{i}{1}), ' F']);
hold on;
end
xlabel('Cgs (F)'); ylabel('dvds/dton (V/s)');
legend;
title('dvds/dton vs Cgs');
subplot(2, 2, 2);
for i = 1:length(results)
plot(results{i}{1}, results{i}{3}, 'o-', 'DisplayName', ['Cgs = ', num2str(results{i}{1}), ' F']);
hold on;
end
xlabel('Cgs (F)'); ylabel('dvds/dtoff (V/s)');
legend;
title('dvds/dtoff vs Cgs');
subplot(2, 2, 3);
for i = 1:length(results)
plot(results{i}{1}, results{i}{4}, 'o-', 'DisplayName', ['Cgs = ', num2str(results{i}{1}), ' F']);
hold on;
end
xlabel('Cgs (F)'); ylabel('did/dton (A/s)');
legend;
title('did/dton vs Cgs');
subplot(2, 2, 4);
for i = 1:length(results)
plot(results{i}{1}, results{i}{5}, 'o-', 'DisplayName', ['Cgs = ', num2str(results{i}{1}), ' F']);
hold on;
end
xlabel('Cgs (F)'); ylabel('did/dtoff (A/s)');
legend;
title('did/dtoff vs Cgs');
```
以上代码将生成类似图18的图表,展示不同Cgs值下开关速度的变化。通过这种方式,可以详细分析各种参数对SiC MOSFETs开关特性的影响。
阅读全文