鄭 陣,吳世林
(武漢紡織大學,湖北 武漢 430200)
隨著計算機軟件技術的發展,能夠幫助人們驗證設計的仿真軟件應運而生,改進仿真軟件、提高仿真質量、追求仿真效果已成為目前研究熱點。目前許多學者采用Proteus軟件仿真電路,如文獻[1]中使用Proteus軟件仿真音頻電路,來輔助音樂點陣頻譜設計;對于三維機械仿真系統,部分學者采用Unity3D引擎開發,如文獻[2]中作者利用Unity3D軟件設計數控車床切削過程動態仿真系統,以虛擬仿真的方式模擬了數控機床實際運行效果。
傳統仿真技術常常基于單個軟件獨立運行,該方式只針對設備單一方面進行仿真,具有單一實時仿真、實用性強以及操作簡便等特點。但其缺陷在于單一的仿真無法模擬設備整體運行效果,缺乏全面性以及完整性,無法達到人們獲取設備全局仿真數據的要求。
針對這一現狀,本文以非金屬激光雕刻機,即一種小型的二氧化碳激光雕刻機為例,提出數字聯合仿真的研究思路,將Proteus和Unity3D引擎優勢互補,實現電路、機械的聯合仿真。之所以選擇該種激光雕刻機為例,是因為其具有操作便捷、成本低、可塑性強等優勢。實驗結果表明,該聯合仿真系統可以較快的驗證電路設計、程序設計及機械設計的可行性,大大的縮短了項目開發周期,為解決機電一體化設備生產設計時的技術難點提供支撐平臺。
文中的聯合仿真是一種新型的仿真方式,針對于機電一體化設備,主要利用Proteus電路仿真軟件和Unity3D軟件。Proteus是一種專門仿真電路的仿真軟件,可用于處理器和外圍電路的仿真,也可以根據需要設計出特定的仿真元件。Unity3D是一款三維可視化開發3D應用工具,采用C#編程,可用于設計三維機械仿真系統。如圖1所示,文中實現聯合仿真的步驟為:

圖1 聯合仿真方法圖
第一步:在Proteus軟件中設計出激光雕刻機元件,然后在Visual Studio中使用C++語言編寫元件模型代碼,生成元件模型文件。
第二步:在Proteus設計出激光雕刻機元件的外圍控制電路,再結合激光雕刻機元件,完成設備的電路原理仿真。
第三步:在SolidWorks中設計激光雕刻機三維模型,將設計好的模型在3DMax中進行貼圖后倒入到Unity3D軟件中,使用C#語言給模型編寫控制腳本和通訊腳本等,在 Unity3D軟件中完成機械仿真。
第四步:Proteus軟件中的電路仿真系統和Unity3D軟件中的三維機械仿真系統是通過本地網絡通訊實現數據交互,實現兩者內部模塊數據統一,完成聯合仿真。
文中所研究的實例是二氧化碳激光雕刻機,一種小型的非金屬激光雕刻機,可在木板、皮革、塑料等非金屬材料上進行雕刻。如圖2,二氧化碳激光雕刻機主要由控制柜、激光器電源、二氧化碳激光管、水箱、反光鏡、X軸電機、Y軸電機、激光頭等組成。當雕刻機工作時,激光器電源通過給二氧化碳激光管的放電管供電,使激光管產生激光,激光經過反射鏡反射到激光頭,再經過激光頭中凸透鏡聚焦后射至被雕刻物上,在物體表面留下碳化黑印;激光雕刻機中的控制器根據加工圖案的數據控制XY兩個方向的步進電機,步進電機的運動驅動激光頭,從而雕刻出圖案。

圖2 激光雕刻機結構圖
本文所設計的聯合仿真系統主要由兩部分組成,一部分是在Proteus中設計的激光雕刻機電路仿真,另一部分是在Unity3D中設計的激光雕刻機三維機械仿真。
如圖3所示,在Proteus軟件中設計的激光雕刻機元件由虛擬激光模塊、虛擬步進電機驅動器模塊、虛擬步進電機模塊、通訊模塊等組成。在仿真過程中,單片機給激光雕刻機元件的虛擬步進電機驅動器模塊發送脈沖信號、方向信號,信號經過接口邏輯處理后到達虛擬的步進電機驅動模塊、虛擬步進電機模塊,步進電機的位置轉換成激光頭在繪圖面板中的位置,激光模塊再根據激光控制接口電平的高低,判斷是否在繪圖面板上留下碳化黑印。通訊模塊則是將接口信號轉換成電機和激光的控制信息,并將該控制信息發送給Unity3D中的激光雕刻機仿真系統。

圖3 系統整體結構圖
在Unity3D中設計的激光雕刻機三維機械仿真系統由通訊模塊、激光控制模塊、碰撞限位檢測模塊等組成。在聯合仿真時,該仿真系統的控制信息都來源于第一部分Proteus 中的激光雕刻機元件,二者之間通過Socket TCP傳輸控制信息,傳輸的控制信息的數據經過信號解析,直接控制激光頭運動,當激光打開時,會在激光頭運動的路徑上留下燒制的印記。該系統中還設置有碰撞檢測單元,用來監測激光頭是否運動到限位位置,用來模擬現實中激光雕刻機的限位開關。
Proteus軟件和Unity3D軟件作為兩款不同的軟件,軟件本身不提供數據交互接口,若想實現兩者之間的通訊,必須在兩個軟件中設計數據交互接口。
本文使用的通訊方式是本地網絡通訊,Proteus軟件中的雕刻機元件為客戶端,Unity3D中的激光雕刻機系統為服務端。Proteus中的數據接口是在雕刻機的元件模型中實現的,在設計雕刻機元件模型時,使用C++語言編程元件模型代碼并調用winsock相關函數,即可完成客戶端的通訊接口,作為服務端的Unity3D軟件是通過使用C#語言調用winsock相關函數編寫腳本實現通訊接口。客戶端與服務端之間通過Socket TCP進行數據交互,實現聯合仿真。
Proteus作為一種能夠仿真電路的軟件,其內部提供許多常用的元件庫供電路仿真使用,也可以自己設計元件進行電路仿真。對于本文涉及到的激光雕刻機的仿真,較難找到合適元件。本文采取自主設計元件的方法,在Proteus中設計元件的接口、界面等,再使用C++語言編寫元件模型代碼,生成元件模型文件進行仿真。
如圖4所示是在Proteus中設計的雕刻機元件,該元件的左上側是激光雕刻機的接口,中間部分為畫布,用來模擬激光在被雕刻物上燒制的碳化黑印,下側用來顯示虛擬激光模塊的激光頭在畫布中的實時位置。

圖4 激光雕刻機元件圖
圖5為元件的屬性編輯框,在屬性編輯框中可以設置內嵌在元件中的虛擬步進電機驅動器模塊、虛擬激光模塊、通訊模塊等模塊的參數。

圖5 元件屬性圖
圖6為激光雕刻機元件的接口定義部分,XPUL、XDIR、YPUL、YDIR為兩個虛擬步進電機模塊的控制接口;LASER為虛擬激光模塊的控制接口;XZero+、XZero-、XZero+、XZero-為激光雕刻機的限位信號接口;NetState為激光雕刻機元件通訊模塊的網絡狀況顯示接口;Reset為激光雕刻機復位接口。

圖6 元件接口圖
在Proteus中設計好元件后不能直接使用,需要使用C++編寫元件模型代碼,生成模型文件后才能在Proteus中進行仿真。本文使用VC++調用Proteus VSM SDK 編寫元件模型程序,Proteus VSM SDK提供電氣模型抽象類和繪圖模型抽象類等許多抽象類,電氣模型抽象類實現元件接口信號處理,繪圖模型抽象類實現元件模型繪制。將模型程序編譯成動態鏈接庫,放在Proteus工程目錄下,在仿真該工程時,Proteus軟件會加載動態鏈接庫中的函數,實現程序中編寫的功能。
圖6為測試激光雕刻機元件的仿真電路圖,控制器采用STC89C52單片機,單片機的所有控制信號都使用了光耦進行隔離,從光耦輸出的信號線直接連接到雕刻機元件接口,構成雕刻機外圍控制電路。
電路設計完成后需要編寫單片機程序,在Keil軟件中使用C語言編寫單片機程序并生成.hex執行文件。Proteus軟件中裝載此執行文件,可以觀察到程序運行效果。
單片機程序中包含有直線插補功能和圓弧插補功能,調用相關功能函數可以控制激光頭做直線運動或圓弧運動,將雕刻的圖案數據在程序中以數組的方式存儲,逐一獲取數據并調用插補函數可以完成整個圖案的雕刻。例如,將“仿真”字樣轉換成圖案數據,并寫入到單片機程序中,運行程序,程序運行的效果如圖7所示。

圖7 Proteus仿真電路圖
本系統三維機械仿真部分在Unity3D環境下開發,建模軟件為SolidWorks,渲染優化軟件為3DMax。如圖8所示,三維機械模型使用SolidWorks軟件設計,將設計好了的三維模型導入到3DMax軟件中進行模型渲染和貼圖處理,再將渲染了的模型轉換成fbx格式文件導入Unity3D中,通過C#語言編寫相關控制腳本,實現激光雕刻機運行的動作。

圖8 雕刻機三維模型設計流程圖
為了使仿真能夠更加逼真的還原現實中激光雕刻機的實際運行狀況,需要在Unity3D中給雕刻機添加激光效果,激光效果分為激光束效果、激光火花效果、碳化黑印效果。當激光打開時,激光器會發出激光束,在Unity3D中使用類似激光的圖片對激光束模型進行貼圖處理后,可產生逼真的激光束效果;當激光束接觸到被雕刻物時,會產生激光花火,在Unity3D中的使用粒子系統制作可以制作激光火花效果;當激光束接觸被雕刻物后,會產生碳化黑印,在Unity3D中使用Trail Renderer組件實現碳化黑印效果,該組件是一種用于制作運動物體拖尾的組件,激光的強度可以通過設置拖尾的寬度來模擬。從圖9可以看出,當激光雕刻機工作時,激光效果真實。

圖9 激光效果圖
圖10為三維激光雕刻機系統功能圖,系統分為手動模式和自動模式。手動模式不與Proteus中的激光雕刻機元件通訊,該模式下可以通過界面按鈕調節激光強度,控制激光頭運動、激光打開關閉;當系統在自動模式下運行時,三維機械仿真系統與Proteus元件進行通訊,Proteus元件中的通訊模塊的會將雕刻機接口電平的實時狀態以數據幀的形式發送到三維機械仿真系統的通訊模塊中,三維機械仿真模型系統解析該數據幀后,將數據同步到內部的虛擬步進電機模塊、虛擬激光模塊等,C#腳本再根據模塊中的數據控制激光雕刻機進行雕刻。

圖10 系統功能圖
當兩個系統進行聯合仿真時,Proteus軟件中的激光雕刻機元件會在仿真開始時連接到Unity3D三維機械仿真系統,在仿真過程中,兩系統通過通訊模塊進行數據交互,使兩系統的內部虛擬模塊數據保持一致。
對聯合仿真系統進行實驗,將“laser”單詞轉換成圖案數據,寫入單片機程序,開始仿真,如圖11和圖12所示,分別是Proteus電路仿真系統和Unity3D軟件中的三維機械仿真系統仿真結束的效果圖,兩圖結果表示,在對兩系統進行聯合仿真時,兩系統可以通過通訊模塊進行數據交互,達到雕刻軌跡完全一致的效果,說明聯合仿真系統的數據接口穩定性高、無數據丟失現象,因此這種電路仿真聯合機械仿真的方式可以做到全面仿真機電一體化設備,為設備設計提供依據。

圖11 Proteus仿真效果圖

圖12 三維機械仿真效果圖
本文設計了基于Proteus和Unity3D的激光雕刻機聯合仿真系統,前者主要實現電路仿真,后者則實現機械三維仿真,二者通過實時數據交互達到狀態統一的效果。該設計將單片機、電路仿真、三維模型設計、計算機軟件設計、三維機械仿真結合在一起,打破了傳統電路仿真或機械仿真的局限性,該系統在完全脫離實物的情況下就驗證電路、程序、機械設計的可行性,開創了一種新型仿真模式。