高 宇,劉金秀,李副來,張 慧,胡 波
(洛陽(yáng)軸研科技股份有限公司 儀器開發(fā)部,河南 洛陽(yáng) 471039)
現(xiàn)代工業(yè)中,精密機(jī)床主軸﹑高速電主軸、精密儀器軸系等高精度軸系大多采用角接觸球軸承,且配對(duì)使用,這類軸承不但要求高速、高精度,而且要求軸系具有高剛度。要滿足這些要求,需要準(zhǔn)確測(cè)出單個(gè)軸承在一定預(yù)載荷作用下的端面凸出量。在使用中,端面凸出量是軸承的一個(gè)重要參數(shù),不但影響主軸的旋轉(zhuǎn)精度、剛度、振動(dòng)、噪聲,還直接影響軸承的壽命。
先前精密主軸配對(duì)軸承凸出量主要由單片機(jī)進(jìn)行測(cè)量顯示,采樣的程序大多固定且不宜改變,采樣速度很慢,不能對(duì)測(cè)量數(shù)據(jù)進(jìn)行存檔、調(diào)檔。虛擬儀器主要是通過對(duì)計(jì)算機(jī)以及PCI卡進(jìn)行測(cè)量顯示,提高了采樣的速率和精確性,并且通過LabWindows平臺(tái)對(duì)采樣數(shù)據(jù)進(jìn)行濾波分析,達(dá)到了實(shí)時(shí)采樣處理,而且可進(jìn)行存盤、調(diào)檔,大大提高了操作和測(cè)量效率。
虛擬儀器的技術(shù)基礎(chǔ)是計(jì)算機(jī)技術(shù),核心是計(jì)算機(jī)軟件技術(shù)。LabWindows CVI[1-2]是美國(guó)國(guó)家儀器(National Instruments,NI)公司推出的面向儀器與測(cè)控過程的C,C++交互式開發(fā)平臺(tái)。該平臺(tái)不僅提供了對(duì)虛擬儀器的支持,還具有各種測(cè)試、通信、控制和數(shù)值分析的能力,具有圖形建模簡(jiǎn)單、控制功能強(qiáng)大、實(shí)時(shí)性強(qiáng)、編程容易等優(yōu)點(diǎn)。從軟件開發(fā)角度看,其具有以下一些特點(diǎn):
(1) 可視化、交互式的開發(fā)工具。具有人機(jī)交互界面編輯器,運(yùn)用可視化交互技術(shù),使人機(jī)界面的實(shí)現(xiàn)直觀簡(jiǎn)單,大大提高了工程設(shè)計(jì)的效率和可靠性。
(2) 具有程序自動(dòng)生成能力,可減少軟件開發(fā)過程中代碼編寫的工作量。設(shè)計(jì)好的人機(jī)交互界面(虛擬儀器面板)存儲(chǔ)在后綴名為.uir的文件中。軟件自動(dòng)生成原碼頭文件.h,自動(dòng)聲明界面對(duì)象常量及相關(guān)的回調(diào)函數(shù)。
(3) 具有齊全的軟件工具包及功能強(qiáng)大的函數(shù)庫(kù)。通過簡(jiǎn)單調(diào)用庫(kù)函數(shù)就能驅(qū)動(dòng)相應(yīng)的各種儀器和硬件板卡。這些工具包和函數(shù)庫(kù)具有更高的效率,使程序的編寫更加簡(jiǎn)潔。
(4) 完善的兼容性。借助于LabWindows CVI,有經(jīng)驗(yàn)的C,C++語(yǔ)言開發(fā)人員可以采用熟悉的C語(yǔ)言環(huán)境,如VC,BC等開發(fā)自己的虛擬儀器系統(tǒng)。另外,還可將儀器庫(kù)函數(shù)及子程序編譯成32位DLL,以用于任何32位C,C++環(huán)境及VB或LabVIEW中。
另外,LabWindows支持多種操作系統(tǒng)平臺(tái),在任何一個(gè)平臺(tái)上開發(fā)的應(yīng)用程序均可直接移植到其他平臺(tái)上。
儀器硬件[3]主要由計(jì)算機(jī)及其接口、多功能數(shù)據(jù)采集卡和濾波及放大電路組成,原理框圖如圖1所示。多功能數(shù)據(jù)采集卡采用PCI-9111。這是一種極具性價(jià)比的適合PC及兼容機(jī)的數(shù)據(jù)采集卡,其能夠完成信號(hào)采集(A/D),數(shù)字信號(hào)的模擬輸出(D/A)及定時(shí)/計(jì)數(shù)功能。其具有8個(gè)模擬量輸入通道,2個(gè)模擬量輸出通道,24個(gè)數(shù)字量I/O接口和3個(gè)16位定時(shí)/計(jì)數(shù)器。輸出的模擬信號(hào)通過濾波器進(jìn)行濾波平滑、放大后即可使用。其中濾波器的選擇視輸出信號(hào)頻率范圍而定,放大倍數(shù)根據(jù)實(shí)際需要分不同的檔位。
圖1 儀器硬件原理框圖
設(shè)計(jì)的面板如圖2所示。該過程主要包括創(chuàng)建控件和修改空間屬性兩部分。
圖2 儀器面板圖
2.2.1 創(chuàng)建控件
用戶界面共有22個(gè)控件:12個(gè)Button 控件,8個(gè)Numeric控件,1個(gè)Table控件和1個(gè)Timer控件。創(chuàng)建過程如下:?jiǎn)?dòng)CVI,在工程窗口中選擇菜單File→New→UserInterFace (*.uir),打開空白用戶界面編輯窗口。在其中單擊右鍵,依次選擇所需控件并置于面板的合適位置。
2.2.2 設(shè)置控件屬性
將鼠標(biāo)置于各控件圖標(biāo)上并雙擊左鍵,在彈出的編輯窗口中設(shè)置好各控件的屬性。主要屬性設(shè)置包括控件名稱(Constant Name)、回調(diào)函數(shù)(Callback Function)名、控件標(biāo)題等。
在完成用戶界面設(shè)計(jì)后,LabWindows可自動(dòng)生成許多代碼以及缺省消息處理函數(shù),只要在這些函數(shù)中添加所需的代碼即可完成程序的設(shè)計(jì)。具體操作如下:在以上完成的界面窗口菜單中選Code→Generate→All Code進(jìn)入代碼編輯窗口??丶粹o功能程序源代碼如下,其中加粗部分代碼需程序開發(fā)者自行添加。
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);//停轉(zhuǎn)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(.*),依次將前述界面文件、代碼文件以及自動(dòng)生成的頭文件加入到工程文件中。通過Run dun Project命令即可運(yùn)行工程文件。
首先將軸承、附件和內(nèi)隔套固定,點(diǎn)擊控制面板的“基準(zhǔn)零位”按鈕,通過壓力傳感器獲得的壓力值即為軸承的基準(zhǔn)零位。然后放上軸承、附件和外隔套,并點(diǎn)擊“自動(dòng)測(cè)量”控件按鈕,當(dāng)成對(duì)軸承的壓力傳感器的壓力值達(dá)到基準(zhǔn)零位值后,儀器停止測(cè)量,控制面板顯示的位移傳感器值即為軸承凸出量值。
虛擬儀器是電子技術(shù)和計(jì)算機(jī)技術(shù)相結(jié)合的產(chǎn)物,通過對(duì)LabWindows軟件開發(fā)平臺(tái)的應(yīng)用,提高操作效率,美化操作界面,便于對(duì)測(cè)量數(shù)據(jù)進(jìn)行存盤與讀盤,提高了軸承凸出量測(cè)量效率。隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,虛擬儀器技術(shù)必將會(huì)在軸承測(cè)量領(lǐng)域發(fā)揮越來越重要的作用。