基于MATLAB的三相晶闸管动态可控整流仿真系统
项目简介
本项目是一个基于纯MATLAB脚本(不依赖Simulink图形化模块)开发的电力电子仿真系统。它通过离散时间步进数值积分方法(Discrete Time Stepping Numerical Integration),对三相桥式全控整流电路进行高精度的数学建模与仿真。
该系统模拟了理想交流电网、六脉冲晶闸管整流桥、RL-E(电阻-电感-反电动势)负载以及复杂的离散控制逻辑。其核心优势在于能够模拟触发角(Alpha)随时间动态变化的过程,从而观察系统在不同工作点切换时的瞬态响应,并内置了FFT频谱分析工具用于评估网侧电流质量。
功能特性
- 纯代码仿真引擎:完全脱离Simulink环境,使用MATLAB脚本直接求解电路微分方程,运行速度快,算法逻辑透明。
- 动态触发角控制:支持触发角 $alpha$ 随时间实时变化,可模拟整流器从一个稳态工作点过渡到另一个工作点的动态过程。
- 高精度数值积分:采用前向欧拉法(Forward Euler)求解负载电流微分方程,仿真步长低至 20微秒(50kHz采样率),确保波形细节还原。
- 复杂负载模型:内置 R-L-E 负载模型,能够模拟反电动势(如直流电机或蓄电池)对电流断续现象(DCM)的影响。
- 理想换相逻辑:基于自然换相点与触发延时计算晶闸管的导通时刻,模拟共阴极组与共阳极组的器件切换。
- 单向导电性模拟:包含晶闸管电流过零自动关断逻辑,准确复现电流断续工况下的输出电压特性(高阻态特性)。
- 自动化谐波分析:集成FFT算法,自动截取仿真末段数据计算A相输入电流的频谱分布及总谐波畸变率(THD)。
系统参数配置
该仿真系统在代码中预设了以下核心参数(用户可直接在代码头部修改):
- 仿真步长 (Ts): 20e-6 秒 (50kHz)
- 电网参数: 50Hz, 线电压有效值 380V (理想三相源)
- 负载参数:
* 电阻 (R): 5 Ohm
* 电感 (L): 0.05 H
* 反电动势 (E): 50 V
代码实现逻辑详解
main.m 文件的核心实现逻辑如下:
1. 离散时间主循环
程序通过
for 循环遍历每一个时间步长,手动计算当前时刻
t 下的各项系统状态。这种方法模拟了嵌入式控制器中的实时中断处理机制。
2. 电网同步与信号生成
- 相位计算:通过
Theta = mod(Omega * t, 2*pi) 模拟锁相环(PLL)行为,实时获取电网电压相位。 - 相电压重构:根据相位直接计算 $V_a, V_b, V_c$ 三相瞬时电压值。
3. 六脉冲触发发生器
系统定义了六个自然换相点(参考点):
- T1: 30度, T2: 90度, T3: 150度, T4: 210度, T5: 270度, T6: 330度。
在每个时间步,程序检查当前相位是否满足
触发点 + 动态Alpha 的条件。如果满足,则生成对应晶闸管的触发脉冲。动态Alpha通过调用外部逻辑
get_dynamic_alpha(t) 获取。
4. 桥路开关状态机
代码通过两个状态变量追踪当前导通的晶闸管:
- High_Side_Switch (1, 3, 5): 追踪共阴极组(上桥臂)当前导通的器件。
- Low_Side_Switch (2, 4, 6): 追踪共阳极组(下桥臂)当前导通的器件。
当触发脉冲到来时,状态机强制切换导通器件,模拟理想的换相过程(忽略换相重叠角)。
5. 输出电压与负载方程求解
- 瞬时直流电压 ($U_d$): 根据当前导通的上、下桥臂编号,选择对应的线电压差作为输出 (例如:T1和T6导通时,$U_d = V_a - V_b$)。
- 微分方程求解: 使用离散化公式求解 $L frac{di}{dt} + Ri + E = U_d$。
* 公式形式:
Id_new = Id_old + (Ud - R*Id - E)/L * dt
- 电流断续处理: 每次计算后检查
Id 是否小于0。若小于0,强制置为0,并将输出电压 $U_d$ 钳位至反电动势 $E_{load}$,模拟电路断路状态。
6. 网侧电流重构
系统反向根据直流电流 $I_d$ 和开关状态重构交流侧电流:
- A相电流 $I_a$ 由 T1 (正向) 和 T4 (负向) 决定。
- B相、C相以此类推。
7. 数据可视化与分析
仿真结束后,代码执行以下后处理:
- 时域波形绘制:生成包含触发角曲线、直流电压波形、负载电流波形、网侧电流波形的综合图表。
- 频域分析:选取最后两个工频周期的数据进行FFT变换,计算基波幅值及各次谐波分量,最终输出THD百分比并绘制频谱柱状图。
使用方法
- 确保计算机安装有 MATLAB 软件(代码仅依赖基础数值计算功能,无需特殊工具箱)。
- 将
main.m 文件放置于工作目录下。 - 需自行补充或确保
get_dynamic_alpha.m 函数存在,或在代码中将其替换为固定数值/内联逻辑(根据提供的代码片段,此函数是被调用的依赖项)。 - 直接运行
main 函数。 - 等待控制台输出仿真进度及最终图表。
运行结果示例
运行成功后,系统将弹出两个窗口:
- 综合仿真波形图:展示0-0.2秒内的控制角变化、输出电压脉动、电流响应及交流侧电流波形。
- 谐波分析图:展示A相电流的频谱特性,标注基波幅值及THD数值。