高 宇,劉金秀,李副來,張 慧,胡 波
(洛陽軸研科技股份有限公司 儀器開發部,河南 洛陽 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軟件開發平臺的應用,提高操作效率,美化操作界面,便于對測量數據進行存盤與讀盤,提高了軸承凸出量測量效率。隨著計算機技術的不斷發展,虛擬儀器技術必將會在軸承測量領域發揮越來越重要的作用。