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