发明内容
本发明的目的在于克服现有技术的不足,提供一种基于文件交换的电网预想故障并行分析计算方法,提高了静态安全分析功能的在线分析计算速度。
本发明解决其现实问题是采取以下技术方案实现的:
一种基于文件交换的电网故障并行分析计算方法,包括以下步骤:
步骤1、在计算前,建立任务表、计算资源表、建立***故障集;根据参与计算资源服务器建立计算资源信息、计算任务信息;
步骤2、在任务调度服务器上运行总的任务调度进程,在每轮静态安全分析功能运行周期到来时,在任务表中增加新的电网静态安全分析计算总任务,并根据静态安全分析的预想故障计算的总任务分解成每个计算资源的具体的并行计算任务,写入到计算资源表中,并准备计算数据;
步骤3、在计算资源服务器上,计算资源守护进程根据并行计算资源表中更新的各计算资源的任务分配状态,启动对应的计算资源计算进程;
步骤4、在任务调度服务器上,等待下一个静态安全分析计算周期到来时,返回执行步骤2。
而且,所述步骤1的具体步骤包括:
(1-1)建立任务表,包括:任务名、任务类型、任务启动人员、任务计算模块、任务计算功能、任务超时时间、任务计算家族、任务当前状态、任务状态变化时标、任务启动时间、任务完成时间、任务完成比率、任务当前运行信息;
(1-2)建立计算资源表,包括:资源名、资源服务器名称、资源模块名称、资源模块功能名称、是否投入运行、资源计算模块进程、资源计算任务状态、资源当日失败次数,其中“资源计算任务状态”可以为:“空闲”、“发布完成”、“计算完成”、“计算失败”、“异常”;
(1-3)根据参与并行计算的服务器数目n,建立计算资源表的记录,记为集合R={Ri,i=1,…,n},n为配置的采用技术的服务器数量,也就是并行计算资源数量;并对每个计算资源REi的资源任务状态初始置为“空闲”;
(1-4)根据电网情况,建立电网故障集合,记为NF={NFx,x=1,…,n2},n2为最大故障数;
而且,所述步骤2的具体步骤包括:
(2-1)首先生成电网潮流计算的模型文件Fz,文件包括电网中各支路的连接关系以及各节点的潮流注入数据,模型文件采用压缩方式存储;
(2-2)扫描检查计算资源表,找到所有的资源任务状态置为“空闲”的资源,记录为集合RE={REi,i=1,…,n1},其总数量为n1;
(2-3)根据电网故障集合NF,自动生成n2个计算子任务:TF={TFj,j=1,…,n2},分配方法为按照平均分配方式,每个计算子任务承担的计算故障数量为:n3=n2/n1+1;n3为每个计算子任务承担的计算故障数量;为生成每个计算子任务的任务文件TFile,记为TFF={TFFj,j=1,…,n2},每个文件TFFj中包含内n3个故障,记为TFFj-k,k=1,…,n3,文件采用E语言描述的文本文件,包含资源状态信息和预想故障集信息;
(2-4)对集合TF中的每个计算子任务TFj,进行任务分配;
(2-5)扫描检查计算资源表R,对表中的各个资源Ri的资源任务状态进行判断;
而且,所述步骤2第(2-3)步的具体步骤包括:
(2-3-1)生成TFFj文件中的资源状态信息,类名称calsc_info,属性如下表格描述;每个子任务在数据块calsc_info中对应一行数据;
(2-3-2)生成TFFj文件中的预想故障信息类名flt_info,属性如下表格描述;每个预想故障TFFj-k在数据块flt_info中对应一行数据;
而且,所述步骤2的第(2-4)步的具体步骤包括:
(2-4-1)扫描检查计算资源表R,找到某个资源任务状态置为“空闲”的资源,记录为Ri;
(2-4-2)把子任务TFj分配给计算资源Ri,方法是:向计算资源Ri的服务器发送潮流计算模型文件Fz、计算文件TFFj,并置该计算资源Ri的资源任务状态置为“发布完成”;
而且,所述步骤2的第(2-5)步的具体步骤包括:
(2-5-1)如果资源任务状态为“计算完成”,则对资源Ri计算结果文件FRsti进行回收,即将结果文件FRsti传输到任务调度服务器上,并将每个结果文件中的内容展示在人机界面上;结果文件FRsti回收完成后,置入该资源Ri的资源任务状态置为“空闲”;
(2-5-2)如果资源任务状态为“计算失败”,则对分配给该资源的子任务TFj重新执行步骤2的第(2-4)步,进行计算任务重新分配;同时将资源Ri当日的计算失败次数m进行累加,当m小于指定的失败次数门槛值N时,置资源Ri的计算任务状态为“空闲”;当m大于等于N时,置资源Ri的计算任务状态为“异常”,资源Ri不再参与当日后续的计算任务;
而且,所述步骤3的具体步骤包括:
(3-1)对计算资源表中的,当前服务器对应的资源记录Ri的资源任务状态进行判断,如果资源的计算任务状态为“发布完成”,则启动故障分析计算进程进行计算,执行后步骤3的第(3-2)步;否则不执行任何步骤;
(3-2)读入最新接收的电网潮流计算的模型文件Fz,形成电网计算模型;
(3-3)读入最新接收的任务文件TFFj,对其中每个故障TFFj-k,执行如下步骤:
(3-3-1)在电网模型中模拟设置该支路或节点故障;
(3-3-2)进行电网潮流计算,如果计算成功,执行步骤(3-3-3),如果计算失败,直接执行步骤3的第(3-6)并终止计算;
(3-3-3)依据潮流计算结果统计记录故障后电网的支路、节点越限情况,形成计算结果TFFRsti,存储到计算机内存表中;
(3-3-4)恢复故障设置的支路和节点状态为初始状态;
(3-3-5)返回步骤3-3-1)直到全部故障计算完成;
(3-4)全部故障计算完成后,生成计算结果,写入当前计算资源Ri的计算结果文件FRsti中;
(3-4-1)生成计算结果文件Frsti中的故障造成电压的越限信息、类名:falt_v_rst,包含属性信息如下;每一条故障造成电压的越限对应falt_v_rst数据块的一条记录;
(3-4-2)生成计算结果文件Frsti中的故障造成支路的越限信息,类名:falt_q_rst,包含属性信息如下;每一条故障造成支路的越限对应falt_q_rst数据块的一条记录;
(3-5)将当前服务器对应的计算资源Ri的资源任务状态置为“计算完成”,并返回步骤3的第(3-1);
(3-6)计算失败后将当前服务器对应的计算资源Ri的写入计算资源Ri任务状态为“计算失败”,并返回步骤3的第(3-1)。
本发明的优点和有益效果:
1、本发明的一种基于文件交换的电网故障并行分析计算方法,并行计算环境***分为“人机界面”、“任务管理”、“计算资源”三个层次组成。人机界面负责配置计算资源表、任务表数据;“任务管理”运行在主服务器上,“计算资源”可以为多台服务器,每台服务器上安装“故障分析”计算功能,多台服务器可以实现并行计算。任务管理层和计算资源层通过文件传输交互数据,同时任务管理层也可以接收人机界面发送的消息,响应人机交互。对“故障分析”模块,以网络共享的任务表来驱动计算任务,以输入、输出文件作为数据交互介质。该方法能够缩短“故障分析”计算总时长,提高了静态安全分析功能的在线分析计算速度。
2、本发明通过在任务调度服务器内存中定义任务表、计算资源表,通过定义E文件做为输入输出的数据交互介质,任务调度服务器统一对任务进行分配和发布,同时多台计算资源服务器并行计算,大大的缩短计算时间;提高了静态安全分析功能的在线分析计算速度,满足了分钟级计算需求;进而提高了电网的稳定。
具体实施方式
以下结合附图对本发明实施例作进一步详述:
电力***数据标记语言——E语言规范(以下简称“E语言”)是在IEC61970–301电力***公用数据模型CIM(Common Information Model)的面向对象抽象基础上,针对CIM在以XML方式进行描述时的效率缺陷所制定的一种新型高效的电力***数据标记语言。E语言数据文件包括注释(可选)、***声明、数据块起始标记、数据块头定义、数据块、数据块结束标记等部分。通常分为类名定义,属性定义等;国家电网公司企业标准《Q-GDW-215-2008电力***数据标记语言——E语言规范》详细规定了E语言的描述方式,具体格式定义如下:
1)注释
注释是E语言的可选部分,通过双斜杠“//”引导开始。注释可出现在数据文件的任意地方,既可以独立一行,也允许在行的后部。
2)***声明
E语言的***声明位于数据块前端,由左尖括号加叹号并列“<!”引导开始,由叹号加右尖括号并列“!>”标记结束。***声明中说明产生数据的应用***名称、采用的E语言版本、字符集和数据版本。标记内的具体内容如下:
a)System=应用***名称。指产生本数据的应用***名称。
b)Version=E语言版本。指封装本数据所采用的E语言版本。由于E语言本身的发展,语法规则
和符号可能会发生变化,此版本信息可用于程序识别语言本身的差别。
c)Code=字符集名称。指本文件所用的字符集。
d)Data=数据版本。指本数据所处版本。由于应用需求变化,同样类别的数据其封装结构可能会进行局部的扩充、修改或简化,此版本信息可用于程序识别数据本身的细微差别。
以上各部分之间用空格分割,并且可根据***情况进行扩展。以下为一个***声明的实际样例:<!System=SYS Version=1.0 Code=UTF-8 Data=1.0!>
3)数据块起始和结束
E语言数据块的起始用尖括号“<类名>”或“<类名::实体名>”表示,数据块结束用尖括号内加单斜杠“</类名>”或“</类名::实体名>”表示。“类名::实体名”中,前者表示数据块内数据对象的类,后者表示数据块内数据的归属对象。
4)数据块头定义
数据块头定义用地址符“@”标记,用于表明数据的基本结构:即横表式、单列式或多列式。数据块头定义的具体标记如下:单地址符“@”表示数据的基本结构为横表式,其语法为:@序号属性名1属性名2属性名3…“@”、序号、各属性名之间使用空格分割,序号也可用数据ID表示(下同),单列式和多列式结构对于序号的处理方式类似。横表式结构的数据块中每个对象占一行、每个属性占一列,适用于表格类数据,或属性较少且对象较多的数据。
5)数据块
数据块由多个数据行组成,每个数据行由井号“#”引导。数据行中的各数据值之间通过空格分割。据行的表达方式与数据块头定义一一对应。数据块的第一列总是在“#”后跟一个或多个空格,空格后加序号,如“#10”,使序号单独成为一列。该序号表示本行数据在本数据块中的顺序,以1开始编号。序号后面跟一空格后开始数据值序列。
本发明中的文本交互都采用的是E语言描述,数据块定义采用的都是横表式,即每个类都是一张表,每个表中有不同的属性。
一种基于文件交换的电网故障并行分析计算方法,包括以下步骤:
步骤1、在计算前,建立任务表、计算资源表、建立***故障集;任务表、计算资源表建立在服务器的内存中,其它资源服务器可以通过网络接口访问任务表和计算资源表中的数据;根据参与计算资源服务器建立计算资源信息、计算任务信息;
所述步骤1的具体步骤包括:
(1-1)建立任务表(DEF_TASK),包含:任务名、任务类型(自动计算,人工计算)、任务启动人员、任务计算模块、任务计算功能、任务超时时间、任务计算家族、任务当前状态、任务状态变化时标、任务启动时间、任务完成时间、任务完成比率、任务当前运行信息;
(1-2)建立计算资源表(DEF_CALSC),包括:资源名、资源服务器名称、资源模块名称、资源模块功能名称、是否投入运行、资源计算模块进程、资源计算任务状态、资源当日失败次数,其中“资源计算任务状态”可以为:“空闲”、“发布完成”、“计算完成”、“计算失败”、“异常”;
(1-3)根据参与并行计算的服务器数目n,建立计算资源表的记录,记为集合R={Ri,i=1,…,n},n为配置的采用技术的服务器数量,也就是并行计算资源数量;并对每个计算资源REi的资源任务状态初始置为“空闲”;
(1-4)根据电网情况,建立电网故障集合,记为NF={NFx,x=1,…,n2},n2为最大故障数;
步骤2、在任务调度服务器上运行总的任务调度进程,在每轮静态安全分析功能运行周期到来时,在任务表中增加新的电网静态安全分析计算总任务,并根据静态安全分析的预想故障计算的总任务分解成每个计算资源的具体的并行计算任务,写入到计算资源表中,并准备计算数据;
如图1所示,所述步骤2的具体步骤包括:
(2-1)首先生成电网潮流计算的模型文件Fz,文件包括电网中各支路的连接关系以及各节点的潮流注入数据,模型文件采用压缩方式存储;
(2-2)扫描检查计算资源表,找到所有的资源任务状态置为“空闲”的资源,记录为集合RE={REi,i=1,…,n1},其总数量为n1;
(2-3)根据电网故障集合NF,自动生成n2个计算子任务:TF={TFj,j=1,…,n2},分配方法为按照平均分配方式,每个计算子任务承担的计算故障数量为:n3=n2/n1+1;n3为每个计算子任务承担的计算故障数量;为生成每个计算子任务的任务文件TFile,记为TFF={TFFj,j=1,…,n2},每个文件TFFj中包含内n3个故障,记为TFFj-k,k=1,…,n3,文件采用E语言描述的文本文件,包含资源状态信息和预想故障集信息;
所述步骤2第(2-3)步的具体步骤包括:
(2-3-1)生成TFFj文件中的资源状态信息,类名称(calsc_info),属性如下表格描述;每个子任务在数据块calsc_info中对应一行数据;
序号 |
属性 |
数据类型 |
说明 |
1 |
资源模块名称 |
字符串 |
|
2 |
资源状态 |
整形 |
|
3 |
当前计算任务ID |
长整形 |
|
4 |
当前计算任务功能 |
字符串 |
|
5 |
当前计算任务启动时间 |
整形 |
|
6 |
当前计算任务结束时间 |
整形 |
|
7 |
当前计算任务完成比率 |
浮点型 |
|
(2-3-2)生成TFFj文件中的预想故障信息类名(flt_info),属性如下表格描述;每个预想故障TFFj-k在数据块flt_info中对应一行数据;
(2-4)对集合TF中的每个计算子任务TFj,进行任务分配;
所述步骤2的第(2-4)步的具体步骤包括:
(2-4-1)扫描检查计算资源表R,找到某个资源任务状态置为“空闲”的资源,记录为Ri;
(2-4-2)把子任务TFj分配给计算资源Ri,方法是:向计算资源Ri的服务器发送潮流计算模型文件Fz、计算文件TFFj,并置该计算资源Ri的资源任务状态置为“发布完成”;
(2-5)扫描检查计算资源表R,对表中的各个资源Ri的资源任务状态进行判断;
所述步骤2的第(2-5)步的具体步骤包括:
(2-5-1)如果资源任务状态为“计算完成”,则对资源Ri计算结果文件FRsti进行回收,即将结果文件FRsti传输到任务调度服务器上,并将每个结果文件中的内容展示在人机界面上(结果文件格式参见步骤3));结果文件FRsti回收完成后,置入该资源Ri的资源任务状态置为“空闲”;
(2-5-2)如果资源任务状态为“计算失败”,则对分配给该资源的子任务TFj重新执行步骤2的第(2-4)步,进行计算任务重新分配;同时将资源Ri当日的计算失败次数m进行累加,当m小于指定的失败次数门槛值N时,置资源Ri的计算任务状态为“空闲”;当m大于等于N时,置资源Ri的计算任务状态为“异常”,资源Ri不再参与当日后续的计算任务;
步骤3、在计算资源服务器上,计算资源守护进程根据并行计算资源表中更新的各计算资源的任务分配状态,启动对应的计算资源计算进程。
如图2所示,所述步骤3的具体步骤包括:
(3-1)对计算资源表中的,当前服务器对应的资源记录Ri的资源任务状态进行判断,如果资源的计算任务状态为“发布完成”,则启动故障分析计算进程进行计算,执行后步骤3的第(3-2)步;否则不执行任何步骤;
(3-2)读入最新接收的电网潮流计算的模型文件Fz,形成电网计算模型;
(3-3)读入最新接收的任务文件TFFj,对其中每个故障TFFj-k,执行如下步骤:
(3-3-1)在电网模型中模拟设置该支路或节点故障;
(3-3-2)进行电网潮流计算,如果计算成功,执行步骤(3-3-3),如果计算失败,直接执行步骤3的第(3-6)并终止计算;
(3-3-3)依据潮流计算结果统计记录故障后电网的支路、节点越限情况,形成计算结果TFFRsti,存储到计算机内存表中;
(3-3-4)恢复故障设置的支路和节点状态为初始状态;
(3-3-5)返回步骤3-3-1)直到全部故障计算完成。
(3-4)全部故障计算完成后,生成计算结果,写入当前计算资源Ri的计算结果文件FRsti中;
(3-4-1)生成计算结果文件Frsti中的故障造成电压的越限信息、类名:falt_v_rst,包含属性信息如下;每一条故障造成电压的越限对应falt_v_rst数据块的一条记录;
序号 |
属性 |
数据类型 |
说明 |
1 |
故障ID |
长整形 |
|
2 |
故障名称 |
字符串 |
|
3 |
故障造成越上限母线数量 |
整形 |
|
4 |
最高越上限母线名称 |
字符串 |
|
5 |
最高越上限母线电压值 |
浮点型 |
|
6 |
故障造成越下限母线数量 |
整形 |
|
7 |
最低越下限母线名称 |
字符串 |
|
8 |
最低越下限母线电压值 |
浮点型 |
|
(3-4-2)生成计算结果文件Frsti中的故障造成支路的越限信息,类名:falt_q_rst,包含属性信息如下;每一条故障造成支路的越限对应falt_q_rst数据块的一条记录。
序号 |
属性 |
数据类型 |
说明 |
1 |
故障ID |
长整形 |
|
2 |
故障名称 |
字符串 |
|
3 |
故障造成支路越限数量 |
整形 |
|
4 |
最高越上限支路名称 |
字符串 |
|
5 |
最高越上限支路潮流有功值 |
浮点型 |
|
6 |
最高越上限支路潮流无功值 |
浮点型 |
|
(3-5)将当前服务器对应的计算资源Ri的资源任务状态置为“计算完成”,并返回步骤3的第(3-1);
(3-6)计算失败后将当前服务器对应的计算资源Ri的写入计算资源Ri任务状态为“计算失败”,并返回步骤3的第(3-1);
步骤4、在任务调度服务器上,等待下一个静态安全分析计算周期到来时,返回执行步骤2。
本发明的工作原理是:
本发明提出的一种基于文件交换的电网故障并行分析计算方法,本发明是通过在任务调度服务器内存中定义任务表、计算资源表,通过定义E文件做为输入输出的数据交互介质,任务调度服务器统一对任务进行分配和发布,同时多台计算资源服务器并行计算,大大的缩短计算时间;提高了静态安全分析功能的在线分析计算速度,满足了分钟级计算需求;进而提高了电网的稳定。
需要强调的是,本发明所述实施例是说明性的,而不是限定性的,因此本发明包括并不限于具体实施方式中所述实施例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,同样属于本发明保护的范围。