本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》
论文与完整源程序_电网论文源程序的博客-优快云博客https://blog.youkuaiyun.com/liang674027206/category_12531414.html
研究背景与意义
- 电气化铁路作为国家经济发展的重要基础设施,其供电安全至关重要。然而,既有牵引供电系统仅由外部电网供电,自然灾害等导致的外部电源供电故障频发,使供电安全受到威胁,电力机车失电“趴窝”、“滞停”,易诱发低温、缺氧等连锁问题,威胁车内人员生命安全,尤其在高原地区铁路线路,外部电网条件薄弱,恶劣服役环境使救援抢险困难,存在二次事故风险.
- 既有牵引供电系统应急方案主要包括应急热备救援技术和列车牵引用能恢复技术,但存在调度复杂、救援时间长、单次救援能力有限、依赖外部电网、供电恢复时间长等问题,难以高效应对极端环境下的牵引供电系统失电故障.
- 近年来,电力电子装置的接入打破既有牵引供电系统格局,集成铁路沿线新能源及地面储能系统,构建新型“源-网-车-储”一体化供电系统为铁路应急供电提供了新思路,但对系统应急供电的研究相对较少,未深入分析应急状态下动车组的负荷需求特性也未进行定量评估.
研究方法
- 系统拓扑结构研究:研究“源-网-车-储”牵引供电系统拓扑结构,包含背靠背变流器、光伏发电系统、电池储能系统与动车组负荷等关键设备,背靠背变流器是光伏等新能源和储能接入牵引供电系统的电气接口,也是牵引网左右两臂功率融通的能量枢纽.
- 负荷需求评估与分级:进行失电区域内动车组的位置、环境特征驱动的负荷需求评估,以动车组位置和辅助系统负荷供电紧急程度为指标对牵引负荷实现重要度分级,分为a级、b级和c级,a级影响车内人员生命安全,b级保证一定速度牵引出失电区域,c级保障车内环境舒适度.
- 应急能量分配策略:提出计及负荷分级响应的应急能量分配策略,匹配执行应急供电全过程中不同重要等级负荷、不同状态下电源的应急能量分配,并通过变流器协同控制实现应急全过程牵引负荷恢复最优.
- 协同控制方法:在牵引变电所退出运行后,光伏和储能系统作为供电臂上动车组内重要负荷的主要供电来源,采用电压外环控制双向DC/DC实现中间直流侧电压恒定,电流环用于控制储能部分的输出功率,变流器的逆变部分采用正线脉宽调制中的准比例谐振控制,实现动车组负荷的精准恢复.
实验与结果
- 负荷评估和分级结果:根据动车组的负荷需求功率值以及数量,核算辅助供电系统的功率和能量需求分级结果,如a级负荷包括换气装置、照明系统I、空调装置I等,b级负荷为牵引电机及其配套设备,c级负荷包括照明系统II、空调装置II等.
- 仿真结果:用MATLAB/Simulink搭建变电所级“源-网-车-储”的仿真模型,设置典型工况验证应急供电方案在应急全过程的效果,如典型工况一中,电池剩余电量为1000kWh,功率上限为2MW,电源剩余容量足以支撑两臂动车组同时以低功率慢速牵引出整个失电区段;典型工况二中,电池剩余电量为1000kWh,功率上限为1.5MW,电源剩余容量足以支撑两臂动车组慢速牵引出整个失电区段但功率无法支持同时牵引;典型工况三中,电池剩余电量为900kWh,功率上限为1.5MW,电源剩余容量不足以支撑两臂动车组均牵引出整个失电区段,需要对各个动车组负荷进行重要度评估,决定供电优先级.
- 方案对比:对比方案Ⅰ(基于局域牵引供电自愈的“网-源-储-车”协同供能系统分层应急策略)和方案Ⅱ(计及负荷分级响应的应急牵引供电策略),方案Ⅱ可以实现左臂动车组牵引出危险区段,右臂动车组牵引出整个失电区域,而方案Ⅰ则因为没有进行优先级判断和负荷分级响应而出现车1无法牵引出失电区域且车2处于危险区段,凸显方案Ⅱ的优越性.
关键结论
- 提出的计及负荷分级响应的“源-网-车-储”系统应急供电策略,能够实现牵引供电系统应急电源保障,应急牵引供电过程中不同故障位置和环境下的牵引负荷能够分级响应,避免因无差别供电导致应急能源无法供给最重要负荷造成安全隐患.
- 与传统牵引供电系统应急方案相比,本方案响应时间更快,功率和容量更加充裕,能够实现长大坡道和隧道等高功率、远距离的牵引.
- 恢复策略匹配兼顾线路条件和车型参数等差异性,通过对列车进行应急状态下的动态建模,评估各个动车组的功率和能量需求,并通过其对人身安全影响程度进行重要等级划分,结合此时的应急电源剩余能量进行合理分配,特别是在能量不足以满足所有负荷需求时通过重要等级选择性地进行负荷响应,实现两臂负荷在整个应急牵引过程中的能量利用效果最佳.
- 未来可进一步研究如何考虑最大功率的“错峰”问题以及如何进行最优调度,以及如何对应急状态下的“源-网-车-储”系统进行稳定性分析保证系统不会崩溃造成二次安全事故.
以下是基于Python语言的仿真复现思路,包括程序代码和步骤注释:
# 导入所需库
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import minimize
# 定义动车组和系统参数类
class Train:
def __init__(self, id, position, load_power, aux_power):
self.id = id # 动车组编号
self.position = position # 动车组位置
self.load_power = load_power # 牵引负荷功率
self.aux_power = aux_power # 辅助系统负荷功率
class PowerSystem:
def __init__(self, pv_capacity, storage_capacity, storage_power_limit):
self.pv_capacity = pv_capacity # 光伏发电容量
self.storage_capacity = storage_capacity # 储能系统容量
self.storage_power_limit = storage_power_limit # 储能系统功率限值
# 初始化动车组和系统参数
trains = [
Train(1, 219.51, 1000, 500), # 左臂动车组
Train(2, 238.02, 1200, 600) # 右臂动车组
]
power_system = PowerSystem(4000, 2000, 1500)
# 定义负荷需求评估函数
def assess_load_demand(trains, power_system):
# 计算牵引负荷和辅助系统负荷的总需求
total_load_power = sum(train.load_power for train in trains)
total_aux_power = sum(train.aux_power for train in trains)
# 根据动车组位置和环境特征进行负荷重要度分级
# 假设左臂动车组处于危险区段,右臂动车组处于非危险区段
priority = [1, 0] # 1表示高优先级,0表示低优先级
return total_load_power, total_aux_power, priority
# 定义应急能量分配策略函数
def emergency_energy_allocation(trains, power_system, total_load_power, total_aux_power, priority):
# 初始化应急能量分配结果
allocation_results = []
# 计算光伏和储能系统的可用能量
available_pv_energy = power_system.pv_capacity * 0.8 # 假设光伏系统发电效率为80%
available_storage_energy = power_system.storage_capacity
# 根据负荷优先级进行能量分配
for i, train in enumerate(trains):
if priority[i] == 1: # 高优先级动车组
# 优先满足牵引负荷需求
allocated_load_power = min(train.load_power, available_pv_energy + available_storage_energy)
available_pv_energy -= allocated_load_power
available_storage_energy -= allocated_load_power
# 剩余能量用于辅助系统负荷
allocated_aux_power = min(train.aux_power, available_pv_energy + available_storage_energy)
available_pv_energy -= allocated_aux_power
available_storage_energy -= allocated_aux_power
else: # 低优先级动车组
# 优先满足辅助系统负荷需求
allocated_aux_power = min(train.aux_power, available_pv_energy + available_storage_energy)
available_pv_energy -= allocated_aux_power
available_storage_energy -= allocated_aux_power
# 剩余能量用于牵引负荷
allocated_load_power = min(train.load_power, available_pv_energy + available_storage_energy)
available_pv_energy -= allocated_load_power
available_storage_energy -= allocated_load_power
allocation_results.append({
'train_id': train.id,
'allocated_load_power': allocated_load_power,
'allocated_aux_power': allocated_aux_power
})
return allocation_results
# 定义协同控制函数
def coordinated_control(allocation_results, power_system):
# 初始化变流器控制参数
converter_control_params = []
# 根据能量分配结果设置变流器控制参数
for result in allocation_results:
train_id = result['train_id']
allocated_load_power = result['allocated_load_power']
allocated_aux_power = result['allocated_aux_power']
# 设置变流器控制参数,包括功率参考值等
converter_control_params.append({
'train_id': train_id,
'load_power_ref': allocated_load_power,
'aux_power_ref': allocated_aux_power
})
return converter_control_params
# 主程序
if __name__ == "__main__":
# 进行负荷需求评估
total_load_power, total_aux_power, priority = assess_load_demand(trains, power_system)
# 执行应急能量分配策略
allocation_results = emergency_energy_allocation(trains, power_system, total_load_power, total_aux_power, priority)
# 进行协同控制
converter_control_params = coordinated_control(allocation_results, power_system)
# 输出结果
print("负荷需求评估结果:")
print(f"总牵引负荷需求:{total_load_power} kW")
print(f"总辅助系统负荷需求:{total_aux_power} kW")
print(f"负荷优先级:{priority}")
print("\n应急能量分配结果:")
for result in allocation_results:
print(f"动车组 {result['train_id']}:")
print(f" 分配的牵引负荷功率:{result['allocated_load_power']} kW")
print(f" 分配的辅助系统负荷功率:{result['allocated_aux_power']} kW")
print("\n协同控制参数:")
for param in converter_control_params:
print(f"动车组 {param['train_id']}:")
print(f" 牵引负荷功率参考值:{param['load_power_ref']} kW")
print(f" 辅助系统负荷功率参考值:{param['aux_power_ref']} kW")
# 可视化结果
plt.figure()
plt.bar([f"动车组 {train.id}" for train in trains], [result['allocated_load_power'] for result in allocation_results], label='牵引负荷')
plt.bar([f"动车组 {train.id}" for train in trains], [result['allocated_aux_power'] for result in allocation_results], bottom=[result['allocated_load_power'] for result in allocation_results], label='辅助系统负荷')
plt.xlabel('动车组')
plt.ylabel('功率 (kW)')
plt.title('应急能量分配结果')
plt.legend()
plt.show()
文字注释
- 导入库:导入NumPy用于数值计算,Matplotlib用于可视化,SciPy用于优化求解.
- 定义动车组和系统参数类:创建动车组和系统参数的类,初始化它们的参数,如动车组编号、位置、牵引负荷功率、辅助系统负荷功率、光伏发电容量、储能系统容量和功率限值等.
- 初始化参数:实例化动车组和系统参数对象,设置具体的参数值.
- 负荷需求评估函数:定义负荷需求评估函数,计算牵引负荷和辅助系统负荷的总需求,并根据动车组位置和环境特征进行负荷重要度分级,返回总牵引负荷需求、总辅助系统负荷需求和负荷优先级.
- 应急能量分配策略函数:定义应急能量分配策略函数,根据负荷优先级进行能量分配,优先满足高优先级动车组的牵引负荷需求,再满足辅助系统负荷需求,低优先级动车组反之,返回能量分配结果.
- 协同控制函数:定义协同控制函数,根据能量分配结果设置变流器控制参数,包括功率参考值等,返回协同控制参数.
- 主程序:进行负荷需求评估、应急能量分配策略执行和协同控制,输出结果并可视化应急能量分配结果.
以上代码提供了一个完整的仿真复现思路,涵盖了从参数设置到负荷需求评估、应急能量分配策略和协同控制的整个流程,帮助理解和实现论文中的研究方法.
本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》
论文与完整源程序_电网论文源程序的博客-优快云博客https://blog.youkuaiyun.com/liang674027206/category_12531414.html