董秋艳,郭兵,韩成顺,赵清亮
(哈尔滨工业大学精密工程研究所,黑龙江哈尔滨150001)
随着科学技术的日益发展,各种对称、非对称、非球曲面、甚至更为复杂的异形曲面零件的加工越来越引起世界各国制造业的高度重视。这些高精度的曲面类零件广泛地应用于武器装备、航空航天、生物医学、能源及电子信息等领域的尖端设备中[1]。曲面的超精密加工要求加工机床具有高精度、高刚度以及良好的动态性能,同时需要多轴联动控制技术。因此,数控系统作为超精密机床的控制中心,已成为决定超精密曲面加工的关键性因素。目前,超精密机床多采用NC(Numerical Control)嵌入PC型开放式数控系统。这种开放式数控系统具有可移植、可扩展性、交互简单、运用灵活等优点。
文中根据超精密磨床磨削非球曲面的要求,依托PMAC多轴运动控制卡和上位机工控机组成的开放式数控系统,基于Windows操作平台,综合运用VC++6.0和PMAC驱动程序进行了数控系统的软件开发。
PMAC(Programmable Multi-Axis Controller)是由美国Delta Tau公司推出的具有开放式体系结构的多轴运动控制器。PMAC功能强大,性价比较高,具有精度高、响应快、操作简单等特点,它采用了Motorola的DSP56系列数字芯片,可以灵活运行多种高级语言,最多可以控制八轴同时运动[2]。
PMAC本身就是一台完整的计算机,它不仅可以通过自己内部的程序独立运行,还可以与计算机连接起来进行联合运行;它是集执行PLC程序、伺服环更新、电机换向更新、资源管理以及与主机通讯于一体的多功能运动控制器,能够执行多个任务并对任务的优先级做出正确的判断[3]。
PMAC通过串口、总线 (PC、PCI、STD或者VME)或者双端口RAM与主机通讯,通过特殊设计的DSPGATES用户门阵列 IC与各轴通讯[4]。每个PMAC卡都能控制8个轴,最多可以有16个PMAC卡级联。
基于PMAC的数控系统是开放式数控系统,这主要是由于PMAC硬件结构的开放性和软件结构的开放性。其中硬件结构的开放性是指它能够与不同硬件平台匹配、与各种伺服系统匹配、与各种检测元件匹配以及与PC机采用多种方式进行通信。软件结构的开放性是指其人机界面的对外开放性、数控功能的对外开放性和PLC功能的对外开放性以及控制系统定制的对外开放性[5]。
超精密磨床主要用于磨削半球面、非球曲面、圆环面等复杂曲面。由于机床具有高精度、高刚度、高稳定性的运动部件及超精密驱动和反馈系统,具有3个轴和1个超精密回转工作台,同时具备在位测量补偿加工、砂轮在机修整和在线修锐功能,因此可以磨削超精密精度等级的复杂曲面。机床的总体布局如图1所示。
图1 机床的总体布局图
超精密磨床主轴采用气体静压主轴,精度高,热变形小,回转速度大。机床的X轴和Z轴采用液体静压导轨,导轨采用T形布局,刚度高,承载能力大,运动平稳,直线运动精度高。同时采用了气浮二维超精密回转工作台,即B轴,可以通过三轴或四轴联动实现复杂曲面的加工。机床X轴,Z轴均采用直线电机驱动,减少了机械传动的中间环节,增加了系统的动态刚度,减少了由于传动带来的跟随误差。
该超精密磨床的数控系统是NC嵌入PC式开放式数控系统,即PMAC嵌入工控机中。如图2所示,该系统的工控机采用研华公司的工控机,控制卡类型为Turbo PMAC PCI Lite。该数控系统主要由上位机工业控制计算机、PMAC运动控制器、伺服电机及其伺服驱动器、检测反馈元件四部分组成。其核心部分是下位机PMAC控制器。其中上位机与下位机通过PCI总线通讯。同时由ACC-8P扩展卡将PMAC的JMACH接口信号与伺服驱动器和反馈信号连接起来[4]。
上位机工控机具有存储量大、运行速度快、操作灵活等特点,主要用于后台管理、人机交互界面的开放性设计、程序编辑、运动处理及运动实时监测等。下位机PMAC具有实时性强、稳定性好、效率高等特点,主要用于前台控制,包括各轴运动控制、插补运算、刀具补偿、程序执行、反馈信号接收和处理以及机床逻辑功能A/D、D/A转换等。在实际应用中,用户通过上位机进行系统相关的数据输入、命令输入、参数设定、程序编辑等准备工作,然后通过PCI总线与PMAC进行通讯,再由PMAC根据上位机的要求发送指令给相应的伺服驱动器,由伺服驱动器驱动电机来执行相关指令,推动导轨到指定的位置或者使主轴和B轴按照指定转速转动。与此同时,光栅尺或者圆光栅作为检测反馈元件将采集到的数据不断地反馈给PMAC,通过PMAC的复合反馈功能使系统具有较好的静动态特性。
图2 基于PMAC的开放式数控系统硬件结构图
上位机软件是基于 Windows操作系统,使用VC++6.0开发的。Delta Tau公司为PMAC上位软件开发提供了软件开发包PcommSever。PcommSever是一个包含50多种函数功能的软件包。上位机与PMAC的通讯和数据交换都可以通过PcommSever中的函数来实现。
该系统软件分为4个操作窗体,一个父窗体,3个子窗体,每个窗体及其功能都封装成一个类。软件结构如图3所示。父窗体是操作的主界面,如图4所示。主界面的设计采用了模块化设计思想,主要包括状态监测模块、初始化模块、程序模块、运动控制模块、PID调节模块、辅助及其他模块。
图3 数控系统的软件结构
图4 程序主界面
软件系统的设计充分体现了数控系统的开放性特点,如果该软件不能满足用户需求,用户可以根据自己的需要开发新的功能模块。同时,系统软件作为人机交互界面,可以通过软件上的简单操作与PMAC进行数据交换,并将从PMAC得到的信息显示在主界面上。此外,该软件的模块化设计使界面美观简洁、操作简单、友好交互,可以减少操作者的劳动强度,提高工作效率。打开系统软件首先显示登陆界面,以提示用户在操作机床过程中应该注意的问题。然后进入系统的主界面,其中主界面的各个模块的功能如下所示:
状态监测模块:此模块包括各轴状态监测模块,工作模态监测模块,进给速度倍率监测模块。各轴状态监测模块实时地监测各轴电机是否上电和闭环、各轴是否处于运动状态以及运动过程中是否触及限位开关,同时实时动态地反映从PMAC采集回来的X轴和Z轴的实际位置以及B轴和C轴的转动角度。工作模态监测模块反映此时机床处于哪种工作模式下,其中包括JOG运动模式、手轮输入模式、自动运行模式、编辑模式、回零模式以及手动快速运动模式等。进给速度倍率监测模块用以显示进给速率值的百分比。
初始化模块:此模块的主要功能是给各个电机上电及闭环,其上电和闭环状态会在状态监测模块中显示出来。
程序模块:此模块由两部分组成,除了主界面上的程序模块外还包括一个程序编辑子界面 (如图5所示)。主界面上的程序模块用于打开下载前不需要进行编辑的程序,然后进行下载和运行。程序编辑子界面用于打开下载前需要编辑的程序,这时候可以通过该子界面打开程序,并对程序进行编辑和保存,同时可以将程序下载到PMAC中或者将程序从PMAC读取至上位机中。
图5 程序编辑子界面
运动控制模块:此模块包括JOG运动控制模块、B轴和C轴控制模块,用以设置各轴的运动位置、运动速度和运动方向,并使各轴进行正反方向运动和回零运动。
PID调节模块:此模块用于打开PID调节相关的PmacTurningPro2软件和PmacPlot32Pro2软件。此外,该模块还设置了阶跃信号整定和抛物线信号整定过程中可能出现的曲线形状,并指出供用户参考的相应调节方法,以提高工作效率。
辅助功能及其他模块:此模块包括油泵的开启和关闭、气泵和冷却液的状态监测以及急停和退出软件系统。基于安全性考虑,设置了电机闭环前必须开启油泵和电机处于闭环时不能停止油泵的保护方法。
软件系统采用显式链接的方式将PcommSever.exe添加到VC++6.0的MFC程序中,由此导入了PcommSever.exe中的封装类IPmacDevice。软件系统的各个功能模块都是基于VC++6.0的MFC程序框架,调用类IPmacDevice中的函数实现的。其中软件的主要功能是通过 GetResponseEx(dwDevice,FALSE,&pAnswer,&Pstatus)函数实现的[6]。
对于整个系统软件,要先解决上位机与PMAC的通讯问题。首先在程序中声明IPmacDevice类型的全局 变 量 PmacDevice, 然 后 通 过 PmacDevice.SelectDevice(NULL,&dwDevice,&pbSuccess)和PmacDevice.Open(dwDevice,&pbSuccess)函数建立通讯[7]。
状态监测模块要完成显示状态信息和更新界面信息的功能。例如X轴 (即#1轴)的运动状态监测是调 用 PmacDevice.GetResponseEx(dwDevice,"M140",FALSE,&pAnswer,&pStatus)实现的。该函数向PMAC发送不同的M变量指令,并从PMAC得到响应指令pAnswer,然后将变量pAnswer转换成int型变量,判断该int型变量的值得出此时电机是否上电。各轴位置信息的实时更新是通过定时器实现的,以X轴为例,X轴的位置是通过定时器发送WM_TIMER消息,然后在OnTimer()消息响应函数中调用GetResponseEx()函数向PMAC发送"#1p"指令来更新的。此外,模块中其他状态监测功能与X轴的运动状态监测功能的实现方法基本一致。
初始化模块中,X轴上电功能是通过函数GetResponseEx()来改变变量M7904的值实现的。按下按钮时,先判断电机的上电状态,如果电机未上电,则令M7904=1给电机上电,如果电机已上电,则令M7904=0使电机断电。同时利用定时器控件来改变当前电机的上电状态。其他初始化按钮的实现方法基本类似。
JOG运动控制模块主要用来进行加工前的对刀工作。速度控制通过改变变量Ix22来实现,其中x表示电机号。运动模式通过函数GetResponseEx()向PMAC发送"#xj:"和"#xj="指令来实现,而正负方向的运动通过向PMAC发送指令"#Xj+"和"#Xj-"来实现。
PID调节模块程序调用指令:WinExec("C:Program FilesDelta TauPMAC Executive Pro2SuitePmacTuningPro2 PmacTuningPro2.exe",SW _SHOWNORMAL)
程序模块的部分功能实现指令如下:
程序运行指令:PmacDevice.GetResponseEx(dwDevice,command,0,&pAnswer,&pStatus)
程序终止指令:PmacDevice.GetResponseEx(dwDevice,"A",0,&pAnswer,&pStatus)
程序下载指令:PmacDevice.Download(dwDevice,filepath,1,1,1,1,&pbSuccess);其中 filepath 表示要打开的文件路径。
程序上传指令:PmacDevice.GetResponseEx(dwDevice,str,0,&pAnswer,&pStatus);其 中 str=LIST PROG N,N表示需要上传到主机的程序号。
根据超精密磨床的特点和加工要求,设计开发了一套基于PMAC的开放式数控系统。该数控系统采用上位机和下位机结合的方式,上位机工控机负责后台管理和人机交互,下位机PMAC负责运动控制和信号处理;采用模块化的设计方法,基于VC++的MFC基础类框架,调用PMAC软件开发包的封装类,形成了一套功能齐全、交互友好、可以进行二次开发的数控系统软件。该数控系统开发周期短、成本低、具有良好的开放性,目前已在超精密磨床上投入使用,经过长期可靠运行,可以满足加工制造的要求。
【1】陈明君,郭伟星,李旦.基于PMAC开放式数控系统的研究与应用新进展[J].航空精密制造技术,2005,41(2):28-31.
【2】PMAC用户手册.北京钧义志成科技发展有限责任公司,2006.
【3】PMAC Quick Reference.DELTA TAU Data Systems Inc.,2009.
【4】Bai J,Sun L,Pan J,et al.Research and Development of Embedded Numerical Control System Based on Digital Signal Processor[C]//Mechatronic and Embedded Systems and Applications,Proceedings of the 2nd IEEE/ASME International Conference on.IEEE,2006:1 -5.
【5】刘毅.基于PMAC的微小型机床数控系统研究[D].哈尔滨:哈尔滨工业大学,2006.
【6】Software Reference Manual.DELTA TAU Data Systems Inc.,2003.
【7】PcommServer Library of PMAC Functions.DELTA TAU Data Systems Inc.,2009.