首页> 中国专利> 基于PSCAD的数字化保护源代码级闭环仿真方法

基于PSCAD的数字化保护源代码级闭环仿真方法

摘要

一种基于PSCAD的数字化保护源代码级闭环仿真方法,该方法通过在PSCAD中嵌入C语言编写的自定义保护逻辑代码,实现源代码级闭环仿真。改进了PSCAD推荐方法的“调用接口”和“数据接口”。通过在自定义模块的Script脚本中调用Fortran接口函数实现与PSCAD的无缝链接,简化了C源代码的修改及调试过程。避免使用复杂的公用数组进行数据交互,而是直接利用自定义模块的输入、输出端口实现数据接口。该方法灵活、简洁,可以完整验证实际装置的保护逻辑源代码,尤其适合于从保护原理研究到装置开发的过渡阶段,使开发者不依赖于物理装置即可验证软件代码,有效提高开发效率。

著录项

  • 公开/公告号CN105785793A

    专利类型发明专利

  • 公开/公告日2016-07-20

    原文格式PDF

  • 申请/专利权人 济南大学;

    申请/专利号CN201610121867.1

  • 发明设计人 刘益青;高伟聪;张智杰;王成友;

    申请日2016-03-04

  • 分类号

  • 代理机构济南誉丰专利代理事务所(普通合伙企业);

  • 代理人李茜

  • 地址 250022 山东省济南市南辛庄西路336号

  • 入库时间 2023-06-19 00:06:42

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-05-08

    授权

    授权

  • 2016-08-17

    实质审查的生效 IPC(主分类):G05B17/02 申请日:20160304

    实质审查的生效

  • 2016-07-20

    公开

    公开

说明书

技术领域

本发明属于电力系统继电保护仿真领域,具体涉及一种基于PSCAD软件环境实现的数字化保护源代码级闭环仿真方法。

背景技术

对继电保护原理和装置进行仿真和测试,是提高继电保护水平的重要手段。动态物理模拟和实时数字仿真可以直接反映继电保护装置的性能,属于在线、闭环仿真方法,至今仍是不可替代的研究手段。然而,这类方法设备投资巨大,且只能在具备物理装置的条件下进行,同时研究系统的规模有限,系统参数调整复杂。

为了克服在线、闭环仿真方法的不足,特别是为适应保护原理研究阶段、缺乏物理装置情况下的仿真需求,离线仿真方法(包括开环和闭环)获得了广泛应用。离线仿真方法可分为以下2类。

第1类方法是获取现场录波数据文件,采用Matlab软件,研究独立保护元件的动作情况,属于保护算法级的开环仿真方法。由于实际保护装置中的保护元件众多,相互之间有着复杂联系,这类方法无法准确、完整地反映保护动作行为。

第2类方法则是利用PSCAD等电磁暂态仿真软件产生故障数据,对保护原理进行验证。由于PSCAD软件可以通过自定义模块嵌入保护算法和源代码,因此可实现保护算法级和源代码级仿真。更重要的是这类方法还可以实现纯软件环境下的闭环仿真,即将自定义模块中保护算法或源代码的逻辑判断结果直接反馈到仿真模型中,改变仿真模型的实时运行状态。用第2类方法实现的保护算法级仿真虽然可以实现闭环仿真,但是仍存在与第1类方法类似的问题,无法反映保护整体性能。因此,利用第2类方法实现源代码级仿真具有更高的实用价值。

由于PSCAD的计算内核程序是用Fortran语言编制的,因此PSCAD中只可以直接嵌入Fortran语言。而目前成熟的数字化保护软件基本上全部采用C语言编写,为达到源代码级的仿真,必须采用C语言编写自定义的保护逻辑模块,并将自定义模块嵌入到PSCAD计算程序中,这涉及到“调用接口”和“数据接口”两个技术问题。调用接口完成自定义模块在PSCAD环境下的调用;数据接口实现自定义模块与PSCAD仿真模型之间的实时、双向数据交换。

按照PSCAD的用户指南,使用PSCAD推荐的方法可以实现与自定义C语言模块的“调用接口”和“数据接口”。

(1)“调用接口”的实现

PSCAD推荐的方法是在编制好C源代码后利用通用编译器,例如GCC,将C源代码编译链接成目标文件(*.o)或库文件(*.lib),再通过在PSCAD增加外部引用来完成调用接口功能。该方法类似于动态链接库方式来实现在PSCAD中调用C语言自定义模块。

(2)“数据接口”的实现

按照PSCAD的推荐方法,数据接口的实现依赖于内部封装的4个公用数组STORF、STORI、STORL、STORC及其指针NSTORF、NSTORI、NSTORL、NSTORC。上述4个数组的用Fortran数据类型定义,分别为REAL、INTEGER、LOGICAL和COMPLEX,除最后一个数组在C语言中没有对应数据类型外,其余3个数组类型,分别对应C语言的数据类型float、int和int。

具体实现数据交互方法是:在每一步仿真计算完成后,自定义的C语言模块从上述4个数组中读取所需要的数据,然后利用这些数据(相当于采样值和开关量)进行计算和保护逻辑判断,最后再将逻辑判断结果返回到上述公用数组,PSCAD根据公用数组的返回数据进行相应修改模型的操作,并开始执行下一步的暂态仿真计算,如此反复,直至仿真结束。PSCAD中的示例工程中给出实现实例,可供参考。

按照上述PSCAD推荐的“调用接口”和“数据接口”方法,实现自定义C语言模块的保护逻辑仿真方法,在实际使用中存在诸多问题,包括:

(1)调用接口采用目标文件方式实现,在调试阶段频繁修改C源文件,需要手动反复编译和链接目标文件,而且出现运行错误时调试不便。

(2)采用公用数组方式实现数据接口时,在自定义C语言模块与PSCAD之间传递数据与实际保护装置中的输入、输出编程方式差别较大,不利于验证完整的保护逻辑。

(3)C语言模块的输出结果,包括跳闸信号等,也需要写入公用数组,提供给PSCAD修改仿真模型参数,用户无法直接显示公用数组中的信息,不便于调试。

(4)数据交互不仅存在于自定义C语言模块与PSCAD之间,还存在于自定义C语言模块内部,分别称为横向和纵向数据传递。按照PSCAD推荐的方法,上述横向、纵向数据交互,全部依赖公用数组及其指针实现,容易造成遗漏或错位。由于C语言中数组下标从0起始,而Fortran的数组下标是从1起始,在进行数组数据交换时,须时刻注意下标转换,使用起来极其繁琐。

发明内容

为克服现有技术中存在的上述问题,本发明公开了一种基于PSCAD的数字化保护源代码级闭环仿真方法。该方法通过在PSCAD中嵌入C语言编写的自定义保护逻辑代码实现源代码级闭环仿真,通过改进PSCAD推荐方法的“调用接口”和“数据接口”,使得仿真过程更加灵活、简洁,可以完整验证实际装置的保护逻辑源代码。该方法尤其适用于从保护原理研究到装置开发的过渡阶段,使开发者不依赖于物理装置即可验证软件代码,有效提高开发效率。

本发明采用的具体技术方案如下:

一种基于PSCAD的数字化保护源代码级闭环仿真方法,包括如下步骤:

(1)在PSCAD软件环境中,右键选择“CreateNewComponent...”命令,创建1个自定义元件,根据创建向导,设置自定义元件的名称,设置输入端口的数量、名称和数据类型,设置输入端口的数量、名称和数据类型;右键点击自定义元件,选择“EditDefinition”命令,打开“Script”标签,输入该自定义元件的Fortran命令:

“CALL函数F(参数1,参数2,…,参数n)”,

“函数F”即为自定义元件的调用接口函数,“函数F”的参数个数应与自定义元件的输入端口数量与输出端口数量的总和一致;

(2)建立自定义元件的调用接口,右键选择“AddComponent”命令,创建2个“Filereference”元件,并在“Filereference”元件的属性中设置外部引用的文件名和绝对路径,其中1个引用Fortran源文件,1个引用C源文件;Fortran源文件用来实现自定义元件的调用接口函数“函数F”,“函数F”的实现代码中包括命令:

“CALL函数C(参数1,参数2,…,参数n)”,

还包括对“函数C”每一个参数的数据类型定义,“函数C”即为需要调用的C语言函数入口;C源文件包含实际的数字化保护C语言源代码,入口函数为:

“void函数C(参数1,参数2,…,参数n)”,

“函数C”的参数个数应与自定义元件的输入端口数量与输出端口数量的总和一致;经过以上设置和操作后,在PSCAD仿真模型运行时,可实现通过调用Fortran语言的“函数F”来调用C语言的“函数C”;

(3)建立自定义元件与PSCAD仿真模型之间的数据接口,对自定义元件而言,数据接口包括输入模拟量、开关量和输出模拟量、开关量,其中输入模拟量包括电流、电压量,由自定义元件的实型量输入端口接入;输入开关量包括保护逻辑判断用到的开关位置、手合信号等,由自定义元件的整型量输入端口接入;输出开关量包括保护逻辑判断的中间结果和跳闸输出等,由自定义元件的整型量输出端口输出至仿真模型,实现仿真模型的闭环控制;输出模拟量包括保护源代码的中间计算结果,由自定义元件的实型量输出端口输出,用于源代码调试;

(4)完成自定义元件与PSCAD仿真模型之间的调用接口和数据接口设置后,通过PSCAD进行模型的编译,执行仿真,通过监视自定义元件的输出,将仿真模型的电流、电压输出以及包含保护逻辑源码的自定义元件跳闸输出记录到故障录波文件中,以便查看与分析,至此完成源代码级闭环仿真;需要修改仿真模型参数或者保护逻辑C源代码时,只需重新编译模型,执行仿真即可,不必重复上述步骤(1)至步骤(3)。

在上述步骤(3)中自定义元件的模拟量输入接口实现方法为:

(1)设置仿真工程的计算步长为Δt,实现仿真模型的等时间间隔Δt的计算;

(2)将仿真模型的电流、电压采集器的输出端,直接连接到自定义元件的模拟量输入端,实现自定义元件的等时间间隔Δt的采样值输入;

(3)通过自定义元件的C源代码中包含的软件测频逻辑,利用过零检测方法对输入的采样值序列进行周期量,测得实时的基波电气量周期为T

(4)对输入到自定义元件的等时间间隔Δt的采样值序列,按照每基波周期T进行N次采样的等角度采样准则进行重采样;当T/N等于Δt的整数倍时,利用抽取直接实现重采样,当T/N不等于Δt的整数倍时,利用一阶拉格朗日插值方法进行重采样;重采样后得到的采样值序列即与实际数字化保护装置的模拟量输入环节得到的采样值序列完全一致。

本发明的有益效果包括:

1、从调用接口和数据接口两个方面对PSCAD的推荐接口方法进行了改进。通过在自定义模块的Script脚本中调用Fortran接口函数实现与PSCAD的无缝链接,简化了C源代码的修改及调试过程。避免使用复杂的公用数组交互数据,而是直接利用自定义模块的输入输出管脚实现数据接口。

2、本方法完全实现纯软件环境下的源代码级闭环仿真,可以直接验证保护逻辑代码的正确性,相比保护元件算法级仿真,具有更高实用价值,尤其适用于从保护原理研究到装置开发的过渡阶段。

附图说明

图1是PSCAD仿真模型与自定义保护逻辑模块的接口示意图;

图2是自定义元件的C语言函数调用接口实现方法示意图;

图3是自定义元件的模拟量输入接口实现重采样功能的框图;

图4是自定义元件数据接口实例。

具体实施方式

下面结合附图和实施例对本发明的实施方式作进一步详细说明,但不作为对本发明保护范围的限制,凡采取等同替换或等效变换的方式所获得的技术方案,均在本发明的保护范围内。

图1所示为利用本发明方法在PSCAD软件环境下实现C语言保护逻辑代码闭环仿真的整体结构以及所涉及的调用接口和数据接口。

以一个实际保护装置中编写的过流保护元件C语言代码为例,说明实施本发明方法的具体过程。

(1)在PSCAD软件环境中,右键选择“CreateNewComponent...”命令,创建1个自定义元件,根据创建向导,设置自定义元件的名称为“OverCurrent”,设置输入端口的数量为1,名称为in,数据类型为integer型,设置输入端口的数量为1、名称为out,数据类型为real;右键点击自定义元件,选择“EditDefinition”命令,打开“Script”标签,输入该自定义元件的Fortran命令:

CALLAUX_CSUB($IN,$OUT)

函数“AUX_CSUB”即为自定义元件的调用接口函数,函数“AUX_CSUB”的参数为2个,一个为自定义元件的输入in,一个为输出out,$表示该符号为变量。

(2)建立自定义元件的调用接口,右键选择“AddComponent”命令,创建2个“Filereference”元件,并在“Filereference”元件的属性中设置外部引用的文件名和绝对路径,其中1个引用Fortran源文件OC_df90.f,1个引用C源文件OC_c.c;

Fortran源文件OC_df90.f中包含以下代码:

SUBROUTINEAUX_CSUB(in,out)

INTEGERin

REALout

!Fortran90interfacetoaCprocedure

INTERFACE

SUBROUTINEOC_CSUB(in,out)

!DEC$ATTRIBUTESC::OC_CSUB

!DEC$ATTRIBUTESREFERENCE::in

!DEC$ATTRIBUTESREFERENCE::out

!in,outarepassedbyREFERENCE

INTEGERin

REALout

ENDSUBROUTINE

ENDINTERFACE

!calloftheCprocedure

CALLOC_CSUB(in,out)

END

C源文件OC_c.c中包含以下代码:

voidoc_csub(int*Ia,double*iTrip)

{

//definevariablesandarrays

//protectionlogicmodule

return;

}

第(1)中在Script中设置的函数“AUX_CSUB”在OC_df90.f文件中实现,函数“AUX_CSUB”定义了需要调用的C函数“OC_CSUB”及其参数in、out的数据类型,该数据类型需要与自定义模型的输入、输出端以及函数“AUX_CSUB”中的定义完全一致,C函数“OC_CSUB”即为包含实际数字化保护的C语言源代码入口,以上各文件的关系如图2所示。

经过以上设置和操作后,在PSCAD仿真模型运行时,自定义元件“OverCurrent”的Script脚本可实现通过调用Fortran语言的“AUX_CSUB”来调用C语言的“OC_CSUB”。

(3)建立自定义元件与PSCAD仿真模型之间的数据接口,如图3所示,对自定义元件而言,数据接口包括输入模拟量、开关量和输出模拟量、开关量,其中输入模拟量包括三相电流Isabc、三相电压量Vsabc,由自定义元件的实型量输入端口接入;输入开关量包括保护对应的开关Brk1的三相位置Sa1、Sb1、Sc1,由自定义元件的整型量输入端口接入;输出开关量包括保护逻辑跳闸信号Trip,Delay环节用于模拟开关跳闸延时,Delay环节的输出信号直接控制开关Brk1,形成闭环控制。

为实现仿真模型输出的电流、电压模拟量与自定义元件的保护逻辑源码无缝对接,需要对自定义元件的模拟量输入接口进行以下设置和操作:

(a)右键点击仿真工程,选择“ProjectSettings”-“Runtime”-“Solutiontimestep”,设置仿真计算步长Δt1=50μs,实现仿真模型的等时间间隔Δt1=50μs的仿真计算;

(b)将仿真模型的电流、电压采集器的输出端,直接连接到自定义元件的模拟量输入端,实现自定义元件的等时间间隔Δt1=50μs的采样值输入;

(c)通过自定义元件的C源代码中包含的软件测频逻辑,利用过零检测方法对输入的采样值序列进行周期测量,测得实时的基波电气量周期T1,对于电网而言,频率f1变化范围在45Hz-55Hz之间,因此实测电气量周期T1=1/f1,在18.18ms-22.22ms之间;

(d)假设用自定义元件仿真的实际保护装置采用每基波周期24点采样,则对输入的50μs等时间间隔采样值序列,按照每实测基波周期T1进行24次采样的等角度采样准则进行重采样;由于T1∈[18.18ms,22.22ms],则重采样间隔Δt2=(T1/24)∈[757.5μs,925.8μs],当Δt2等于50μs的整数倍时,例如Δt2=800μs、850μs、900μs时,可以利用抽取直接实现重采样,当Δt2不等于50μs的整数倍时,利用一阶拉格朗日插值方法进行重采样。

实现上述模拟量输入接口功能的逻辑框图如图4所示,重采样后得到的采样值序列即与实际数字化保护装置的模拟量输入环节得到的采样值序列完全一致。

(4)完成自定义元件与PSCAD仿真模型之间的调用接口和数据接口设置后,通过PSCAD进行模型的编译,执行仿真,完成源代码级闭环仿真,需要修改仿真模型参数或者保护逻辑C源代码时,只需重新编译模型,执行仿真即可,不必重复上述步骤(1)至步骤(3)。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号