EMTDC仿真装置、EMTDC仿真系统及其仿真方法与流程

文档序号:19154089发布日期:2019-11-16 00:28阅读:307来源:国知局
EMTDC仿真装置、EMTDC仿真系统及其仿真方法与流程

本发明涉及一种emtdc仿真装置、emtdc仿真系统及其仿真方法,属于电力系统离线仿真技术领域。



背景技术:

pscad/emtdc是电力系统电磁暂态分析中的专业仿真工具。pscad是用户仿真界面,emtdc是仿真装置,它具有精确和丰富的电力系统应用模型、方便的数据输入方式以及强大的数据分析能力,是进行电力系统分析和工程研究的有用工具,在全世界范围内有着广泛的应用。在直流输电领域中,为了研究系统特性,经常需要使用pscad/emtdc软件建立详细的离线仿真模型。

在直流输电工程中,通常需要在emtdc仿真装置中利用emtdc仿真装置自带的模型库手动搭建仿真人机接口装置,如图1所示。这种做法的缺陷在于:

1.不适合emtdc初学者和工程运行人员使用,无法用于工程现场运行人员培训和教学。即使对于熟练的工作人员,也需要耗费很大的精力和时间,而且极易发生错误。

2.在emtdc仿真装置内通过仿真的方式搭建仿真人机接口装置,增加了emtdc仿真装置的运算负荷,降低了仿真速度。

3.仿真人机接口装置与工程现场的人机接口装置差异巨大,仿真效果差。

因此,利用emtdc仿真装置自带的模型库手动搭建仿真人机接口装置的方式,仿真效果较差,使用不便。



技术实现要素:

本发明的目的是提供一种emtdc仿真装置、emtdc仿真系统及其仿真方法,用于解决现有技术仿真效果差的问题。

为实现上述目的,本发明提出一种emtdc仿真系统的仿真方法,步骤如下:

人机接口装置通过以太网发送数据到emtdc仿真装置的以太网接口;

前置程序检测到以太网接口的数据后,进行解析,在共享内存被释放后占用共享内存,将解析后的数据写入共享内存;

读写模块周期性的判断其读写标志;若为写标志,则在共享内存被释放后占用共享内存,将待发送数据写入共享内存,写入完成后释放共享内存;若为读标志,则在共享内存被释放后占用共享内存,读取共享内存中的数据;

前置程序检测到共享内存中有数据且共享内存被释放,则读取共享内存中的数据,将数据打包为预定的协议报文,发送到以太网接口,通过以太网发送到人机接口装置。

该方法中emtdc仿真装置采用共享内存机制,通过读写模块与前置程序的配合,结合以太网实现实际的人机接口装置与emtdc仿真装置的通信,使用实际的人机接口装置对emtdc仿真装置进行控制,不需要手工在emtdc仿真装置上搭建控制后台,大大节约了人力成本,降低了仿真误差,提高仿真速度。

进一步的,通过检测共享内存占用信号量判断共享内存是否被释放;在未被释放时则等待。

通过使用信号量解决读写模块、前置程序对共享内存的读写存在互斥的问题,不再区分读与写,而是在读写操作前判断该信号量是否被占有,读写操作完成后释放该信号量完成某区域的读写操作。

进一步的,所述读写模块在初始化过程中,打开一个共享内存映射对象,得到相应的句柄;如果共享内存映射对象不存在则创建一个共享内存映射对象,并且获取相应的句柄;所述句柄用于映射到的共享内存中的预定空间地址。

在读写模块程序初始化过程中,首先在共享内存中预留空间,获取句柄,为程序对共享内存的操作提供条件。

另外,还提出一种emtdc仿真系统,包括人机接口装置和emtdc仿真装置,人机接口装置和emtdc仿真装置通过以太网连接,所述emtdc仿真装置包括处理器和存储器,所述处理器用于执行存储在存储器中的程序指令,以实现一个读写模块和一个前置程序;

所述读写模块用于:周期性的判断读写模块的读写标志;若为写标志,则判断共享内存是否已经被占用,若未被占用,则占用共享内存,将待发送数据写入共享内存,写入完成后释放共享内存;若为读标志,则判断共享内存是否已经被占用,若未被占用,则占用共享内存,读取共享内存中的数据;

所述前置程序用于:检测到以太网接口的数据后,进行解析,在共享内存被释放后占用共享内存,将解析后的数据写入共享内存;检测到共享内存中有数据且共享内存被释放,则读取共享内存中的数据,将数据打包为预定的协议报文,发送到以太网接口,通过以太网发送到人机接口装置。

该系统中emtdc仿真装置采用共享内存机制,通过读写模块与前置程序的配合,结合以太网实现实际的人机接口装置与emtdc仿真装置的通信,使用实际的人机接口装置对emtdc仿真装置进行控制,不需要手工在emtdc仿真装置上搭建控制后台,大大节约了人力成本,降低了仿真误差,提高仿真速度。

进一步的,人机接口装置用于对接收到的协议报文进行解析,并将解析结果显示出来。

实现了人机接口装置对emtdc仿真装置发送数据的接收和显示。

进一步的,通过检测共享内存占用信号量判断共享内存是否被释放;在未被释放时则等待。

通过使用信号量解决读写模块、前置程序对共享内存的读写存在互斥的问题,不再区分读与写,而是在读写操作前判断该信号量是否被占有,读写操作完成后释放该信号量完成某区域的读写操作。

进一步的,所述读写模块在初始化过程中,打开一个共享内存映射对象,得到相应的句柄;如果共享内存映射对象不存在则创建一个共享内存映射对象,并且获取相应的句柄;所述句柄用于映射到的共享内存中的预定空间地址。

在读写模块程序初始化过程中,首先在共享内存中预留空间,获取句柄,为程序对共享内存的操作提供条件。

另外,还提出一种emtdc仿真装置,所述emtdc仿真装置包括处理器和存储器,所述处理器用于执行存储在存储器中的程序指令,以实现一个读写模块和一个前置程序;

所述读写模块用于:周期性的判断读写模块的读写标志;若为写标志,则判断共享内存是否已经被占用,若未被占用,则占用共享内存,将待发送数据写入共享内存,写入完成后释放共享内存;若为读标志,则判断共享内存是否已经被占用,若未被占用,则占用共享内存,读取共享内存中的数据;

所述前置程序用于:检测到以太网接口的数据后,进行解析,在共享内存被释放后占用共享内存,将解析后的数据写入共享内存;检测到共享内存中有数据且共享内存被释放,则读取共享内存中的数据,将数据打包为预定的协议报文,发送到以太网接口,通过以太网发送到人机接口装置。

emtdc仿真装置采用共享内存机制,通过读写模块与前置程序的配合,结合以太网实现实际的人机接口装置与emtdc仿真装置的通信,使用实际的人机接口装置对emtdc仿真装置进行控制,不需要手工在emtdc仿真装置上搭建控制后台,大大节约了人力成本,降低了仿真误差,提高仿真速度。

进一步的,通过检测共享内存占用信号量判断共享内存是否被释放;在未被释放时则等待。

通过使用信号量解决读写模块、前置程序对共享内存的读写存在互斥的问题,不再区分读与写,而是在读写操作前判断该信号量是否被占有,读写操作完成后释放该信号量完成某区域的读写操作。

进一步的,所述读写模块在初始化过程中,打开一个共享内存映射对象,得到相应的句柄;如果共享内存映射对象不存在则创建一个共享内存映射对象,并且获取相应的句柄;所述句柄用于映射到的共享内存中的预定空间地址。

在读写模块程序初始化过程中,首先在共享内存中预留空间,获取句柄,为程序对共享内存的操作提供条件。

附图说明

图1是现有技术中emtdc仿真装置的系统框图;

图2是本发明emtdc仿真系统的系统框图;

图3是本发明emtdc仿真装置的结构框图;

图4是本发明读写模块的程序流程图。

具体实施方式

emtdc仿真系统实施例:

本实施例提出一种emtdc仿真系统(以下简称仿真系统),如图2所示包括人机接口装置和emtdc仿真装置,人机接口装置和emtdc仿真装置通过以太网连接。emtdc仿真装置包括处理器和存储器,处理器用于执行存储在存储器中的程序指令,以实现一个读写模块和一个前置程序。

本发明的主要构思在于,原有的emtdc仿真装置是在emtdc仿真装置中搭建有仿真人机接口装置,基于该emtdc仿真装置进行仿真模拟。而本发明的仿真系统是基于实际的人机接口装置(即现场运行人员控制装置)与如图3所示的本发明的emtdc仿真装置进行仿真模拟,本发明的emtdc仿真装置设计了读写模块hmi_shrm_rw(以下简称读写模块)和前置程序fesmaind.exe(以下简称前置程序),并且在人机接口装置上设计接口程序objmgr.exe,通过以太网实现了人机接口装置与emtdc仿真装置的数据传输。

在实际的工程现场中,现场运行人员通过实际的人机接口装置给实际控制保护装置下发指令,通过以太网与实际控制保护装置进行数据交互,同时还可以接收实际控制保护装置的状态信息。

在仿真模拟过程中,由emtdc仿真装置来模拟实际控制保护装置,通过在emtdc仿真装置建立读写模块和前置程序实现与实际的人机接口装置的交互。

其中,读写模块、前置程序都指一种程序进程。不同在于,读写模块是通过emtdc自带的模型库搭建而成,前置程序是独立的进程。共享内存名称为:hmi_psharemem,读写模块的参数包括:读写标志rw、共享内存空间大小nbyte、固定执行周期ndiv等。本实施例中,读写模块通过emtdc仿真装置自带模型库搭建非常方便,不必再编写代码形成独立的进程。

该仿真系统的工作过程如下:

1)实际的人机接口装置通过以太网发送数据到emtdc仿真装置的以太网接口。

2)前置程序检测到以太网接口的数据后,进行解析,在共享内存被释放后占用共享内存,将解析后的数据写入共享内存。

3)如图4,读写模块用于程序的执行,周期性的判断其读写标志rw;

具体为:首先判断仿真运行时间time是否位于读写模块固定执行周期ndiv的时间点(即是否达到判断周期),若达到判断周期,则判断读写模块的读写标志rw,若为读标志(即rw=0),则在共享内存被释放后占用共享内存,读取共享内存中的数据;若为写标志(即rw=1),则判断信号量hmi_hsemaphore是否被占用,若信号量hmi_hsemaphore被占用(即hmi_hsemaphore=1),则进行等待;若信号量hmi_hsemaphore未被占用(即hmi_hsemaphore=0),将待发送数据写入共享内存,写入完成后释放共享内存;读写模块执行结束,取消本进程地址空间的映射。

这里所说的释放指的是占用信号量被释放,而不是指内存数据被清零;如果共享内存未被释放,则需要进行等待,直到在共享内存被释放后才可将发送的数据写入共享内存。

读写模块的读写标志rw与前置程序、emtdc引擎内部的发送程序有关,前置程序接收到来自人机接口装置的数据时,读写标志rw会被置0,读写模块从共享内存中读取数据给emtdc引擎;发送程序需要发送数据时,读写标志rw会被置1,读写模块将需要发送的数据写入共享内存供前置程序调取。

4)前置程序检测到共享内存中有数据且共享内存被释放,则读取共享内存中的数据,将数据打包为iec104协议报文(iec104是仿真装置与人机接口装置的规约所定义的,如果采用其他规约,则选择相应的协议报文),发送到以太网接口,通过以太网发送到实际的人机接口装置中。

5)实际的人机接口装置中接口程序objmgr.exe解析emtdc仿真装置发送过来的iec104协议报文,生成的模拟量和开关量信息将在人机界面上展示出来。

其中,读写模块还执行如图4所示的初始化过程:

判断读写模块是否处于初始化状态,如果是:打开一个命名hmi_sharememname的共享内存映射对象,得到相应的句柄hmi_hmapfile;如果共享内存映射对象不存在,则创建一个共享内存映射对象,获取相应的句柄hmi_hmapfile;如果创建和打开都失败则返回。

获取句柄hmi_hmapfile成功后,根据该句柄hmi_hmapfile获取映射到共享内存中的预定空间地址hmi_psharemem,打开一个命名的信号量hmi_hsemaphore,如果信号量hmi_hsemaphore不存在则创建信号量hmi_hsemaphore,如果创建和打开都失败则返回,初始化完成后,读写模块开始执行程序。

本实施例提出的emtdc仿真系统可以对特高压直流输电进行仿真,还可以对其他一般的直流输电进行仿真,适用范围广泛,实用性强。

emtdc仿真系统的仿真方法实施例:

本实施例提出的emtdc仿真系统的仿真方法,步骤如下:

人机接口装置通过以太网发送数据到emtdc仿真装置的以太网接口;

前置程序检测到以太网接口的数据后,进行解析,在共享内存被释放后占用共享内存,将解析后的数据写入共享内存。

读写模块周期性的判断其读写标志;若为写标志,则在共享内存被释放后占用共享内存,将待发送数据写入共享内存,写入完成后释放共享内存;若为读标志,则在共享内存被释放后占用共享内存,读取共享内存中的数据;

前置程序检测到共享内存中有数据且共享内存被释放,则读取共享内存中的数据,将数据打包为预定的协议报文,发送到以太网接口,通过以太网发送到人机接口装置。

具体emtdc仿真系统的仿真方法的实施过程在上述emtdc仿真系统实施例中已经介绍,这里不做赘述。

emtdc仿真装置实施例:

本实施例提出如图3所示的emtdc仿真装置包括处理器和存储器,处理器用于执行存储在存储器中的程序指令,以实现一个读写模块和一个前置程序;

读写模块用于:周期性的判断读写模块的读写标志;若为写标志,则判断共享内存是否已经被占用,若未被占用,则占用共享内存,将待发送数据写入共享内存,写入完成后释放共享内存;若为读标志,则判断共享内存是否已经被占用,若未被占用,则占用共享内存,读取共享内存中的数据;

前置程序用于:检测到以太网接口的数据后,进行解析,在共享内存被释放后占用共享内存,将解析后的数据写入共享内存;检测到共享内存中有数据且共享内存被释放,则读取共享内存中的数据,将数据打包为预定的协议报文,发送到以太网接口,通过以太网发送到人机接口装置。

emtdc仿真装置的结构组成以及工作过程在上述emtdc仿真系统实施例中已经介绍,这里不做赘述。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1