2 通信对象管理系统
2.1 通信对象管理的功能机理
通信对象管理系统(COM.Communication object management system)的主要功能是协调各功能模块,实现各模块的资源分配、实时调度等。由于传统的CORBA缺少标准的QoS策略和机制,缺少实时特征,缺少必要的性能优化,因此它只适合传输速度较低的应用场合;为了满足高性能及确定性和统计性实时的要求,通信对象管理系统主要由实时公用对象请求调度程序体系结构RTCORBA fReal time cornlllon object request broker architecture)来实现㈤。其结构如图2所示。选用的实时CORBA的中间件是TAO(The ACE ORB)。
客户机提出请求时,有两种方式,一种使用由对象接口定义,用c++编译的静态存根(Static stubs),另一种使用动态调用接口DII(Dynamic invocation interface),不论哪种方式,客户机都直接将请求传送给与这个进程链接的ORB核心;客户机ORB核心通过网络传送给与服务器应用程序相链接的服务器ORB核心:服务器ORB核心将这些请求分配给对象适配器(Object adapter),由它产生目标对象;对象适配器进一步将请求分配给实现目标对象的伺服程序,与客户机一样,服务器可以选择静态或动态调度机制用于它的伺服程序,这取决于是由对象接口定义,用c++语言编译的静态框架(Static skeleton),还是其伺服程序可使用动态框架接口DSI(Dynamic skeleton interface);伺服程序执行请求后,它返回结果给客户应用程序。
TAO的I/O子系统负责仲裁ORB和应用程序对底层网络和操作系统资源的访问。在TAO的I/O子系统的底层是一个高速网络接口,它由APIC(ATM port interconnect eontroller)芯片组成菊花链网络,其双向传输速度达2.4 Gb/s。当然,I/O子系统也支持VME和Compact PCI接口及共享内存环境。实时I/O子系统避免了线程优先级倒置并且隐藏了协议处理过程中的调度:为了避免优先级倒置,为协议处理预先分配一个内核线程库,这些内核线程与应用线程库一起调度。为了保证可预测性,内核线程属于一个实时I/O调度类。这个调度类采用RMS(rate monotonic scheduling)算法。当操作系统内核允许一个实时I/O线程运行时,实时I/O子系统计算这个线程相对调度类中其他线程的优先级,并周期性地调度此线程。
由实时操作系统定义的调度抽象层相对来说是比较低层的,这对面向对象的应用与开发不直观。为了使应用程序以一种比较直观的方式指定其调度需求,TAO提供了一种实时调度服务,这个服务是一个CORBA对象,负责分配系统资源以满足应用程序的QoS需求。
调度服务为每一个请求分配一个优先级。运行时,运行调度器使用这些优先级参数。运行调度器将客户请求映射为本地操作系统线程派发器所能识别的优先级。然后,派发器将这些优先级授权给实时I/O线程以执行调度。
CORBA被设计为可以运行于多种传输协议之上。标准的ORB互操作协议是GIOP(General interORB protocol)。
在CORBA中,对象适配器作为伺服程序和ORB之间的纽带。一个对象适配器是一个对象,它将一个对象接口配置给调用程序所需要的不同接口。也就是说,一个对象适配器是一个插入式对象,它用来作为代理,允许调用程序在不知道对象实际接口的情况下调用一个对象的请求。
2.2 数控系统功能模块的IDL接口定义
OMG IDL是CORBA的基本抽象机理,它从实现中分离出对象接口。OMG IDL在客户机和服务器之间建立起一个契约,用它来描述在应用程序中需要用到的类型和对象接口。这些描述与实现的语言无关,所以不用考虑客户程序的编程语言是否与服务器程序的编程语言一致。
对于各功能模块,它即可能是客户,也可能是服务器。程序解释模块相对于轨迹规划模块来说就是服务器,而轨迹规划就是客户,当轨迹规划模块需要调用程序段时,可以通过同步机制启动程序解释模块;当轨迹规划完毕生成基本运动指令,此时,轨迹规划模块是服务器而插补控制模块就是客户。下面是基于OMG IDL的模块接口定义。
程序解释模块:
3 结论
在分析传统数控功能的基础上,根据CORBA的通讯机制建立了开放式数控系统的体系结构,并根据RTCORBA的QoS策略框架定义了功能模块的IDL接口。