Java为工业自动化带来了机遇

与嵌入式系统行业中的许多厂商一样,工业自动化供应商一直在观望并等待Java在其领域中的验证。最重要的问题是由Java虚拟机(JVM)和垃圾收集算法的简单实现引起的性能问题。

詹姆斯·莱思罗普博士著 二零零一年五月一日

与嵌入式系统行业中的许多厂商一样,工业自动化供应商一直在观望并等待Java在其领域中的验证。最重要的问题是由Java虚拟机(JVM)和垃圾收集算法的简单实现引起的性能问题。然而,随着新一代Java虚拟机支持实时垃圾收集算法,并且在许多常见操作上的吞吐速度接近c++,工业自动化从Java编程语言中获益的时机已经成熟。

使Java适合工业自动化领域的是JVM和类文件的概念。类文件是由运行在主机上的JVM解释的与机器无关的指令序列。Java虚拟机和类文件已经在Internet上使用了好几年,用于在web浏览器中下载和执行程序。

通常,通过网络发送类文件,并通过Java类加载器将其加载到Java虚拟机中,Java类加载器读取类文件,对其进行验证,并将其加载到内存中,以便JVM执行。因为类文件是独立于机器的,所以类加载器和JVM结合起来以完全相同的方式加载和执行Java文件,在任何硬件平台上都产生相同的结果。

硬件独立

Java的主要优点之一是它能够在不同的硬件平台上运行程序,而无需重新编译源代码。对于工业自动化来说,这有几个好处。

首先,随着硬件的更新和新控制器取代旧控制器,不需要更改二进制软件。例如,如果一个充分利用40 mhz英特尔处理器的PLC升级到100 mhz Power PC处理器,那么两个控制器可以使用相同的二进制类文件,假设硬件端口和外部接口被编程为可移植性。

其次,硬件独立性允许开发人员在桌面计算机上“模拟”运行时环境,从而大大缩短了开发时间。通过简单地添加低级硬件仿真,在目标PLC上运行的相同应用程序类文件也可以在台式计算机上执行,以进行开发和调试。

更容易调试

熟悉的调试工具和开发环境没有绑定到特定的硬件平台,开发人员更容易学习和使用,并且测试不需要不断下载和设置目标PLC。另一个好处是,只需要在单个版本的源代码上进行调试——所有平台一次调试。这通过极大地简化项目构建配置、减少编码错误、简化bug跟踪和变更请求来减少项目开销和维护。

除了跨平台兼容性之外,Java编程语言还提供了无缝下载新代码或修改代码到plc的方法,而无需对硬件或JVM进行任何类型的重置。这种能力,叫做动态下载,就是用这个思想设计到Java语言中的。

想象一下,一个工厂用plc控制汽车零件的生产,并通过无线公司内部网连接。使用web浏览器,生产控制器可以更改PLC配置,以生产六缸发动机而不是四缸发动机的凸轮轴,而无需对机器进行物理干预。虽然这种行为可以使用另一种编程语言来完成,但Java使这种类型的系统体系结构易于编程并且直观。考虑到向准时交付产品的方向发展,好处是显而易见的。

动态下载不仅可以改变硬件的行为,还可以用来“修补”现有代码或添加更多功能。更改单个源文件、重新编译它、仅动态下载更改后的类文件并将其链接到正在运行的JVM的能力为软件维护提供了额外的灵活性。

从本质上讲,Java为工业自动化带来了跨平台兼容性和动态下载。然而,Java还提供了软件安全性、开发人员的生产力以及对大量库的访问,这些库提供了应用程序的快速设计和编码。使用旨在提供纯Java中断和输入/输出函数的嵌入式Java库,开发人员可以编写与平台无关的设备驱动程序,从而进一步提供跨平台兼容性。Java技术的快速改进和硬件的进步使Java成为工业自动化的可行解决方案。问题不在于Java是否会被用于工业自动化,而在于谁将首先利用Java提供的优势。

詹姆斯·莱思罗普博士,专业服务主任,NewMonics (Ames, Ia),jil@newmonics.com, www.newmonics.com

Java的优势

可移植二进制文件允许跨平台无缝部署

面向对象编程将生产力提高了2到10倍

代码重用利用了原始代码投资

运行时环境支持可扩展性

Java编译器和类加载器有助于安全性