999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于OpenGL車削仿真系統的開發與研究*

2018-05-11 07:50:30,,,
現代機械 2018年2期
關鍵詞:模型

,,,

(貴州大學 機械工程學院,貴州 貴陽 550025)

0 引言

隨著數控車削加工技術的發展,數控自動編程技術初步解決了車削加工問題,為檢查數控程序的NC代碼正確性,傳統方法采用的試切法,這種方法費工費料,甚至由于程序的錯誤而導致機床的損壞。后來采用軌跡顯示方法,但這種方法僅限于平面,不能準確地仿真其實際情況[1]。為此,人們通過運用計算機仿真技術提前驗證NC代碼的準確性,從而提高了生產效率,節約成本,避免制造風險[2-3]。OpenGL是一個開放的三維圖形程序接口、調用方便的底層圖形庫,它獨立于窗口系統和操作系統,與硬件無關,以它為基礎開發的應用程序可以十分方便地在各種平臺間移植,或嵌入其他系統使用[4]。基于OpenGL的程序框架構造好后,用戶只需要在對應的函數中添加程序代碼即可,可擴展性好。針對上述問題,提出了OpenGL車削仿真運動系統,在Visual Studio 2015環境下實現車削加工去除材料的過程。

1 系統總體框架設計

該系統以VS 2015為開發平臺,OpenGL為工具,根據數控車削加工的特點,可將軟件功能分為加工仿真準備模塊與加工仿真過程模塊;其中加工仿真準備模塊和加工仿真過程模塊都包含3個子模塊,如圖1。

圖1 加工仿真系統架構圖

在加工仿真準備模塊中包含:圖形顯示模塊,以OpenGL為工具搭建仿真圖形顯示環境;NC代碼模塊,對NC代碼進行解碼;STL模型模塊,將繪制的刀具以及機床模型的stl文件進行解碼并顯示。

在加工仿真過程模塊中包含:工件運動模塊,使工件自轉,并使刀具和工件擁有獨立的運動;刀具加工運動模塊,刀具軌跡會依據NC代碼進行刀具的運動;毛坯設計模塊,基于幾何仿真原理,隨著刀具車削,毛坯逐漸成形。

2 加工仿真準備

要使仿真系統進行車削仿真需要前期準備,包含OpenGL環境搭建,NC代碼解釋,與stl模型的導入。

2.1 圖形顯示模塊

OpenGL被定義為圖形硬件的一種軟件接口,是一個3D圖形和模型庫,具有高度的可移植性,并且具有非常快速度,獨立于窗口系統和操作系統,與硬件無關,OpenGL是個狀態機的概念,通過創建OpenGL的渲染設備rc,使得OpenGL具有這些狀態功能,然而此時所有的狀態仍是未知的,就需要依次進行設置[5]。

本文采用OpenGL固定管線技術完成模型的繪制,在固定管線中包含兩個矩陣:projection和model view,其中包含三個坐標系:世界坐標系、視口坐標系、屏幕坐標系,要使圖形顯示,就需要對坐標系進行一系列的矩陣變化。首先在世界坐標系下繪制模型,通過模型視口矩陣(model view)對模型進行作用,從而轉換到視口camera坐標系下,然后將模型再投影到視口camera的范圍內,進而圖形才會顯示到屏幕上,投影視口的操作如同攝像機的原理,需要在攝像機拍攝范圍內,鏡頭畫面才有模型的顯示。由于計算機屏幕上只能表現二維平面,要使得車削仿真系統顯示三維圖形,還需投影矩陣(projection)從三維物體轉到二維平面圖像間的變換,投影矩陣會把所有的3D信息投影到2D屏幕上,這樣車削仿真系統中的車刀與毛坯等三維圖形便可在屏幕中顯示。

2.2 NC代碼模塊

NC代碼是從零件圖紙到制成控制介質的過程,NC代碼的格式以首字母代表特定功能,N代表的是第幾工步,G代碼是在NC裝置內部用來處理軸的移動、坐標系的設定等的功能,代碼用G字母和2位數字表示;M代碼的機床運行是由各開關的動作來控制的,控制主軸的旋轉、停止、刀具的更換等,用M字母和2位數字來表示等。

本文采用NC代碼實例:

N0010 G94 G90 G20

N0020 G50 X0.0 Z0.0

N0030 T00 H00 M06

N0040 G97 S443 M03

N0050 G94 G00 X30.Z10.

N0060 X28.

N0070 Z5.5

由于NC代碼值是數控車削加工過程的驅動指示,在VS2015平臺不能直接識別,因此需要將NC代碼翻譯成仿真系統所能識別的代碼,先將NC代碼全部存儲到m_resource緩沖區中,針對NC代碼的特點,仿真系統只需從中提取有關運動與狀態信息作為刀具運動軌跡依據,而對于與運動軸相關代碼等信息用詞法檢驗即可,不需進行解讀,然后將存儲所需的NC代碼按照首字母的特性進行匹配,以X字母為開頭代碼為例,通過if語句從m_resource緩沖區找到X首字母并開始讀入后續數字,讀到空格(‘/0’)的位置,將從X到’/0’之間所需的仿真信息按順序封裝到新的m_compete緩沖區。另外還需把所解碼的仿真信息賦值給刀具移動變量,使得刀具運動依據NC代碼的內容進行運動仿真。

實例代碼:

for (it = m_resource.begin(); it

{

//X部分的信息提取

int n=(*it).Find(L"X");

if(n>=0)//找到‘X’的字母

{

int m=(*it).Find(L"",n);

if (m<0)

{

m=(*it).Find(L'/0',n);//讀到這一橫行代碼的結尾

}

n=n+1;

CStringCoordinateX;

CoordinateX=(*it).Mid(n,m-n);//用來提取G的信息

rX=_ttof(CoordinateG);

coor.m_g=rG;

flag++;//標記

}

}

2.3 stl模型模塊

stl模型文件是計算機圖形學處理CG,數字幾何處理的最常見文件格式,其文件格式簡單,是由一系列三角面片構成,僅有頂點信息,并沒有光照材質等渲染信息,所以在此系統中只需讀取stl模型只需讀取頂點數據等幾何信息,不必考慮渲染等解碼部分。

解碼stl文件,需要了解stl文件的格式信息,其中stl文件包含兩種格式:一種是ASCII格式,另一種是二進制格式。兩者的區別在于存儲方式的不同。根據不同的stl文件格式,相應解碼也有所不同。本文采用ASCII格式,在ASCII格式下,文件每行都以關鍵字為開頭,模型中每個三角面片的信息是以facet開頭,進而逐行顯示三角面片的幾何信息,其中依次包含:facet normal,從三角面片指向模型外部的法矢量,outer loop以及隨后的 vertex和endloop,集合表達了三角面片的頂點信息。其中vertex的三行數據是三角面片的3個頂點坐標信息,三個頂點跟該三角面片的法向量符合右手螺旋定則,outer loop和endloop僅是頂點數據開始與結束的標記,最后文件以endfacet結尾,完成一個三角面片定義[6]。

根據stl文件的ASCII格式特點,可有兩種讀取方法,一種是逐行進行讀取,另一種是按三角面片個數逐個進行讀取。由于前者逐行讀取中,所讀每一行都需要檢查是否到了文件的endface結束語,影響效率,所以本文系統采用第二種方法:首先求出三角面片個數的總數,其中ASCII格式中每個三角面片所占的行數為七行,因此把行數讀出來除以7所得的商就是三角面片的個數,然后通過for循環操作解析每個三角面片,并且OpenGL的接口實際上是一串float的數組,與stl文件相一致,所以這里面保存了verts頂點坐標信息,以及norms即法向量信息直接進行導入不需做數據結構調整,便可以解出模型。

參考代碼:

for (int i=0;i

{

vnorms[count1]=vnorms[count1+3]=vnorms[count1+6]=atof(x);

count1++;

vnorms[count1]=vnorms[count1+3]=vnorms[count1+6]=atof(y);

count1++;

vnorms[count1]=vnorms[count1+3]=vnorms[count1+6]=atof(z);

count1+=7;

}

3 加工仿真過程

通過仿真系統的前期準備,就可以實現車削加工仿真,由于數控加工的過程是數控機床在NC代碼的驅動下帶動刀具對使用夾具固定在工作臺上的工件,進行切削加工的過程,針對其特點,在仿真系統中需要包含刀具運動,工件以及夾具自轉,毛坯切除的功能[7]。

3.1 刀具運動模塊

圖2 車刀運動判別

車削的毛坯多為回轉體棒料零件,并且刀具通常只是X、Z方向上的二維移動,因此仿真可根據存儲到m_compete緩沖區中的關鍵運動代碼,將刀具的起始點坐標設為原點坐標,并進行X方向和Z方向起始點和終點的距離的判斷,如圖2。以車刀從第n的位置車削第n-1的位置為例,如果起始點X的值大于終點X的值,則車刀先徑向進給運動。然后通過Z值判別,起始點Z的值大于終點Y的值,則車刀再完成徑向進給運動,通過刀具X和Z方向的運動,從而完成進刀運動;退刀反之。

具體的實現命令如:

//車刀徑向進給運動

if(X

{

m_X=m_X-V;//車刀徑向進給

m_Z=m_Z;//車刀軸向不變

velocityflag=1;//進給標記

}

3.2 工件運動模塊

在仿真系統中,刀具運動的同時,工件與夾具也要進行自轉運動,因為OpenGL是個狀態機,旋轉、移動、平移其運動操作都會影響視全局所有元素的狀態,所以需要通過OpenGL中矩陣的壓棧出棧的功能來實現刀具與工件之間的獨立運動。

在OpenGL中所有的運動操作都是通過矩陣棧的棧頂來影響圖形的狀態。如圖3,將開始狀態定為狀態1,在變換之前調用giPushMatrix()壓棧,就會把當前狀態1壓入第二層,并且棧頂會有狀態2,并且棧頂的矩陣狀態2是第二層狀態1的一份拷貝,所有的內容是相同的,此時所有的矩陣操作都是在狀態2中完成,通過一系列的矩陣對所操作的圖形有所改變,而且并不會影響全局元素的狀態,變換之后,使用glPopMatrix出棧,將上面操作過的狀態2去掉,之前的狀態1又放到棧頂,恢復原來的狀態。在本文中,通過壓棧出棧操作進行刀具運動,從而在刀具的運動同時,不影響工件與夾具的自轉運動狀態。

工件以及夾具的運動主要用glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)函數進行自轉,x、y、z表示旋轉軸,angle代表旋轉角度,在本文中旋轉軸為z軸,旋轉角度隨時間而曾大,然后通過if判斷要是轉過一周,角度則從0°再開始繼續增加,如此,工件與夾具便在加工仿真中一直自轉而不受刀具移動的干擾。

圖3 壓棧出棧圖

3.3 毛坯設計模塊

由于OpenGL中沒有實體建模的功能,所以本文毛坯的實體建模通過曲面繪制進行組合,gluCylinder圓柱面,和gluDisk圓盤面來實現毛坯的加工仿真。

圖4 毛坯設計

為實現毛坯形狀隨切削加工的進行而發生形狀實時改變,本文采用幾何仿真,將毛坯形狀根據離散法來滿足仿真要求,即把毛坯的圓柱離散成同心、同底、同高但半徑不同的圓柱體,車削毛坯時,圓柱的地面半徑與最外側的底面半徑遞增關系如圖4所示。在加工部分,大圓柱以車刀加工終點位置作為起始點,隨著車刀的軸向進給運動,大圓柱的高隨之減小,小圓柱以車刀加工起始點位置作為起始點,并隨著車刀軸向進給運動,小圓柱體高隨之增大,效果可看成是從大圓柱剝離出小圓柱體,隨著刀具的運動,大圓柱和小圓柱的半徑發生實時改變,以第n次車刀車削為例,在第n次車刀進行車削時,大圓半徑為第n-1次車削加工后小圓柱體半徑;小圓半徑為第n次車削加工時的小圓柱體半徑,同時兩圓柱面交際面用圓盤作底面,形成封閉圖形,兩個圓柱的高通過刀具的位置改變而發生變化,底面圓盤根據刀具的軸向進給運動而移動,便可實現其毛坯的加工仿真效果。

代碼所示:

gluCylinder(quadratic,(*it_chip).RadiuolnStart,(*it_chip).RadiuolnStart,ld-jd,32,1);//大圓柱

gluCylinder(quadratic,(*it_chip).RadiuoOutStart,(*it_chip).RadiuoOutStart,jd,32,1);//小圓柱

glTranslatef(0,0,jd=pDoc->m_piseljd);//移動刀具加工的兩圓柱底面

gluDisk(quadratic,(*it_chip).RadiuolnStart,(*it_chip).RadiuoOutStart,32,1);//形成加工時兩圓柱底面

4 軟件實現

在菜單項點擊NC代碼導入,選擇所需的NC代碼導入到系統中,再單擊stl模型,分別將夾具模型與車刀模型添加到系統,最后選擇仿真開始,便可實現車削運動仿真模擬,軟件實現效果如圖5。

圖5 系統運行效果

5 結束語

針對數控車削的形狀特點及傳統落后的加工工藝,以Visual Studio 2015為開發平臺,使用OpenGL 三維圖形標準庫,采用離散法實現毛坯切除,開發數控車削動態運動仿真系統,實現了虛擬車削加工過程的可視化,直觀地顯示了刀具路徑、工件的轉動、材料去除等過程。實驗表明,仿真效果達到了預期要求,具有良好的實時性; 為車削加工提供了保障和可行性;以新的角度詮釋了OpenGL環境的搭建,同時讀取stl方法以及離散法毛坯去除對于同類虛擬仿真加工的擴展,具有一定的借鑒意義。

[1] 周靜.數控仿真三維建模及實現[D].南京:南京理工大學,2005.

[2] TANG T D,BOHEZ E L J,KOOMSAP P.The sweep plane algorithm for global collision detection with workpiece geometry update for five-axis NC machining[J].Computer-Aided Design,2007,39(11):1012-1024.

[3] 李春雷.虛擬數控車削加工誤差建模技術研究[J].機械工程與自動化,2011(4):35-36.

[4] CHEN M,GONG Y,ZHAN L,et al.Research on technology of three-dimension Roam based on OpenGL[C]// International Conference on Computer Application and System Modeling,2010,14:562-564.

[5] WANG Y,SUN L X,FAN J C.Application of OpenGL in NC turning simulation[J].Advanced Materials Research,2012,505:282-286.

[6] 嚴梽銘,鐘艷如.基于VC++和OpenGL的STL文件讀取顯示[J].計算機系統應用,2009(3):172-175

[7] 董大勇.虛擬制造中的數控銑削仿真加工技術[J].金屬加工(冷加工),2015(15):58-59.

[8] 牛書濤,庫祥臣.基于Visual C++與OpenGL的數控車削加工仿真系統研究[J].機電一體化,2012,18(3):35-39.

猜你喜歡
模型
一半模型
一種去中心化的域名服務本地化模型
適用于BDS-3 PPP的隨機模型
提煉模型 突破難點
函數模型及應用
p150Glued在帕金森病模型中的表達及分布
函數模型及應用
重要模型『一線三等角』
重尾非線性自回歸模型自加權M-估計的漸近分布
3D打印中的模型分割與打包
主站蜘蛛池模板: 亚洲欧美色中文字幕| 国产成人精品高清不卡在线| 久久香蕉欧美精品| 国产成人a毛片在线| 99ri国产在线| 日韩在线播放中文字幕| 亚洲AⅤ无码国产精品| 欧美一级99在线观看国产| 日韩欧美国产另类| 免费一极毛片| 亚洲毛片一级带毛片基地| 久久情精品国产品免费| 性做久久久久久久免费看| 秋霞一区二区三区| 欧美精品亚洲二区| 国产男女免费完整版视频| 国产a v无码专区亚洲av| 天堂中文在线资源| 中文字幕人妻av一区二区| 久久毛片网| 国产成人一区二区| 亚洲av无码人妻| 爽爽影院十八禁在线观看| 亚洲不卡av中文在线| 欧美α片免费观看| 波多野结衣一二三| 国产在线一二三区| 成人韩免费网站| 无码AV动漫| 欧美另类第一页| av一区二区无码在线| 在线免费观看a视频| 视频二区亚洲精品| 婷婷六月在线| 精品国产Av电影无码久久久| 天天综合网色| 亚洲第一极品精品无码| 国产麻豆aⅴ精品无码| 在线观看免费人成视频色快速| 一本综合久久| 全部免费毛片免费播放| 免费一看一级毛片| 国产清纯在线一区二区WWW| 国产av无码日韩av无码网站| 三上悠亚在线精品二区| 国产成人AV大片大片在线播放 | 18禁不卡免费网站| 亚洲Av激情网五月天| 欧美v在线| 免费一级毛片在线播放傲雪网| 青草视频网站在线观看| 婷婷激情五月网| 萌白酱国产一区二区| 日韩区欧美区| 2021最新国产精品网站| 久久国产精品77777| 亚洲一级毛片| 手机精品视频在线观看免费| 69国产精品视频免费| 老汉色老汉首页a亚洲| 亚洲不卡av中文在线| 日本www在线视频| 亚洲日韩Av中文字幕无码| 欧美国产精品不卡在线观看 | 亚洲成人黄色在线| 97青青青国产在线播放| 无码AV日韩一二三区| 97视频在线精品国自产拍| 日本免费精品| 国产丝袜精品| 久久永久精品免费视频| 日本欧美午夜| 中国毛片网| 久久久国产精品免费视频| 最新午夜男女福利片视频| 高清欧美性猛交XXXX黑人猛交| 国产日韩欧美精品区性色| 亚洲精品男人天堂| 国产国产人在线成免费视频狼人色| 国产精品欧美激情| 波多野结衣亚洲一区| 日韩高清欧美|