摘 要:现有的开放式控制系统平台没有统一的开发规范,为此,本文研究了Java——一种先进的真正的开放体系结构,应用于开放式控制系统平台的优越性,以及如何利用Java平台的开放性建立统一开放式控制系统平台。同时,针对Java平台实时控制的缺陷,提出了把控制的实时任务转化为非实时任务的解决方法。
关键词:Java平台;开放式控制系统平台;实时控制
分类号:TP273 文献标识码:A
文章编号:1001-2265(2000) 02-0036-03
1 引言
开放式控制系统的研究始于80年代。在美国NGC(Next Generation Controller)计划之后,欧洲推出了OSACA,日本进行了名为OSEC计划的研究,加拿大也拥有NRC计划。开放式控制系统不仅收益于机床制造商和数控供应商,也给最终用户带来了很大的灵活性。但是,各个计划所采用的技术还不能真正实现“开放”。同时,以上各个计划都相互独立,他们之间无统一的标准和协议,因此,对用户而言还不能算得上真正的开放。Java是针对网络环境开发的平台和一种语言,自1995年由Sun公司推出以来,以其跨平台、安全性等诸多优点在计算机界得到广泛应用。本文讨论如何把Java平台应用于开放式控制系统中,达到统一平台的目的。
2 开放式控制系统的要求
开放式控制系统包括一组逻辑上分离的组件,组件之间和组件与应用平台之间的界面有良好的定义,使来自不同供应商的组件协同工作,运行于多个平台之上完成控制工作,并对用户和其它控制系统提供良好的界面。
开放式控制系统有以下特点:
(1)互操作性 提供一个统一标准的通讯系统来实现数据交换。
(2)可移植性 使用平台提供的标准API,应用程序可在不同的平台上运行。
(3)伸缩性 可任意增删各功能模块。
(4)可互换性 可任意互换功能模块。
3 Java平台的特点
Java的许多特征符合开放式控制系统的要求。Java平台如图1所示。
图1 Java平台结构
Java平台由两层结构组成:
(1)Java类和Java应用程序接口:为应用程序提供标准的访问接口和一些基本类库供应用程序访问和扩展。
(2)Java虚拟机(JVM Java Virtual Machine):是Java平台的核心,是实现Java跨平台的关键。涵盖了与平台相关的所有服务功能,包括用户界面、文件系统操作和网络支持等。
Java作为一种全新的开放平台,其变成语言和结构有以下优点:
(1)语言严格 所有程序严格按面向对象的方法设计,否则会出错。
(2)语言简单 继承了C++,但去掉了头文件、指针句法和运算、结构联合、操作符重载和虚基类。
(3)分布式的语言 支持多种传输协议,如TCP/IP、HTTP和FTP,另外,还支持分布式计算。
(4)动态分配内存,保证应用程序在各方面都安全可靠
通过两种方式保证其安全性:
①禁止指针和内存访问
②对Java代码运行前进行合法性检查,以防止非法访问数据结构、类和内存。
(5)结构中立 由于编译器长生结构中立的字节代码可运行于任何平台,只要支持Java系统的软硬件平台都可运行字节代码。Java支持的平台多达四十多种,包括OS/2、Sun Soloris、Linux、WinNT、Win95、Win98和VxWorks等等。
(6)可移植性 Java的基本数据类型大小是确定的,其整型和浮点型都是32位,保证应用程序的可移植性。
(7)多线程 Java的多线程可在多处理器上运行,能提供更好的交互响应和实时特征。与微软的产品对比如下表。
表 Java和Windows产品的对比表
名称 | 跨硬件平台 | 跨软件平台 | 安全性 | 可移植性 |
Java | 任意 | 任意 | 好 | 好 |
WinNT4 | X86 PowerPC MIPS Alpha |
Dos Windows3x Win95 |
较好 | 一般 |
Win95 | X86 | Dos Windows3x | 一般 | 差 |
Win98 | X86 | Dos Windows3x Win95 |
一般 | 差 |
Win2000 | X86 Alpha | Dos Windows3x Win9x WinNT |
较好 | 一般 |
由表1可见,作为开放式控制系统的基本要求,Java的确胜出一筹。 在实时控制系统中,以数控机床为例,插补和位置控制是实时任务,在高精度和高速度的数控系统中,中断响应速度可达微秒级,这种实时控制称为硬实时,即在给定的时间周期内必须把任务处理结束,否则将导致不可预料的结果。因此必须获得每个实时任务的CPU处理时间和内存分配情况,才能在系统负载中合理分配实时任务并正常执行。 Java的特性与实时控制的要求存在差距,体现在以下两个方面: (1)内存的动态管理 与C++不一样,Java为用户自动清除内存。它使用一种称为垃圾收集器(GC)的技术自动清除内存中已经不使用的内存空间,这样带来一个问题:用户无法预先确定GC算法的执行时间,所有的线程都要在GC算法执行时挂起。这种不确定性与实时计算相矛盾,因为实时计算需要精确的确定每个任务的执行时间。 (2)不能对底层硬件访问 用户开发的Java程序应当是和具体的硬件及操作系统无关,用户一旦直接访问底层设备,势必破坏Java的跨平台特性。 4 在开放式控制系统平台中的应用 在数控系统中,应用程序可分为人机界面管理、三维仿真与诊断等实时程序和插补运算、位置控制等实时控制程序。实时控制要求中断响应速度要快并且计算量大,一般需要单独的CPU来处理,或者采用硬件插卡的方式实现。以OSACA的应用系统为例,采用了如图2所示的双PC结构: |
图2 双PC结构
图2中,HMC(人机控制)是非实时任务;AC-X、AC-Y、AC-Z(轴控制)和MC(运动控制)是实时任务。轴控制和运动控制包括插补运算和位置控制,所以放在单独一台PC上实现。两台PC之间即实时和非实时之间采有TCP/IP协议进行通讯。
实际上,插补运算包括插补准备和插补计算两部分。插补运算作为实时任务主要是受限于过去CPU的处理速度和内存容量,随着高速度、高性能CPU和大容量内存的出现,完全可以解决插补运算的速度要求和数据量的问题。可以预先计算出轨迹坐标的XYZ值,并存储在数据表中,再逐段送至位置控制。目前的数字伺服控制器已能将位置控制算法包含在内,可以不再开发位置控制的应用程序模块。因此,数控应用软件的开发可以都划分为非实时任务。
另外,当前存在的开放式控制系统平台如OSACA、NGC和OSEC内部之间是开放的。如支持OSACA体系结构的平台上开发的控制应用程序对于OSACA的平台是开放的。但各个开放式控制系统平台之间还不能实现开放,因为它们的体系结构不相同,所支持的协议和采用的数据结构相互之间都没有公开。因此,它们之间的通讯需要设计网关来实现数据的转化。见图3。
图3 开放式控制系统间的通讯
Java作为一种开放的体系结构,不仅仅因为其被世界所公认,更重要的是它具有先进的平台设计手段,成为真正的开放平台。目前开放式控制系统平台所面临的问题可以利用Java平台来解决,如图4所示。利用Java平台提供的功能实现硬件和操作系统的无关性,实现真正的开放控制平台。数控软件的开发全部转化为非实时控制,应用程序通过访问JavaAPI来获取平台的支持,利用Java语言的可移植性,按模块化开发的应用程序具有优良的可移植性,可运行于支持Java的平台之上。目前许多伺服控制器厂商已推出基于Java平台的产品,具备Java的界面,这样,建立于Java平台上的应用程序可直接访问速度伺服的数据,从而可以解决实时控制和如何统一平台的问题。
图4 Java平台的应用
5 结论和展望
本文提出了一种利用Java真正开放式平台的方案。Java的开发者也正在把实时功能加入到Java平台中去,以适应工业控制的要求。随着网络化时代的到来,基于Java的平台不但能称为开放式控制平台,而且还能利用其强大的网络功能实现异地制造,将极大地促进敏捷制造的发展。
(转载)