本文为电力系统可靠性课程编程大作业的程序说明文档,可靠性的计算方式为通过构建停运表形成发电系统及互联系统的裕度表,并计算可靠性指标。关于电力系统可靠性的概念、计算方式等将不会在本文说明。
在此分享程序说明文档,代码已上传至资源,名称为“课程作业:发电及互联系统可靠性计算程序”。
本程序基于MATLAB R2022b开发,能够生成发电系统和互联系统的裕度表,并计算可靠性指标。
本程序可以选择3套计算算例,分别为《电力系统规划基础》的例3-3、例3-5,和RTS-79系统的可靠性计算结果;也可以修改输入数据,对任意发电系统或互联系统的可靠性进行计算。
正如main函数中注释所写,程序依次执行五个模块:
1)数据初始化:包括读入文件参数、创建各类型的对象、对参数进行初始化等步骤;
2)建立发电系统裕度表:包括四步,分别为形成发电系统停运表、形成负荷停运表、形成发电系统裕度表、计算发电系统可靠性指标;
3)形成输电系统停运表:包括三步,分别为形成输电线路停运表、形成变压器停运表、利用串联公式形成输电系统停运表;
4)建立互联系统裕度表:包括两步,分别为计算互联系统裕度表、计算互联系统可靠性指标;
5)格式化并输出结果。
其中,步骤3、4仅在互联系统的计算中需要执行。
程序通过读取Excel表格进行输入,在“InputData.xlsx”文件中,包含10个表单,说明如下:
表 1 输入表格InputData.xlsx的表单说明
表单名称 | 表单内容说明 |
---|---|
输入说明 | 对系统参数“Para”表单中需要输入的参数进行说明 |
Para | 待输入的系统参数,包括算例选择、负荷基值、步长、是否互联与互联系统数量 |
GenSysData of Ex.3-3 | 例3-3的发电机输入参数,包括类型、容量、数量、MTTF、MTTR |
Load of Ex.3-3 | 例3-3的负荷曲线输入数据 |
LineData of Ex.3-5 | 例3-5的线路输入参数,包括类型、容量、数量、MTTF、MTTR |
TransformerData of Ex.3-5 | 例3-5的变压器输入参数,包括类型、容量、数量、MTTF、MTTR |
GenSysData | RTS-79系统的发电机输入参数,包括类型、容量、数量、MTTF、MTTR |
WeekLoad | RTS-79系统的周负荷输入 |
DailyLoad | RTS-79系统的日负荷输入 |
HourlyLoad | RTS-79系统的小时负荷输入 |
程序将计算结果输出到Excel表格中,在“OutputData.xlsx”文件中,包含4个表单,说明如下:
表 2 输出表格OutputData.xlsx的表单说明
表单名称 | 表单内容说明 |
---|---|
发电系统的裕度表 | 存放例3-3、RTS-79系统算例输出的发电系统裕度表 |
发电系统的可靠性指标 | 存放例3-3、RTS-79系统算例输出的发电系统可靠性指标 |
互联系统的裕度表 | 存放例3-5算例输出的互联系统裕度表 |
互联系统的可靠性指标 | 存放例3-5算例输出的互联系统可靠性指标 |
发电机类用于定义发电机,并进行与发电机组相关的计算。在程序中,系统中的每台发电机有且仅有一个发电机对象与之对应。
输入参数:步长Step、类型type、容量Cap、平均无故障工作时间MTTF、平均修复时间MTTR
导出参数:运行概率p、强迫停运率q、故障率lamda、修复率mu
停运表参数:停运表长度NSM、停运表列向量,如运行容量X、停运容量X0、确切概率P、累计概率P0、增量频率f、累计频率F0
停运表:机组停运表OutageTable、系统停运表SysOutageTable(用于发电系统停运表的中间计算过程)
输入:Step、type、Cap、MTTF、MTTR
返回:发电机对象obj
功能:函数中,对成员变量Step、type、Cap、MTTF、MTTR进行赋值,计算p、q、lamda、mu、NSM,对停运表列向量进行初始化。
输入:发电机对象obj
返回:无
功能:分别根据公式计算停运表列向量的每个元素,最后将其合并成OutageTable,并将SysOutageTable初始化为OutageTable。
输入:发电机对象obj、发电机编号i
返回:无
功能:通过disp函数将对应发电机的机组参数打印在控制台,包括类型type、容量Cap、平均无故障工作时间MTTF、平均修复时间MTTR、运行概率p、强迫停运率q、故障率lamda、修复率mu。
输入:发电机对象obj、发电机编号i
返回:发电机停运表reOutageTable
功能:通过disp函数将对应发电机的单机停运表打印在控制台,并返回停运表整体。
输入:待计算的两台发电机对象obj1和obj2
返回:发电机停运表reOutageTable
功能:调用ParallelConnect函数,计算obj1.SysOutageTable和obj2.OutageTable两个停运表的卷积,将结果储存在obj2.SysOutageTable中。
输入:发电机对象obj
返回:发电系统停运表reSysOutageTable
功能:通过disp函数将发电系统停运表打印在控制台,并返回停运表整体。
负荷类用于定义负荷,并进行与负荷相关的计算。在程序中,系统中的各个节点的负荷有且仅有一个负荷对象与之对应。
输入参数:步长Step、负荷基值LoadBase、负荷标幺值LoadData
导出参数:总时段数T
停运表参数:停运表长度NSM、停运表列向量,如运行容量X、停运容量X0、确切概率P、累计概率P0、增量频率f、累计频率F0
停运表:负荷停运表OutageTable
输入:Step、LoadBase、LoadData
返回:负荷对象obj
功能:函数中,对成员变量Step、LoadBase、LoadData进行赋值,计算T、NSM,对停运表列向量进行初始化。
输入:负荷对象obj
返回:无
功能:扫描负荷曲线,形成概率表和频率表,之后再形成停运表列向量,最后将各列向量合并成OutageTable。
输入:负荷对象obj
返回:负荷停运表reOutageTable
功能:通过disp函数将对应负荷的停运表打印在控制台,并返回停运表整体。
输电线路类用于定义输电线路,并进行与输电线路相关的计算。在程序中,系统中的每条输电线路有且仅有一个输电线路对象与之对应。
输入参数:步长Step、类型type、容量Cap、平均无故障工作时间MTTF、平均修复时间MTTR
导出参数:运行概率p、强迫停运率q、故障率lamda、修复率mu
停运表参数:停运表列向量,如运行容量X、停运容量X0、确切概率P、累计概率P0、增量频率f、累计频率F0
停运表:机组停运表OutageTable、系统停运表SysOutageTable(用于输电线路整体停运表的中间计算过程)
输入:Step、type、Cap、MTTF、MTTR
返回:输电线路对象obj
功能:函数中,对成员变量Step、type、Cap、MTTF、MTTR进行赋值,计算p、q、lamda、mu,对停运表列向量进行初始化。
输入:输电线路对象obj
返回:无
功能:分别根据公式计算停运表列向量的每个元素,最后将其合并成OutageTable,并将SysOutageTable初始化为OutageTable。
输入:输电线路对象obj、输电线路编号i
返回:无
功能:通过disp函数将对应输电线路参数打印在控制台,包括类型type、容量Cap、平均无故障工作时间MTTF、平均修复时间MTTR、运行概率p、强迫停运率q、故障率lamda、修复率mu。
输入:待计算的两条输电线路对象obj1和obj2
返回:无
功能:调用ParallelConnect函数,计算obj1.SysOutageTable和obj2.OutageTable两个停运表的卷积,将结果储存在obj2.SysOutageTable中。
输入:输电线路对象obj
返回:输电线路系统停运表reSysOutageTable
功能:通过disp函数将输电线路系统停运表打印在控制台,并返回停运表整体。
变压器类用于定义变压器,并进行与变压器相关的计算。在程序中,系统中的每台变压器有且仅有一个变压器对象与之对应。
输入参数:步长Step、类型type、容量Cap、平均无故障工作时间MTTF、平均修复时间MTTR
导出参数:运行概率p、强迫停运率q、故障率lamda、修复率mu
停运表参数:停运表列向量,如运行容量X、停运容量X0、确切概率P、累计概率P0、增量频率f、累计频率F0
停运表:机组停运表OutageTable、系统停运表SysOutageTable(用于变压器整体停运表的中间计算过程)
输入:Step、type、Cap、MTTF、MTTR
返回:输电线路对象obj
功能:函数中,对成员变量Step、type、Cap、MTTF、MTTR进行赋值,计算p、q、lamda、mu,对停运表列向量进行初始化。
输入:变压器对象obj
返回:无
功能:分别根据公式计算停运表列向量的每个元素,最后将其合并成OutageTable,并将SysOutageTable初始化为OutageTable。
输入:变压器对象obj、变压器编号i
返回:无
功能:通过disp函数将对应变压器参数打印在控制台,包括类型type、容量Cap、平均无故障工作时间MTTF、平均修复时间MTTR、运行概率p、强迫停运率q、故障率lamda、修复率mu。
输入:变压器对象obj、变压器编号i
返回:变压器停运表reOutageTable
功能:通过disp函数将对应变压器的单机停运表打印在控制台,并返回停运表整体。
输入:待计算的两台变压器对象obj1和obj2
返回:无
功能:调用ParallelConnect函数,计算obj1.SysOutageTable和obj2.OutageTable两个停运表的卷积,将结果储存在obj2.SysOutageTable中。
输入:变压器对象obj
返回:变压器系统停运表reSysOutageTable
功能:通过disp函数将变压器系统停运表打印在控制台,并返回停运表整体。
系统类用于定义待进行可靠性计算的电力系统,并进行与之相关的计算。在程序中仅有一个系统对象用于表示待计算的问题系统。
输入参数:步长Step
停运表参数:停运表列向量,如运行容量X、停运容量X0、确切概率P、累计概率P0、增量频率f、累计频率F0
停运表:发电系统停运表GenOutageTable、负荷系统停运表LoadOutageTable、输电线路停运表LineOutageTable、变压器系统停运表TransOutageTable、发电系统裕度表G_SysMarginTable、输电系统裕度表T_SysMarginTable、互联系统裕度表GT_SysMarginTable
可靠性指标:发电系统(G_LOLP、G_LOLE、G_EENS、G_LOLF、G_D),互联系统(GT_LOLP、GT_LOLE、GT_EENS、GT_LOLF、GT_D)
输入:Step
返回:系统对象obj
功能:函数中,对成员变量Step进行赋值。
输入:系统对象obj
返回:无
功能:通过disp函数将发电系统的停运表打印在控制台。
输入:系统对象obj
返回:无
功能:通过disp函数将输电系统的停运表打印在控制台。
输入:系统对象obj
返回:无
功能:通过disp函数将互联系统的停运表打印在控制台。
输入:系统对象obj
返回:无
功能:调用ParallelConnect函数,计算发电系统停运表obj.GenOutageTable和负荷停运表obj.LoadOutageTable的卷积,将结果储存在发电系统裕度表obj.G_SysMarginTable中。
输入:系统对象obj
返回:无
功能:先对停运表进行改造,使之可以进行串联计算。调用SeriesConnect函数,计算输电线路系统停运表obj.LineOutageTable和变压器系统停运表obj.TransOutageTable的卷积,将结果储存在输电系统停运表obj.T_SysOutageTable中。
输入:系统对象obj
返回:无
功能:分三步进行,先形成B向A支援的等效发电机组停运表B_GenSysMarginTable,再将支援等效发电机并入系统A,即调用ParallelConnect函数,计算支援等效发电机B_GenSysMarginTable和A系统obj.G_SysMarginTable的停运表的卷积。
输入:系统对象obj,时期T
返回:无
功能:计算并输出发电系统的可靠性指标LOLP、LOLE、EENS、LOLF、D。
输入:系统对象obj,时期T
返回:无
功能:计算并输出互联系统的可靠性指标LOLP、LOLE、EENS、LOLF、D。
输入:两个停运表A和B
返回:计算结果停运表re
功能:用于计算停运表A和B的并联组合(卷积)。
输入:两个停运表A和B
返回:计算结果停运表re
功能:用于计算停运表A和B的串联组合。
在InputData.xlsx中进行数据输入,各个表单的释义详见表1。
如果算例设置为例3-3,则需要输入Para、GenSysData of Ex.3-3、Load of Ex.3-3这三个表单。
如果算例设置为例3-5,则需要输入Para、GenSysData of Ex.3-3、Load of Ex.3-3、LineData of Ex.3-5、TransformerData of Ex.3-5这五个表单。
如果算例设置为RTS-79系统,则需要输入Para、GenSysData、WeekLoad、DailyLoad、HourlyLoad这五个表单。
打开MATLAB,执行main函数,执行结果如图1所示,程序中对当前代码的执行情况有较为详细的交互输出进行说明。
图 1 程序执行过程截图
程序执行完毕后,结果输出在OutputData.xlsx中,各个表单的含义详见表2。
如果算例设置为例3-3和RTS-79系统,则输出结果在发电系统的裕度表、发电系统的可靠性指标这两个表单。如果算例设置为例3-5,则输出结果在互联系统的裕度表、互联系统的可靠性指标这两个表单。