王 瑞
(江蘇油田鉆井處,江蘇揚(yáng)州 225202)
1 管具螺紋加工機(jī)床
管具螺紋加工機(jī)床是一種自動化程度較高的專用機(jī)床,機(jī)床由動力部件、傳動單元、工作機(jī)構(gòu)和控制裝置四個(gè)系統(tǒng)組成。本系統(tǒng)所采用管具螺紋加工機(jī)床采用內(nèi)裝式同軸電動機(jī)驅(qū)動機(jī)床主軸,電主軸帶有內(nèi)置編碼器,通過大小齒輪減速傳動到夾具,夾具用以夾緊管具并帶動其發(fā)生旋轉(zhuǎn)運(yùn)動,刀架本身具有換刀功能,工作臺負(fù)責(zé)刀架地進(jìn)給運(yùn)動,自動送料裝置提供管具的自動裝卸功能,采用直流電機(jī)驅(qū)動軸向和徑向進(jìn)給,與傳統(tǒng)的旋轉(zhuǎn)伺服電機(jī)+滾珠絲杠副進(jìn)給相比,其取消了動力部分與工作臺之間的傳動環(huán)節(jié),具有快速響應(yīng)能力強(qiáng)、傳動剛度高、定位精度好、加工效率高等特點(diǎn)。
控制系統(tǒng)選用SKY2000N型開放式數(shù)控系統(tǒng),該控制系統(tǒng)主要由IPC、PMAC控制器、I/0數(shù)據(jù)接口、伺服控制系統(tǒng)組成。
電主軸進(jìn)行旋轉(zhuǎn)運(yùn)動時(shí),內(nèi)置編碼器根據(jù)相應(yīng)指令發(fā)出脈沖信號送至數(shù)控系統(tǒng)作為進(jìn)給運(yùn)動的脈沖源,再經(jīng)過相應(yīng)的計(jì)算處理后發(fā)給伺服系統(tǒng),使進(jìn)給量與主軸轉(zhuǎn)數(shù)保持相應(yīng)的比例,通過改變電主軸的旋轉(zhuǎn)方向便可加工出左旋螺紋和右旋螺紋。
2 在線檢測系統(tǒng)組成
管具螺紋加工質(zhì)量要求高,所開發(fā)的在線檢測系統(tǒng)應(yīng)具有高速數(shù)據(jù)采集能力以及高效的數(shù)據(jù)處理能力,檢測系統(tǒng)由硬件部分、檢測軟件、反饋控制三部分組成。硬件構(gòu)成主要包括位移傳感器、A/D轉(zhuǎn)換板,用于實(shí)現(xiàn)螺紋輪廓數(shù)據(jù)的采集功能;檢測軟件負(fù)責(zé)對所采集的數(shù)據(jù)進(jìn)行相應(yīng)處理;反饋控制負(fù)責(zé)將處理后的數(shù)據(jù)與數(shù)控系統(tǒng)進(jìn)行連接,進(jìn)行相應(yīng)的誤差補(bǔ)償以指導(dǎo)進(jìn)一步的加工。
系統(tǒng)工作原理是:通過位移傳感器測量螺紋輪廓數(shù)據(jù),通過模數(shù)轉(zhuǎn)換板將采集到的模擬量轉(zhuǎn)換為計(jì)算機(jī)能識別的數(shù)字量,然后由檢測軟件對轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行相應(yīng)的處理,最后通過反饋控制部分將處理所得的誤差數(shù)據(jù)傳送到控制系統(tǒng)以指導(dǎo)進(jìn)一步的加工,確保管具螺紋的加工精度。
3 硬件組成
在線檢測系統(tǒng)從設(shè)計(jì)方面看應(yīng)避免復(fù)雜,占據(jù)盡量小的空間,同時(shí)應(yīng)盡量提高安全可靠性,以便適應(yīng)現(xiàn)場環(huán)境中的各種干擾因素。
3.1 位移傳感器
位移傳感器用于采集螺紋外徑輪廓數(shù)據(jù)轉(zhuǎn)并將其轉(zhuǎn)換為相應(yīng)的電信號。它的種類有:小位移測量,通常用電容式、電感式、渦流式、差動變壓器式等;大位移測量,通常用磁柵、光柵、感應(yīng)同步器等。本系統(tǒng)選用光柵尺位移傳感器。
3.2 模數(shù)轉(zhuǎn)換板
本系統(tǒng)選用PMAC控制器的附件ACC-36P模數(shù)轉(zhuǎn)換板,其J1接口與PMAC控制器的JEXP接口通過扁平電纜連接,J4接口進(jìn)行模擬信號的接收,本系統(tǒng)需用到J4接口中的三個(gè)針腳:1針腳為模擬輸入1通道,18針腳為+12V電源輸出,19針腳為公共地。
4 軟件設(shè)計(jì)
本系統(tǒng)選用Visual C++6.0編程語言作為軟件開發(fā)工具,其中包括四個(gè)模塊組成部分,即數(shù)據(jù)采集模塊、數(shù)據(jù)處理模塊、圖形顯示模塊和數(shù)據(jù)管理模塊。
4.1 數(shù)據(jù)采集模塊
該模塊是用于控制位移傳感器以完成對螺紋輪廓數(shù)據(jù)的測量,并向主機(jī)傳送所采集的數(shù)據(jù)。
首先要架構(gòu)起模數(shù)轉(zhuǎn)換板和控制系統(tǒng)之間的信息交流途徑,將模數(shù)轉(zhuǎn)換板所采集的數(shù)據(jù)導(dǎo)入至PMAC運(yùn)動控制器的緩存中,該功能通過編寫相應(yīng)的PLC程序?qū)崿F(xiàn)。
為了保證測量具有較高的精度,應(yīng)采集到足夠的數(shù)據(jù)信息。本系統(tǒng)基于直線電機(jī)編碼器的位置信號以觸發(fā)對數(shù)據(jù)的采集。
通過PMAC控制系統(tǒng)中的I變量來設(shè)置相應(yīng)的編碼器,再把該編碼器位置觸發(fā)控制函數(shù)導(dǎo)入至相應(yīng)程序中以實(shí)現(xiàn)對管具螺紋數(shù)據(jù)的采集。
通過相應(yīng)的程序?qū)⑼ㄟ^位移傳感器所采集到的經(jīng)過模數(shù)轉(zhuǎn)換板處理后的數(shù)字量導(dǎo)入到系統(tǒng)的數(shù)組measuredata中,以便對數(shù)據(jù)進(jìn)行再一步的處理。
4.2 數(shù)據(jù)處理模塊
該模塊負(fù)責(zé)對數(shù)組measuredata中的數(shù)據(jù)進(jìn)行誤差計(jì)算、標(biāo)度變換。
由于受到硬件條件的制約和現(xiàn)場環(huán)境的影響,測量數(shù)據(jù)會產(chǎn)生一定的誤差,為了盡可能的減小誤差,本系統(tǒng)對螺紋輪廓數(shù)據(jù)進(jìn)行多次采樣,然后取其平均值。
計(jì)算機(jī)處理的是數(shù)字量,要進(jìn)行相應(yīng)的標(biāo)度變換處理,以得到實(shí)際的位移值,可將measuredata中的數(shù)據(jù)代入相應(yīng)公式計(jì)算出實(shí)際的位移量,然后再將計(jì)算出的數(shù)據(jù)送入measurement數(shù)組中。
4.3 圖形顯示模塊
該模塊的作用是顯示測量數(shù)據(jù)、誤差數(shù)據(jù)、測量圖形、誤差圖形。
該模塊的程序設(shè)計(jì)都在CMyView中OnDraw(CDC*pDC)中完成,需用到MoveTo函數(shù)、TextOut函數(shù)、LineTo函數(shù)、SetPixel函數(shù)、CreatePen函數(shù)。具體代碼如下:
CDC*pDC=GetDC*(); // 得到設(shè)備環(huán)境
pDC->MoveTo(100,200);
pDC->Moveto(300,200);
...//畫出坐標(biāo)系
pDC->TextOut(100,205."180");
...// 輸出圖形文本
int i;
POINT p; //定義點(diǎn)的坐標(biāo)值
for(i=0;i<1024;i++) //設(shè)置坐標(biāo)點(diǎn)數(shù)量
{ p.x=i; //橫坐標(biāo)值
p.y=measuredata[i]; //縱坐標(biāo)值
pDC->SetPixel(p,RGB(0,0,0,));
//畫點(diǎn),坐標(biāo)位置為p,顏色為黑色
}
4.4 數(shù)據(jù)管理模塊
該模塊的作用是存儲相應(yīng)的數(shù)據(jù)。
程序中所用到的數(shù)據(jù)并不會存儲在相關(guān)介質(zhì)中,而是隨著程序的運(yùn)行結(jié)束而從內(nèi)存中消失,因此要將所處理的數(shù)據(jù)保存起來。本系統(tǒng)將數(shù)據(jù)保存為文本格式。存儲過程為:打開文件、讀寫文件、關(guān)閉文件。通過fstream類成員函數(shù)打開文件;使用put()函數(shù)寫入數(shù)據(jù);通過<對象名>.close()函數(shù)關(guān)閉文件。
measuredata數(shù)組中的元素寫入到measuredata文件中的程序如下所示:
#include"stdafx.h"
#include<fstream.h> //fstream 類頭文件
#include<iostream.h>
int main()
{
fstream writefile("measuredata.txt",ios::out);
//定義文件流類fstream的一個(gè)對象writefile,并在當(dāng)前路徑下建立并打開文件"measuredata.txt"
if(!writefile) //判斷該文件是否打開
{
cout<<"measuredata.txt 文件沒有打開 !"<<endl;
return 0;
}
for(int i=0;measuredata[i]!='