亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于OpenGL車削仿真系統(tǒng)的開發(fā)與研究*

        2018-05-11 07:50:30,,,
        現(xiàn)代機(jī)械 2018年2期
        關(guān)鍵詞:車刀面片毛坯

        ,,,

        (貴州大學(xué) 機(jī)械工程學(xué)院,貴州 貴陽 550025)

        0 引言

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

        1 系統(tǒng)總體框架設(shè)計(jì)

        該系統(tǒng)以VS 2015為開發(fā)平臺(tái),OpenGL為工具,根據(jù)數(shù)控車削加工的特點(diǎn),可將軟件功能分為加工仿真準(zhǔn)備模塊與加工仿真過程模塊;其中加工仿真準(zhǔn)備模塊和加工仿真過程模塊都包含3個(gè)子模塊,如圖1。

        圖1 加工仿真系統(tǒng)架構(gòu)圖

        在加工仿真準(zhǔn)備模塊中包含:圖形顯示模塊,以O(shè)penGL為工具搭建仿真圖形顯示環(huán)境;NC代碼模塊,對(duì)NC代碼進(jìn)行解碼;STL模型模塊,將繪制的刀具以及機(jī)床模型的stl文件進(jìn)行解碼并顯示。

        在加工仿真過程模塊中包含:工件運(yùn)動(dòng)模塊,使工件自轉(zhuǎn),并使刀具和工件擁有獨(dú)立的運(yùn)動(dòng);刀具加工運(yùn)動(dòng)模塊,刀具軌跡會(huì)依據(jù)NC代碼進(jìn)行刀具的運(yùn)動(dòng);毛坯設(shè)計(jì)模塊,基于幾何仿真原理,隨著刀具車削,毛坯逐漸成形。

        2 加工仿真準(zhǔn)備

        要使仿真系統(tǒng)進(jìn)行車削仿真需要前期準(zhǔn)備,包含OpenGL環(huán)境搭建,NC代碼解釋,與stl模型的導(dǎo)入。

        2.1 圖形顯示模塊

        OpenGL被定義為圖形硬件的一種軟件接口,是一個(gè)3D圖形和模型庫,具有高度的可移植性,并且具有非??焖俣?,獨(dú)立于窗口系統(tǒng)和操作系統(tǒng),與硬件無關(guān),OpenGL是個(gè)狀態(tài)機(jī)的概念,通過創(chuàng)建OpenGL的渲染設(shè)備rc,使得OpenGL具有這些狀態(tài)功能,然而此時(shí)所有的狀態(tài)仍是未知的,就需要依次進(jìn)行設(shè)置[5]。

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

        2.2 NC代碼模塊

        NC代碼是從零件圖紙到制成控制介質(zhì)的過程,NC代碼的格式以首字母代表特定功能,N代表的是第幾工步,G代碼是在NC裝置內(nèi)部用來處理軸的移動(dòng)、坐標(biāo)系的設(shè)定等的功能,代碼用G字母和2位數(shù)字表示;M代碼的機(jī)床運(yùn)行是由各開關(guān)的動(dòng)作來控制的,控制主軸的旋轉(zhuǎn)、停止、刀具的更換等,用M字母和2位數(shù)字來表示等。

        本文采用NC代碼實(shí)例:

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

        實(shí)例代碼:

        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);//讀到這一橫行代碼的結(jié)尾

        }

        n=n+1;

        CStringCoordinateX;

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

        rX=_ttof(CoordinateG);

        coor.m_g=rG;

        flag++;//標(biāo)記

        }

        }

        2.3 stl模型模塊

        stl模型文件是計(jì)算機(jī)圖形學(xué)處理CG,數(shù)字幾何處理的最常見文件格式,其文件格式簡(jiǎn)單,是由一系列三角面片構(gòu)成,僅有頂點(diǎn)信息,并沒有光照材質(zhì)等渲染信息,所以在此系統(tǒng)中只需讀取stl模型只需讀取頂點(diǎn)數(shù)據(jù)等幾何信息,不必考慮渲染等解碼部分。

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

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

        參考代碼:

        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 加工仿真過程

        通過仿真系統(tǒng)的前期準(zhǔn)備,就可以實(shí)現(xiàn)車削加工仿真,由于數(shù)控加工的過程是數(shù)控機(jī)床在NC代碼的驅(qū)動(dòng)下帶動(dòng)刀具對(duì)使用夾具固定在工作臺(tái)上的工件,進(jìn)行切削加工的過程,針對(duì)其特點(diǎn),在仿真系統(tǒng)中需要包含刀具運(yùn)動(dòng),工件以及夾具自轉(zhuǎn),毛坯切除的功能[7]。

        3.1 刀具運(yùn)動(dòng)模塊

        圖2 車刀運(yùn)動(dòng)判別

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

        具體的實(shí)現(xiàn)命令如:

        //車刀徑向進(jìn)給運(yùn)動(dòng)

        if(X

        {

        m_X=m_X-V;//車刀徑向進(jìn)給

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

        velocityflag=1;//進(jìn)給標(biāo)記

        }

        3.2 工件運(yùn)動(dòng)模塊

        在仿真系統(tǒng)中,刀具運(yùn)動(dòng)的同時(shí),工件與夾具也要進(jìn)行自轉(zhuǎn)運(yùn)動(dòng),因?yàn)镺penGL是個(gè)狀態(tài)機(jī),旋轉(zhuǎn)、移動(dòng)、平移其運(yùn)動(dòng)操作都會(huì)影響視全局所有元素的狀態(tài),所以需要通過OpenGL中矩陣的壓棧出棧的功能來實(shí)現(xiàn)刀具與工件之間的獨(dú)立運(yùn)動(dòng)。

        在OpenGL中所有的運(yùn)動(dòng)操作都是通過矩陣棧的棧頂來影響圖形的狀態(tài)。如圖3,將開始狀態(tài)定為狀態(tài)1,在變換之前調(diào)用giPushMatrix()壓棧,就會(huì)把當(dāng)前狀態(tài)1壓入第二層,并且棧頂會(huì)有狀態(tài)2,并且棧頂?shù)木仃嚑顟B(tài)2是第二層狀態(tài)1的一份拷貝,所有的內(nèi)容是相同的,此時(shí)所有的矩陣操作都是在狀態(tài)2中完成,通過一系列的矩陣對(duì)所操作的圖形有所改變,而且并不會(huì)影響全局元素的狀態(tài),變換之后,使用glPopMatrix出棧,將上面操作過的狀態(tài)2去掉,之前的狀態(tài)1又放到棧頂,恢復(fù)原來的狀態(tài)。在本文中,通過壓棧出棧操作進(jìn)行刀具運(yùn)動(dòng),從而在刀具的運(yùn)動(dòng)同時(shí),不影響工件與夾具的自轉(zhuǎn)運(yùn)動(dòng)狀態(tài)。

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

        圖3 壓棧出棧圖

        3.3 毛坯設(shè)計(jì)模塊

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

        圖4 毛坯設(shè)計(jì)

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

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

        4 軟件實(shí)現(xiàn)

        在菜單項(xiàng)點(diǎn)擊NC代碼導(dǎo)入,選擇所需的NC代碼導(dǎo)入到系統(tǒng)中,再單擊stl模型,分別將夾具模型與車刀模型添加到系統(tǒng),最后選擇仿真開始,便可實(shí)現(xiàn)車削運(yùn)動(dòng)仿真模擬,軟件實(shí)現(xiàn)效果如圖5。

        圖5 系統(tǒng)運(yùn)行效果

        5 結(jié)束語

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

        [1] 周靜.數(shù)控仿真三維建模及實(shí)現(xiàn)[D].南京:南京理工大學(xué),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] 李春雷.虛擬數(shù)控車削加工誤差建模技術(shù)研究[J].機(jī)械工程與自動(dòng)化,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,F(xiàn)AN J C.Application of OpenGL in NC turning simulation[J].Advanced Materials Research,2012,505:282-286.

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

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

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

        猜你喜歡
        車刀面片毛坯
        熱鍛狀態(tài)鋁合金鍛件毛坯的優(yōu)化方法
        鋁加工(2020年3期)2020-12-13 18:38:03
        初次來壓期間不同頂板對(duì)工作面片幫影響研究
        基于機(jī)器視覺的毛坯件磨削軌跡識(shí)別研究
        基于最短路徑的杠桿毛坯尺寸設(shè)計(jì)
        車床加工外圓中車刀選擇及應(yīng)用
        贏未來(2018年9期)2018-09-25 08:05:02
        基于路徑圖的平面毛坯尺寸基準(zhǔn)的研究
        探討數(shù)控車刀與普通車刀的互換性及區(qū)別
        螺紋車刀專利技術(shù)綜述
        甜面片里的人生
        幸福家庭(2016年3期)2016-04-05 03:47:08
        青海尕面片
        91视频爱爱| 亚洲av午夜成人片精品电影| 国产精品三级在线不卡| 丰满人妻中文字幕一区三区| 无码aⅴ精品一区二区三区浪潮| 午夜不卡av免费| 91精品啪在线观看国产色| 97超碰国产一区二区三区| 国产精品一二三区亚洲| 国产成人午夜高潮毛片| 亚洲av无码国产剧情| 岛国熟女一区二区三区| 亚洲午夜久久久精品国产| 国内免费自拍9偷1拍| 国产亚洲精品a片久久久| 欲妇荡岳丰满少妇岳| 免费无遮挡毛片中文字幕| av中文字幕性女高清在线| 麻豆最新国产av原创| 芒果乱码国色天香| 色丁香色婷婷| 国产成人亚洲合色婷婷| 自拍视频在线观看国产| 久久伊人精品一区二区三区| 久久久久亚洲av无码a片软件| 国产呦系列视频网站在线观看| 日韩十八禁在线观看视频| 亚洲中文字幕久久精品品| 在线精品一区二区三区| 日日摸夜夜添夜夜添无码免费视频| 无码一区久久久久久久绯色AV| 一片内射视频在线观看| 91日韩东京热中文字幕| 男女后进式猛烈xx00动态图片 | 亚洲综合天堂一二三区| 久久天堂一区二区三区av| 88久久精品无码一区二区毛片| 国产av综合一区二区三区最新| 水蜜桃视频在线观看入口| 天天碰免费上传视频| 欧美国产小视频|