项目:电力系统工具包(PST) V3.0
项目简介
本项目是基于MATLAB环境开发的电力系统分析与控制工具包(Power System Toolbox, PST)的3.0版本。该工具包专为电力系统各种时间尺度的仿真与分析设计,集成了非线性时域仿真能力与线性小信号稳定性分析功能。
main.m 是该工具包的核心演示程序,它基于经典的 WSCC 3机9节点系统(WSCC 3-Machine 9-Bus System)展示了从数据初始化、网络矩阵构建、稳态初始化、特征值分析到暂态故障仿真的完整流程。
该代码完全基于MATLAB编写,具有高度的开放性,使用了经典二阶发电机模型进行演示,展示了PST 3.0在处理电力系统动态行为研究及稳定性评估方面的核心算法逻辑。
功能特性
- 标准测试系统:内置完整的WSCC 3机9节点系统数据,包含发电机参数、母线潮流数据及线路参数。
- 网络矩阵构建:支持自动生成节点导纳矩阵(Ybus),包含发电机内节点扩展及Kron简化算法。
- 小信号稳定性分析:具备系统线性化能力,通过计算系统状态矩阵(Jacobian)及其特征值,评估系统的振荡模式、频率及阻尼比。
- 非线性时域仿真:
* 支持自定义故障序列(预故障、故障中、故障后)。
* 模拟三相短路故障及线路切除操作。
* 使用四阶龙格-库塔法(RK4)进行高精度数值积分。
- 可视化输出:自动绘制发电机功角、转速及电磁功率的时域响应曲线。
系统要求
- MATLAB R2016a 或更高版本。
- 无需额外的工具箱(Toolbox),代码仅依赖MATLAB基础数学库。
使用方法
- 确保
main.m 文件位于MATLAB的当前工作目录或路径中。 - 直接运行
main 函数。 - 控制台将输出系统初始化状态、特征值分析报告以及仿真进度。
- 程序运行结束后,将自动弹出一个图形窗口,显示仿真结果波形。
详细功能实现说明 (main.m)
main.m 脚本按顺序执行以下核心步骤,逻辑与实际代码实现完全一致:
1. 数据初始化
代码首先将系统基准设定为 100 MVA,并直接在脚本中硬编码了WSCC系统的具体参数:
- 发电机数据:包含H(惯性时间常数)、D(阻尼系数)、Xd'(暂态电抗)等参数。
- 母线数据:定义了节点类型(Slack, PV, PQ)、电压幅值、相角以及有功/无功的发电与负荷量。
- 线路数据:包含电阻、电 reactance 和对地电纳。
2. 网络矩阵构建 (Pre-Fault)
在此阶段,代码构建了用于计算的系统导纳矩阵:
- 负荷模型转换:将所有PQ节点的负荷转换为恒定阻抗模型并融入对角元。
- Ybus构建:生成基础的网络导纳矩阵。
- 矩阵扩展与简化:通过
augment_ybus 函数引入发电机背后的虚拟内节点,随后利用 kron_reduction(Kron简化)技术,消去所有非发电机节点,生成降阶导纳矩阵(Y_red_prefault),极大地提高了后续微分方程求解的效率。
3. 系统初始化
根据给定的潮流数据(电压幅值和角度),计算系统的初始状态:
- 计算发电机注入电流。
- 基于经典二阶模型(Classical Model),计算发电机内部电动势
E' 和初始功角 delta。 - 在经典模型假设下,暂态电动势幅值
Eq_prime 在仿真过程中保持恒定,机械功率 Pm 假定等于初始电磁功率。
4. 小信号稳定性分析
代码演示了线性化分析流程:
- 调用
calculate_jacobian 函数基于初始状态计算系统状态矩阵 A_sys。 - 使用
eig 函数求解特征值。 - 筛选并排序特征值,打印振荡模式报告,包括振荡频率(Hz)和阻尼比,帮助用户判断系统在当前运行点下的稳定性。
5. 非线性时域仿真
这是核心的动态仿真部分,采用
RK4 (Runge-Kutta 4th Order) 算法求解发电机转子运动方程(摇摆方程)。仿真时长设定为 5.0秒,步长 10ms。
故障逻辑序列:
- 0.0s - 0.5s (Pre-fault):系统运行在稳态,使用
Y_red_prefault 矩阵。 - 0.5s - 0.65s (Fault-on):
* 模拟在
7号母线 发生三相短路故障。
* 通过在7号母线对角元素添加极大的导纳(1e6 - j1e6)来实现接地故障模拟。
* 重新构建并简化得到故障期间的矩阵
Y_red_fault。
- 0.65s - 5.0s (Post-fault):
* 模拟故障切除操作:断开连接
5号母线和7号母线 的线路。
* 从线路数据中移除对应行,重新构建并简化得到故障后的矩阵
Y_red_post。
在每个时间步长中,RK4算法根据当前时间 t 选择对应的网络矩阵,计算微分量并更新状态变量 [delta, omega]。同时实时计算电磁功率 Pe 用于记录。
6. 结果可视化
仿真结束后,代码创建一个名为 "PST 3.0 Simulation Results" 的图形窗口,包含三个子图:
- 发电机功角 (Rotor Angle):显示各机组功角随时间的变化,观察是否存在失步现象。
- 发电机转速 (Speed):以标幺值显示转速偏差,反映系统的频率动态。
- 电磁功率 (Electrical Power):显示各机组在故障冲击下的功率输出波动。
关键算法与函数说明
虽然代码将子函数定义折叠,但主程序逻辑依赖以下关键算法:
- kron_reduction (Kron 简化):
用于将包含网络节点和发电机节点的完整导纳矩阵,简化为仅包含发电机内电势节点的降阶矩阵。公式为 $Y_{red} = Y_{11} - Y_{12} Y_{22}^{-1} Y_{21}$。这是经典多机系统暂态稳定计算的标准方法。
定义了电力系统的状态空间方程。对于经典模型,主要包含转子运动方程:
* $d(delta)/dt = (omega - 1) times omega_0$
* $d(omega)/dt = (P_m - P_e - D(omega-1)) / (2H)$
其中 $P_e$ 需要利用当前的降阶导纳矩阵和发电机内电势实时计算:$P_{ei} = Re[E_i times conj(sum Y_{ij} E_j)]$。
- RK4 Integration (四阶龙格-库塔积分):
代码显式实现了
k1, k2, k3, k4 的计算步骤。相比于欧拉法,RK4在较大的积分步长(如10ms)下仍能保持较高的数值稳定性和精度。