数控技术无疑是现代先进制造技术中最重要的技术基础,从某种意义上说,数控技术的水平已成为衡量一个国家制造业水平的重要标志之一。出于技术垄断及独占市场等原因,各个厂家生产的数控系统在体系结构上大多是封闭的,不能进行高可*性的软件扩展。近年来,国内外众多的数控软件开发者都在重复研究、开发相同或相似的数控系统,反复设计若干基本模块,造成了人力、物力和财力的巨大浪费,而且由于缺乏统一的标准,不同的数控软件开发者开发的软件不能互相替换,缺乏兼容性,阻碍了数控软件的升级换代,同时也阻碍了数控机床生产者对市场和用户的快速响应能力。 通过对数控系统软件体系结构的分析,我们设想如果把数控系统软件中相同或类似的部分做成类似于硬件电子芯片的软件芯片(Software IC,SIC)[1,2],每一个软件芯片具有高度的功能独立性、易移植性、易组装性及易扩充性。这样,当我们建立新的数控系统时,只需从芯片库中取出所需的芯片进行组合即可,必要时加以扩充,使数控系统能够重用,而不必从头开发整个软件系统。这样就能改变目前数控系统的封闭型设计,为适
1 数控系统软件芯片的划分
合理的芯片划分,是开发软件芯片的首要步骤。数控系统软件芯片库中的各芯片以界面的方式开放,通过接口参数和界面信息的提示,用户可掌握芯片的启动、结束和运作。不同芯片的内部为黑箱封装CONTROL ENGINEERING China版权所有,外部接口开放,并在此基础上实现新系统的构建。因此CONTROL ENGINEERING China版权所有,如何定义出合理的数控系统软件芯片,使芯片的外部接口易于标准化、规范化CONTROL ENGINEERING China版权所有,内部易于进行黑箱封装,是我们开发数控系统软件芯片库的关键步骤。
目前,尽管数控系统从系统的设计方法到系统的实现方式千差万别CONTROL ENGINEERING China版权所有,但是其基本原理和软件的组成都是类似的。在对现有的数控系统[3]和用户需求进行仔细而全面分析的基础上,同时,在总结现有系统控制结构的共有特征,并对其进行适当的归类和抽象的基础上,将数控系统划分为以下几个基本的功能模块。
(1)人机交互界面模块 此模块主要完成在系统运行前和运行中系统参数的修改和设定,如设定系统工作模式(自动、手动、点动等),图形显示模式,系统初始化设定,坐标偏置设定,G代码程序的编辑等。
(2)零件代码解释模块 负责根据用户的系统配置,以及零件程序的语法规则对用户编写的零件程序进行语法检查,并进行解释译码,将源代码指令中给出的各种信息进行分离提取,变成各种状态和数据,为预处理芯片提供语法上正确的零件程序的中间代码。
(3)刀补预处理模块 负责对解释后的数据进行预处理及插补前的准备工作。
(4)轨迹插补模块 负责加减速的控制、插补、终点判别等工作,向位置控制器输出通过轨迹运算后的进给量。
(5)轴伺服控制模块 在从I/O及插补运算得到的信息的帮助下,通过精插补控制机床执行机构按NC指令指定的路径和速度运动。
(6)I/O模块 负责控制器的输入和输出(包括机床检测信号及位置和相关反馈信息的输入、控制指令的输出等)。
以上这几个模块间具有互操作性、可移植性和可扩展性,因而可作为数控软件芯片库的基本芯片的划分。
2 数控系统软件芯片的构建及工作原理
软件芯片概念的提出是软件重用发展过程中的里程碑。开发软件芯片就是采用面向对象技术把特定类中的一些通用模块做成独立的可重用的对象类。由于面向对象具有封装、分类、消息响应和继承等很有价值的特点,使得软件芯片和系统其它部分的耦合度得到尽可能的降低,这为软件芯片的开发和使用提供了可*保证。同时,由于芯片都是对较成熟的技术进行封装而实现的,在实践上是经过了验证的,也就是说一个成熟的芯片已经将错误率降到了最低点,所以可以利用数控软件芯片来构造新的数控系统能最大程度地保证系统的可*性。 软件芯片的构建就是将功能模块的本体部分进行黑箱封装,使之输入接口和输出接口尽量简单、规范。由于C++语言的面向对象特性和封装性较好[4],所以在本系统中将VC作为编程环境来进行芯片本体的构建。整个芯片是基于静态库创建的,最后生成一个Lib库文件。所有功能的