CN104391746A - 继电保护装置保护元件动态调用的实现方法 - Google Patents
继电保护装置保护元件动态调用的实现方法 Download PDFInfo
- Publication number
- CN104391746A CN104391746A CN201410657408.6A CN201410657408A CN104391746A CN 104391746 A CN104391746 A CN 104391746A CN 201410657408 A CN201410657408 A CN 201410657408A CN 104391746 A CN104391746 A CN 104391746A
- Authority
- CN
- China
- Prior art keywords
- function
- task
- configuration
- call
- protection element
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种继电保护装置保护功能组态实现,并且灵活的组态各保护元件的实时调用策略的一种方法。通过上位机组态软件采用图形化的友好方式提供保护元件调度组态的机制,生成能够被保护装置解析的二进制调度策略文件,保护装置平台程序解析文件后,动态的实例化这些元件,并将其挂载在任务调度链表中。通过这种方法的实现,解决了目前继电保护装置程序中保护元件不能动态创建和动态调度的问题。
Description
技术领域
本发明涉及电力系统继电保护领域保护元件的功能组态,具体涉及的是一种继电保护装置保护元件动态调用的实现方法。
背景技术
继电保护装置保护元件组态的需求在微机保护开始就作为必备功能被提出,基于以前硬件资源和软件架构的限制,厂家都采用保护控制字和压板方式来控制某些保护功能是否投入使用。这种方式控制粒度大,控制方式不够灵活,并且保护元件虽然通过控制字退出了保护,但是保护元件仍然在装置上电时在内存中创建并初始化,占用了内存空间甚至中断执行时间,带来了一定的安全隐患,但实现方法简单,不便于操作和实现。
这种通过简单压板和控制字方式只适用于固定软硬件型号装置内保护元件的功能投退,随着继电保护的发展,智能变电站的广泛实施,智能变电站设备的硬件体系和软件体系的不断提升,各种组态集成的配置工具也随着出现。国内外的一些厂家功能组态的友好性、灵活性、安全性等各个方面也有类似的组态工具开发,但其护元件仍然在装置上电时在内存中创建并初始化,占用了内存空间甚至中断执行时间,因此带来了一定的安全隐患和实现方法简单,不便于操作和实现的缺陷。
发明内容
为克服现有技术上的不足,本发明的目的是提供一种保护元件在DSP上动态调用的方法,即继电保护装置保护元件动态调用的实现方法;灵活的对装置的保护功能进行各种粒度的组态,不需要运行的元件不创建在内存中;能够使组态工具方便灵活的组态出各种型号的保护产品,解决了目前继电保护装置程序中保护元件不能动态创建和动态调度的问题。
为实现上述目的,本发明技术方案如下:
一种继电保护装置保护元件动态调用的实现方法,包括以下步骤:
S01,组态保护元件的任务调度;首先,将任务调度分为2种模式进行调度, 2种模式同时存在,互相补充:
模式一:将DSP平台程序任务管理模块分为4个任务等级;组态工具提供一个4level等级的功能块,按照调用的先后顺序,依次挂载应用模块。
模式二:DSP每个任务等级进行分时调用;DSP每个任务等级通过配置分时参数进行分时调用;
然后,读取DSP库中的内存分配文件(map)文件,解析各组态保护元件的new函数地址和init函数地址;
S02,生成调度的xml和调用关系的二进制文件;根据调度的组态关系生成xml文件和下载到继电保护装置的二进制文件;
S03,查找元件的调用函数地址;上位机根据步骤S01组态图以及解析的各组态保护元件的new和init函数地址,获得符号块对应的元件名,生成调用的函数名,通过函数名在DSP编译后的map表中找到函数对应的地址,并将地址信息填入到xml文件和二进制文件中;
S04,二进制文件的解析和加载;元件的对象实例化过程是由继电保护装置的平台程序解析步骤S02生成并下载的二进制文件,然后根据解析后的二进制文件动态加载和动态调用;
S05 ,动态调用和按照调用关系挂载到任务链表;DSP程序上电后,加载二进制文件到数据结构中,按照二进制文件中描述的调度顺序,顺序调用New函数实例化元件、子元件,顺序的调用实例化元件、子元件的Init函数,将这些函数按照调度顺序挂载在平台提供的任务链表中,挂载完成后开启任务调度,开始调用任务链表中的各个等级保护元件。
本发明通过上位机组态软件采用图形化的友好方式提供保护元件调度组态的机制,生成能够被保护装置解析的二进制调度策略文件,保护装置平台程序解析文件后,动态的实例化这些元件,并将其挂载在任务调度链表中。通过这种方法的实现,提供友好的组态界面,灵活的对装置的保护功能进行各种粒度的组态,装置根据组态信息,动态的构造必须的保护元件,不需要运行的元件不创建在内存中。这种灵活的组态方式能够使组态工具方便灵活的组态出各种型号的保护产品解决了目前继电保护装置程序中保护元件不能动态创建和动态调度的问题。
附图说明
图1为本发明的DSP平台程序任务管理模块示意图;
图2为本发明的应用模块之间嵌套示意图;
图3为本发明继电保护装置保护元件调用的流程图;
图4为保护元件调用树形结构。
具体实施方式
为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。
参见图1至图4,本发明一种继电保护装置保护元件动态调用的实现方法,其是基于上位机组态系统与保护装置软件平台两部分内容,可组态的元件包括了基础元件例如接地距离、相间距离、相电流、零序过流保护;包括嵌套元件,例如高后备作为一个大元件,嵌套了快速距离、接地距离、相间距离、PT断线等子元件,可对嵌套元件以及其中的子元件进行各种粒度的组态;包括了通过粒度更细的时间元件、与或非等逻辑元件通过PLC搭建的元件的组态。可组态工具中,对各种粒度的保护元件可组态的内容也包括很多,组态元件的输入输出、参数定值、任务调度以及通信模型。在本发明中,其提供了组态元件任务调度组态后,在保护装置中,如何实现保护元件的动态调度。本发明的具体步骤如下:
S01,组态保护元件的任务调度。由于保护元件的调用有严格的实时性要求,有的元件必须每个中断任务调用,有的元件需要多次中断执行一次。有的可以在主任务循环执行。所以任务调度分为2种模式,2种模式同时存在,互相补充:
模式一:参见图1,DSP(数字信号处理器)平台程序任务管理模块分为4个任务等级。组态工具提供一个4个任务(level)等级的功能块。按照调用的先后顺序,依次挂载应用模块。
模式二:DSP每个任务等级都可以进行分时调用。分时参数可配置,例如N的周期执行一次,N个中断的第M个中断中执行。
此外,应用模块之间可以嵌套,例如模式一中的元件ovc1为嵌套元件的父元件,父元件挂载在level1中,父元件的子元件在level1中可以分时调度,如图2所示。
S02,生成调度的xml。根据调度的组态关系,生成xml文件和下载到保护装置的二进制文件。Xml文件保护的内容包括:
<?xml version="1.0" encoding="UTF-8"?>
<TaskSchedule>
<ClassList>
<class Name="Overcurrent">
<NewFunc Name="New Overcurrent " Addr="0x83323232"/>
<Step1Func Name="Init Overcurrent " Addr="0x83326232"/>
<SubClassList>
<SubClass Name=” XXXX”/>
</SubClassList>
</class>
</ClassList>
<TaskLevelList>
<TaskLevel Level="1">
<Objects>
<Object ClassName="Overcurrent" ObjectName="oc1" CIrcle="1" CIrcleNo=”0”/> //每次中断都进
<Object ClassName="Overcurrent" ObjectName="oc2" CIrcle ="2",circleNo=”0”/>//每能被2整除的中断进
</Objects>
Xml文件主要包括了二部分内容,一部分为保护元件提供给平台动态调用的接口函数New函数和Init函数的函数地址,这部分还包括了保护元件之间的嵌套关系。另一部分为保护元件实例化的对象以及这些对象的调用时序。
同样的信息内容生成二进制文件。二进制文件是一段数据结构的内存数据序列化。DSP与上位机使用共同的数据结构。
S03 查找元件的调用函数地址。S02生成的xml文件和二进制文件中,都需要包含元件的New和Init函数的地址,DSP程序中元件的New函数和Init函数都采用统一的命名方法,“New+元件名”和“Init+元件名”。上位机根据S01的组态图形,能够知道符号块对应的元件名,生成调用的函数名,通过函数名在DSP编译后的map表中找到函数对应的地址,并将地址信息填入到xml文件和二进制文件中。
S04,二进制文件的加载。 装置的程序分为平台程序与应用程序,应用程序由各种元件组成。不同型号的保护装置对应下载不同的保护元件库。这些元件库包含各种保护元件的信息(保护元件的成员变量,和保护元件的构造函数、初始化函数、调用函数等)。元件的实例化过程是由平台程序根据S02生成并下载的二进制文件来动态加载和动态调用。S02生成的二进制文件同样包括两部分,一部分为元件的描述,一部分为调用链表。S02生成的调用链表已经根据调用的先后顺序,对于嵌套元件按照父元件、子元件深度优先遍历的算法。保证在调用每一个子元件的New和Init函数之前,其父元件都已经完成了New和Init操作。对象实例化时,在元件描述链表中查找元件的New函数和Init函数的地址。DSP程序调用该函数指针,执行New和Init函数。
S05 动态调用。DSP程序上电后,加载二进制文件到数据结构中,按照文件中描述的调度顺序,顺序调用New函数实例化元件、子元件,顺序的调用这些元件的Init函数,将这些函数按照调度顺序挂载在平台提供的任务链表中,挂载完成后开启任务调度,就开始调用任务链表中的保护元件。这样DSP中的保护功能就被正确的调度起来。
本发明中,DSP装置软件平台程序与上位机组态软件以二进制文件的形式交互,二进制文件的数据是下面数据结构的序列化,数据结构的内容则是体现了上述S02中生成xml文件的内容。
数据结构如下:
typedef struct
{
char ComponentName[COMPNAMELEN]; //类名字
bool (*NewCompFun)(char* );//new函数
bool (*InitSetp1CompFun)(char*,int,int,int );//Initsetp1函数
bool (*InitSetp2CompFun)(char* ); //nitstep2函数
}ComponantDesc;
typedef struct
{ char ParentObjectName [OBJECTNAMELEN*4];//元件名 父对象的元件名,如果有多层级联,则用“/”分开。例如
Char className[OBJECTNAMELEN];
char ObjectName[OBJECTNAMELEN];
INT8 Circle; //分时调度周期
INT8 CircleNo; //分时调度序号
INT16 ComponantDescIndex;
}ScheduleDesc;//每个任务等级的描述
typedef struct
{ ComponantDesc compList[COMPONENTMAX]; //元件的描述
ScheduleDesc scheduleList[LEVELCNT][ LEVELOBJECTCNT]; //任务调度
}TaskList;
二进制文件最终体现的是TaskList数据结构中的信息,TaskList数据结构中的信息包括两部分内容,一部分为调度对象对应的元件的描述,主要是查找元件的New和Init函数的调用地址。ScheduleList是任务调度链,任务调度链是一个二维数据,分别表示任务等级和该任务等级下的挂载的任务链。由于元件之间存在嵌套关系,任务的调用是一个树形结构,其任务链的先后顺序是深度遍历的顺序关系。例如在S01中的嵌套元件调用关系,以树形结构表示如图4所示生成的调度链为:OVC1——》overload——》gapProtect——》Ovc2——》testapp.
参见图1,DSP程序初始化时,关闭任务中断,装载二进制文件。解析后按照任务链表的先后顺序将应用模块初始化并使其任务函数向系统程序注册,系统程序将所有应用模块按注册顺序将各任务函数按任务等级进行管理;运行时,系统程序将各应用模块按任务等级依次进行调用,并确保任务优先级及执行的先后顺序。
支持多个任务等级,等级有:
LEVEL 1:执行周期可设置,等级最高
LEVEL 2:执行周期可设置
LEVEL 3:执行周期可设置
LEVEL 4:执行周期可设置,等级最低
注册完成后,开任务中断。应用模块按照上位机组态的保护功能和调用顺序运行。
本发明通过上位机组态软件采用图形化的友好方式提供保护元件调度组态的机制,生成能够被保护装置解析的二进制调度策略文件,保护装置平台程序解析文件后,动态的实例化这些元件,并将其挂载在任务调度链表中。通过这种方法的实现,提供友好的组态界面,灵活的对装置的保护功能进行各种粒度的组态,装置根据组态信息,动态的构造必须的保护元件,不需要运行的元件不创建在内存中。这种灵活的组态方式能够使组态工具方便灵活的组态出各种型号的保护产品解决了目前继电保护装置程序中保护元件不能动态创建和动态调度的问题。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (7)
1. 继电保护装置保护元件动态调用的实现方法,其特征在于,其方法为:通过上位机组态软件采用图形化的友好方式提供保护元件调度组态的机制,生成能够被保护装置解析的二进制调度策略文件,保护装置平台程序解析二进制调度策略文件后,动态的实例化保护元件,并将该保护元件挂载在任务调度链表中;
此后,DSP程序初始化时,关闭任务中断,装载二进制文件;解析后按照任务调度链表的先后顺序将应用模块初始化并使应用模块任务函数向系统程序注册,系统程序将所有应用模块按注册顺序将各任务函数按任务等级进行管理;运行时,系统程序将各应用模块按任务等级依次进行调用,并确保任务优先级及执行的先后顺序;注册完成后,开任务中断;应用模块按照上位机组态的保护功能和调用顺序运行,从而实现继电保护装置保护元件动态调用。
2. 根据权利要求1所述的继电保护装置保护元件动态调用的实现方法,其特征在于,所述方法具体步骤如下:
S01,组态保护元件的任务调度;首先,将任务调度分为2种模式进行调度, 2种模式同时存在,互相补充:
模式一:将DSP平台程序任务管理模块分为4个任务等级;组态工具提供一个4等级的功能块,按照调用的先后顺序,依次挂载应用模块;
模式二:DSP每个任务等级进行分时调用;DSP每个任务等级通过配置分时参数进行分时调用;
然后,读取DSP库中的内存分配文件map文件,解析各组态保护元件的new函数地址和init函数地址;
S02,生成调度的xml和调用关系的二进制文件;根据调度的组态关系生成xml文件和下载到继电保护装置的二进制文件;
S03,查找元件的调用函数地址;上位机根据步骤S01组态图以及解析的各组态保护元件的new函数地址和init函数地址,获得符号块对应的元件名,生成调用的函数名,通过函数名在DSP编译后的map表中找到函数对应的地址,并将地址信息填入到xml文件和二进制文件中;
S04,二进制文件的解析和加载;元件的对象实例化过程是由继电保护装置的平台程序解析步骤S02生成并下载的二进制文件,然后根据解析后的二进制文件动态加载和动态调用;
S05 ,动态调用和按照调用关系挂载到任务链表;DSP程序上电后,加载二进制文件到数据结构中,按照二进制文件中描述的调度顺序,顺序调用New函数实例化元件、子元件,顺序的调用实例化元件、子元件的Init函数,将这些函数按照调度顺序挂载在平台提供的任务链表中,挂载完成后开启任务调度,开始调用任务链表中的各个等级保护元件。
3. 根据权利要求2所述的继电保护装置保护元件动态调用的实现方法,其特征在于,上述步骤S02中,生成的二进制文件包括两部分,一部分为元件的描述,另一部分为调用链表;步骤S02生成的调用链表已经根据调用的先后顺序,对于嵌套元件按照父元件、子元件深度优先遍历的算法。
4. 根据权利要求2所述的继电保护装置保护元件动态调用的实现方法,其特征在于,上述步骤S02生成的xml文件和二进制文件中,都需要包含元件的New函数的地址和Init函数的地址,DSP程序中元件的New函数和Init函数均采用统一的命名方法,该命名方法为“New+元件名”和“Init+元件名”。
5. 根据权利要求2所述的继电保护装置保护元件动态调用的实现方法,其特征在于,所述步骤S02中,Xml文件主要包括了二部分内容,一部分为保护元件提供给平台动态调用的接口函数New函数和Init函数的函数地址,这部分还包括了保护元件之间的嵌套关系;另一部分为保护元件实例化的对象以及这些对象的调用时序。
6. 根据权利要求2所述的继电保护装置保护元件动态调用的实现方法,其特征在于,所述步骤S02中,所述二进制文件是一段数据结构的内存数据序列化;DSP与上位机使用共同的数据结构。
7. 根据权利要求2所述的继电保护装置保护元件动态调用的实现方法,其特征在于,所述步骤S04中,对象实例化时,在元件描述链表中查找元件的New函数和Init函数的地址;DSP程序调用该函数指针,执行New和Init函数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410657408.6A CN104391746B (zh) | 2014-11-18 | 2014-11-18 | 继电保护装置保护元件动态调用的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410657408.6A CN104391746B (zh) | 2014-11-18 | 2014-11-18 | 继电保护装置保护元件动态调用的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104391746A true CN104391746A (zh) | 2015-03-04 |
CN104391746B CN104391746B (zh) | 2017-10-13 |
Family
ID=52609654
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410657408.6A Active CN104391746B (zh) | 2014-11-18 | 2014-11-18 | 继电保护装置保护元件动态调用的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104391746B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107367968A (zh) * | 2017-08-03 | 2017-11-21 | 爱普(福建)科技有限公司 | 一种组态元件的执行方法及计算机可读介质 |
CN110957705A (zh) * | 2019-10-29 | 2020-04-03 | 许继集团有限公司 | 一种自适应间隔保护策略配置方法及装置 |
WO2021135699A1 (zh) * | 2019-12-31 | 2021-07-08 | 思必驰科技股份有限公司 | 基于信息流的决策调度定制方法和装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080157775A1 (en) * | 2006-12-28 | 2008-07-03 | Dale Finney | Relay device and corresponding method |
CN101566839A (zh) * | 2009-06-01 | 2009-10-28 | 杭州电子科技大学 | 一种梯形图内嵌组态算法的实现方法 |
CN102385509A (zh) * | 2010-08-31 | 2012-03-21 | 苏州大学 | 一种图形化嵌入式开发方法和平台 |
US20130055276A1 (en) * | 2011-08-26 | 2013-02-28 | Knu-Industry Cooperation Foundation | Task scheduling method and apparatus |
CN104133588A (zh) * | 2014-07-11 | 2014-11-05 | 国电南瑞科技股份有限公司 | 一种基于脚本的继电保护装置图形开发方法 |
-
2014
- 2014-11-18 CN CN201410657408.6A patent/CN104391746B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080157775A1 (en) * | 2006-12-28 | 2008-07-03 | Dale Finney | Relay device and corresponding method |
CN101566839A (zh) * | 2009-06-01 | 2009-10-28 | 杭州电子科技大学 | 一种梯形图内嵌组态算法的实现方法 |
CN102385509A (zh) * | 2010-08-31 | 2012-03-21 | 苏州大学 | 一种图形化嵌入式开发方法和平台 |
US20130055276A1 (en) * | 2011-08-26 | 2013-02-28 | Knu-Industry Cooperation Foundation | Task scheduling method and apparatus |
CN104133588A (zh) * | 2014-07-11 | 2014-11-05 | 国电南瑞科技股份有限公司 | 一种基于脚本的继电保护装置图形开发方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107367968A (zh) * | 2017-08-03 | 2017-11-21 | 爱普(福建)科技有限公司 | 一种组态元件的执行方法及计算机可读介质 |
CN107367968B (zh) * | 2017-08-03 | 2019-08-09 | 爱普(福建)科技有限公司 | 一种组态元件的执行方法及计算机可读介质 |
CN110957705A (zh) * | 2019-10-29 | 2020-04-03 | 许继集团有限公司 | 一种自适应间隔保护策略配置方法及装置 |
CN110957705B (zh) * | 2019-10-29 | 2022-04-05 | 许继集团有限公司 | 一种自适应间隔保护策略配置方法及装置 |
WO2021135699A1 (zh) * | 2019-12-31 | 2021-07-08 | 思必驰科技股份有限公司 | 基于信息流的决策调度定制方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104391746B (zh) | 2017-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Fouquet et al. | An eclipse modelling framework alternative to meet the models@ runtime requirements | |
Thramboulidis et al. | Real-time Java in control and automation: a model driven development approach | |
CN111309291B (zh) | 一种模块化嵌入式软件架构及其定制方法、定制系统 | |
CN101859244A (zh) | 多工具链工程构建方法及系统 | |
CN111209010A (zh) | 一种平台及其实现方法 | |
Patil et al. | Formal modelling and verification of IEC61499 function blocks with abstract state machines and SMV-execution semantics | |
CN104423994A (zh) | 一种代码生成方法、编译器、调度方法、装置及调度系统 | |
CN104391746A (zh) | 继电保护装置保护元件动态调用的实现方法 | |
Jan et al. | Flex‐eWare: a flexible model driven solution for designing and implementing embedded distributed systems | |
US20100275187A1 (en) | Implementing a class oriented data flow program on a programmable hardware element | |
CN116974555A (zh) | 软件开发工具包的组装方法、装置、设备以及存储介质 | |
US8375355B2 (en) | Conversion of a class oriented data flow program to a structure oriented data flow program | |
Vidal et al. | Dynamic applications on reconfigurable systems: from UML model design to FPGAs implementation | |
Yoong et al. | Efficient implementation of IEC 61499 function blocks | |
CN110955415A (zh) | 一种投影多平台服务适配的方法 | |
Ceccato et al. | Adding distribution to existing applications by means of aspect oriented programming | |
Vepsäläinen et al. | Tool support for the UML automation profile-for domain-specific software development in manufacturing | |
US8356290B2 (en) | Conversion of a class oriented data flow program with inheritance to a structure oriented data flow program | |
Lu et al. | A UML profile to model safety-critical embedded real-time control systems | |
Schmid et al. | Domain-Oriented Customization of Service Platforms: Combining Product Line Engineering and Service-Oriented Computing. | |
CN117280319A (zh) | 用于适应在自动化系统中使用的能重新配置的运行时系统的系统和方法 | |
Wada et al. | Design and implementation of the matilda distributed uml virtual machine | |
CN105760291B (zh) | 一种回归测试方法和系统 | |
Blay-Fornarino et al. | Towards dynamic configuration of distributed applications | |
Yau et al. | An approach to object-oriented component customization for real-time software development |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |