段智敏 徐晓龙
(沈阳理工大学机械工程学院,辽宁沈阳 110159)
开放式数控系统因其具有模块化、标准化、可移植性、二次开发性和网络化等特点,已经成为数控系统的发展趋势。开放式数控系统能够在多种平台上运行,可以和其他系统互操作,并能给用户提供一种统一风格的用户交互界面。通俗地说,开放式数控系统允许用户根据自己的需要进行选配和集成,更改或扩展系统的功能从而适应不同的应用需求。而且,组成系统的各部件可以来源于不同的供应商,并且相互兼容。
目前,开放式数控系统使用的运动控制器通常以PC硬件插件(运动控制卡)的形式与PC构成硬件平台,系统基于PC总线形式。但这种形式无法适应未来计算机技术的发展以及硬件的标准化。
本文介绍了一种基于ACR9000独立式运动控制器的开放式数控铣削实验平台。该系统硬件平台由PC、ACR9000运动控制器以及CYCLONE交流伺服系统构成,并以Windows为软件开发平台,MFC为编程语言,开发上位机程序。
MFC是微软提供的基础类库,以C++类的形式封装了Windows API函数。MFC编程语言具有良好的可视化界面,减少了应用程序开发人员的工作量,缩短了开发周期。
模块化是数控系统开放的基础。基于模块化的设计理念,将系统软件平台进行功能细分,按照功能的不同各自独立成功能模块。根据各功能模块具体实现的功能,设计出成员变量和成员函数(即属性和方法)。基于面向对象的思想将抽象出的成员变量和成员函数封装成特定的类,在应用程序中,通过类的实例化即可实现特定功能。同时,如果需要对现有系统进行功能的完善或扩充,只需修改现有的类或构造出新的类,从而实现系统的可升级性和可扩展性。
系统软件平台主要实现以下几个功能:控制器通讯、JOG运动、X轴Y轴联动、位置信息读取、插补运动以及数控编程等功能。上位机界面如图1所示。
ACR9000是美国Parker公司最先进的独立式运动控制器,可控制1到8轴(步进或伺服)。具有便利的接口形式和高性能的通讯能力,如10/100 M以太网或USB2.0高速通讯等。ACR9000过人之处在于他能够与不同品牌的PC和PLC进行接口,功能强大的高速DSP(150/75 MHz,32位浮点)使 ACR9000完全胜任多任务伺服控制。本系统使用的控制器型号为P1U2M0,可控制X轴和Y轴运动。
ACR9000运动控制器提供COM库供我们开发上位机程序(GUI)。该库名称为 ComACRServer.tlb,是一个32位OLE自动化(COM)服务器,支持C++、VB6、C#、VB.NET等开发语言,库中的200多个函数涵盖了ACR9000的全部主要功能。COM库中提供的接口函数可以分为以下4类:
IStatus:用于读取控制器中的参数和状态等。
IControl:用于对控制器进行一些控制操作,实现参数和状态位的写入等。
ITerminal:用于与控制器之间实现字符串的通讯。
IUtility:实现控制器程序的下载等。
本系统采用Import将COM库加载到应用程序中,通过AfxOleInit函数对COM库初始化。同时,根究任务的需要选择所需的接口类,利用智能指针定义接口对象,智能指针可使接口对象的创建工作更加简单,而且它提供了自动销毁生成的COM对象机制。最后对定义的接口对象按照COM的方式做一些初始化工作。部分代码如下:
通讯模块主要功能是将上位机界面与控制器连接,从而实现上位机与控制器的信息传递和指令发送。本系统中上位机与控制器是通过以太网进行连接,因此在通讯之前要设置IP地址,必须确保主机IP地址与ACR9000设在一个网段中(控制器的默认IP为192.168.10.40),同时根据上位机与控制器的物理层连接方式,确定连接函数的参数。在界面中添加连接按钮,并在连接按钮的响应函数内调用COM库中Connect函数,即可实现通讯连接。同理,在断开按钮的响应函数内调用Disconnect函数,可将上位机与控制器的连接断开。部分主要代码如下:
该模块用于读取控制器中各轴的当前位置、实际位置和跟随误差等信息。基于VC定时器技术,在通讯模块内设定定时器时间间隔,并触法定时器工作。同时,在响应函数 OnTimer内,添加了自定义函数readParem,用于读取控制器信息。参数读取需调用IStatus接口中的GetACRCustom函数,通过向控制器发送查询字符串来获取所需的控制器内部信息。部分代码如下:
在X轴Y轴联动模块中,通过对运动模式的选择以及双轴联动速度和各轴位置的设置,实现手动控制电动机运动。电动机运动控制需调用IControl接口中的Move函数。基于ACR-View配置时各轴所属坐标系情况,用nMoveProfile属性指定Move函数所作用的坐标系。在电动机运动的过程中,通过触发ACR9000控制器内部指定的BIT位,可以控制运动的暂停与继续,类似于机床的进给保持功能。部分代码如下:
插补运动模块可实现逐点比较法直线插补、逐点比较法圆弧插补、数字积分法直线插补以及数字积分法圆弧插补,如图2所示。基于插补算法及相关参数的设置,可实现插补运动仿真,图3所示为DDA圆弧插补仿真实例。在伺服驱动器的位置控制模式下,通过上位机对控制器的脉冲及方向控制,可实现电动机的插补运动,插补功能主要流程如图4所示。
以DDA圆弧插补为例,部分代码如下:
数控编程模块可以实现数控指令的输入、修改、插入和删除。图5所示为数控编程界面,并根据数控程序实现加工轨迹仿真和电动机控制,如图6所示。
数控模块的核心在于数控代码的转换,而代码转化的重点在于对数控指令的信息提取与保存。本系统对数控指令的信息提取是通过构造函数实现的,根据提取信息的不同构造出不同的成员函数,这样既解决了信息提取问题,又为系统升级提供便利。将提取好的信息保存在动态数组中,这不仅保存了数控指令中的数据信息,又为查询上一数控指令行中的所需数据提供便利。在ACR9000运动控制器自带的ACROBasic语言中可以找出与数控指令功能相同的指令,如MOV 与 G01、CIRCW 与 G02、CTRCCW 与 G03、M02 与ENDP等。基于这种对应关系,可将数控指令转换成ACROBasic指令。然后将转换好的指令保存在文本文档内,并发送至控制器中。最后,通过触发控制器内部的BIT位实现程序读取,进而控制电动机运转。部分代码如下:
本文介绍了系统软件平台的构建方式以及各功能模块的具体实现,充分利用ACR9000运动控制器所提供的COM库和设备自带的ACROBasic语言,实现了上位机通讯、电机控制、代码解释等功能。
本系统已调试成功,各模块运行状况良好,满足实验要求,该系统将应用于我校机电控制实验室的教学实验中。下一步会根据教学需要进一步完善和提升软件系统功能。
[1]周舟,张洛平.基于运动控制器的开放式数控系统[J].机床与液压,2003(3):94-95.
[2]孙鑫,余安萍.VC++深入详解[M].北京:电子工业出版社,2006.
[3]赵万军,邓正华.基于VC++的数控DDA圆弧插补轨迹仿真[J].制造业自动化,2012,34(3):125 -127.
[4]朱玉玺,崔如春,邝小磊.计算机控制技术[M].北京:电子工业出版社,2010.
[5]刘瑛,谢富春.基于UMAC的开放式数控平台的构建与应用[J].制造技术与机床,2008(12):93-95.
[6]张艳婷,沈晓红.基于ACR9000的开放式数控系统软件平台研究[J].制造业自动化,2011,37(11):117 -121.
[7]许小明,王硕桂.基于PC的开放式数控系统代码编译器的开发[J].机床与液压,2009,37(11):41 -44.