CN103136407B - 基于数据整体存取的emtdc仿真模型快照的方法 - Google Patents
基于数据整体存取的emtdc仿真模型快照的方法 Download PDFInfo
- Publication number
- CN103136407B CN103136407B CN201110397662.3A CN201110397662A CN103136407B CN 103136407 B CN103136407 B CN 103136407B CN 201110397662 A CN201110397662 A CN 201110397662A CN 103136407 B CN103136407 B CN 103136407B
- Authority
- CN
- China
- Prior art keywords
- data
- snapshot
- page
- application
- district
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000004088 simulation Methods 0.000 title abstract description 9
- 230000001052 transient effect Effects 0.000 title abstract description 4
- 238000007726 management method Methods 0.000 claims abstract description 7
- 230000000007 visual effect Effects 0.000 claims abstract description 7
- 230000008520 organization Effects 0.000 claims abstract description 6
- 238000013499 data model Methods 0.000 claims abstract description 5
- 238000011084 recovery Methods 0.000 claims abstract description 5
- 230000006870 function Effects 0.000 claims description 37
- 238000012800 visualization Methods 0.000 claims description 5
- 238000010276 construction Methods 0.000 claims description 4
- 238000011161 development Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 2
- 239000011800 void material Substances 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013479 data entry Methods 0.000 description 1
- 238000005315 distribution function Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
基于数据整体存取技术实现EMTDC仿真型快照功能的方法,1)以应用结构体为数据模型组织和管理应用程序:程序由若干应用程序组成,应用程序由可视化页面组成,将应用程序的变量组成结构体进行封装;在结构体中,按照页面的执行顺序和数据流顺序依次排列变量,在运行时这些变量放在连续的内存中,提高了内存程序运行效率;2)通过可视化编程工具形成应用程序代码,并在形成代码中嵌入自定义的数据快照的接口;3)为应用提供数据快照操作的系统接口;本发明是一种基于结构体整体分配快照数据区,按页面数据块批量刷新数据的方法,不需要识别单个变量类型和大小,并给应用程序封装了数据快照和恢复的操作接口,保证了数据快照的实时性和正确性。
Description
技术领域
本发明属于电力系统离线数字仿真技术领域,具体涉及基于数据整体存取的EMTDC仿真模型快照的方法。
背景技术
EMTDC(Electro-Magnetic Transient in DC system)是一个电力系统电磁暂态仿真分析软件,它具有精确和丰富的电力系统应用模型、方便的数据输入方式以及强大的数据分析功能,是进行电力系统分析和工程研究的有力工具,在全世界范围内有着广泛的应用。
快照功能是仿真断点镜像保存和恢复功能的简称。EMTDC仿真软件提供数据快照(snapshot)的基本接口。EMTDC仿真软件允许仿真模型在运行过程中进行快照操作,保存某个仿真时刻的断点镜像数据,并在该模型下一次仿真运行时从该断点镜像恢复数据。
EMTDC仿真软件分别提供了整型、浮点型数据的快照数据存储区的内存首地址和变量偏移计数值。应用程序在每个任务函数运行时,把变量值写入到快照数据区,当停止仿真时,把数据存储到文件。当下次重新启动运行时,把文件内容读到快照数据区,应用程序从该数据区读取上次运行值,实现恢复运行的功能。由于EMTDC只提供了数据指针的首地址,需要应用程序自己区分变量类型并分配读写地址,需要针对程序中每个变量人工书写处理代码。已经实现的仿真模块快照实现方法是基于单个变量逐个处理的,当程序规模庞大时,这种方法工作量大,容易出错,开发调试的效率比较低。
EMTDC在在直流工程仿真中有很多应用,其仿真结果对实际工程有很大参考知道价值,在使用过程中需经常使用模型快照功能,进行不同工况下数据分析,直流工程的程序量非常大,有2000多页可视化程序文件,10万行代码量,如果逐行代码进行单个变量的数据快照处理,工作量很大,迫切需要提供一种高效率自动化的快照方法。本发明以面向对象的思想,用结构体来组织管理可视化页面程序,以结构体为单位实现数据整体分配和恢复,以页面块为单位进行数据快照,这种方法是EMTDC快照应用的首次实现。
发明内容
本发明的目的是:提供一种EMTDC应用程序自动实现数据快照和恢复的高效率实现方法。
本发明的技术方案由三部分组成,第一部分是可视化应用程序面向对象的数据结构定义;第二部分为可视化应用程序的代码生成方法;第三部分为开发基于整块内存的快照调用的系统软件接口。
第一部分,以面向对象的思想组织和管理可视化图形程序,程序由若干应用组成。将应用程序的变量用结构体进行封装,应用包含输入变量、输出变量、参数、构造函数、初始化函数、任务函数。在应用程序的头文件定义成员变量结构体,在应用程序源文件定义页面任务函数、应用构造函数、应用初始化函数。结构体的数据组织如图1所示,在结构体里,按照页面执行顺序依次排列变量,形成一块连续的内存。
第二部分,可视化应用程序的代码生成。提供可视化编程环境和编程符号库,用图形符号编写应用程序。把程序划分成若干应用组成,每个应用由多个页面组成,完成特定的功能。为了实现基于整体内存块快照功能,把每个页面的变量按数据流执行顺序排列组织,然后按照页面的执行顺序把所有页面的变量组织在一个结构体里,应用数据的结构体实例化后,编译器编译程序时就分配了整块连续的全局数据区,在这个全局数据区里,每个页面的数据是连续分配的,记住每个页面的起始地址和结束地址,就可以在页面任务函数执行完后,把该页面的新数据刷新到快照区,实现页面数据的即时刷新。当恢复数据时,可以通过memcpy函数,基于整个结构体的大小实现一次批量恢复,这样就不必为单个变量逐个区分类型和刷新恢复。为了提高内存复制的效率,在页面变量首部添加一个Uint32(unsigned int)类型的变量snap_start,在页面变量尾部添加一个Uint32(unsigned int)类型的变量snap_end,确保了应用首地址、页面首地址是按4字节的整型数对齐,寄存器进行内存地址访问时可以快速定位。
定义的数据快照接口包括三个函数:第一个函数在快照数据区分配一块连续的内存;第二个函数把运行区内存数据刷新到快照数据区;第三个函数从快照数据区恢复运行数据。
第三部分,为应用提供数据快照操作的系统接口。由于是基于内存块操作,只需使用快照整型数据区STORI和整型数计数NSTORI。在应用的构造函数中,通过调用mallocStor接口,按照应用结构体大小,在STORI申请一块连续内存区,并修改计数器NSTORI值,轮到下一个应用构造时,紧挨上一个应用连续分配快照数据区。这样程序的所有的应用按照执行顺序连续申请了快照数据区,单个应用内部的各个页面连续划分了应用所属的快照数据区,实现了以应用为单位申请快照内存和恢复数据,以页面为单位写数据。
本发明的有益效果:本发明提供的方法不需要分析应用程序单个变量的类型,不需要为单个变量添加快照的处理代码,而是以页面、应用结构体的整块数据区为单位,整体实现快照功能,是通过自主开发的代码生成工具自动嵌入仿真模型的快照功能接口操作,不需要人工修改应用程序,保证了正确性并提高了程序执行效率。
附图说明
下面结合附图对本发明的具体实施方式作进一步详细的说明。
图1单个应用程序的数据结构体原理图。
图2是应用程序组织原理图。
图3是以结构体组织应用变量代码示例图。
图4是基于应用内存块快照分配原理图。
图5是应用构造函数中整体分配和读取快照数据示例图。
图6是不同等级页面任务刷新快照数据区原理图。
图7是单个页面把数据刷新到快照数据区示例图。
图8是基于内存块的快照数据操作接口示例图。
具体实施方式
分三部分内容:
第一部分,以应用结构体为数据模型组织和管理应用程序。应用程序的变量由若干结构体组成,数据模型见图1,各个页面的输入输出参数变量依次排列,组成结构体。
第二部分为通过可视化编程工具形成应用程序代码,并在形成代码中嵌入自定义的数据快照的接口。应用程序组织结构见图2,通过层次化数据模型,装置管理若干插件,插件管理若干应用,应用管理若干页面任务,任务有不同执行周期,按照执行周期形成任务链。在生成可视化应用代码时,应用的数据头文件用结构体管理。在图3中举例了一个应用结构体对应的源代码,在结构体里按照页面顺序依次声明变量,单个页面有snap_start、snap_end变量用于标识页面块起始和结束。把应用的所有变量组织成结构体,从而实现以结构体为单位的内存分配和读取(见图4),单个应用的快照数据内存整体分配的C语言接口示例:
mallocStor(pstori,pnstori,&dp->snap_addr,sizeof(struct_type));
在应用的构造函数中,调用系统封装的接口,在snapshot数据区为应用实例映射整块内存,也可从快照数据区一次恢复数据(见图5),恢复接口调用示例为:
readStor(pstori,&nstori,dp,sizeof(struct_type));
形参说明:
pstori:快照数据区指针
pnstori:快照数据已经分配的计数指针
nstori:快照数据已经分配的计数
dp:实例化的结构体数据指针
snap_addr:单个应用实例在快照数据区的起始地址
sizeof:返回结构体大小
struct_type:结构体类型,例如BIP1_S1_P1_PCP_MAINCPU_TCC。
在任务函数执行过程中,可以页面块为单位周期把最新数据写到快照区(见图6、图7)。
以页面块为单位的把数据写到快照区接口示例:
writeStor(snap_write_addr,page_start_addr,page_end_addr);
snap_write_addr:页面在快照数据区写地址;
page_start_addr:页面在运行内存中首地址;
page_end_addr:页面在运行内存中尾地址;
通过writeStor接口把大小=&page_end_addr-&page_start_addr的内存块数据刷新到以snap_write_addr为起始的快照数据区。这个过程不需要考虑每个变量的类型,不需要为每个变量单独分配快照地址,而是基于结构体为整体分配和读取数据,基于页面内存块刷新收据,为了提高memcpy复制内存的效率,定义的snap_start、snap_end为Uint32(unsigned int)类型,大小为4字节,确保了应用起始地址、页面起始地址是按4字节对齐,结合编译器优化原理,memcpy可以采用寄存器的内存块复制方法,而不是逐个字节复制,提高了程序运行效率,在程序的EMTDC仿真运行过程中,数据快照只占用了5%的运行时间。
第三部分为开发快照数据区访问接口,提供了基于连续内存块分配、读数据、写数据的接口,见图8。mallocStor接口实现应用在快照数据区分配功能,writeStor接口实现页面内存块数据刷新写到快照区的功能,readStor接口实现从快照数据区读取数据
的功能。
自定义的数据接口如下:
1)int mallocStor(int*pstori,int*pnstori,unsigned int*pcomp_addr,int size);
功能说明:在快照数据区分配一块连续的内存
形参说明:
pstori:快照数据区指针
pnstori:快照数据已经分配的计数指针
pcomp_addr:应用结构体指针
size:需要分配的内存大小
2)int writeStor(unsigned int pcomp_addr,void*psrc,int size);
功能说明:把运行区内存数据刷新到快照数据区形参说明:
pcomp_addr:需要刷新的快照数据区首地址
psrc:运行内存区指针
size:需要刷新的内存大小
3)int readStor(int*pstori,int*pnstori,void*pdest,int size);
功能说明:从快照数据区恢复运行数据
形参说明:
pstori:快照数据区指针
pnstori:快照数据已经分配的计数指针
pdest:需要恢复的内存数据指针
size:需要恢复的内存大小
利用上述方法开发的EMTDC应用程序数据快照功能,由于是自动形成应用程序的代码,确保了快照数据实时性和正确性,已经在多个直流工程程序仿真中应用。
Claims (3)
1.基于数据整体存取的EMTDC仿真模型快照的方法,其特征是:包含以下三部分内容:第一部分:以应用结构体为数据模型组织和管理应用程序:程序由若干应用程序组成,应用程序由可视化页面组成,将应用程序的变量组成结构体进行封装;在结构体中,按照页面的执行顺序和数据流顺序依次排列变量,在运行时这些变量放在连续的内存中,提高了内存程序运行效率;第二部分:通过可视化编程工具形成应用程序代码,并在形成代码中嵌入自定义的数据快照的接口:
提供可视化编程环境和编程符号库,用图形符号编写应用程序;把程序划分成若干应用组成,每个应用由多个页面组成,完成特定的功能;为了实现基于整体内存块快照功能,把每个页面的变量按数据流执行顺序排列组织,然后按照页面的执行顺序把所有页面的变量组织在一个结构体里,结构体实例化后,编译器编译程序时就分配了整块连续的全局数据区,在这个全局数据区里,每个页面的数据是连续分配的,记住每个页面的起始地址和结束地址,就可以在页面任务函数执行完后,把该页面的新数据刷新到快照区,实现页面数据的即时刷新;当恢复数据时,通过自定义接口实现基于整个结构体内存批量恢复;
自定义的数据快照接口包括三个函数:第一个函数在快照数据区分配一块连续的内存;第二个函数把运行区内存数据刷新到快照数据区;第三个函数从快照数据区恢复运行数据;
第三部分,为应用提供数据快照操作的系统接口;由于是基于内存块操作,只需使用快照整型数据区和整型数计数器;在应用的构造函数中,通过调用接口函数,按照应用结构体大小,在快照整型数据区申请一块连续内存区,并修改整型数计数器的值,轮到下一个应用构造时,紧挨上一个应用连续分配快照数据区。
2.如权利要求1所述的基于数据整体存取的EMTDC仿真模型快照的方法,其特征是:在所述第二部分中,把应用程序变量用结构体组织,从而以结构体为单位进行快照数据分配和读取,以页面内存块为单位进行快照数据刷新,在应用程序中嵌入数据快照接口是通过自主开发的可视化程序代码生成工具自动实现。
3.如权利要求1所述的基于数据整体存取的EMTDC仿真模型快照的方法,其特征是:在所述的第三部分中,提供了基于内存块的快照数据的分配、刷新、恢复的接口函数,内存块的数据操作都是按4字节对齐,提高了内存访问和数据操作的效率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110397662.3A CN103136407B (zh) | 2011-12-03 | 2011-12-03 | 基于数据整体存取的emtdc仿真模型快照的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110397662.3A CN103136407B (zh) | 2011-12-03 | 2011-12-03 | 基于数据整体存取的emtdc仿真模型快照的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103136407A CN103136407A (zh) | 2013-06-05 |
CN103136407B true CN103136407B (zh) | 2015-06-03 |
Family
ID=48496230
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110397662.3A Expired - Fee Related CN103136407B (zh) | 2011-12-03 | 2011-12-03 | 基于数据整体存取的emtdc仿真模型快照的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103136407B (zh) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104331526A (zh) * | 2013-07-22 | 2015-02-04 | 南京南瑞继保电气有限公司 | 一种数字仿真程序实现快照功能的方法 |
CN103885782A (zh) * | 2014-04-03 | 2014-06-25 | 南京南瑞继保电气有限公司 | 一种可视化编程页面程序库函数封装重用方法 |
US10108820B2 (en) * | 2015-01-20 | 2018-10-23 | Mediatek Inc. | Snapshot data and hibernation data processing methods and devices |
CN107135189B (zh) * | 2016-02-26 | 2020-02-14 | 华为技术有限公司 | 一种报文发送方法及物理机 |
CN106293776B (zh) * | 2016-10-28 | 2019-06-21 | 黑龙江省电力科学研究院 | 一种电力系统emtpe辅助编译系统 |
CN112749124A (zh) * | 2020-12-28 | 2021-05-04 | 深圳壹账通创配科技有限公司 | 页面信息管理方法、装置、计算机设备及可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100476726C (zh) * | 2007-08-03 | 2009-04-08 | 北京握奇数据系统有限公司 | 一种资源受限设备及数据访问方法 |
CN101452379B (zh) * | 2007-11-28 | 2012-05-23 | 无锡江南计算技术研究所 | 内存空间的分析方法和装置、检查点的保留方法和装置 |
CN102859497B (zh) * | 2010-04-16 | 2015-05-06 | 三菱电机株式会社 | 数据访问方法及数据访问装置 |
-
2011
- 2011-12-03 CN CN201110397662.3A patent/CN103136407B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN103136407A (zh) | 2013-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103136407B (zh) | 基于数据整体存取的emtdc仿真模型快照的方法 | |
CN105247484B (zh) | 利用本地分布式标志体系架构来仿真访客集中式标志体系架构的方法 | |
CN109643273B (zh) | 用于记录可重放跟踪的计算机系统、方法、硬件存储设备 | |
CN102270189B (zh) | 基于fpga多核系统的核间通信方法 | |
CN102508657B (zh) | 一种航天器嵌入式软件模块维护方法 | |
Schordan et al. | Reverse code generation for parallel discrete event simulation | |
CN103778015A (zh) | 在基于图的计算中的计算资源管理 | |
CN102346671B (zh) | 基于可扩展式脚本语言的计算方法 | |
CN102708009B (zh) | 一种基于cuda实现多任务共享gpu的方法 | |
CN102929686A (zh) | 一种片上多核处理器功能验证方法 | |
CN104823172A (zh) | 实时指令跟踪处理器、方法以及系统 | |
Prokopec et al. | Flowpools: A lock-free deterministic concurrent dataflow abstraction | |
CN101303580A (zh) | 支持多种cpu构造plc控制器的实现方法 | |
CN101206614B (zh) | 仿真特殊功能寄存器的仿真器 | |
Swenson et al. | A new approach to zero-copy message passing with reversible memory allocation in multi-core architectures | |
EP2600256A1 (en) | Synchronized linking method and system between engineering analysis programs by using a shared memory of a database | |
CN103942092A (zh) | 一种支持LabView图形化编程的HLA协同仿真方法 | |
CN115983047B (zh) | 一种适用于多图形接口的跨平台的仿真系统 | |
CN102141917A (zh) | 基于IronPython脚本语言的多业务联动实现方法 | |
CN103729180A (zh) | 一种快速开发cuda并行程序的方法 | |
CN102110045A (zh) | 实时显示调试信息的仿真器 | |
CN110955411A (zh) | 一种软件集成交互设计方法 | |
CN104424123A (zh) | 一种无锁数据缓冲区及其使用方法 | |
Chi et al. | Uflow: dynamic software updating in wireless sensor networks | |
Guo et al. | Parallel simulation of large-scale artificial society on CPU/GPU mixed architecture |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150603 |
|
CF01 | Termination of patent right due to non-payment of annual fee |