0 引言
随着近年来光纤通讯行业的迅猛发展,对光纤产品的质量要求越来越高。光纤连接器用于光纤之间的对接,其主要组成部件是V型槽结构。V型槽结构作为连接光纤的微光学器件,其加工精度直接影响着光纤连接器的性能。通常V型槽的加工精度由槽的倾斜角、表面粗糙度、直线度等来衡量。为了实现V槽的亚微米级的加工精度,需寻求一种最为有效的加工方式。目前V型槽阵列的加工方法主要有三种:湿法腐蚀,压膜,超精密加工。利用超精密机床对V型槽进行磨削加工,是实现其高精度的一种非常有效的方法。
超精密数控系统作为超精密数控机床的控制核心,也是加工V型槽阵列需要重点研究的环节。QT是C++图形用户界面应用程序框架,具备艺术级的图形界面开发功能,QT的良好封装机制也使得QT的模块化程度非常高,可重用性较好。PMAC则是功能强大,市场定位较高的一款控制器。本课题在上位机上借助QT开发工具,调用Turbo PMAC clipper提供的PcommSeRer Pr02:Lih岬库函数,开发了V型槽加工机床的数控系统软件。该软件不仅实现了优越的人机界面功能,还能根据V槽的关键参数自动生成NC代码并检测代码的正确性,并能对系统的参数进行规范的数据库管理,以及进行V槽加工过程的三维模拟仿真,可视化强。同时,软件也实现了系统的CNC运动控制功能。针对这样一款专门应用于V型槽阵列加工的软件,它的实用性,市场需求度都是不言而喻的。
1 V沟机数控系统的硬件设计
系统硬件结构如图1所示,主要包括:研华工控机,Turbo PMAC Clipper多轴运动控制器,端子板,KOI工MORGEN AKD.P系列驱动,气浮主轴,KOmMORGEN直线电机,ReniShaw光栅尺,气浮工作台,配以其他的I/O等辅助设备。
2 V沟机数控系统的软件开发
V沟机数控系统具有普通数控系统的数控加工、系统诊断、数据采集等功能。同时还应具有本身特殊的功能,即根据V型槽的关键参数以及加工工艺自动生成NC代码,将代码下载至PMAC控制器中,从而进行加工。整个软件开发过程包括:软件功能的设计以及功能模块的划分,人机界面的设计,各功能模块的编写和调试,整个应用程序的集成、调试和运矧引。在访n(10ws7操作系统下,利用QT4.8开发工具,通过调用PcommServer Pr02 Library库函数,实现软件的编写和系统的控制功能。
2.1 建立QT与PM渔C的通讯
基于QT+PMAc的开放式数控系统,其开放性既体现在软件上,又体现在硬件上。QT提供了非常强大的图形用户功能,允许用户根据自己的需要开发人机交互界面;PMAC运动控制卡则提供了多于400个运动相关的函数,实现数控系统插补、前瞻、补偿、伺服算法、联动功能等各种控制功能。
PcommSenrer Pm2“bEary是PMAC为在Windows系统下开发人机界面提供的动态链接库。它是基于COM组件的形式提供的,用户通过安装PMAC Executive pr02 suite软件包,在系统盘里可找到pcommserver.exe、pcomm32w.dll、pcomlIl32w.1ib等文件,但并没有提供库的头文件,因此不能用一般的显式隐式来调用。那么要在QT中调用库函数,就必须知道QT如何调用COM接口,下面说明其调用方法。
QT提供的QAxContainer模块,该模块允许使用COM对象,以及在QT应用程序中嵌入ActiveX控件。它提供了2个类:QAxwidget(Qwidget的子类,作为ActiveX控件的容器)和QAxObject(QWidget的子类,易于访问非可视化COM对象)。本次开发中采用生成命名空间的方式来调用cOM对象的APIs。具体操作流程如下:
(1)通过VC++6.0中的Tools工具条中的OLE/COM object viewer选项,查找类型库,可查得pcom—mserver.exe的类型库ID{50ECCF67-B73C-431B-A53D-9EDDAF3CE611}
(2)叫提供了一个名为d啪pcpp的工具可以为想要访问的类型库生成一个c++名空间,将dumpcpp工具所在的bin目录添加到系统路径中。
(3)运行命令提示符,在用户名后输人命令:dumpcpp-n PCOMMSERVERKb{50ECCF67-B73C-431B-A53D-9EDDAF3CE611}。运行后,会自动生成两个文件:ponmmserverHb.cpp和ponmmserver
lib.h。(4)在QT应用程序的.pm中添加“CONnG+=qaxcontainer”,并添加上述导出的头文件和源文件。通过包含头文件“#include ponmmserver
lib .h”和在程序开头使用“using namespace PCOMMSERVERLib;”语句,并定义“PCOMMSERVERLib:PmacDevice*Pmac”对象指针,利用Pmac即可调用运动库函数。