高 宇,刘金秀,李副来,张 慧,胡 波
(洛阳轴研科技股份有限公司 仪器开发部,河南 洛阳 471039)
现代工业中,精密机床主轴﹑高速电主轴、精密仪器轴系等高精度轴系大多采用角接触球轴承,且配对使用,这类轴承不但要求高速、高精度,而且要求轴系具有高刚度。要满足这些要求,需要准确测出单个轴承在一定预载荷作用下的端面凸出量。在使用中,端面凸出量是轴承的一个重要参数,不但影响主轴的旋转精度、刚度、振动、噪声,还直接影响轴承的寿命。
先前精密主轴配对轴承凸出量主要由单片机进行测量显示,采样的程序大多固定且不宜改变,采样速度很慢,不能对测量数据进行存档、调档。虚拟仪器主要是通过对计算机以及PCI卡进行测量显示,提高了采样的速率和精确性,并且通过LabWindows平台对采样数据进行滤波分析,达到了实时采样处理,而且可进行存盘、调档,大大提高了操作和测量效率。
虚拟仪器的技术基础是计算机技术,核心是计算机软件技术。LabWindows CVI[1-2]是美国国家仪器(National Instruments,NI)公司推出的面向仪器与测控过程的C,C++交互式开发平台。该平台不仅提供了对虚拟仪器的支持,还具有各种测试、通信、控制和数值分析的能力,具有图形建模简单、控制功能强大、实时性强、编程容易等优点。从软件开发角度看,其具有以下一些特点:
(1) 可视化、交互式的开发工具。具有人机交互界面编辑器,运用可视化交互技术,使人机界面的实现直观简单,大大提高了工程设计的效率和可靠性。
(2) 具有程序自动生成能力,可减少软件开发过程中代码编写的工作量。设计好的人机交互界面(虚拟仪器面板)存储在后缀名为.uir的文件中。软件自动生成原码头文件.h,自动声明界面对象常量及相关的回调函数。
(3) 具有齐全的软件工具包及功能强大的函数库。通过简单调用库函数就能驱动相应的各种仪器和硬件板卡。这些工具包和函数库具有更高的效率,使程序的编写更加简洁。
(4) 完善的兼容性。借助于LabWindows CVI,有经验的C,C++语言开发人员可以采用熟悉的C语言环境,如VC,BC等开发自己的虚拟仪器系统。另外,还可将仪器库函数及子程序编译成32位DLL,以用于任何32位C,C++环境及VB或LabVIEW中。
另外,LabWindows支持多种操作系统平台,在任何一个平台上开发的应用程序均可直接移植到其他平台上。
仪器硬件[3]主要由计算机及其接口、多功能数据采集卡和滤波及放大电路组成,原理框图如图1所示。多功能数据采集卡采用PCI-9111。这是一种极具性价比的适合PC及兼容机的数据采集卡,其能够完成信号采集(A/D),数字信号的模拟输出(D/A)及定时/计数功能。其具有8个模拟量输入通道,2个模拟量输出通道,24个数字量I/O接口和3个16位定时/计数器。输出的模拟信号通过滤波器进行滤波平滑、放大后即可使用。其中滤波器的选择视输出信号频率范围而定,放大倍数根据实际需要分不同的档位。
图1 仪器硬件原理框图
设计的面板如图2所示。该过程主要包括创建控件和修改空间属性两部分。
图2 仪器面板图
2.2.1 创建控件
用户界面共有22个控件:12个Button 控件,8个Numeric控件,1个Table控件和1个Timer控件。创建过程如下:启动CVI,在工程窗口中选择菜单File→New→UserInterFace (*.uir),打开空白用户界面编辑窗口。在其中单击右键,依次选择所需控件并置于面板的合适位置。
2.2.2 设置控件属性
将鼠标置于各控件图标上并双击左键,在弹出的编辑窗口中设置好各控件的属性。主要属性设置包括控件名称(Constant Name)、回调函数(Callback Function)名、控件标题等。
在完成用户界面设计后,LabWindows可自动生成许多代码以及缺省消息处理函数,只要在这些函数中添加所需的代码即可完成程序的设计。具体操作如下:在以上完成的界面窗口菜单中选Code→Generate→All Code进入代码编辑窗口。控件按钮功能程序源代码如下,其中加粗部分代码需程序开发者自行添加。
int CVICALLBACK cear (int panel, int control, int event,
void *callbackData, int eventData1, int eventData2)
{
char a,zweight;
double Pressure,txt,showP,ShunShi,Tempv;
char val,val1,a1;
int second2,second1,Start;
int delaytime,j,Num ;
int t,t1,t2,n ;
char str[200];
int file,BEGINM;
char temp[50],temp1,N[50][50];
double tempv,tempv1,tempv2,e,x,y,aa,bb,Yao,Jizh;
// double tempv,tempv1;
int second, minute, hour;
int year,day, month;
int resultdate,resulttime,tempdata,Tmax,Tmin,Tsum;
if (event != EVENT_COMMIT)
return FALSE;
GetCtrlVal (Ss, PANEL_3_BEGINM, &Start);
if(Start)
{
SetCtrlAttribute (Ss, PANEL_3_BINARYSWITCH, ATTR_DIMMED, 1);
SetCtrlAttribute (Ss, PANEL_3_TIMER, ATTR_ENABLED, 1);
GetCtrlVal (Ee, PANEL_7_NUMERIC, &Jkou);
Zadress=Zadress|Jkou;
DO_WritePort (card, 0, Zadress);
SetCtrlVal (Ss,PANEL_3_BINARYSWITCH , 1);
SetCtrlVal (Ss,PANEL_3_LED , 0);
GetCtrlVal (Ss, PANEL_3_NUMERIC_4, &Jizh);
GetCtrlVal (Ss, PANEL_3_NUMERIC, &Tempv);
SetCtrlAttribute (Ss, PANEL_3_TIMER, ATTR_ENABLED, 1);
}
else
{
SetCtrlAttribute (Ss, PANEL_3_BINARYSWITCH, ATTR_DIMMED, 0);
SetCtrlAttribute (Ss, PANEL_3_BEGINM_2, ATTR_DIMMED, 0);
GetCtrlVal (Ss, PANEL_3_NUMERIC, &aa);
GetCtrlVal (Ss, PANEL_3_NUMERIC1, &bb);
GetCtrlVal (Ss, PANEL_3_BEGINM, &Start);
Zadress=Zadress&0x0000;
DO_WritePort (card, 0, Zadress);//停转1秒
SetCtrlVal(Ss, PANEL_3_BINARYSWITCH, 0) ;
SetCtrlVal (Ss,PANEL_3_LED , 1);
if(Start==0)
{
Data1[i]=aa ;
Data[i]=bb ;
}
i++ ;
m=i;
SetCtrlAttribute (Ss, PANEL_3_TIMER, ATTR_ENABLED, 0);
// PlotPoint (Ss,PANEL_3_GRAPH_2 , bb,
aa, VAL_SOLID_DIAMOND, VAL_RED);
Delay(1);
SetCtrlAttribute (Ss, PANEL_3_TIMER, ATTR_ENABLED, 1);
}
return 0;
}
完成以上代码添加并保存后,在工程窗口中选择:Ed-it→add File To Project→all Files(.*),依次将前述界面文件、代码文件以及自动生成的头文件加入到工程文件中。通过Run dun Project命令即可运行工程文件。
首先将轴承、附件和内隔套固定,点击控制面板的“基准零位”按钮,通过压力传感器获得的压力值即为轴承的基准零位。然后放上轴承、附件和外隔套,并点击“自动测量”控件按钮,当成对轴承的压力传感器的压力值达到基准零位值后,仪器停止测量,控制面板显示的位移传感器值即为轴承凸出量值。
虚拟仪器是电子技术和计算机技术相结合的产物,通过对LabWindows软件开发平台的应用,提高操作效率,美化操作界面,便于对测量数据进行存盘与读盘,提高了轴承凸出量测量效率。随着计算机技术的不断发展,虚拟仪器技术必将会在轴承测量领域发挥越来越重要的作用。