【摘要】
开放式数控系统的研究已经成为目前数控系统研究的热点,模型驱动开发技术是目前软件开发研究的先进技术。为研究模型驱动技术在数控系统软件开发中的应用,作者分析了当前数控系统设计开发中的一些问题,在开放式数控系统软件常用的开发技术基础之上,采用MDD(Mode-lDrivenDevelopmen)软件设计的思想和开放式模式设计软件的模型结构,分析设计了数控系统的软件开发途径,提出了判断引擎和模式转换规则库相结合的数控模式仲裁模块设计,并利用有限状态机理论、利用Matlab和Stateflow工具箱建立了工作模式仲裁模块的行为状态模型,通过MatlabSimulink仿真环境可以实现对建立的行为模型进行了验证。通过在MATLAB中调试和进行模型的有效验证,可以建立一个无逻辑错误的可执行模型,可以仿真数控系统的运行情况,检验模型是否按照期望的模式在运行。通过这种方法设计开发软件,可使描述文档的问题尽早发现,也使软件的修改更新工作变得简单易操作,而软件的开放性特征也得到了很好地体现。
【正文】
良好的数控系统是数控机床加工高性能、高精度零件产品的保证,随着产品功能和结构复杂性的提高,对加工过程的要求越来越高,优秀数控系统的开发成为产品加工的关键。20世纪80年代以后,开放式数控系统成为数控系统研究的主流,许多研究人员在这方面做了很多工作[1-3],这些研究工作使开放式数控系统的特征更加趋于统一和清晰,如:模块化,可扩展性,互操作性,可移植性和可定制性。在此,数控系统软件和通用软件开发找到了共同点,面向对象技术成为现代软件开发的核心思想,UML规范使面向对象思想更进一步具体化。目前,数控系统研究的主流就是基于面向对象的思想,符合UML标准规范。面向对象的方法使软件开发的重用性、稳定性及测试和维护方面有了很大的提高,并通过对象的继承和封装机制提供方便的开发途径。但面向对象软件的重用仅局限在源代码的级别,这与开发语言和相应的编译环境有关,由于不能独立于开发语言,软件的重用性和维护更新受到很大的限制。此外,面向对象技术还存在应用系统的具体实施缺乏统一的标准框架,不同开发商设计的对象之间难以实现互操作,因此,软件开发技术需要进一步地提高性能。而模型驱动开发技术正是提供了这样的实现方法。
1、模型驱动开发技术
模型驱动开发MDD(Mode-lDrivenDevelopment)技术是MDA(Mode-lDrivenArchitecture)中的一部分。由对象管理组织OMG(ObjectManagementGroup)所驱动。MDA表示了一种模型驱动开发方法的概念框架。尽管完整的MDA还没有成为现实,但模型驱动开发现在已成为可能。
MDD思想的流程如图1所示:
由图1可知,软件开发一般要经历功能需求分析、系统结构分析、系统结构设计、以及在软硬件平台上的代码实现几个阶段。每个阶段都可以产生每个阶段的相应模型,例如:功能需求分析阶段的USECASE模型,系统结构分析阶段的行为分析模型,系统结构设计阶段的类图模型等。这些产生的模型,可以在工具环境中进行调试验证,尽可能在系统开发的早期发现其中的错误,同时也可以克服采用自然语言作为文档工具出现的不准确、不科学的描述。在开发的最后阶段,考虑软硬件平台的实现,保证开发过程与软硬件平台的无关性,有利于系统的开放性和可移植性的提高。整个过程也是一个不断迭代开发的过程,这种通过可调试模型驱动的迭代方式,由于不是首先从浩瀚复杂的代码中入手,而是首先从清楚明白的模型出发,使得系统的更新变得比较容易。
2、开放式数控系统软件结构模型
数控系统中,它要完成的功能主要有零件程序译码,数据处理,轨迹插补,轴伺服控制,机床逻辑控制,信号的输入输出,多任务的协调以及人机的信息交互。将数控系统的控制流程映射到软件结构上,就可以得到如图2所示的软件实现结构。数控软件的核心模块包括了数控软件所有核心功能,通过接受操作请求和NC加工程序,输出对伺服控制电机和PLC的实时控制。它主要包括模式管理控制器,运动控制器和逻辑操作控制器,系统状态扫描和状态更新控制器,系统诊断和出错处理等。
数控机床的运行过程,是一个工作状态不断改变的过程,对于这种有限的离散状态行为,有限状态机理论可以很好地分析系统的动态行为模型。有限状态机是一种具有离散输入输出系统的数学模型,它以一种/事件驱动0的方式工作,可以通过事件驱动下系统状态间的转移表达一个系统的动态行为。
有限状态机是由状态的有穷集和状态之间的转移关系组成,形式定义如下:FSM为一个五元组,M=(Q,E,D,q0,F),其中,Q为有穷的状态集,E为有穷的事件集,D表示Q E到Q上的转移函数,q0在Q中,表示系统的初始状态,FIQ,表示终止状态集。有限状态机适用于系统状态可数的情况,在相应的状态事件发生时,系统会从当前状态转移到与之对应的状态,FSM可以通过状态转移图来描述系统状态行为的变迁。
本文将采用MDD技术,利用有限状态机(FSM)理论,对数控系统的开发设计过程进行研究。
3、应用MDD开发数控系统工作模式仲裁模块
3.1功能分析
模式控制仲裁模块MCS(ModeControlSupervisor)的主要功能是输入操作者的操作请求和NC程序的要求,首先做出判断和选择,然后选定数控系统的工作模式。数控系统典型的工作模式如表1所示。
工作模式仲裁模块在接受到操作请求以后,首先要判断目前所在模式,然后根据目前的模式特征,再联系操作者及NC程序的请求,做出下一个工作模式的选择。由于系统目前可能运行的模式不同,所以虽然操作者可能输入了相同的操作开关,但模式转换的结果可能并不相同。
根据开放式数控软件的设计特征,结合MCS功能的执行特点,本文将MCS模块设计为2个部分,一是在开发中一次定位,以后在扩展或更新中不用更改模式判断引擎;二是可以扩展的模式转换规则。如图3所示,在执行过程中,软件调用判断引擎,引擎根据模式的转换规则库来选择即将工作的模式。判断引擎一次开发完成以后就可以不再改变,当需要系统更新或者改变的时候,只需要修改模式规则库就可以使系统完成更新。
3.2状态行为模型建立
采用有限状态机来对对象进行状态行为分析,需要了解几个重要的概念:
状态(state):行为模型的基本组成部分。一个系统中的某个对象呈现出的特性集合,它表示了对象所处的阶段和活动情况。
转化(transition):对象从一个状态转移到另一种状态的过程,以一条末端带箭头的横线来表示。
触发(trigger):引起对象状态转化的事件及条件。
行动(action):在状态转换时对象所采取的行动。
根据MCS的系统功能要求,结合有限状态机理论的文法标记,就可以自上而下逐级建立起MCS的状态模型图,分析MCS模块的动态行为模型。根据MCS的操作状态,可以将它分为四级来构建:在第一级别中,只有初始状态Start和MCS状态这两个状态;在第二级别中,MCS级别包含3个子状态:工作On状态、空闲Off状态和紧急停止EmergencyStop(EStop)状态。在下一级状态中,工作状态又可细分为4个正交子状态:Automatic,Manual,rameterSetup,ProgramEdit;4级包括2部分,Automatic模式包含Memory(MEM)、Tape和MDI状态,手工操作模式包含Handle、Jog、ZeroReturn(ZRN)和快速横移状态。这里总共定义了13个事件,每一个事件表示一种操作请求。
3.3模型检验
模型检验分为模型正确性检验和有效性检验。正确性检验主要是调试模型,建立起语法上没有错误、可以执行的模型。有效性检验主要目的是保证所建立的模型能够按照期望的方式运行,在逻辑上能够正确地操作。对于有限状态机的状态图,可以选用最常用的MATLAB工具,在MATLAB的stateflow工具箱中,包含了方便的调试工具,可以完成模型验证工作。
1)在MATLAB中可以通过调试,发现模型中的逻辑错误,例如标记的误用、转化的冲突、状态终端死区以及转化、状态的无法实现等问题,通过调试,可以建立起一个无逻辑错误的可执行模型。
2)在MATLAB中还可以进行模型的有效性验证。利用MATLAB的Simulink仿真环境,可以建立一个仿真模型,设计一个虚拟的机床操作界面,通过这个设计的人机操作界面和Matlab仿真环境中的Stateflow状态模型通讯,可以仿真数控系统的运行情况,检验模型是否按照期望的模式在运行。图4所示为经过验证以后的模型,其包含了系统动态行为分析模型。
3.4模型的软件实现
前面的模型结构分析中已经提到,为了开放性软件开发图5有限状态机拓扑结构示意图的需要,MCS设计为两部分:判断引擎和模式转换规则。上面的有限状态机模型图完全包含了MCS系统的设计规则。这里,可以通过拓扑树的形式来说明状态模型和规则的关系。状态模型见图5所示。
图5中,状态图可以映射为一个树型的拓扑结构,状态的等级分层和并发可以在拓扑树中表达出来。例如并发状态A包含了状态B和状态C,在这里,并发状态在拓扑树中用虚线连接表示。每个状态都有一个等级号,分别确定每个状态在树中的位置。例如等级状态B细分为状态BA和状态BB,在树中作为状态B的分支来表示。这样,每一个状态都具有各自直系的父母状态、兄弟状态以及子孙状态。例如状态B,它的父母为A,兄弟为C,子孙为BA和BB。拓扑树其实包含了该系统所有的规则信息,这可以通过两个数据结构来表达,一个是拓扑状态树数据结构,一个是拓扑转化数据结构,数据结构的表示如下。
其中,state表示状态的标识符,descendant、sibling和ancestor分别表示默认的直系子孙状态、下一个兄弟状态和父母状态,status通过为的定义来表示目前状态的具体状况,例如是否处于活动状态、是否为等级的超级等级状态或者并发状态以及是否为历史节点指定的状态。两个指针Entry和Exit分别指向进入状态和退推出状态时伴随的操作(函数调用)。
数据结构中包含了一个转化两端的状态:起始状态(from)和目的状态(to),event表示出发转化的事件标识。guard指针指向一个函数用来判断转化是否能够发生,返回值为一个布尔型数值,表示转化成功与否。Action指针指向伴随transition发生时执行的操作。
通过以上定义,可以由上面的模型得到MCS系统由两个数据结构定义的模式转换规则:
这样,通过引擎捕捉事件,检查目前的状态,查询规则库的转换规则,执行状态的关闭和激活等一系列操作,就可以完成模式的转换。
4、结论
本文采用MDD软件设计的思想,分析设计了数控系统的软件开发途径。采用开放式模式设计软件的模型结构,提出了判断引擎和模式转换规则库相结合的数控系统模式仲裁模块设计,并利用有限状态机理论通过Matlab的Stateflow工具箱建立了工作模式仲裁模块的行为状态模型,又通过Matlabsimulink仿真环境实现对建立的行为模型进行了验证。可以看出,通过这种方法来设计开发软件,使描述文档的问题可以尽早发现,同时,也使软件的修改更新工作变得简单,容易操作,而软件的开放性特征也得到了很好的体现。
各省软考办 | ||||||||||