张艳婷,沈晓红
ZHANG Yan-ting,SHEN Xiao-hong
(北京工商大学 材料与机械工程学院,北京 100048)
开放式数控系统开发周期短、功能强大、灵活以及升级方便,已经成为数控系统的发展趋势,它能够有效解决传统数控系统结构封闭、系统柔性差、网络功能欠缺等问题,同时能更好地适应现代制造业网络化、集成化的发展趋势[1,2]。
IEEE( 国际电气和电子工程师协会) 定义开放式数控系统为“符合系统规范的应用,可以运行在多个销售商的不同平台上,可以与其他的系统应用互操作,并且具有一致风格的用户界面”。它具有开放性、可扩展性、互换性、可移植性、互操作性、可缩放性和即插即用等特性[3]。
目前有许多对开放式数控系统的研究,但在运动控制器方面,主要还是集中在基于PC总线的PMAC运动控制卡和固高GT系列,Soft型的固高GO系列以及嵌入式运动控制器PA8000NT等,核心部分运动控制和伺服控制仍是封闭的。软件芯片的使用只是简单的程序源代码的重用,这种移植只能是同一种编程语言下的移植,是一种极为有限条件下的移植,SERCOS总线技术参数众多,大多使用默认值,不适应高速高精度加工,另外价格也比较昂贵[4,5]。
本文提出了一种以Windows为平台,Visual C++6.0为编程语言,借助ACR9000运动控制器提供的基本指令和动态链接库函数,开发界面友好、操作方便的开放式数控系统软件平台,能够结合硬件平台形成数控系统,并将这一系统初步运行于我院自主设计的超声数控加工机床,实现了数控系统的基本功能。
Visual C ++ 6.0具有友好的可视化界面和强大的函数库,采用此编程工具可以有效地缩短开发周期[6,7]。本系统主要利用了单文档-多视图的结构和多线程编程技术。
系统设计思路如图1所示。首先按照模块化设计理念,规划开放式数控系统体系结构,将CNC系统中一些功能独立、内聚力强、相互组合较松散的功能模块抽象出来,找出其中的基本功能模块;再对基本功能模块进行细化,找出其中包含的功能相对独立的子模块,并将各子功能模块和无法细分的功能模块作为整个系统的功能单元;最后对系统功能单元的属性和方法进行抽象;其中属性是该功能单元所要处理的信息,方法是该功能单元处理这些信息的行为。抽象出属性和方法之后,利用面向对象技术对各个功能单元进行封装,以形成类;然后,根据具体开发要求,选择所需的类,并实例化出对象;按照对象间的关系模型,建立具体的数控系统。如果在以后的应用中用户还有新的应用需求,可以构造出新的功能单元,并将新类添加到原有系统的对象间的关系模型中,从而便捷地建立起新的应用系统,实现系统的开放性和可重构性。
图1 数控系统设计原理图
界面主要由代码输入区,显示区,控制区,手动控制区四部分组成。而代码输入区又有插入,修改,删除和运行按钮。控制区有通讯模块,仿真模块,插补编译,纠错模块等。显示区可以显示机床的开关状态,冷却液开关状态,主轴的开关状态,当前的转速以及当前的坐标位置。手动控制区主要是轴0、轴1、轴2三轴单独JOG运动。主界面如图2所示。
图2 主界面图
ARC9000运动控制器是美国Parker公司推出的最新Acroloop系列多轴独立式控制器,有150MFLOPS,32位浮点DSP;最多8轴伺服或步进控制;10/100M以太网或USB2.0高速通信;RS-232/RS-485通信接口。便利的接口型式和高性能的通讯能力使ACR9000具有很高的灵活性,可用于不同的高速高精度的自动化机器装备上[8]。
控制器提供了ComACRServer.dll动态链接库,库中的200多个函数涵盖了ACR9000运动控制器的全部主要功能。通信服务提供两层虚拟层面:第一种把物理通信层面集合到函数性API,包含和四种接口连接在一起的属性和方法。第二种去除了对特殊语言的依赖性,通过提供一个COM组件,只要基于windows编程环境就能使用这个API函数,控制方式如图3所示。
图3 PC与ACR9000的控制方式
创建通讯模块连接按钮,实现人机界面与运动控制器的连接,以实现信息通讯和命令调用等所有功能。运动控制器与PC的连接有四种方式,主要应用connect命令,参数1代表为Bus总线连接,参数2代表Serial串行接口,参数3代表Ethernet以太网连接,参数4代表USB连接,参数列表如图4所示。本系统采用Ethernet连接,界面如图5所示,部分主要代码如下:
图4 连接属性设置表
图5 通讯模块
代码输入模块主要包括数控代码的输入,编辑修改,删除等功能,通过这些功能能快速准确的将数控代码输入软件中,如图6所示。部分主要程序如下:
图6 代码输入模块
状态显示模块可以显示机床的开关状态,冷却液开关状态,主轴的开关状态,当前的转速以及当前的坐标位置,通过这显示模块,用户可以很清楚地看到机床的运行状态,如图7所示。部分主要程序如下:
图7 状态显示模块
JOG运动操作模块主要是手动控制轴0、轴1、轴2的单独运动状态,先选择要设置JOG速度的轴,再在文本框中输入该轴JOG运动速度,最后单击“设置”按钮让该设置生效。单击JOG+按钮,对应轴将正转,单击JOG-按钮,对应轴将反转,单击JOG停,对应轴停止旋转。控制界面如图8所示。
控制电机JOG运动可以通过触发ACR9000控制器内部的BIT位来实现。JOG速度设置可以通过对内部P参数赋值来实现,对应关系如表1所示,部分主要程序如下:
图8 JOG运动操作模块
表1 JOG运动BIT、P参数对应表
插补程序在每个插补周期运行一次,在每个插补周期中,根据指令进给速度计算出一个微小的直线数据段。通常经过若干个插补周期加工完一个程序段,即从数据段的起点走到终点。计算机数控系统是一边插补,一边加工。而在本次处理周期内,插补程序的作用是计算下一个处理周期的位置增量。它的主要任务是在每个采样周期内,将插补计算的理论位置与实际反馈位置相比较,用其差值去控制进给电机,进而控制机床工作台(或刀具)的位移。这样机床就自动地按照零件加工程序的要求进行切削加工[9-11]。
本系统采用脉冲增量插补中的数字积分法又称DDA(Digital Differential Analyzer)法,利用数字积分的方法,计算刀具沿各坐标轴的位移,以便加工出所需要的线性。以直线插补为例,界面如图9所示,部分重要代码如下:
图9 插补模块
当代码输入完,程序开始运行前,对代码进行检查,如有错误就进行纠正,如没有错误,就进行后续运行。另外在系统工作过程中,随时发现系统故障,并指示故障类型,以实现在线诊断功能,保证系统的正常运行,部分主要代码如下:
仿真模块主要根据数控程序进行计算机模拟运行,根据模拟的运动轨迹来判断原先的程序是否合理,有没有出错。加工垫片外轮廓的运动轨迹仿真例子如图10所示。部分主要代码如下:
图10 仿真模块实例
论文是基于windows平台,利用Visual C++6.0编程工具,利用ACR9000运动控制器,介绍了一款开放式数控系统软件平台的设计。所开发的系统软件工作稳定,响应周期短,可移植性强。实现了人机交互界面与运动控制器的连接,以及机床的基本功能。由于它是个开放式数控系统,所以以后在应用过程中,需要什么功能,便可以在原有软件系统上进一步进行发。下一步将继续完善软、硬件系统,使其更适合超声加工的特点。
[1] 吴明军,张旭辉,王孙安. 基于Linux的开放式数控系统软件平台研究[J]. 组合机床与自动化加工技术. 2006.
[2] 王睿鹏. 基于PC的开放式数控系统[J]. 计算机技术与应用. 2006.
[3] 吴继忠,谭平. 开放式数控系统探索[J]. 计算技术与信息发展. 2009.
[4] 张连军,何春俐. 开放式数控系统的发展现状[J]. 机械管理开发. 2010.
[5] 龚敏,陈友东.数控技术及开放式数控系统[J]. 机械设计与制造. 2006.
[6] 宋坤.Visual C++开发实战宝典[M]. 清华大学出版社.2010.
[7] 陈德妙,张桂香. 基于Windows2000下开放式数控系统软件的开发[J]. 组合机床与自动化加工技术. 2005.
[8] 王大宇,刘吉彪. Parker公司ACR9000运动控制器在二自由度滑台中的应用[J]. 工程机械文摘. 2008.
[9] 王世寰,张克国. 可扩展插补指令的开放式数控系统[J].组合机床与自动化加工技术. 2007.
[10] 王永章,杜君文,程国全.数控技术[M]. 高等教育出版社. 2001.
[11] 程国标,郭跃飞. 开放式数控系统研究[D]. 复旦大学.2008.