一种基于IMCL模型的异构式多平台代码生成方法与流程

文档序号:16246257发布日期:2018-12-11 23:36阅读:143来源:国知局
一种基于IMCL模型的异构式多平台代码生成方法与流程

本发明涉及计算机代码自动生成领域,特别适合涉及了一种基于imcl模型的异构式多平台代码生成方法,用于实现代码的自动生成。

背景技术

模型驱动架构是在2001年提出的。它是一种软件设计方法,通过适当的领域特定语言(dsl),并使用独立于平台的模型来定义系统功能。其优点是,通过对dsl模型的抽象,系统架构可以用比其他编程语言(java,c++,c#)更少的dsl代码来表示。此外,使用领域特定语言编写的程序更容易理解,甚至可以用图形语言表示dsl代码,并可以消除业务逻辑和技术实现之间的差异性。由于模型驱动的体系结构是独立于平台的,因此开发了许多解释器来将dsl翻译成与平台相关的语言,例如simulink和mygenerator。此外,还提出了许多用于自动代码生成的开发框架,如由omg开发的acceleo。随着自动代码生成技术的发展,使得系统设计的变化不会对开发周期产生不可弥补的影响。

通过在开发过程中使用模型驱动架构(modeldrivenarchitecture)mda,不仅可以对程序执行语法进行检查或进行静态代码分析,还可以在抽象层次上验证程序的功能属性,从而减少现实中系统运行的错误。模型驱动的基本思想是从较高层次的抽象进行系统的功能建模,进而将模型转换为代码,部分或全部实现自动化开发。在如今模型驱动方法多样的同时,如何将系统建模结果(包含多种模型驱动)转换为对应平台的可执行代码具有一定的困难。为此,部分研究学者提出将平台无关模型先转换为平台相关模型再生成代码,并对模型转换方法展开了一系列研究。无论采用哪一种模型转换方法,都无法避免模型转换过程中带来的包括,如何实现不同表达形式模型间的转换,如何保证两种模型的一致性等问题。此外,在模型驱动开发的后期,为了保证实现与需求相符,程序员需要结合模型与具体部署分别对物理设备进行编码,历经多次的仿真与测试,反复调整编码,这个过程消耗了大量的时间。因此可靠的复杂系统建模技术对这种系统架构的分析研究的意义是不可忽视的。



技术实现要素:

目前主流的模型开发大多是单一平台的代码生成。但对于异构式系统而言,由于其多平台特点,往往难以使用单一的模型驱动方式来设计系统。因此,本发明提出了一种能够从单一模型语言到多种不同目标平台的代码生成方法。通过采用程序切片方法对所述功能模型进行切片,从而保证所述平台模型在功能上与所述功能模型的对应部分功能的相同;通过基于形式化系统依赖图的分解方法完成所述功能模型的分解,从而保证分解后的多个平台模型之间的约束关系与所述功能模型中对应部分功能之间的约束关系的一致;进而保证了复杂系统建模的可靠性。通过分析imcl模型的语法树,进而在给定的目标语言的转换规则下生成多种平台代码,其中平台包括arm平台、plc平台和pc平台。本发明多平台代码生成方法可以提高模型开发的灵活性与实用性,能够帮助开发者将重点放在系统的逻辑设计上,提高开发者的工作效率。下面将对本发明方法进行进一步的说明。

本发明的目的是通过以下技术方案实现的一种基于imcl模型的异构式多平台代码生成方法,包括:采用imcl(工业模型协同控制语言),对目标系统的功能进行刻画,获得目标系统的功能模型;采用形式化方法,对所述功能模型进行分解,获得对应所述目标系统中的一个或多个平台的一个或多个平台模型;将所述一个或多个平台模型映射到对应的平台,从而对所述平台模型进行细节补充;在抽象语法树的基础上,根据所述一个或多个平台的特点,设计对应的转换规则,从而将所述一个或多个平台模型转化为对应的平台代码。

进一步的,所述功能模型为由一个或多个子模型组成的群体模型。

进一步的,所述采用imcl语言,对目标系统的功能进行刻画,获得目标系统的功能模型包括:通过忽略平台的无关性,统一定义资源,抽象出包括通信协议与物理设备的调用功能,从而对所述目标系统功能进行刻画,进而获得目标系统的功能模型。

更进一步的,所述功能模型包括:所述目标系统的系统组件、物理设备、运行环境、通信协议、驱动调度以及逻辑功能。

进一步的,所述采用形式化方法,对所述功能模型进行分解包括:采用程序切片方法对所述功能模型进行切片,从而保证所述平台模型在功能上与所述功能模型的对应部分功能的相同;基于形式化系统依赖图的分解方法完成所述功能模型的分解,从而保证分解后的多个平台模型之间的约束关系与所述功能模型中对应部分功能之间的约束关系的一致。

更进一步的,所述多个平台模型采用统一定义的通讯方式进行通讯。

更进一步的,所述一个或多个平台模型采用imcl语言进行描述。

进一步的,所述细节补充包括:对应平台的运行环境、平台间的通信、物理资源和/或物理资源间的关联中的细节进行补充。

进一步的,所述抽象语法树为对应一种编程语言的源代码的树状结构。

进一步的,所述一个或多个平台包括:arm平台、plc平台以及pc平台。

本发明的优点在于:本发明解决了现有技术难以同时对多平台代码进行生成的不足,创新的通过对功能模型的自动化分解来进而实现目标平台代码的生成,为复杂系统的开发提供了多样化的选择。此外,本发明通过程序切片的方法保证了生成的子系统模型功能上是不变的;通过基于形式化系统依赖图的分解方法保证了分解后的平台模型之间约束关系与所述功能模型中对应部分功能之间的约束关系的一致。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

附图1示出了本发明的方法流程图。

附图2示出了本发明一种可选实施例的工作流程图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施方式。虽然附图中显示了本公开的示例性实施方式,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

如图1所示,为本发明的方法流程图。其根据本发明的实施方式提出了一种基于imcl模型的异构式多平台代码生成方法,包括:s1、采用imcl语言,对目标系统的功能进行刻画,获得目标系统的功能模型;s2、采用形式化方法,对所述功能模型进行分解,获得对应所述目标系统中的一个或多个平台的一个或多个平台模型;s3、将所述一个或多个平台模型映射到对应的平台,从而对所述平台模型进行细节补充;s4、在抽象语法树的基础上,根据所述一个或多个平台的特点,设计对应的转换规则,从而将所述一个或多个平台模型转化为对应的平台代码。

具体的,其中所述功能模建模即对工控系统建模,使用imcl对目标系统进行统一建模,通过忽略系统中平台间的无关细节,最终形成包括系统功能和资源约束信息的imcl语言模型即功能模型,其包括所述目标系统的系统组件、物理设备、运行环境、通信协议、驱动调度以及逻辑功能等;所述模型分解针对给定的对应平台的资源约束,将系统模型自动分解为一个或多个平台模型,所述平台模型亦采用imcl进行描述;所述平台模型的映射为平台模型与其对应平台之间的映射,其中所述映射包括通信协议实现、物理设备以及驱动调度等,用于对应平台的运行环境、平台间的通信、物理资源和/或物理资源间的关联中的细节进行补充。最后根据给定的转换规则,将生成的平台代码部署到具体平台设备上。通过上述方法,本发明解决了现有技术难以同时对多平台实现代码生成的问题,创新的通过对模型的自动化分解实现目标平台的代码生成,为复杂系统的开发提供了多样化的选择。

更具体的,所述功能模型建模是针对复杂系统中具备程序运行能力的处理器的子系统的建模,所建立的功能模型描述了对应子程序在目标系统中的实现功能。其所述实现功能包括,子系统间的系统信协议、平台设备的设备调度以及对其自身内存和功能的管理。从程序设计角度来看,功能模型是多个触发事件的集合,一个功能模型就是一个可以在特定子系统上运行的功能程序,即每个触发事件都可以独立完成目标系统中特定的一部分功能。因此,所述功能模型为由一个或多个子模型组成的群体模型,并且每个功能模型都留有与外部进行交互与通信的接口。本发明中通过统一定义的通讯方式实现了平台模型间的通讯。

由于目标系统往往是由一个或多个子模型组成的,而一个子模型又可以分解为一个或多个平台模型;因此,为了保证多个平台模型间的通讯本发明中的通信方式结合了形式化方法中通道的概念,将通讯分为消息接受与发送两个部分。其中,消息发送是指系统通过通信接口向指定的目标系统发送消息;消息接收是指目标系统处于等待状态,等待接受对应平台发送的消息。而为了保证不同平台模型间的协同工作,本发明中采用形式化方法对功能模型进行分解,包括:采用切片分析方法对所述功能模型进行切片,从而保证所述平台模型在功能上与所述功能模型的对应部分功能的相同;基于形式化系统依赖图的分解方法完成所述功能模型的分解,从而保证分解后的多个平台模型之间的约束关系与所述功能模型中对应部分功能之间的约束关系的一致。

此外,由于系统之间存在着差异,因此通过忽略平台无关性建立的功能模型在其转化为对应的平台代码后可能会对目标系统带来潜在的影响。为此本发明根据工控程序的功能设计了合适的物理设备部署,再根据部署情况进行功能模型的建立,进而实现了物理设备资源的优化,其表现在功能模型中即为资源约束关系的形式化定义。本发明中实现的模型转换代码是一种模型驱动开发技术,通过在抽象角度对系统进行描,使得系统更容易理解与修改,进而再从模型到具体平台语言的代码,实现代码的自动生成。其中所述平台语言包括c、vhdl和iec611131-3等。本发明中将从抽象模型到生成具体的平台代码的过程称之为抽象实现,而所述抽象实现的原理是按照每种语言不同的风格来制定转换规则,进而在imcl语言的抽象语法树的基础上,通过对应的转化规则对平台模型进行向平台代码进行转化,本发明中将这一步称为转译部署。在生成平台代码的过程中,本发明需针对对应的平台添加一系列的必要配置,如文法规则、编译原理等,从而根据给定的规则实现将转译代码部署到对应的平台上。

实施例

如图2所示,为本发明一种可选实施例的工作流程图。其中一个协作式异构程序的功能模型,通过模型分解分解为平台模型a、平台模型b以及平台模型c。其中所述协作式异构程序对应的系统即目标系统,该目标系统中的平台包括fpga平台(可编程控制逻辑门)、arm平台、pc平台(ppc-460)以及plc平台(stm32-429)。为了保证平台模型间的通讯,本发明还对包括uart通用异步收发传输器、ethernet以太网通讯协议以及spi串行外设接口等进行了抽象,用作不同平台间的协作通信链路。

具体的,对于fpga平台,当忽略无关的平台细节后,通过imcl对vhdl语言所描述的行为进行建模。在忽略fpga平台的相关性后,将vhdl中表示库、程序包结构以及实体所表示的系统电路结构的设计图抽象为资源。由于vhdl中的架构主要包括,结构描述、数据流描述以及系统性描述,其本质上都是描述内部结构的功能特征,因此结构描述、数据流描述以及系统性描述可以采用事件进行描述。

对于plc平台,将输入、输出模块以及外设等相关联的外部物理资源统一进行描述,将资源对抽象为程序变量,便于资源调度以及设置约束条件。对于plc平台的主程序,本发明通过提取主体部分的通信服务、程序执行过程,然后利用事件驱动的方式对其进行描述从而完成plc平台的功能建模。

对于pc系统,一个pc形式的控制系统设计可以表现为,cpu负责程序的执行,整个系统由多个独立的线程组成,每个线程即代表相关的任务,系统具备独立的通信能力,其包括数据的输入与输出。因此本发明在采用imcl语言对pc系统进行建模时,将多线程抽象为并发的触发事件的集合;系统功能的通信使用imcl的抽象通信协议进行表示;系统与外界设备资源的控制关系,使用imcl语言中的资源调度进行表示,从而完成对pc系统的功能建模。

接下来进行模型分解,将上述抽象出的功能模型分解为对应其应用平台的平台模型,由于功能模型的本质是抽象掉一些无关的细节信息,只关注研究对象的特征。因此,当从模型自动化生成代码时,需要对缺失的细节信息进行补充,包括变量转换,系统之间的通信协议方法以及控制器和特定设备的驱动关系。在对所述功能模型的分解过程中本发明采用程序切片方法对所述功能模型进行切片,从而保证所述平台模型在功能上与所述功能模型的对应部分功能的相同;基于形式化系统依赖图的分解方法完成所述功能模型的分解,从而保证分解后的多个平台模型之间的约束关系与所述功能模型中对应部分功能之间的约束关系的一致。最后,本发明中通过构建抽象语法树(abstractsyntaxtree)通过将源代码中的语句映射到树中的每一个节点上,进而在imcl的抽象语法树的基础上,结合给定的代码生成规则,实现模型到目标平台到平台代码的生成。其具体过程是将imcl代码转换成结构化的抽象语法树,并借助antlr工具,在给定的imcl的语法下生成imcl模型的抽象语法树;然后通过深度遍历树形结构,对每个节点所属类型进行分析;最后,根据每个节点所属的类型,分别使用对应的规则进行代码的生成。

以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。

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