最新新闻
我要投稿
联系电话:027-87592219/20/21转188
投稿邮箱:tb@e-works.net.cn
您所在的位置:首页 > 智库 > 智能生产

基于组件技术的计算机数控系统开发

发布时间:2014-09-09 作者:徐爱莉 陈 东 周 鹏 吴海洲  来源:万方数据
关键字:组件技术 数控系统 
传统数控系统的结构封闭、功能单一、开发周期长、成本高等弊端已经成为制约制造业发展的瓶颈。在详细分析开放式数控系统研究现状的基础上,借鉴了OCEAN、OSACA项目的开发经验,使用CORBA组件模型技术,建立了一个开放式数控系统,并介绍了该系统设计、实现、封装、部署的全过程。

5 组件的实现

  以HMI Server为例,对组件的实现进行说明。

  a) 定义每个组件executor的实现类,它们都位于单独的名称空间下,例如,HMIServer_exec_i是HMI Server组件executor的实现类,它定义了executor接口,规定了executor所必需实现的方法,包括HMI Server组件使用supports关键字明确支持的接口中的方法。

  由于HMIServer_Exec是一个Session类型的组件,因此HMIServer_exec_i需要对SessionComponent中的一些容器回调函数进行重置(override)。例如,set_session_context,其具体实现如下:

  void
  HMIServer_exec_i::set_session_context(Com
  ponents::SessionContext_ptr ctx)
  {
  ,,
  this->m_context=HMIServer_Exec_Con
  text::_narrow(ctx);
  }。

  b) 组件所提供的facet也需要单独实现,通常在facet的实现中保存了对相应executor的引用,以实现其向exector的导航,在相应的executor中则必须为receptacle提供获取关联的facet的/get_<facet_name>0方法。

  HMI Client这类非组件的客户端是通过调用/provide_<facet_name>0来得到组件相应的fac-et,而/get_<facet_name>0实际上是/provide_<facet_name>0在组件executor端的映射。

  c) 使用supports关键字声明的接口是通过继承的方式在组件executor中实现的,例如,HMIServer组件通过继承的方式支持SystemService接口。

  HMI Server组件在IDL中声明了对认证服务组件的Authentication Service接口的使用。在具体实现中,HMI Server组件executor通过其上下文(Context)得到指向Authentication Service接口实现类的指针,从而调用其中相应的方法,HMI Server组件的上下文在组件部署期间被创建,并由组件的容器在组件激活前通过容器的回调函数set_ses-sion_context进行设置。

  对事件的发布也是通过组件上下文,例如,HMI Server作为系统初始化事件的事件源,其具体发布方法为:

  ::CNC::SystemInitiation_var
  evt1=new ::OBV_CNC::SystemInitiation
  ;
  m_context->push_SysInit(evt1)。

  该事件的响应方法,则由各接收者独立实现。

  d) 定义组件home executor的实现类以及组件executor在DLL中的入口点(Entry Point),入口点的主要作用是创建组件home实例。HMIServer组件入口点的具体实现如下:

  extern
  "C" ::Components::HomeExecutorBase_ptr
  createHMIServerHome_Impl()
  {
  return new
  CIDL_HMIServer_Impl::HMIServerHo
  me_exec_i();
  }。

6 组件的封装组装及部署

  在得到了各组件的DLL实现后,需要对其进行封装与组装,以便使系统能够在分布式环境下进行部署,系统使用者可以根据需要,制定不同的部署方案。

  组装的具体工作就是为系统中相关的facet和receptacle,event source和event sink建立连接描述文件,这是一个递归的过程,最终形成完整的系统。本系统由HMI Server,MCK,PLC,运动学、认证服务组件组装而成,其中MCK由8个子组件组装而成。

  封装过程的目标是制作一个包括组件实现和组件描述的可部署的组件包,组件包是用于部署的最小单元。对于单独的组件,需要将该组件的XML描述文件和组件的DLL文件封装为zip格式的组件包;对于组装而来的组件,由于它没有独立的组件实现,因此,只需要为其组件描述和组件包建立关系。

  在部署阶段,首先,需要建立目标环境(TargetEnvironment)的模型,该模型描述了作为组件载体的物理资源及其拓扑结构;然后,参照预先设计的部署架构建立相应的部署计划。

  整个过程通过使用CosMIC工具完成,这样能有效地避免手工编辑XML文件时容易出现的错误,从而提高开发效率。

7 组件的运行

  在CORBA体系结构中,分布环境中的节点监控进程被称作节点管理器(Node Manager),分布在某一节点上的一个组件的运行,被称作节点应用程序(Node Application)。解析部署计划,判断计划是否可行,并且将计划转换为合适的数据结构,以作为执行管理器输入的进程被称作部署计划执行器(Plan Launcher);根据部署计划的解析结果,负责将系统各组件分布到相应的节点上的进程被称作执行管理器(Execution Manager)。

  部署计划执行器在完成解析后,会将结果发送到执行管理器,然后执行管理器按照计划将系统各组件分布到域中各节点。计划成功执行后,各系统组件被激活待命,可以通过生成的IOR文件直接获取其引用,也可以使用CORBA名称服务进行定位。另外,可以编写脚本以方便整个启动过程的进行,系统启动后,用户就可以通过HMI Client对系统进行操作和监控。HMI Client的图形界面如图2。

HMI Client的图形界面

图2 HMI Client的图形界面

8 结语

  提出了一个基于CCM技术的开放式数控系统,并介绍了数控组件的设计、实现、封装、组装、部署及运行的全过程。该系统可以更好地满足系统模块化、可重构、可扩展、可移植等开放性要求,对于推动组件技术在开放式数控系统领域中的应用具有重要意义。

3
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。