鄭 陣,吳世林
(武漢紡織大學(xué),湖北 武漢 430200)
隨著計(jì)算機(jī)軟件技術(shù)的發(fā)展,能夠幫助人們驗(yàn)證設(shè)計(jì)的仿真軟件應(yīng)運(yùn)而生,改進(jìn)仿真軟件、提高仿真質(zhì)量、追求仿真效果已成為目前研究熱點(diǎn)。目前許多學(xué)者采用Proteus軟件仿真電路,如文獻(xiàn)[1]中使用Proteus軟件仿真音頻電路,來(lái)輔助音樂(lè)點(diǎn)陣頻譜設(shè)計(jì);對(duì)于三維機(jī)械仿真系統(tǒng),部分學(xué)者采用Unity3D引擎開(kāi)發(fā),如文獻(xiàn)[2]中作者利用Unity3D軟件設(shè)計(jì)數(shù)控車床切削過(guò)程動(dòng)態(tài)仿真系統(tǒng),以虛擬仿真的方式模擬了數(shù)控機(jī)床實(shí)際運(yùn)行效果。
傳統(tǒng)仿真技術(shù)常?;趩蝹€(gè)軟件獨(dú)立運(yùn)行,該方式只針對(duì)設(shè)備單一方面進(jìn)行仿真,具有單一實(shí)時(shí)仿真、實(shí)用性強(qiáng)以及操作簡(jiǎn)便等特點(diǎn)。但其缺陷在于單一的仿真無(wú)法模擬設(shè)備整體運(yùn)行效果,缺乏全面性以及完整性,無(wú)法達(dá)到人們獲取設(shè)備全局仿真數(shù)據(jù)的要求。
針對(duì)這一現(xiàn)狀,本文以非金屬激光雕刻機(jī),即一種小型的二氧化碳激光雕刻機(jī)為例,提出數(shù)字聯(lián)合仿真的研究思路,將Proteus和Unity3D引擎優(yōu)勢(shì)互補(bǔ),實(shí)現(xiàn)電路、機(jī)械的聯(lián)合仿真。之所以選擇該種激光雕刻機(jī)為例,是因?yàn)槠渚哂胁僮鞅憬?、成本低、可塑性?qiáng)等優(yōu)勢(shì)。實(shí)驗(yàn)結(jié)果表明,該聯(lián)合仿真系統(tǒng)可以較快的驗(yàn)證電路設(shè)計(jì)、程序設(shè)計(jì)及機(jī)械設(shè)計(jì)的可行性,大大的縮短了項(xiàng)目開(kāi)發(fā)周期,為解決機(jī)電一體化設(shè)備生產(chǎn)設(shè)計(jì)時(shí)的技術(shù)難點(diǎn)提供支撐平臺(tái)。
文中的聯(lián)合仿真是一種新型的仿真方式,針對(duì)于機(jī)電一體化設(shè)備,主要利用Proteus電路仿真軟件和Unity3D軟件。Proteus是一種專門仿真電路的仿真軟件,可用于處理器和外圍電路的仿真,也可以根據(jù)需要設(shè)計(jì)出特定的仿真元件。Unity3D是一款三維可視化開(kāi)發(fā)3D應(yīng)用工具,采用C#編程,可用于設(shè)計(jì)三維機(jī)械仿真系統(tǒng)。如圖1所示,文中實(shí)現(xiàn)聯(lián)合仿真的步驟為:
圖1 聯(lián)合仿真方法圖
第一步:在Proteus軟件中設(shè)計(jì)出激光雕刻機(jī)元件,然后在Visual Studio中使用C++語(yǔ)言編寫元件模型代碼,生成元件模型文件。
第二步:在Proteus設(shè)計(jì)出激光雕刻機(jī)元件的外圍控制電路,再結(jié)合激光雕刻機(jī)元件,完成設(shè)備的電路原理仿真。
第三步:在SolidWorks中設(shè)計(jì)激光雕刻機(jī)三維模型,將設(shè)計(jì)好的模型在3DMax中進(jìn)行貼圖后倒入到Unity3D軟件中,使用C#語(yǔ)言給模型編寫控制腳本和通訊腳本等,在 Unity3D軟件中完成機(jī)械仿真。
第四步:Proteus軟件中的電路仿真系統(tǒng)和Unity3D軟件中的三維機(jī)械仿真系統(tǒng)是通過(guò)本地網(wǎng)絡(luò)通訊實(shí)現(xiàn)數(shù)據(jù)交互,實(shí)現(xiàn)兩者內(nèi)部模塊數(shù)據(jù)統(tǒng)一,完成聯(lián)合仿真。
文中所研究的實(shí)例是二氧化碳激光雕刻機(jī),一種小型的非金屬激光雕刻機(jī),可在木板、皮革、塑料等非金屬材料上進(jìn)行雕刻。如圖2,二氧化碳激光雕刻機(jī)主要由控制柜、激光器電源、二氧化碳激光管、水箱、反光鏡、X軸電機(jī)、Y軸電機(jī)、激光頭等組成。當(dāng)?shù)窨虣C(jī)工作時(shí),激光器電源通過(guò)給二氧化碳激光管的放電管供電,使激光管產(chǎn)生激光,激光經(jīng)過(guò)反射鏡反射到激光頭,再經(jīng)過(guò)激光頭中凸透鏡聚焦后射至被雕刻物上,在物體表面留下碳化黑印;激光雕刻機(jī)中的控制器根據(jù)加工圖案的數(shù)據(jù)控制XY兩個(gè)方向的步進(jìn)電機(jī),步進(jìn)電機(jī)的運(yùn)動(dòng)驅(qū)動(dòng)激光頭,從而雕刻出圖案。
圖2 激光雕刻機(jī)結(jié)構(gòu)圖
本文所設(shè)計(jì)的聯(lián)合仿真系統(tǒng)主要由兩部分組成,一部分是在Proteus中設(shè)計(jì)的激光雕刻機(jī)電路仿真,另一部分是在Unity3D中設(shè)計(jì)的激光雕刻機(jī)三維機(jī)械仿真。
如圖3所示,在Proteus軟件中設(shè)計(jì)的激光雕刻機(jī)元件由虛擬激光模塊、虛擬步進(jìn)電機(jī)驅(qū)動(dòng)器模塊、虛擬步進(jìn)電機(jī)模塊、通訊模塊等組成。在仿真過(guò)程中,單片機(jī)給激光雕刻機(jī)元件的虛擬步進(jìn)電機(jī)驅(qū)動(dòng)器模塊發(fā)送脈沖信號(hào)、方向信號(hào),信號(hào)經(jīng)過(guò)接口邏輯處理后到達(dá)虛擬的步進(jìn)電機(jī)驅(qū)動(dòng)模塊、虛擬步進(jìn)電機(jī)模塊,步進(jìn)電機(jī)的位置轉(zhuǎn)換成激光頭在繪圖面板中的位置,激光模塊再根據(jù)激光控制接口電平的高低,判斷是否在繪圖面板上留下碳化黑印。通訊模塊則是將接口信號(hào)轉(zhuǎn)換成電機(jī)和激光的控制信息,并將該控制信息發(fā)送給Unity3D中的激光雕刻機(jī)仿真系統(tǒng)。
圖3 系統(tǒng)整體結(jié)構(gòu)圖
在Unity3D中設(shè)計(jì)的激光雕刻機(jī)三維機(jī)械仿真系統(tǒng)由通訊模塊、激光控制模塊、碰撞限位檢測(cè)模塊等組成。在聯(lián)合仿真時(shí),該仿真系統(tǒng)的控制信息都來(lái)源于第一部分Proteus 中的激光雕刻機(jī)元件,二者之間通過(guò)Socket TCP傳輸控制信息,傳輸?shù)目刂菩畔⒌臄?shù)據(jù)經(jīng)過(guò)信號(hào)解析,直接控制激光頭運(yùn)動(dòng),當(dāng)激光打開(kāi)時(shí),會(huì)在激光頭運(yùn)動(dòng)的路徑上留下燒制的印記。該系統(tǒng)中還設(shè)置有碰撞檢測(cè)單元,用來(lái)監(jiān)測(cè)激光頭是否運(yùn)動(dòng)到限位位置,用來(lái)模擬現(xiàn)實(shí)中激光雕刻機(jī)的限位開(kāi)關(guān)。
Proteus軟件和Unity3D軟件作為兩款不同的軟件,軟件本身不提供數(shù)據(jù)交互接口,若想實(shí)現(xiàn)兩者之間的通訊,必須在兩個(gè)軟件中設(shè)計(jì)數(shù)據(jù)交互接口。
本文使用的通訊方式是本地網(wǎng)絡(luò)通訊,Proteus軟件中的雕刻機(jī)元件為客戶端,Unity3D中的激光雕刻機(jī)系統(tǒng)為服務(wù)端。Proteus中的數(shù)據(jù)接口是在雕刻機(jī)的元件模型中實(shí)現(xiàn)的,在設(shè)計(jì)雕刻機(jī)元件模型時(shí),使用C++語(yǔ)言編程元件模型代碼并調(diào)用winsock相關(guān)函數(shù),即可完成客戶端的通訊接口,作為服務(wù)端的Unity3D軟件是通過(guò)使用C#語(yǔ)言調(diào)用winsock相關(guān)函數(shù)編寫腳本實(shí)現(xiàn)通訊接口??蛻舳伺c服務(wù)端之間通過(guò)Socket TCP進(jìn)行數(shù)據(jù)交互,實(shí)現(xiàn)聯(lián)合仿真。
Proteus作為一種能夠仿真電路的軟件,其內(nèi)部提供許多常用的元件庫(kù)供電路仿真使用,也可以自己設(shè)計(jì)元件進(jìn)行電路仿真。對(duì)于本文涉及到的激光雕刻機(jī)的仿真,較難找到合適元件。本文采取自主設(shè)計(jì)元件的方法,在Proteus中設(shè)計(jì)元件的接口、界面等,再使用C++語(yǔ)言編寫元件模型代碼,生成元件模型文件進(jìn)行仿真。
如圖4所示是在Proteus中設(shè)計(jì)的雕刻機(jī)元件,該元件的左上側(cè)是激光雕刻機(jī)的接口,中間部分為畫布,用來(lái)模擬激光在被雕刻物上燒制的碳化黑印,下側(cè)用來(lái)顯示虛擬激光模塊的激光頭在畫布中的實(shí)時(shí)位置。
圖4 激光雕刻機(jī)元件圖
圖5為元件的屬性編輯框,在屬性編輯框中可以設(shè)置內(nèi)嵌在元件中的虛擬步進(jìn)電機(jī)驅(qū)動(dòng)器模塊、虛擬激光模塊、通訊模塊等模塊的參數(shù)。
圖5 元件屬性圖
圖6為激光雕刻機(jī)元件的接口定義部分,XPUL、XDIR、YPUL、YDIR為兩個(gè)虛擬步進(jìn)電機(jī)模塊的控制接口;LASER為虛擬激光模塊的控制接口;XZero+、XZero-、XZero+、XZero-為激光雕刻機(jī)的限位信號(hào)接口;NetState為激光雕刻機(jī)元件通訊模塊的網(wǎng)絡(luò)狀況顯示接口;Reset為激光雕刻機(jī)復(fù)位接口。
圖6 元件接口圖
在Proteus中設(shè)計(jì)好元件后不能直接使用,需要使用C++編寫元件模型代碼,生成模型文件后才能在Proteus中進(jìn)行仿真。本文使用VC++調(diào)用Proteus VSM SDK 編寫元件模型程序,Proteus VSM SDK提供電氣模型抽象類和繪圖模型抽象類等許多抽象類,電氣模型抽象類實(shí)現(xiàn)元件接口信號(hào)處理,繪圖模型抽象類實(shí)現(xiàn)元件模型繪制。將模型程序編譯成動(dòng)態(tài)鏈接庫(kù),放在Proteus工程目錄下,在仿真該工程時(shí),Proteus軟件會(huì)加載動(dòng)態(tài)鏈接庫(kù)中的函數(shù),實(shí)現(xiàn)程序中編寫的功能。
圖6為測(cè)試激光雕刻機(jī)元件的仿真電路圖,控制器采用STC89C52單片機(jī),單片機(jī)的所有控制信號(hào)都使用了光耦進(jìn)行隔離,從光耦輸出的信號(hào)線直接連接到雕刻機(jī)元件接口,構(gòu)成雕刻機(jī)外圍控制電路。
電路設(shè)計(jì)完成后需要編寫單片機(jī)程序,在Keil軟件中使用C語(yǔ)言編寫單片機(jī)程序并生成.hex執(zhí)行文件。Proteus軟件中裝載此執(zhí)行文件,可以觀察到程序運(yùn)行效果。
單片機(jī)程序中包含有直線插補(bǔ)功能和圓弧插補(bǔ)功能,調(diào)用相關(guān)功能函數(shù)可以控制激光頭做直線運(yùn)動(dòng)或圓弧運(yùn)動(dòng),將雕刻的圖案數(shù)據(jù)在程序中以數(shù)組的方式存儲(chǔ),逐一獲取數(shù)據(jù)并調(diào)用插補(bǔ)函數(shù)可以完成整個(gè)圖案的雕刻。例如,將“仿真”字樣轉(zhuǎn)換成圖案數(shù)據(jù),并寫入到單片機(jī)程序中,運(yùn)行程序,程序運(yùn)行的效果如圖7所示。
圖7 Proteus仿真電路圖
本系統(tǒng)三維機(jī)械仿真部分在Unity3D環(huán)境下開(kāi)發(fā),建模軟件為SolidWorks,渲染優(yōu)化軟件為3DMax。如圖8所示,三維機(jī)械模型使用SolidWorks軟件設(shè)計(jì),將設(shè)計(jì)好了的三維模型導(dǎo)入到3DMax軟件中進(jìn)行模型渲染和貼圖處理,再將渲染了的模型轉(zhuǎn)換成fbx格式文件導(dǎo)入U(xiǎn)nity3D中,通過(guò)C#語(yǔ)言編寫相關(guān)控制腳本,實(shí)現(xiàn)激光雕刻機(jī)運(yùn)行的動(dòng)作。
圖8 雕刻機(jī)三維模型設(shè)計(jì)流程圖
為了使仿真能夠更加逼真的還原現(xiàn)實(shí)中激光雕刻機(jī)的實(shí)際運(yùn)行狀況,需要在Unity3D中給雕刻機(jī)添加激光效果,激光效果分為激光束效果、激光火花效果、碳化黑印效果。當(dāng)激光打開(kāi)時(shí),激光器會(huì)發(fā)出激光束,在Unity3D中使用類似激光的圖片對(duì)激光束模型進(jìn)行貼圖處理后,可產(chǎn)生逼真的激光束效果;當(dāng)激光束接觸到被雕刻物時(shí),會(huì)產(chǎn)生激光花火,在Unity3D中的使用粒子系統(tǒng)制作可以制作激光火花效果;當(dāng)激光束接觸被雕刻物后,會(huì)產(chǎn)生碳化黑印,在Unity3D中使用Trail Renderer組件實(shí)現(xiàn)碳化黑印效果,該組件是一種用于制作運(yùn)動(dòng)物體拖尾的組件,激光的強(qiáng)度可以通過(guò)設(shè)置拖尾的寬度來(lái)模擬。從圖9可以看出,當(dāng)激光雕刻機(jī)工作時(shí),激光效果真實(shí)。
圖9 激光效果圖
圖10為三維激光雕刻機(jī)系統(tǒng)功能圖,系統(tǒng)分為手動(dòng)模式和自動(dòng)模式。手動(dòng)模式不與Proteus中的激光雕刻機(jī)元件通訊,該模式下可以通過(guò)界面按鈕調(diào)節(jié)激光強(qiáng)度,控制激光頭運(yùn)動(dòng)、激光打開(kāi)關(guān)閉;當(dāng)系統(tǒng)在自動(dòng)模式下運(yùn)行時(shí),三維機(jī)械仿真系統(tǒng)與Proteus元件進(jìn)行通訊,Proteus元件中的通訊模塊的會(huì)將雕刻機(jī)接口電平的實(shí)時(shí)狀態(tài)以數(shù)據(jù)幀的形式發(fā)送到三維機(jī)械仿真系統(tǒng)的通訊模塊中,三維機(jī)械仿真模型系統(tǒng)解析該數(shù)據(jù)幀后,將數(shù)據(jù)同步到內(nèi)部的虛擬步進(jìn)電機(jī)模塊、虛擬激光模塊等,C#腳本再根據(jù)模塊中的數(shù)據(jù)控制激光雕刻機(jī)進(jìn)行雕刻。
圖10 系統(tǒng)功能圖
當(dāng)兩個(gè)系統(tǒng)進(jìn)行聯(lián)合仿真時(shí),Proteus軟件中的激光雕刻機(jī)元件會(huì)在仿真開(kāi)始時(shí)連接到Unity3D三維機(jī)械仿真系統(tǒng),在仿真過(guò)程中,兩系統(tǒng)通過(guò)通訊模塊進(jìn)行數(shù)據(jù)交互,使兩系統(tǒng)的內(nèi)部虛擬模塊數(shù)據(jù)保持一致。
對(duì)聯(lián)合仿真系統(tǒng)進(jìn)行實(shí)驗(yàn),將“l(fā)aser”單詞轉(zhuǎn)換成圖案數(shù)據(jù),寫入單片機(jī)程序,開(kāi)始仿真,如圖11和圖12所示,分別是Proteus電路仿真系統(tǒng)和Unity3D軟件中的三維機(jī)械仿真系統(tǒng)仿真結(jié)束的效果圖,兩圖結(jié)果表示,在對(duì)兩系統(tǒng)進(jìn)行聯(lián)合仿真時(shí),兩系統(tǒng)可以通過(guò)通訊模塊進(jìn)行數(shù)據(jù)交互,達(dá)到雕刻軌跡完全一致的效果,說(shuō)明聯(lián)合仿真系統(tǒng)的數(shù)據(jù)接口穩(wěn)定性高、無(wú)數(shù)據(jù)丟失現(xiàn)象,因此這種電路仿真聯(lián)合機(jī)械仿真的方式可以做到全面仿真機(jī)電一體化設(shè)備,為設(shè)備設(shè)計(jì)提供依據(jù)。
圖11 Proteus仿真效果圖
圖12 三維機(jī)械仿真效果圖
本文設(shè)計(jì)了基于Proteus和Unity3D的激光雕刻機(jī)聯(lián)合仿真系統(tǒng),前者主要實(shí)現(xiàn)電路仿真,后者則實(shí)現(xiàn)機(jī)械三維仿真,二者通過(guò)實(shí)時(shí)數(shù)據(jù)交互達(dá)到狀態(tài)統(tǒng)一的效果。該設(shè)計(jì)將單片機(jī)、電路仿真、三維模型設(shè)計(jì)、計(jì)算機(jī)軟件設(shè)計(jì)、三維機(jī)械仿真結(jié)合在一起,打破了傳統(tǒng)電路仿真或機(jī)械仿真的局限性,該系統(tǒng)在完全脫離實(shí)物的情況下就驗(yàn)證電路、程序、機(jī)械設(shè)計(jì)的可行性,開(kāi)創(chuàng)了一種新型仿真模式。