当前位置: 首页 > 专利查询>北京大学专利>正文

一种基于注释的仿真代码同步生成方法技术

技术编号:10733503 阅读:92 留言:0更新日期:2014-12-10 10:36
一种基于注释的仿真代码同步生成方法,包括:设计一个仿真描述模型;将该仿真描述模型导出为底层仿真代码;将导出的仿真代码放入实际仿真机中进行执行,并根据执行结果对仿真代码进行修改,然后将修改结果同步到仿真描述模型。通过上述方法,就能完成仿真描述模型与仿真代码之间的同步生成。利用本发明专利技术,可充分利用软件仿真的优势,将仿真软件应用到实时仿真领域中,能够缩短仿真模型设计周期、减少人为失误、减少重复工作量、降低对仿真人员编程知识的要求。

【技术实现步骤摘要】
一种基于注释的仿真代码同步生成方法
本专利技术提供了一种基于代码生成实现软件仿真与实时仿真之间实现设计复用、缩短工作周期的方法。具体涉及使用一种基于注释和特殊标注规则的自动化代码导出和代码逆向方法,实现软件的非实时仿真和实时仿真之间使用代码工程进行同步沟通。
技术介绍
仿真技术是一门多学科的综合性技术,它以控制论、系统论、信息技术和相似原理为基础,以专用设备和计算机为工具,利用系统的模型对实际的或设想的系统进行动态试验。通过对现实系统的模仿,获取某些必要信息,然后解决现实生活中出现的问题。随着科技的飞速发展,仿真技术在诸多领域中发挥着日益重要的作用,其理论与方法的研究也在不断深化发展着。软件仿真技术也在这个过程中得到了长足的发展,软件仿真具有建模快速、对仿真人员编程知识要求不高、调参方便等优点。软件仿真也被应用到军事和民用领域的方方面面。在传统的控制理论研究中,一般都可以利用上述提到的仿真软件的功能方便地进行控制规律的设计和仿真,但是这些仿真大部分为非实时仿真,模型中的硬件环节由数学模型来替代。但对于一些如串口通信等对于仿真实时性要求高的场合,往往达不到预期的控制效果;而且离线仿真往往不能对内存、接口和通信等实时参量进行评价,从而设计者必须不断对自身的设计做出调整,开发周期相对较长。在一般的仿真研究院中,仿真人员往往都会采用专门的仿真机进行实时仿真测试,这是使用仿真软件所替代不了的。而这些仿真机接收的模型语言有很大一部分是以C/C++为主的。而传统的仿真研究院工作方式是仿真人员先自己设计并开发C/C++的仿真底层代码,根据测试结果重新修改代码。由于仿真机的运行耗费较高,且直接对代码进行修改容易产生差错,并且在编写代码时会产生许多重复工作,因此这种方式的仿真往往效率低下而且人力、物力成本较高。目前的主流仿真软件往往也会提供方法支持软件仿真向实时仿真的过渡,最大限度地利用软件仿真的优势,减少仿真人员的重复性劳动,并且尽可能地智能化处理非实时仿真描述模型转换成实时仿真底层代码的流程,实现模型的校验、模型模板的导出等工作。但是目前的软件仿真与实时仿真之间的过渡往往是一次性的,仿真软件只提供一次性的将仿真描述模型导出为实时仿真底层代码,往往对导出的实时仿真底层代码没有后续的跟踪,用户随后在实时仿真底层代码上的操作就与仿真软件没有关系了,用户对于模型的后续调试也无法继续使用软件仿真所带来的便利;如果仿真人员在软件模型上进行了修改,只能重新导出为新的实时仿真模型,原有的在实时仿真模型上的修改也不会得到保留;即软件仿真与实时仿真之间并没有同步关系,一旦生成实时仿真模型之后,就与软件仿真没有关联了,后续在仿真机上的模型修改和调参不可在仿真软件里进行维护。
技术实现思路
本专利技术的目的是使仿真平台能将非实时仿真的灵活高效性和实时仿真的有效性相结合。仿真人员能够在仿真软件上对模型进行测试和修改,同时系统可以自动生成适用于实时仿真的代码工程或者是代码框架。本专利技术提供的技术方案如下:一种基于注释的仿真代码同步生成方法,其特征是,利用代码工程作为软件仿真与实时仿真之间的通信方式;利用代码生成使仿真描述模型可以应用到实时仿真系统中,利用代码逆向使对于实时仿真系统中模型的修改调参可以反馈到仿真描述模型中,从而继续应用软件仿真;通过基于注释的方式组织代码工程,从而实现代码工程的增量修改、智能扫描和动态反馈。一种基于注释的仿真代码同步生成方法,其特征是,包括以下步骤:第1步:设计一个仿真描述模型;第2步:将该仿真描述模型导出为底层仿真代码,以下简称仿真代码;第3步:将导出的仿真代码放入实际仿真机中进行执行,并根据执行结果对仿真代码进行修改,然后将修改结果同步到仿真描述模型。通过上述方法,就能完成仿真描述模型与仿真代码之间的同步生成。优选的技术方案:所述的仿真代码同步生成方法,其特征是,所述的仿真描述模型用XML进行描述。所述的仿真代码同步生成方法,其特征是,第2步的实现方法为:2.1)将仿真描述模型中的每个模块转换为一个底层仿真代码类;2.2)模块中的变量定义转为类的变量定义,内部变量转为类的私有成员,对外变量转为类的公有成员;2.3)模块间的值以公共数组方式存放;系统维护一个大的枚举类型列表,每个模块的每个变量根据特殊的构造规则可以与这个列表里的枚举项一一对应;而每个变量通过对应的枚举项的值即可以找到在公共数组里的位置,从而完成向数组中写入数据或者读取数据;模块的数据交互便是以此来实现;2.4)仿真代码中的可变部分由注释标记对来标记。所述的仿真代码同步生成方法,其特征是,步骤2.1中,所述的仿真代码类为C++类或Java类。所述的仿真代码同步生成方法,其特征是,步骤2.4中,所述的可变部分包括初始变量、输入变量、内部变量、输出变量、参数变量、模块内容区域。所述的仿真代码同步生成方法,其特征是,第3步的实现方法为,在加载所述的仿真代码后,执行:3.1)根据注释标记对,分块读取仿真代码内容;3.2)每种注释标记对表示一种类型的元素,比如变量声明、变量赋值、变量映射等;3.3)比对仿真描述模型与仿真代码中提取的信息,更新仿真描述模型。所述的仿真代码同步生成方法,其特征是,利用基于组件的方式构建仿真描述模型,使用仿真软件的模型校验功能对设计的模型进行初步检查,排查在设计阶段可能的错误和一些变量映射等方面的错误;使用软件进行数据采集和数据分析,使用软件进行快速地仿真运行和初步调试。所述的仿真代码同步生成方法,其特征是,采用自动同步的方式,对导出的代码持续追踪,在设计层面上将仿真软件与实时仿真代码之间完成整个生命周期的同步化,仿真人员能够自由地在两种模式下切换,这点不同于现有仿真软件将代码导出后就不继续管理的方式。利用此特点,仿真人员能够对实时仿真代码进行持续的跟踪和调参。本专利技术的有益效果:软件仿真一般针对的是非实时仿真,实时仿真一般是需要专门的仿真机,以特定的实现语言(C++)的代码模型进行运行。软件仿真具有建模快速、用户无需掌握太多编程知识的特点。但是对于一些如串口通信等对于仿真实时性要求高的场合,非实时仿真往往达不到预期的控制效果;而现在实时仿真和非实时仿真之间缺少关联,很难利用非实时仿真去节省实时仿真的时间,或者说实时仿真的方案在非实时仿真的模型里也难以有反馈。而利用本专利技术,则可充分利用软件仿真的优势,将仿真软件应用到实时仿真领域中,能够缩短仿真模型设计周期、减少人为失误、减少重复工作量、降低对仿真人员编程知识的要求。开发平台基于状态机和流程图构建组合和时序逻辑决策模型,以此进行仿真。从需求、原型设计、建模、模型细化、控制算法的开发和模型的离线测试调优,仿真人员在设计阶段将精力集中到模型本身,由系统去自动构建代码,可以极大地降低对仿真工程技术人员的编程门槛,并可以在编码、调试、测试和验证等开发阶段缩短工作周期,加速效率,并且提高产品质量。附图说明图1是代码导出顶层数据流图。图2是代码导出流程图。图3是代码同步流程图。图4是代码生成流程图。具体实施方式图1描述了本专利技术的顶层数据流图,由图1可以看出本专利技术主要包括三个主要的部分,包括仿真模型构建、仿真模型导出和代码工程逆向,并且这三个部分通过模型文件和代码工程进行持久化和相互之间的交互。用本文档来自技高网
...
一种基于注释的仿真代码同步生成方法

【技术保护点】
一种基于注释的仿真代码同步生成方法,其特征是,利用代码工程作为软件仿真与实时仿真之间的通信方式;利用代码生成使仿真描述模型可以应用到实时仿真系统中,利用代码逆向使对于实时仿真系统中模型的修改调参可以反馈到仿真描述模型中,从而继续应用软件仿真;通过基于注释的方式组织代码工程,从而实现代码工程的增量修改、智能扫描和动态反馈。

【技术特征摘要】
1.一种基于注释的仿真代码同步生成方法,包括以下步骤:第1步:设计一个仿真描述模型;第2步:将该仿真描述模型导出为底层仿真代码,以下简称仿真代码;具体实现方法为:2.1)将仿真描述模型中的每个模块转换为一个底层仿真代码类;2.2)模块中的变量定义转为类的变量定义,内部变量转为类的私有成员,对外变量转为类的公有成员;2.3)模块间的值以公共数组方式存放;系统维护一个大的枚举类型列表,每个模块的每个变量根据特殊的构造规则可以与这个列表里的枚举项一一对应;而每个变量通过对应的枚举项的值即可以找到在公共数组里的位置,从而完成向数组中写入数据或者读取数据;模块的数据交互便是以此来实现;2.4)仿真代码中的可变部分由注释标记对来标记;第3步:将导出的仿真代码放入实际仿真机中进行执行,并根据执行结果对仿真代码进行修改,然后将修改结果同步到仿真描述模型,具体实现方法为,在加载所述的仿真代码后,执行:3.1)根据注释标记对,分块读取仿真代码内容;3.2)每种注释标记对表示一种类型的元素;3...

【专利技术属性】
技术研发人员:黄雨黄舒志张世琨
申请(专利权)人:北京大学
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1