0 引言
模型驱动的软件开发(Model Driven Development, MDD方法的主要思想是提炼出特定领域内的一组相对核心的元模型,使用它们建立平台无关模型(Platform Independent Model, PIM,然后面向不同的开发平台和应用平台,自动转换为相对应的平台相关模型(Platform Specific Model, PSM [1-3]。采用MDD方法设计和开发实时领域软件有利于实现实时系统程序设计的一致性、异构性、快速性、可靠性、可复用性和易维护性,因此得到了研究人员的广泛关注。
对实时领域MDD建模方法的研究尚处于起步阶段,国内外主要研究包括
美国UC Berkeley开发的PtolemyII。软件则是专为车载实时操作系统设计,局限性较大。
由于实时控制软件以多任务并行执行为主要运行机制,开发过程主要集中于各种交互行为的具体建模,对行为的执行时序和行为使用的资源具有严格的要求,其语义体系也更加具体和复杂[8]。因此在使用MDD进行该领域的软件开发时,如何构建完整、清晰的可视化源模型、构建细致的行为交互模型以及如何保证实时语义在源模型中得到完整的体现是实现该方法的重要基础。
当前各种对模型驱动建模方法的研究主要针对的是单层建模,即在一个单一的层次中使用若干个基本元模型建模。但由于实时系统的复杂特性,多任务之间的实时交互行为模型也更繁琐,继续使用单层建模方法将会降低可视源模型的可读性和清晰度,容易产生错误,难以支持实时控制领域的模型驱动设计方法。因此,有必要对模型驱动的建模方法展开进一步的研究,找到一种新的方法以解决复杂实时控制系统建模时复杂结构不清晰的问题。
本文以模型驱动的实时控制软件设计方法研究为基础,提出了一种分层递阶的实时多层建模方法,并给出了基于可扩展端口的元模型技术及可扩展标记语言(eXtensible Markup Language, XML描述方法的端口通信技术的实现方法。该方法引入输入端口和输出端口对现有的对象元模型进行扩展,采用XML语言描述端口的语义,进而通过端口的状态匹配及基于信道的消息传递方法实现异层模型不同任务之间的通信,从而完成并行交互的多任务在不同层次中的建模和通信。对AGVS(Automatic Guided Vehicle System的建模结果显示,与单层建模方法相比较,使用该方法可以有效实现模型驱动设计方法在实时领域内对并行多任务和复杂交互行为的描述,提高实时领域模型的可读性和可复用性,从而为在实时领域内建立多任务和复杂交互关系的模型驱动设计方法描述提供了一种有效的解决方案。
第3期
王彬等:基于可扩展端口技术的实时领域分层递阶建模方法
1分层递阶的实时领域模型驱动开发方法
1.1模型驱动的实时控制软件开发方法
基于模型驱动的实时控制软件开发方法原理如图1所示,通过对模型和元模型技术的应用,调用图形化元模型建立实时领域内抽象的可视源模型,将原来平台相关的强耦合开发过程变为平台无关的模型设计过程,使用由PIM到PSM的模型转换技术将基于源模型的设计结果直接转换为与特定平台相关的目标模型,并且同一个PIM可被转换成不同目标平台下的目标模型,因此提高了设计结果的独立性和可复用性。
这种基于MDD的设计思想能够将实时控制软件设计过程中的各个不同阶段,即从系统分析、方案设计到代码实现和调实验证等统一为以模型为对象的建模行为,提高了开发过程中的统一性和连续性,增强了不同的设计开发阶段之间的平滑过渡,实现了在不同设计阶段均可进行验证和同步的可能性,使实时系统控制软件开发具备了更好的一致性、异构性、快速性、可靠性、可复用性和易维护性。
本文以文献[8-10]为研究基础,重点对MDD实时系统中分层递阶的建模方法及其实现技术展开深入研究。
1.2分 []层递阶的实时建模方法
模型驱动的实时控制软件开发过程把控制问题分解为多个并发任务,在多任务实时系统中,最主要的运行机制是多个任务之间的协调和合作,因此任务与任务之间需要通信以实现信息的交互。随着实时控制软件设计过程中任务数量的增加以及多任务之间交互行为的增多,将整个系统模型在同一个设计层中加以实现的可行性将随之降低,同时会影响表达多任务之间相互关系的可读性。为了更加完整地用模型表达多任务及其交互行为,同时也为了更清晰地展现系统模型的层次结构,对于复杂控制程序的设计,可采用分层递阶[11,12]的设计方法,将设计模型分布在不同层加以实现。
Saridis提出的分层递阶智能理论,将系统自上而下分为组织、协调和执行3个层次。组织层对于给定的外部命令和任务分解为能够完成该任务的子任务或动作组合,并将这些子任务向协调级下达,通过协调级的处理最后将具体的动作要求下达给执行级完成[12]。其控制精度由上至下递阶增加,智能程度则由上到下递阶减小。分层递阶结构的优点在于通过对任务的逐层分解实现不同层次内不同策略的控制要求,能够实现对系统结构的清晰描述。
本文以分层递阶的思想为基础,结合前期研究的成果,给出基于模型驱动开发方法的实时领域分层递阶建模结构如图2所示。
图片
组织层是分层结构的最上层,该层的模型由较高智能决策能力的任务组成,它们能够根据控制要求将自身进行分解,从而得到一组并行执行的子任务序列。
协调层由组织层模型分解而得到的子任务组成了协调模型层,这一层的模型可接收组织层模型传来的命令,同时将本层的子任务继续分解为执行器可以执行的具体控制行为序列。
执行层执行层模型只负责完成具体的行为和动作。与外部资源的交互主要由执行层模型实现。这一层的模型可接收协调层模型传来的命令,并且所有的控制行为必须在这一层结束。
按照上述的递阶分层机制,采用逐层分解的方法把基于模型驱动的实时控制建模分解到3个不同功能层中分别实现,属于同一功能层的模型放在同一层次中建模,同一层的模型之间可以采用现有技术实现直接通信,而对于不同层次任务模型之间的通信,则是实现实时领域分层递阶建模方法的关键。
2基于XML的端口实现技术
2.1基于端口技术的扩展对象元模型
根据前期的工作中提出的实时控制软件图形元模型和单层建模方法为基础,实时领域内的基本元模型可分为3类:对象元模型、行为元模型、算法元模型。其中对象元模型是多任务实时交互过程中的主体它具有标识、属性(值,可以发出行为或接收行为。
每一个对象元模型可以完成一个特定的子任务,并具备实时检测、控制和交互能力。采用端口技术对对象元模型中的任务元模型进行扩展,可以将分层递阶建模中不同层次间的通信转换为端口之间的通信,有助于实现不同层次的模型间的最终融合。
不同层之间通过扩展端口完成通信的结构如图3所示。图中椭圆形部分是任务体的对象元模型,可通过为该元模型配置多个端口来实现对其的扩展。当前的研究中有输入端口和输出端口两种,端口成对使用,匹配成功的一对端口能够完成该对象元模型与其他对象元模型之间的消息通信。如图3所示,在协调层创建了一个优先级为16的任务元模型task_a;在执行层创建了一个优先级为19的任务元模型task_b。为了完成这两个位于不同层次的任务之间的通信,为每一个任务元模型均配置了一个输入端口和一个输出端口。任务之间的交互主要依靠每一对相匹配的端口之间的通信完成,一旦某一对端口匹配成功后,输出端口可以向输入端口发送消息;相应地,输入端口可以接收输出端口发来的消息。
2.2基于XML的端口语义描述
在分层递阶的建模方法中,不同层之间的数据传递均由可扩展端口之间的通信实现。一个端口代表一类在全局、共享名空间具有唯一地址的数据结构。端口可以用来在并行任务之间传送数据,也可以用来从一个模式向下一个模式传送数据。在实时控制系统的建模过程中,为了保持功能与非功能语义的完整,本文采用与平台无关的可扩展标记语言XML来描述端口信息,以保证在分层递阶的实时控制软件建模过程中,端口通信信息在整个模型框架中的语义一致性。
XML语言是互联网中实现数据交换的一种层次化数据格式。一个XML文档是嵌套的元素结构,以根元素作为文档的开始;元素数据能够以属性或子元素的形式存在。它能够为许多应用,特别是表示调度和同步的应用提供关于描述内容、语义和语法的标准数据格式
在每一个输入端口中,都有两个子元素characteristic和function,characteristic元素主要是对输入端口定义的描述,它有3个属性name、state和ident。
1name:是对输入端口标识名的描述;
2state:是对输入端口状态的描述,目前设定的端口状态有悬挂、运行和终止3种;
3ident:是对输入端口标识值的描述,用于实现端口间的匹配;
function元素进一步嵌套了queue、getmsg、msgtype和 action四个属性,用于输入端口功能的描述。
1queue:是对输入端口消息队列空间大小的描述;
2getmsg:是对此刻接收到的消息内容的描述;
3msgtype:是对该条消息的消息类型的描述;
4action:是对消息对应操作的描述。
输出端口的元模型基于XML格式的语义描述如下:
程序前
在每一个输出端口中,也有characteristic和function两个子元素,与输入端口的区别主要在于function元素中的queue是对输出端口消息队列空间大小的描述,sendmsg是对将要发送的消息内容的描述,msgtype 是对该消息的消息类型的描述,action是对消息对应操作的描述。
以上述语义描述为基础,图3所示的带扩展端口的任务元模型可用XML语言描述如下。
程序前
在每一个输出端口中,也有characteristic和function两个子元素,与输入端口的区别主要在于function元素中的queue是对输出端口消息队列空间大小的描述,sendmsg是对将要发送的消息内容的描述,msgtype 是对该消息的消息类型的描述,action是对消息对应操作的描述。
以上述语义描述为基础,图3所示的带扩展端口的任务元模型可用XML语言描述如下。
程序前
3.2基于信道的端口消息传递机制
在分层结构中,端口模型在本质上是并发的基于消息传递的一个类似线程的实体,每一个输入端口和输出端口都有一个唯一的、不可改变的ident值用以匹配并进行通信。每个输出端口有一个消息队列,用于存放将要发送的信息;每个输入端口也有一个消息队列,用于存放接收到的暂不需要处理的消息;同时,每个端口实体可以定义一系列它所特有的action,用于实现某种操作。
端口之间是通过发送异步消息进行通信的,在消息传递的过程中,每个端口都是独立运行的,输出端口不会在发送消息时阻塞,同时输入端口接收消息时也不会被打断。当一对端口匹配成功时,输出端口每次从消息队列中取出一条消息,并根据消息类型调用对应的方法发送给相匹配的输入端口;当有消息传递到输入端口时,任务元模型首先判断消息的类型,如果需要立刻执行,则通过对应的元模型执行相应操作;否则放入消息队列等待下一步操作。消息传递原理如图5所示。
处理消息队列里的消息时,输入端口每次从中取出一条消息,根据消息的内容采取相应的处理方式,每次操作包含该条消息所对应的action。当一条消息已经处理完时,该消息从消息队列里面删除,为后面的消息腾出空间。 []
需要指出的是,端口间传递的消息是基于XML格式的。即在输出端口发送信息时,将发送function 元素中sendmsg、msgtype和 action3个属性的内容;当输入端口接收信息时,这3部分内容将直接传递到对应的属性中,并执行相应的操作。这样就保证了在分层递阶的实时控制软件建模方法中,不同层之间模型通信信息的一致性,以及功能与时序调度的完整性。
与现有的单层建模方法相比较,这种分层递阶的建模方法根据功能的不同对任务逐层分解,将复杂任务的源模型分别映射到不同的层次中加以表达,这样的方法既降低了复杂系统源模型的复杂程度,提供了更加清晰有序的源模型,又能保证交互行为模型的完整性和可维护性。
4使用分层递阶建模方法设计AGVS控制系统基于分层递阶方法的工业控制系统建模
4.1AGVS实时控制系统控制流程
自动引导小车系统(Automatic Guided Vehicle System, AGVS为实时控制系统,分为上位机(主控机软件和下位机(车载机软件。上位机控制软件的功能包括: 1路径规划设计;2提供应用系统接口;3与AGV小车进行通信。其中主控机产生将要执行的任务,根据不同的任务生成相应的任务命令指令,向目标车载机下达命令,同时主控机也接收来自于AGV车载机的状态信息。而车载机可以接收主控机发来的命令,可以直接接收本机的命令,同时可接收车载手动控制按钮发来的命令,在按照指定命令执行动作的同时检测自己的状态,并把状态发给主控机,如果在执行任务的同时遇到故障,则自动进行故障检测和排除,并将相关信息发送给主控机。主控机及车载机控制流程如图6所示。
4.2AGVS实时控制软件单层建模
假定上述AGVS系统中有2台AGV小车,使用现有的单层建模方法对AGVS实时系统建模所得到的PIM如图7所示,由于交互行为过多,该模型只能给出AGV1的具体行为模型,而要实现在同一层对AGV2的行为建模则受到了模型可读性和可视化的约束,如果增加AGV的数量,将给建模带来更大的困难。由此可见,使用现有的单层建模方法在对较为复杂的任务进行设计时,不但模型表达不够清晰,而且往往难以保证实时系统的完整性。
4.3基于分层递阶机制的AGVS实时控制软件建模
通过对AGVS的任务分析与分解,可以得到在组织层的任务序列,在这一层,以主控机为中心,共包含6个任务对象:1main任务;2主控机任务;3AGV1任务;4AGV2任务;5路径规划任务;6上位机接口任务。对AGVS组织层建模结果如图8所示。
图片
图8AGVS控制软件组织层模型
其中AGV1任务和AGV2任务分别作为AGV1和AGV2的车载机上的软件程序,其主要功能模型在协调层完成。在这一层对每一个任务进行继续分解,得到若干子任务,以AGV1为例,围绕它的功能及通信,可分解得到如下的子任务序列:1AGV1主任务;2检测子任务;3作业子任务;4计算子任务。
AGV1车载机工作任务的协调层模型如图9所示。为了保证与组织层的通信,在协调层为AGV1任务配置3个扩展端口
输入端MasterCommand_AGV1,用于完成接受来自于主控机的控制命令;输入端口HostCommand_AGV1,用于完成接受来自于上位机的控制命令;输出端口State_AGV1,用于向主控机汇报AGV1的状态。
基于端口的成对使用原则,同时在组织层的AGV1任务模型中分别增加相应的输出端口MasterCommand_AGV1、输出端口HostCommand_AGV1和输入端口State_AGV1。同样为AGV2配置类似的3个扩展端口。
而检测子任务和作业子任务的具体行为,是在执行层中完成其模型设计的。以AGV1任务中的检测子任务为例,又可进一步根据其功能分解为一系列的行为动作:1检测主任务;2故障物检测;3速度检测;4位置检测;5方向检测。在AGV1车载系统中,负责检测的检测子任务的执行层模型,如图10所示。
由上例可见,在AGVS这类复杂实时控制系统进行模型驱动的设计过程中,PIM的构建如果采用单层建模的方式,由于系统中实时交互行为的错综复杂,可视源模型的可读性和清晰度将会变差,且由于任务数及行为较多,极容易在建模过程中产生错误;而采用本文提出的递阶分层的建模方法,通过将控制任务进行分解,在不同层次中建立具有特定功能的任务,使源模型具有更好的描述性和可视性,能够更加清晰地表达整个模型所实现的控制任务。
5结语
本文针对使用单层建模方法对复杂实时系统进行建模时,实时多任务之间的交互行为错综复杂而容易降低可视源模型的可读性和清晰度的问题展开了研究。本文针对单层建模方法的上述不足提出了分层递阶的多层建模方法,并采用基于XML的可扩展端口技术进行了实现。通过使用由XML语言描述的输入端口和输出端口对已有的对象元模型进行扩展,能够把设计任务分解到不同的层次中分别建模,遵循设定的端口状态匹配规则,使用基于信道的消息传递方法,能够实现不同层次的模型的不同任务之间的通信。使用基于可扩展端口的元模型技术及基于XML描述的端口技术为多层模型之间数据的通信和匹配提供了一种有效的解决方案,从而保证了多层建模方法在模型驱动的实时系统开发方法的进一步实现。
参考文献
[1]
ATKINSON C, KUHNE T. Modeldriven development
a metamodeling foundation[J]. IEEE Software, 2003,20(5
36-41.
[2]
WANG B, ZHANG Y, XIONG X, et al. A semanticbased modeldriven design method for realtime control software [C]// Proceedings of the 29th Chinese Control Conference. Piscataway
IEEE, 2010
4257-4262.
[3]
SENDALL S, KOZACZYNSKI W. Model transformation
the heart and soul of modeldriven software development[J]. IEEE Software, 2003,20(5
42-45.
[4]
EDWARDS S, LAVAGNO L, LEE E A, et al. Design of embedded systems
formal models, validation, and synthesis [J]. Readings in Hardware/Software Codesign, 2001
86.
EDWARDS S, LAVAGNO L, LEE E A, et al. Design of embedded systems
formal models, validation, and synthesis [J]. Proceedings of the IEEE, 1997,85(3
366-390.
[5]
SCHINZ I, TOBEN T, MRUGALLA C, et al. The Rhapsody UML verification environment[C]// Proceedings of the 2004 2nd International Conference on Software Engineering and Formal Methods. Piscataway [提供,专业写作毕业论文和教学教育职称论文,欢迎光临]
IEEE, 2004
174-183.
[6]
MoBIES Automotive Open ExPerimental Platform [EB/OL]. [20140812]. http
//.
[7]
GU Y. Research and implementation of SmartOSEK integrated development environment [D]. Hangzhou
Zhejiang University, 2005.(古杨.SmartOSEK 集成开发环境研究和实现[D].杭州:浙江大学, 2005.
中国论文网(www.lunwen.net.cn)免费学术期刊论文发表,目录,论文查重入口,本科毕业论文怎么写,职称论文范文,论文摘要,论文文献资料,毕业论文格式,论文检测降重服务。