摘 要:項(xiàng)目采用計(jì)算機(jī)仿真技術(shù)開(kāi)發(fā)了仿真柔性制造系統(tǒng),本文給出了系統(tǒng)設(shè)計(jì)的總體方案,并對(duì)各模塊功能架構(gòu)進(jìn)行了分析,重點(diǎn)介紹了仿真柔性系統(tǒng)中六自由度機(jī)械手仿真的設(shè)計(jì)與實(shí)現(xiàn)方法。項(xiàng)目解決了學(xué)校仿真柔性生產(chǎn)線教學(xué)實(shí)習(xí)實(shí)訓(xùn)設(shè)備短缺的問(wèn)題,也為工業(yè)FMS系統(tǒng)的調(diào)試和維護(hù)提供了參考和依據(jù)。
關(guān)鍵詞:柔性制造;機(jī)械手;仿真技術(shù)
中圖分類(lèi)號(hào):TH165
柔性制造系統(tǒng)是由統(tǒng)一的信息控制系統(tǒng)、物料儲(chǔ)運(yùn)系統(tǒng)和一組數(shù)字控制加工設(shè)備組成,能適應(yīng)加工對(duì)象變換的自動(dòng)化機(jī)械制造系統(tǒng)(Flexible Manufacturing System,簡(jiǎn)稱(chēng)FMS)。
柔性制造系統(tǒng),自1967年由英國(guó)莫林斯(molins)公司提出以后,至今已發(fā)展了40多年。柔性制造技術(shù)是以數(shù)控技術(shù)為核心,以信息技術(shù)、檢測(cè)技術(shù)、質(zhì)量控制技術(shù)與生產(chǎn)管理技術(shù)相結(jié)合的先進(jìn)制造技術(shù),被世界各國(guó)所重視,并在發(fā)達(dá)國(guó)家的制造業(yè)中得到了廣泛的應(yīng)用。目前我國(guó)汽車(chē)、柴油機(jī)、工程機(jī)械、冷凍機(jī)、兵器、航空、航天等制造業(yè)都已提出對(duì)FMS的需求。但是目前這方面的人才非常缺乏,這就對(duì)于我們學(xué)校傳統(tǒng)的教學(xué)和實(shí)訓(xùn)提出了更高的要求,在目前的實(shí)訓(xùn)環(huán)節(jié)中還不能提供全面的包括加工中心、搬運(yùn)機(jī)器人、數(shù)控機(jī)床、物料傳送、倉(cāng)儲(chǔ)設(shè)備和信息控制系統(tǒng)等先進(jìn)設(shè)備,而且一般生產(chǎn)型FMS系統(tǒng)難以作為實(shí)訓(xùn)設(shè)備使用,生產(chǎn)型FMS初始投資高,占地面積大,即便可以提供這些設(shè)備,往往因?yàn)橄到y(tǒng)已經(jīng)定型,只能進(jìn)行系統(tǒng)演示,而不能讓學(xué)生直接參與系統(tǒng)的設(shè)計(jì)、構(gòu)建、調(diào)試和維護(hù),因此開(kāi)發(fā)FMS仿真系統(tǒng)具有一定的現(xiàn)實(shí)意義,可以讓學(xué)生學(xué)習(xí)機(jī)器人的基本編程、PLC的基本編程、數(shù)控加工的基本編程以及柔性制造系統(tǒng)的搭建、調(diào)試和維護(hù)等方面的知識(shí),掌握車(chē)間自動(dòng)化調(diào)試改造和應(yīng)急處理等技能。本項(xiàng)目結(jié)合面向?qū)ο蠹夹g(shù)、OpenGL三維圖形、計(jì)算機(jī)仿真、數(shù)控加工技術(shù),在VC++開(kāi)發(fā)環(huán)境下,實(shí)現(xiàn)了柔性制造系統(tǒng)調(diào)試仿真、運(yùn)行仿真等功能,該系統(tǒng)能夠針對(duì)不同的工藝模型、不同的設(shè)備布局獲得不同的加工模擬效果,從而獲得同一個(gè)零件不同的加工方案,以方便獲得滿意的加工方案和模型,有效解決了學(xué)校仿真柔性生產(chǎn)線教學(xué)實(shí)習(xí)實(shí)訓(xùn)設(shè)備短缺的問(wèn)題。
1 仿真柔性制造系統(tǒng)總體設(shè)計(jì)
1.1 系統(tǒng)的總體架構(gòu)
本項(xiàng)目的柔性制造仿真系統(tǒng)以生產(chǎn)中實(shí)際使用的柔性系統(tǒng)為原型進(jìn)行開(kāi)發(fā),主要功能組成模塊包括:信息控制系統(tǒng)、物料儲(chǔ)運(yùn)系統(tǒng)和數(shù)控加工系統(tǒng)。系統(tǒng)可以從立體倉(cāng)庫(kù)里取出毛坯,然后通過(guò)物料儲(chǔ)運(yùn)系統(tǒng)送到數(shù)控機(jī)床上,再啟動(dòng)對(duì)應(yīng)的加工程序就可以加工出不同的零件,適合多種不同工件的批量加工。
圖1 系統(tǒng)總體架構(gòu)
該FMS系統(tǒng)各環(huán)節(jié)結(jié)構(gòu)相對(duì)獨(dú)立,易于實(shí)現(xiàn)模塊化操作,使各站單獨(dú)工作,完成各自的功能:
1.1.1 數(shù)控加工系統(tǒng)
加工系統(tǒng)是整個(gè)柔性制造系統(tǒng)的核心,該系統(tǒng)通常由若干對(duì)工件進(jìn)行加工的數(shù)控機(jī)床和所使用的刀具構(gòu)成。
1.1.2 物料儲(chǔ)運(yùn)系統(tǒng)
物流系統(tǒng)是整個(gè)柔性制造系統(tǒng)的連接紐帶。該系統(tǒng)中的物流系統(tǒng)包括傳輸站、六軸工業(yè)搬運(yùn)機(jī)器手和立體倉(cāng)庫(kù),主要用于將毛坯、半成品零件從倉(cāng)庫(kù)站的毛坯庫(kù)或各緩沖站傳送到每個(gè)加工單元進(jìn)行加工,把加工好的零件傳送到安裝站進(jìn)行安裝,再將安裝好的成品傳送到倉(cāng)庫(kù)站的成品庫(kù)。
1.1.3 信息控制系統(tǒng)
包括兩部分,即過(guò)程控制及過(guò)程監(jiān)控兩個(gè)部分。過(guò)程控制系統(tǒng)連接物料儲(chǔ)運(yùn)系統(tǒng),對(duì)各物料儲(chǔ)運(yùn)過(guò)程進(jìn)行編程,連接機(jī)械手和數(shù)控機(jī)床,按相應(yīng)順序啟動(dòng)機(jī)械手和機(jī)床中的數(shù)控程序。過(guò)程監(jiān)控系統(tǒng)進(jìn)行在線狀態(tài)數(shù)據(jù)采集和處理。
1.2 系統(tǒng)各模塊功能架構(gòu)分析
本系統(tǒng)采用3D開(kāi)發(fā)工具開(kāi)發(fā),具有良好的交互性能。軟件采用模塊化開(kāi)發(fā),各模塊相對(duì)獨(dú)立,可拆解。系統(tǒng)結(jié)構(gòu)圖如圖2所示:
圖2 系統(tǒng)功能框架圖
1.2.1 用戶層
共分9個(gè)子模塊:
(1)PLC指令:用戶從此處導(dǎo)入PLC指令,對(duì)PLC指令保存,刪除等;
(2)毛坯參數(shù):用戶可在此模塊中設(shè)置毛坯的參數(shù),比如長(zhǎng)寬高等;
(3)機(jī)械人指令(1):此為1自由度機(jī)械手,根據(jù)指令將設(shè)定的毛坯推入流水線中;
(4)機(jī)械人指令(6):此為6自由度的機(jī)械手,其作用是根據(jù)指令,取出流水線上中的毛坯,并送到加工中心,等加工中心處理完畢后,再將工件取回流水線上;
(5)加工參數(shù):用戶在此處設(shè)置加工中心一些參數(shù),比如設(shè)定G54,對(duì)刀,刀具半徑等;
(6)數(shù)控加工指令:根據(jù)參數(shù)及數(shù)控加工程序,將毛坯加工成工件,加工完畢,發(fā)送返回信號(hào)給機(jī)械人指令(6)模塊,使其裝工件取回流水線;
(7)機(jī)械人接口(3):此為3自由度機(jī)械手,根據(jù)機(jī)械手指令,將流水線上的工件取出并存儲(chǔ)到立體倉(cāng)庫(kù)中;
(8)倉(cāng)儲(chǔ)控制:主要是用戶對(duì)倉(cāng)庫(kù)工件的處理,如將倉(cāng)庫(kù)中的工件移除等;
(9)場(chǎng)景控制:用戶可通過(guò)此處設(shè)定,從各個(gè)方位觀察場(chǎng)景;
1.2.2 數(shù)據(jù)處理層
(1)送料處理:此處分析機(jī)械手(1)的指令及PLC指令,據(jù)倉(cāng)儲(chǔ)及檢測(cè)測(cè)模塊反饋的信號(hào),做出送料動(dòng)作;
(2)加工切削:包含機(jī)械手(6)的指令分析及數(shù)控加工指令的分析;根據(jù)機(jī)械手指令,發(fā)送信號(hào)至加工中心并將毛坯送入加工中心,加工中心接到毛坯后,分析數(shù)控加工指令,并將毛坯加工成工件,最后發(fā)送加工完畢的信號(hào)至機(jī)械手,讓其取出工件送回流水線;
(3)倉(cāng)儲(chǔ)及檢測(cè):完成機(jī)械手(3)指令的分析,做出倉(cāng)儲(chǔ)動(dòng)作;同時(shí)檢測(cè)倉(cāng)儲(chǔ)情況,并將信號(hào)發(fā)至送料模塊;
(4)OpenGL模型變換:根據(jù)用戶選擇,做出對(duì)應(yīng)的矩陣運(yùn)算;
1.2.3 顯示層
OpenGL模型繪制:實(shí)行OpenGL的繪制,各部件實(shí)現(xiàn)模擬。
圖3 仿真柔性制造系統(tǒng)
2 系統(tǒng)關(guān)鍵技術(shù)的實(shí)現(xiàn)
機(jī)械手及加工平臺(tái)在柔性生產(chǎn)線中共同起著重要的作用。機(jī)械手能夠模仿人手和肩膀的某些動(dòng)作功能,用以按固定程序抓取、搬運(yùn)物件或操作工具。機(jī)械手主要由手部和運(yùn)動(dòng)機(jī)構(gòu)組成。手部是用來(lái)抓持工件的部件;運(yùn)動(dòng)機(jī)構(gòu)使手部完成各種轉(zhuǎn)動(dòng)、移動(dòng)或復(fù)合運(yùn)動(dòng)來(lái)實(shí)現(xiàn)規(guī)定的動(dòng)作,運(yùn)動(dòng)機(jī)構(gòu)的升降、伸縮和旋轉(zhuǎn)等獨(dú)立運(yùn)動(dòng)方式,稱(chēng)為機(jī)械手的自由度,是機(jī)械手設(shè)計(jì)的關(guān)鍵參數(shù),自由度越多,機(jī)械手的靈活性越大,通用性越廣。為了抓取空間中任意位置和方位的物體,需有6個(gè)自由度,本系統(tǒng)即設(shè)計(jì)實(shí)現(xiàn)了一個(gè)6自由度的機(jī)械手。
在Windows環(huán)境下配合Pro/E,使用VisualC++工具調(diào)用OpenGL圖形庫(kù)中的函數(shù),實(shí)現(xiàn)機(jī)械手三維運(yùn)動(dòng)仿真。
OpenGL是SGI公司開(kāi)發(fā)的,作為一種三維工具軟件包在交互式三維圖形建模能力和編程方面具有無(wú)可比擬的優(yōu)越性,可以靈活方便地實(shí)現(xiàn)二維和三維的高級(jí)圖形技術(shù)。由于其強(qiáng)大的圖形功能和跨平臺(tái)的能力,已經(jīng)成為事實(shí)上的圖形標(biāo)準(zhǔn),廣泛應(yīng)用于可視化、實(shí)體造型、CAD/CAM、模擬仿真等諸多領(lǐng)域。目前,Microsoft、SGI、IBM等大公司都采用了OpenGL作為三維圖形標(biāo)準(zhǔn)。特別是隨著PC性能的不斷提升和微軟的加入,使得在微機(jī)上實(shí)現(xiàn)三維真實(shí)感圖形的顯示與交互成為可能。另外,由于系統(tǒng)中涉及較多的機(jī)械手正、逆運(yùn)動(dòng)學(xué)方程求解問(wèn)題,因而采用VC作為編程語(yǔ)言,一方面可以方便地調(diào)用OpenGL圖形庫(kù)函數(shù);另一方面有利于算法的實(shí)現(xiàn)。
2.1 機(jī)械手模型的建立
系統(tǒng)采用Pro/E構(gòu)建機(jī)械手模型,該機(jī)械手屬于垂直多關(guān)節(jié)型,共有六個(gè)自由度,主要包括轉(zhuǎn)動(dòng)基座S軸、下臂傾動(dòng)L軸、上臂傾動(dòng)U軸、手腕俯仰B軸、手腕旋轉(zhuǎn)T軸、手抓開(kāi)合Z軸六個(gè)轉(zhuǎn)動(dòng)軸,每個(gè)轉(zhuǎn)動(dòng)軸可在±90°的范圍內(nèi)運(yùn)動(dòng),重復(fù)定位精度達(dá)±0.5mm,手臂的終端配置可靈活張合的機(jī)械鉗,鉗子在電機(jī)的驅(qū)動(dòng)下,通過(guò)齒輪傳動(dòng)和平行雙曲柄機(jī)構(gòu)自由張合,使機(jī)械手可以模擬人手抓取物件。
圖4 仿真機(jī)械手模型
(1)對(duì)于結(jié)構(gòu)比較復(fù)雜而控制要求簡(jiǎn)單的工作對(duì)象或者其他附件,使用OpenGL直接繪制是一件十分煩瑣的工作。而Pro/E是一個(gè)相當(dāng)好的流行建模工具,通過(guò)對(duì)簡(jiǎn)單幾何形體進(jìn)行并、交、切等布爾運(yùn)算和曲面編輯等功能就能構(gòu)造出復(fù)雜的幾何形體。再通過(guò)一些相關(guān)工具軟件可以生成OpenGL格式的C++數(shù)據(jù)文件,直接導(dǎo)入到VC工程中,稍加修改就可完成復(fù)雜模型的繪制工作。
(2)對(duì)于結(jié)構(gòu)簡(jiǎn)單而控制要求較復(fù)雜的機(jī)械手各軸,可直接使用OpenGL提供的三維建模函數(shù)完成繪制。在此過(guò)程中,對(duì)各軸的縮放、位置、角度的調(diào)整主要使用函數(shù)glScalef(),glTranslatef(),glRotatef()來(lái)完成,為使繪制出來(lái)的各軸形象逼真,可對(duì)各軸進(jìn)行相應(yīng)的材質(zhì)、光照設(shè)置;在進(jìn)行軸之間進(jìn)行裝配時(shí),需要使用矩陣堆棧來(lái)保證預(yù)留對(duì)各軸控制接口的正確性,其函數(shù)原型是glPushMatrix(),glPopMatrix()。另外,本文所介紹的機(jī)械手屬于雙端協(xié)調(diào)工作方式,所以裝配還受到工作模式的動(dòng)態(tài)控制;為使仿真顯示的圖形變化連續(xù),一般使用OpenGL提供的緩存交換函數(shù)auxSwapBuffers()來(lái)實(shí)現(xiàn)雙緩存繪制。
實(shí)現(xiàn)步驟包括:
(1)在CArmView類(lèi)中添加WM_CREATE消息,然后編寫(xiě)OnCreate事件處理程序來(lái)設(shè)置像素格式并創(chuàng)建OpenGL繪制描述表。
(2)在類(lèi)CArmView的成員函數(shù)OnDraw中,添加6自由度機(jī)械手繪制程序。包括機(jī)械手的建模、材質(zhì)、光源位置、背景色,視角程序等。
(3)在CArmView類(lèi)中添加鍵盤(pán)WM_KEYDOWN消息,然后編寫(xiě)OnKeyDown事件處理程序。通過(guò)鍵盤(pán)來(lái)控制視角,比例等設(shè)置。
(4)在CArmView類(lèi)中添加定時(shí)器WM_TIMER消息,然后編寫(xiě)OnTimer事件處理程序。使用SetTimer()函數(shù)設(shè)置定時(shí)器的序號(hào)和記時(shí)周期:一個(gè)周期執(zhí)行OnTimer()函數(shù)一次,各關(guān)節(jié)變量的變化實(shí)時(shí)反饋到視窗中,視窗通過(guò)函數(shù)Invalitate(FALSE)不斷重繪,為了避免顯示動(dòng)畫(huà)時(shí)閃動(dòng),采用雙緩存技術(shù),通過(guò)SwapBuffers0函數(shù)來(lái)實(shí)現(xiàn)。下面是設(shè)置像素格式的核心代碼:
Int CArmView::OnCreat(LPCREATESTRUCT lpCreatStruct)
{
PIXEL FORMATDE SCRIPTOR pdf={
Sizect(PIXELFORMATDESCRIPTOR),1,
PFD_DRAW_TO_WINDOWlPFD_SUPPORT_OPENGLlPFD_DOUBLEBUFFER,
PFD_TYPE_RGBA,24,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,PFD_MAIN_PLANE,0,0,0,0
};
CClientDC clientdc(this);
Int pf=ChoosePixelFormat(clientdc.m_hDC,pfd);
BOOL rt=SetPixelFormt(clientdc.m_hDC,pf,pfd);
Hglrc=wglCreatContect(clientdc.m_hDC);
Return 0;
}
下面是機(jī)械手建模的核心代碼:
Void CArmView::OnDraw(CDC*pDC)
{
CArmDoc*pDoc=GetDocument();
ASSERT_VALID(pDoc);
wglMakeCurrent(Pdc->m_hDC,hglrc);
display();
wglMakeCurrent(Pdc->m_hDC,NULL);
SwapBuffers(Pdc->m_hDC);
}
2.2 機(jī)械手運(yùn)動(dòng)軌跡運(yùn)算
機(jī)器手運(yùn)動(dòng)學(xué)可分為正運(yùn)動(dòng)學(xué)及逆運(yùn)動(dòng)學(xué)。對(duì)機(jī)器手的各個(gè)關(guān)節(jié)坐標(biāo)控制,即操作人員直接指定各關(guān)節(jié)的移動(dòng)長(zhǎng)度或轉(zhuǎn)動(dòng)角度,從而帶動(dòng)末端執(zhí)行器的運(yùn)動(dòng),這稱(chēng)為機(jī)器手的正運(yùn)動(dòng)學(xué)。對(duì)機(jī)器手進(jìn)行直角坐標(biāo)控制的方式,即操作人員指定末端執(zhí)行器所期望的位置和姿態(tài),然后求解出各關(guān)節(jié)需要的移動(dòng)長(zhǎng)度或轉(zhuǎn)動(dòng)角度,從而帶動(dòng)末端執(zhí)行器運(yùn)動(dòng),這稱(chēng)為機(jī)器手的逆運(yùn)動(dòng)學(xué)。
機(jī)械手的軌跡運(yùn)算亦即是對(duì)機(jī)器手的運(yùn)動(dòng)學(xué)求解。主要運(yùn)算包括機(jī)器人在運(yùn)動(dòng)過(guò)程中的位移、速度和加速度。而軌跡規(guī)劃是根據(jù)作業(yè)任務(wù)的要求,計(jì)算出預(yù)期的運(yùn)動(dòng)軌跡。首先對(duì)機(jī)器手的任務(wù)、運(yùn)動(dòng)路徑和軌跡進(jìn)行描述,然后在機(jī)器手運(yùn)動(dòng)學(xué)和動(dòng)力學(xué)的基礎(chǔ)上,研究在關(guān)節(jié)空間和笛卡爾空間中機(jī)器手運(yùn)動(dòng)的軌跡規(guī)劃和軌跡生成方法。通常將機(jī)器手的運(yùn)動(dòng)看作是工具坐標(biāo)系{T}相對(duì)于工作坐標(biāo)系{S}的運(yùn)動(dòng),對(duì)機(jī)械手的安裝任務(wù),需描述它的起始狀態(tài)和目標(biāo)狀態(tài),即工具坐標(biāo)系的起始值{T0}和目標(biāo)值{Tg},其運(yùn)動(dòng)為點(diǎn)對(duì)點(diǎn)的運(yùn)動(dòng);而對(duì)另一些任務(wù),如掃描任務(wù)等,則不僅要規(guī)定機(jī)器手的起始點(diǎn)和終止點(diǎn),而且要指明兩點(diǎn)之間的若干路徑點(diǎn),必須沿特定的路徑約束,其運(yùn)動(dòng)為輪廓運(yùn)動(dòng),按照不同的任務(wù)類(lèi)型,完成任務(wù)中路徑點(diǎn)的確定,是路徑規(guī)劃的主要任務(wù)。根據(jù)指定的末端執(zhí)行器所期望的位置和姿態(tài),求解各個(gè)關(guān)節(jié)的旋轉(zhuǎn)角度
機(jī)械手運(yùn)動(dòng)軌跡計(jì)算的核心代碼如下:
//計(jì)算雅克比矩陣的 時(shí)間微分
// double *len--連桿長(zhǎng)度; double *the--關(guān)節(jié)角度;
//double *dThe--關(guān)節(jié)角速度;MAT *dJaco--雅克比矩陣的時(shí)間微分
void dJacobianMatrix(double *len,double *the,double *dThe,MAT *dJaco){
double l3s23, l3c23;
double aa, bb;
double cc, dd;
l3s23 = len[3]*sin(the[1]+the[2]);
l3c23 = len[3]*cos(the[1]+the[2]);
aa = len[2]*cos(the[1]) + l3c23;
bb = len[2]*sin(the[1]) + l3s23;
cc = len[2]*cos(the[1])*dThe[1] + l3c23*(dThe[1]+dThe[2]);
dd = len[2]*sin(the[1])*dThe[1] + l3s23*(dThe[1]+dThe[2]);
MATelem(*dJaco,1,1)= -aa*cos(the[0])*dThe[0] + dd*sin(the[0]);
MATelem(*dJaco,1,2)= bb*sin(the[0])*dThe[0] - cc*cos(the[0]);
MATelem(*dJaco,1,3)= l3s23*sin(the[0])*dThe[0]-l3c23*cos(the[0])*(dThe[1]+dThe[2]);
MATelem(*dJaco,2,1)= -aa*sin(the[0])*dThe[0] - dd*cos(the[0]);
MATelem(*dJaco,2,2)= -bb*cos(the[0])*dThe[0] - cc*sin(the[0]);
MATelem(*dJaco,2,3)= -l3s23*cos(the[0])*dThe[0]-l3c23*sin(the[0])*(dThe[1]+dThe[2]);
MATelem(*dJaco,3,1)= 0;
MATelem(*dJaco,3,2)= -dd;
MATelem(*dJaco,3,3)= -l3s23*(dThe[1]+dThe[2]);
}
//計(jì)算末端執(zhí)行器的速度
//MAT*Jaco--雅克比矩陣;double*dThe--各關(guān)節(jié)角速度;
//double*dPos--末端執(zhí)行器的速度
void endVelocity(MAT*Jaco,double*dThe,double*dPos)
{
register int i,j;
int mm,nn;
mm=MATheight(*Jaco);
nn=MATwidth(*Jaco);
for(i= 0;i { dPos[i]=0.0; for(j=0;j dPos[i]+=(MATelem(*Jaco,i+1,j+1)*dThe[j]); } } 2.3 加工平臺(tái)模型的建立 此模塊同樣采用Pro/E構(gòu)建加工平臺(tái)模型,因涉及到工件切削等布爾運(yùn)算,故該模型的數(shù)據(jù)文件統(tǒng)一采用STL格式的后綴文件。建好相關(guān)模型,導(dǎo)出STL文件,通過(guò)代碼載入系統(tǒng)中,并進(jìn)行繪制。繪制的關(guān)鍵代碼如下: //車(chē)床繪制 void CPCVMLatheView::ShowNormal() { //不移動(dòng) 導(dǎo)軌 刀具柜 車(chē)門(mén)2 刀具柜中的刀具 床身1 地板 //尾架 床身2 床身底部 床身后擋板 車(chē)門(mén)移動(dòng) CPCVMLatheDoc*pDoc=GetDocument(); //導(dǎo)軌 if(pDoc->m_bPart[FRONT_DAOGUI]) { glColor3f(pDoc->m_part[FRONT_DAOGUI].m_fColor[0],_ pDoc->m_part[FRONT_DAOGUI].m_fColor[1],_ pDoc->m_part[FRONT_DAOGUI].m_fColor[2]); pDoc->DrawPart(FRONT_DAOGUI); } if(pDoc->m_bPart[BACK_DAOGUI]) { glColor3f(pDoc->m_part[BACK_DAOGUI].m_fColor[0],_ pDoc->m_part[BACK_DAOGUI].m_fColor[1],_ pDoc->m_part[BACK_DAOGUI].m_fColor[2]); } //刀具柜,不移動(dòng) if(pDoc->m_bPart[DAOJUGUI]) { pDoc->DrawPart(DAOJUGUI); //隱藏刀具柜 } //床身 if(pDoc->m_bPart[CHUANGSHEN]) { pDoc->DrawPart(CHUANGSHEN); } //尾架 if(pDoc->m_bPart[WEIJIA]) { //double dx=m_fAngleX =0.0f; //double dy =m_fAngleY=180.0f; if(pDoc->m_bHaveWeijia(m_fAngleX!=0||m_fAngleY!=180.0)) } } ………… 繪制的加工平臺(tái)效果如圖5所示: 圖5 仿真數(shù)控加工平臺(tái) 3 結(jié)束語(yǔ) 本仿真柔性制造系統(tǒng)解決了學(xué)校柔性制造系統(tǒng)教學(xué)培訓(xùn)缺乏設(shè)備的問(wèn)題,對(duì)生產(chǎn)實(shí)踐也具有指導(dǎo)意義,為FMS的設(shè)計(jì)人員提供了參考模型,在仿真環(huán)境中對(duì)FMS進(jìn)行研究,即經(jīng)濟(jì)又靈活。 參考文獻(xiàn): [1]鄧子瓊,劉小寧,何沛仁.柔性制造系統(tǒng)建模及仿真[M].北京:國(guó)防工業(yè)出版社,1993. [2]陸寧,等.貝氏規(guī)則位置序權(quán)法[J].長(zhǎng)安大學(xué)學(xué)報(bào),2004(04). [3]丁國(guó)富.虛擬柔性制造系統(tǒng)仿真研究[J].學(xué)術(shù)動(dòng)態(tài),2006(01). [4]陳蕭楓.柔性制造系統(tǒng)三維動(dòng)畫(huà)仿真的研究[D].廣東:華南理工大學(xué),2002. [5]李剛俊,陳永.機(jī)器人的三維運(yùn)動(dòng)仿真[J].西南交通大學(xué)學(xué)報(bào),2002(03):273-276. 作者簡(jiǎn)介:周文(1968-),女,四川人,信息中心主任,高級(jí)講師,高級(jí)工程師,計(jì)算機(jī)應(yīng)用技術(shù)專(zhuān)業(yè)工學(xué)碩士,研究方向:教學(xué)多媒體制作。 作者單位:沈陽(yáng)市裝備制造工程學(xué)校,沈陽(yáng) 110027