张 亚,张勤河,付秀琢
(1.山东大学机械工程学院,山东济南250061;2.山东轻工业学院机械与汽车工程学院,山东济南250035)
电火花加工技术具有无切削力、放电密度大、加工时间短、对工件材料的影响小等优点,特别适合加工一些硬、脆、可导电的材料。压电自适应微细电火花加工技术继承了传统电火花加工的优点[1],并通过压电制动器的自适应振动带动工具电极振动,能自动消除短路和拉弧放电,且电极的振动改善了加工的排屑条件,大大提高了微细电火花加工的效率和加工稳定性,具有广阔的应用前景。针对自主研制的压电自适应微细电火花加工平台开发了专用的加工软件,以实现压电自适应微细电火花加工的自动化,并提高加工效率,减少操作人员的工作量。
压电自适应微细电火花加工平台结构如图1所示。其主要由宏动轴、旋转主轴、工具电极、工件、工作液槽、压电制动器及外壳、机床基座和电源、调节电阻组成。宏动轴带动旋转主轴运动,工具电极安装在旋转主轴上。压电制动器安装于机床基座上,其上端与工作液槽连接,可带动工作液槽振动。工件固定于工作液槽内。本平台的伺服驱动系统采用德国PI微米定位系统,可实现精度为1 μm的最小进给量,定位精度也为1 μm。该定位系统的运动控制卡为德国PI的C863控制器。
在该平台进行微细电火花加工的过程为:接通系统电源后,通过宏动轴的运动来控制工具电极的位置,使工具电极位于待加工工件的正上方,并和工件有一定的距离,使其达到合适的间隙。由于初始时刻工具电极和工件处于开路状态,因此初始时刻压电制动器两端的电压等于电源电动势。而压电制动器本身具有一定的电容,因此电源会对压电制动器充电。压电制动器在逆压电效应下开始伸长,并推动工作液槽向上运动。由于工件固定于工作液槽中,随着工作液槽的运动,工件和工具电极间的距离逐渐变小。当二者之间的距离达到放电间隙时便开始放电。在放电的瞬间整个电路短路,压电制动器两端的电压降为0,于是压电制动器开始回缩并带动工作液槽和工件回退。当回退的距离足够大时,便切断了工具电极和工件间的放电。此时工具电极和工件间的电压再次恢复为电源电动势,开始下一次放电。如此反复,直到工件和工具电极间不再放电时,控制宏动轴再次进给一定距离,如此便实现了压电自适应微细电火花加工。
图1 压电自适应微细电火花加工平台
为了实现压电自适应微细电火花连续加工,开发了压电自适应微细电火花加工软件,实现了基本的数控功能。
针对压电自适应微细电火花加工平台的特点,开发出数控加工软件,以实现电火花加工的自动化。本系统借助于Windows操作系统友好的人机界面,以Windows XP系统为平台,使用VC++2010为开发工具,利用Mercury公司提供的gcscommond.dll函数库完成该系统软件的开发。Windows XP操作系统基于Windows NT,继承了NT操作系统的安全性、稳定性等优点,且易用性有了极大的提高。本系统基于 Windows XP操作系统,充分利用了Windows操作系统的各种功能。VC++2010是微软Visual studio集成开发环境中的一个C++开发模块,包括了文本和资源编辑器、编译器、项目管理器和调试工具,且可利用MFC类库进行快速开发Windows风格的程序,极大方便了用户。PI_Mercury_GCS_DLL.dll是Mercury公司提供的和PI运动平台配套的动态连接库。该动态连接库提供了70多个函数,提供了速度控制、加速度控制、运动控制及位置检测、错误查询等功能。该函数库能很好地工作于Windows操作系统及VC编译器下。
Windows操作系统是一个多任务操作系统,支持多线程编程。通过多线程编程可实现多个任务并行处理,大大提高了程序的效率[2-4]。在VC++中实现多线程程序,既可通过MFC提供的函数,也可通过 Windows API进行编程。在本程序中通过WindowsAPI中的CreateThread()函数创建线程,对于一些不能立即返回的线程函数,则利用Msg-WaitForMultipleObjects()函数等待线程返回。为了使主线程在等待子线程返回的过程中仍可相应对界面进行操作,利用PeekMessage()、TranslateMessage()和 DispatchMessage()函数来收集和转送Windows消息,使所有的消息得到及时有效的处理。
VC++有多种方式实现串口编程。常用的有通过ActiveX控件编程和通过Windows API进行编程。本程序中采用Windows API进行串口编程以实现压电自适应微细加工平台中的接触感知功能。先利用CreateFile()函数以异步方式打开串口,异步方式打开串口不会阻塞线程。用SetupComm()函数设置缓冲区大小,然后用SetCommState()函数设定其他参数,并设定当串口接收到“>”字符时触发事件。之后向串口发送数据查询状态。如果状态正常则进入等待状态;当收到“>”字符后触发事件,进行相应的停止、回退操作。
软件的结构如图2所示。程序运行后会自动进行初始化,之后根据所选择的不同操作启动不同的线程。当进行手动加工时,程序仅启动手动加工线程,并在界面实时显示工具电极的坐标,工具电极的坐标由手动加工线程获得。当进行数控加工时,程序会启动数控加工线程和电压检测线程。电压检测线程实时高速检测压电自适应微细电火花加工机床的放电电压,并将检测到的电压发送到数控加工线程;数控加工线程负责控制压电自适应微细电火花加工的全过程。该线程创建之后会自动读取数控加工代码并译码,然后根据用户设定的加工参数进行数控加工。加工过程中,数控加工线程根据从电压检测线程接收到的数据来判断两者之间距离的大小,进而控制微细电火花加工的放电间隙大小,并在系统无法自动消除短路或拉弧放电时,控制电极快速回退以消除不良加工状态。在加工过程中,运动控制器返回的坐标参数被发送到主线程以实时显示工具电极坐标。
图2 主程序流程图
数控加工线程流程图如图3所示。其工作过程如下:线程创建成功以后自动读取数控加工代码文件,并存储于计算机内存中。本程序采用C++标准模板库中的Vector容器存储数控代码。Vector容器为一种数据类型,比数组更安全,使用更方便。之后线程提取存储于内存中的一行数控代码,并进行译码。如果该行代码为非加工代码(加工代码为G01,G02,G03,G10),线程仅进行相关操作(选择平面、设定刀补等)后继续读取下一行代码;如代码为加工代码,则线程根据刀具补偿变量的值判断是否进行刀具补偿。刀具补偿变量为布尔类型变量,其值决定是否进行刀具补偿。此处的刀具补偿为半径补偿。如不需要进行刀具补偿,线程将调用加工子函数进行加工;如需进行刀具补偿,则线程调用刀具补偿子函数进行刀具半径补偿,然后根据计算出来的新曲线调用加工子函数进行加工。加工子函数分为直线加工子函数和圆弧加工子函数。线程根据待加工曲线的类型调用不同的加工子函数。加工子函数会调用相应的插补子函数进行插补运算,并将运算结果存储于计算机内存中。加工子函数根据插补运算的结果和系统设置的加工参数进行数控加工。当曲线加工完成之后,线程继续读取下一行数控加工代码进行处理;当处理完所有代码之后,线程结束。
图3 数控线程流程图
利用以上计算机技术和思路,完成了压电自适应微细电火花加工软件的开发。在实际开发过程中,根据需要增加了加工参数的记录,人为终止或开始道具补偿、暂停加工等功能。最终开发出的软件界面如图4所示。
图4 软件界面
利用压电自适应微细电火花加工平台及开发的软件,进行了一系列孔、槽的加工实验。图5为加工的阵列孔和椭圆槽。加工采用钨电极,工件为Cr17Ni7钢。实验结果表明,开发的软件满足压电自适应微细电火花加工的要求。
图5 加工工件
简单分析了基于运动控制卡的压电自适应微细电火花加工平台的工作原理,研究了数控加工软件的结构流程,充分利用Windows操作系统的多任务特性,采用多线程编程和串口编程技术,以VC++开发工具成功开发出了压电自适应微细电火花加工软件,并进行了一些孔、槽的加工实验。实验结果表明,开发的软件界面友好,操作方便,能实现加工过程的精确控制,满足压电自适应微细电火花加工的要求。
[1] 付秀琢,张勤河,张建华,等.压电自适应微细电火花加工系统特性分析[J].机械工程学报,2011,47(9):164-168.
[2] 齐文,王勇前,曹志刚.用Visual C++实现工控设备多线程控制程序[J].电子技术应用,2001(3):13-16.
[3] 付永红,熊飞丽,龙佑喜,等.基于Windows下数控软件设计与实现[J].机电一体化,2001(1):28-31.
[4] 尹家凡,王孙安.基于PC的开放式数控系统的研究[J].机床与液压.机床与液压,2003(2):88-90.