王佩玉,陳振中
(東華大學(xué) 機械工程學(xué)院,上海 201620)
近年來,在物聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等新技術(shù)被廣泛應(yīng)用于制造業(yè)的背景下,制造系統(tǒng)集成式創(chuàng)新不斷發(fā)展,基于虛擬調(diào)試技術(shù)對制造系統(tǒng)的有效監(jiān)督和控制,逐漸成為國內(nèi)外技術(shù)人員研究的熱點[1-4]。Lechler等[5]概述了虛擬調(diào)試的科學(xué)方法以及應(yīng)用實例;Vermaak等[6]通過虛擬調(diào)試優(yōu)化了可重構(gòu)裝配系統(tǒng);Metzner等[7]將虛擬調(diào)試的適用性進一步擴展到員工或客戶培訓(xùn)、混合系統(tǒng)分析和安全驗證等領(lǐng)域;鄭魁敬等[8]將虛擬調(diào)試技術(shù)應(yīng)用到工業(yè)機器人磨削系統(tǒng);禹鑫燚等[9]研究了面向智能制造加工的虛擬調(diào)試技術(shù);王春曉[10]將虛擬調(diào)試應(yīng)用到數(shù)控機床領(lǐng)域。
目前國外的虛擬調(diào)試技術(shù)較為成熟,Tecnomatix公司開發(fā)的一款用于虛擬調(diào)試解決方案的軟件Process Designer &Process Simulate,可以在虛擬環(huán)境中調(diào)試自動化控制邏輯和PLC(programmable logic controller)代碼,支持與西門子虛擬PLC通信,但與其他平臺的虛擬PLC存在通信瓶頸。Emulate3D公司開發(fā)的Demo3D仿真軟件,可以通過其PLC虛擬電控技術(shù),展示PLC控制邏輯,更專注于物流運動過程中的調(diào)試與仿真,卻難以實現(xiàn)該軟件與工業(yè)機器人的交互?;谖鏖T子PLM(product lifecycle management)工業(yè)軟件NX所集成的機電一體化概念設(shè)計系統(tǒng)MCD(mechatronics concept designer),側(cè)重于對機械設(shè)計結(jié)構(gòu)的合理性以及控制程序正確性的分析,并可結(jié)合西門子博途軟件平臺進行虛擬調(diào)試驗證,但難以與其他平臺的軟件進行聯(lián)合調(diào)試。
上述虛擬調(diào)試軟件所偏向的領(lǐng)域各有差別,難以滿足與自動化系統(tǒng)中不同平臺虛擬控制器交互的需要,也難以實現(xiàn)與工業(yè)機器人的一體化虛擬調(diào)試。因此,本文提出一種基于Unity 3D引擎的跨平臺虛擬調(diào)試系統(tǒng)設(shè)計方法,在Unity 3D中建立工業(yè)設(shè)備模型庫,并通過腳本實現(xiàn)設(shè)備的動作。利用D-H(Denavit-Hartenberg)參數(shù)法對安川MH-12工業(yè)機器人進行數(shù)學(xué)分析,完成了機器人的虛擬建模和運動控制。基于Visual Studio 2017平臺,采用C#語言開發(fā)了交互控制軟件,并利用TCP/IP(transmission control protocol /internet protocol)協(xié)議下的Socket通信實現(xiàn)了三菱虛擬PLC與Unity 3D的數(shù)據(jù)交互。通過生產(chǎn)線調(diào)試驗證系統(tǒng)設(shè)計的有效性。
在自動化生產(chǎn)線上,需要PLC、工業(yè)機器人、工控設(shè)備等協(xié)同工作,一方面需要在虛擬調(diào)試系統(tǒng)中構(gòu)建虛擬模型,另一方面要實現(xiàn)控制器I/O(input/output)信號的交互。虛擬模型采用SolidWorks軟件建模,經(jīng)過3ds Max進行處理后,可導(dǎo)入Unity 3D進行開發(fā);控制器的I/O信號由虛擬PLC模擬,并通過開發(fā)的交互控制軟件與Unity 3D的數(shù)據(jù)實現(xiàn)交互。虛擬調(diào)試系統(tǒng)的總體框架如圖1所示。
圖1 虛擬調(diào)試系統(tǒng)總體框架Fig.1 General framework of virtual commissioning system
由圖1可知,虛擬調(diào)試系統(tǒng)主要由通信模塊、工業(yè)設(shè)備模型庫、工業(yè)機器人模塊、用戶界面、搭建虛擬生產(chǎn)線組成。通信模塊主要負責虛擬PLC的I/O信息與Unity 3D交互;工業(yè)設(shè)備模型庫包含傳感器、電機、輸送帶等自動化生產(chǎn)線中常用的設(shè)備;工業(yè)機器人模塊首先對工業(yè)機器人進行數(shù)學(xué)分析,其次完成虛擬工業(yè)機器人的建模,最后編寫腳本實現(xiàn)機器人的運動并設(shè)計機器人的控制界面;用戶界面的設(shè)計旨在提升虛擬系統(tǒng)的用戶體驗,主要包括登錄界面和主界面;通過搭建虛擬生產(chǎn)線以完成調(diào)試任務(wù)。
基于.NET框架并采用C#語言在Visual Studio 2017平臺中開發(fā)交互控制軟件,利用TCP/IP協(xié)議下的Socket通信,以交互控制軟件為服務(wù)端和Unity 3D為客戶端,建立服務(wù)端與客戶端之間的連接,進行數(shù)據(jù)信息的交互。
采用C#命名空間System.Net.Sockets中的Socket類來接收和發(fā)送數(shù)據(jù),完成交互控制軟件與Unity 3D的通信,數(shù)據(jù)交互程序時序流程如圖2所示。由圖2可知:交互控制軟件作為服務(wù)端,首先創(chuàng)建負責監(jiān)聽的Socket,并通過Bind函數(shù)綁定IP地址和端口號,然后通過Listen函數(shù)開啟監(jiān)聽,等待客戶端的連接請求;Unity 3D客戶端創(chuàng)建負責通信的Socket,IP地址和端口號與服務(wù)端保持一致,通過Connect函數(shù)向服務(wù)端發(fā)送連接請求,此時服務(wù)端響應(yīng)客戶端的Socket請求,通過Accept函數(shù)與客戶端建立連接,用于傳輸數(shù)據(jù)信息。
圖2 數(shù)據(jù)交互程序時序圖Fig.2 Program timing of data interaction
選擇在Visual Studio平臺上采用C#語言開發(fā)交互控制軟件,Visual Studio是目前應(yīng)用廣泛的Windows平臺應(yīng)用程序的集成開發(fā)環(huán)境,擁有完善的開發(fā)工具集以及軟件開發(fā)生命周期中所需要的大部分工具,軟件設(shè)計主要包括登錄驗證、主界面、調(diào)試功能以及通信設(shè)置共4個模塊。
工業(yè)設(shè)備模型庫包含傳感器、電機、輸送帶等自動化生產(chǎn)線中常用的設(shè)備,生產(chǎn)線上的設(shè)備采用SolidWorks繪制,并需要轉(zhuǎn)化為Unity 3D支持的fbx文件。Unity 3D支持多種語言作為腳本語言,目前C#語言的使用最為廣泛,并且開發(fā)得最為完善,因此采用C#語言對模型腳本進行開發(fā)[11]。通過編寫C#腳本并將其掛載到設(shè)備模型上,實現(xiàn)虛擬設(shè)備的執(zhí)行動作,然后建立執(zhí)行機構(gòu)的動作與PLC信息的映射關(guān)系,在項目運行期間即可實現(xiàn)所需的功能。
以輸送機為例,首先在SolidWorks中建立其三維模型,并通過3ds Max處理,在不影響整體效果的前提下,盡量減少模型的面數(shù),刪除看不見的面或重疊的面以提高系統(tǒng)仿真的流暢性[12],然后將模型保存為fbx文件并導(dǎo)入到Unity 3D中。輸送機模型如圖3所示。在自動化生產(chǎn)上往往需要重復(fù)使用一些工業(yè)設(shè)備,為了提高開發(fā)效率以及方便模型管理,可以采用Unity 3D中的預(yù)制體(Perfab)來輔助開發(fā)。在Assets目錄下創(chuàng)建預(yù)制體庫,將制作好的預(yù)制體放入,調(diào)用Instantiate()方法即可生成生產(chǎn)線所需要的設(shè)備。輸送機的輸送動作采用表面貼圖的方式實現(xiàn),使其發(fā)生偏移,視覺上產(chǎn)生轉(zhuǎn)動的效果[13]。
圖3 輸送機模型Fig.3 Conveyor model
以安川MH-12工業(yè)機器人為研究對象,利用D-H參數(shù)法建立連桿坐標系[14]。連桿坐標系如圖4所示,其中,a1=155 mm,a2=614 mm,a3=200 mm,d4=640 mm,連桿參數(shù)如表1所示。連桿的參數(shù)定義如下:
表1 MH-12機器人的連桿參數(shù)Table 1 Link parameters of MH-12 robot
圖4 MH-12機器人連桿坐標系Fig.4 Link-pole coordinate of MH-12 robot
ai為沿Xi軸從Zi移動到Zi+1的距離;
αi為繞Xi軸從Zi旋轉(zhuǎn)到Zi+1的角度;
di為沿Zi軸從Xi-1移動到Xi的距離;
θi為繞Zi軸從Xi-1旋轉(zhuǎn)到Xi的角度。
虛擬工業(yè)機器人的建模需要通過模型樹來實現(xiàn),采用建立空對象的方法,將工業(yè)機器人的模型關(guān)節(jié)作為空對象的子物體,并將空對象的坐標系方向和位置與關(guān)節(jié)模型保持一致[15]。根據(jù)D-H參數(shù)來設(shè)置工業(yè)機器人模型的Transform數(shù)值,最終建立起正確的模型父子關(guān)系。虛擬工業(yè)機器人的模型如圖5所示。
圖5 虛擬工業(yè)機器人模型Fig.5 Virtual industrial robot model
虛擬工業(yè)機器人的6個關(guān)節(jié)軸需要用按鍵或者以滑動條滑動的方式單獨調(diào)節(jié)轉(zhuǎn)動,使機器人運動到指定的關(guān)節(jié)角度。基于Unity 3D的圖形用戶界面系統(tǒng)(UGUI)進行機器人控制界面的設(shè)計。在UGUI中所有控件都會成為畫圖(Canvas)的子對象,并且每一個控件都會包含一個Rect Transform組件,該組件繼承自Transform類,可用于控制UI(user interface)元素的Transform信息。機器人控制界面的設(shè)計主要使用UGUI下的Button控件,并在Inspect面板上綁定C#編寫的腳本代碼,以響應(yīng)Button的觸發(fā)。機器人控制界面如圖6所示。機器人的運動控制主要通過transform.Rotate()函數(shù)來實現(xiàn),末端的位姿信息通過transform.position()以及transform.eulerAngles()函數(shù)實現(xiàn)。
圖6 機器人控制界面Fig.6 Robot control interface
在滿足系統(tǒng)功能的前提下,設(shè)計虛擬調(diào)試系統(tǒng)的交互界面,以提升系統(tǒng)的用戶體驗,是系統(tǒng)開發(fā)的重要環(huán)節(jié)[16]?;赨nity 3D中的開源圖形界面系統(tǒng),設(shè)計虛擬調(diào)試系統(tǒng)的登錄界面和主界面。
登錄界面主要使用InputField控件,Placehoulder和Text是InputFiled子對象,Placehoulder用于顯示默認提示信息的文本框,Text用來顯示用戶輸入的文本框,用戶需要輸入正確的用戶名和密碼才能夠登錄系統(tǒng),當用戶輸入錯誤的賬號和密碼進行登錄時系統(tǒng)會提示登錄失敗的信息。主界面主要使用 Button控件,用戶通過主界面選擇目標場景并進行后續(xù)的操作。
本文選用三菱虛擬PLC,采用三菱官方MX Component組件,實現(xiàn)虛擬PLC與PC機的通信。MX Component組件是三菱官方用于PC與PLC進行通信的組件,握手通信方式簡潔并且兼容多種高級語言。在應(yīng)用MX Component時,首先將設(shè)置界面上的PC side I/F項選擇為GX Simulator 2項,Target Simulator項選擇為Simulator A,CPU Series項用戶可自主選用,然后在Target setting選擇中設(shè)置邏輯站號,最后通過Connect test項進行通信檢測,當通信建立成功后可以看到連接成功的提示。
基于開發(fā)的交互控制軟件,實現(xiàn)三菱GXWorks 2與Unity 3D的通信連接,完成虛擬調(diào)試,具體流程如圖7所示。由圖7可知,首先打開GXWorks 2編寫控制程序,進入模擬狀態(tài),然后打開MX Component設(shè)置通信并測試,最后啟動交互控制軟件,實現(xiàn)三菱GXWorks 2與Unity 3D的通信連接,進行生產(chǎn)線的虛擬調(diào)試。若按照預(yù)期的程序運動,則結(jié)束調(diào)試,否則檢查并修改程序,繼續(xù)調(diào)試。
圖7 虛擬調(diào)試流程圖Fig.7 Flow chart of virtual commissioning
生產(chǎn)線的總體布局如圖8所示。由圖8可知,生產(chǎn)線主要包括加工中心(CNC)、安川MH-12工業(yè)機器人(RB)、板鏈機、輸送機以及外圍的圍欄和DX200控制柜等設(shè)備。其中,板鏈機負責傳送待加工工件,加工中心對工件進行加工,輸送機輸送工件,安川MH-12工業(yè)機器人固定在地面的底座上,其主要功能是從板鏈機上夾持待加工的工件到加工中心,等加工中心完成工件加工后,再將工件夾持至輸送機輸送。
圖8 生產(chǎn)線總體布局圖Fig.8 General layout of production line
生產(chǎn)線的功能流程如圖9所示。由圖9可知:程序開始時執(zhí)行檢測各設(shè)備是否處于原點狀態(tài),如果處于原點狀態(tài),板鏈機開始輸送工件至抓取位置并進入等待狀態(tài);當傳感器檢測到工件到達抓取位置后,RB從板鏈機抓取工件至CNC,CNC開始啟動加工;RB繼續(xù)從板鏈機抓取工件,并等待CNC加工完成后將已加工工件取下,再將待加工工件放入,CNC繼續(xù)加工;RB將已加工的工件放入輸送機,輸送機進行工件輸送,完成一個加工流程。
圖9 生產(chǎn)線功能流程圖Fig.9 Flow chart of production line function
基于跨平臺虛擬調(diào)試系統(tǒng)的設(shè)計,完成生產(chǎn)線的虛擬調(diào)試工作,部分調(diào)試過程如圖10所示,并最終確定虛擬控制器軟元件與機器人輸入輸出的握手信號關(guān)系,如表2所示。
表2 握手信號Table 2 Handshake signals
圖10 虛擬調(diào)試部分過程Fig.10 Partial processes of virtual commissioning
在虛擬調(diào)試過程中,通過觀察系統(tǒng)中工業(yè)機器人以及其他工業(yè)設(shè)備的工作狀態(tài),驗證了PLC程序的正確性,并確定虛擬控制器輸入輸出與機器人輸入輸出的握手信號關(guān)系,提前解決了實際調(diào)試過程中可能存在的問題,提高了自動化生產(chǎn)線項目的整體效率。
本文基于Unity 3D開發(fā)的跨平臺生產(chǎn)線虛擬調(diào)試系統(tǒng),有效實現(xiàn)了三菱虛擬PLC與安川MH-12工業(yè)機器人、傳感器等虛擬設(shè)備的信號交互,完成了自動化生產(chǎn)線的虛擬調(diào)試。在 C#窗體應(yīng)用程序中開發(fā)了交互控制軟件,實現(xiàn)了三菱虛擬PLC與Unity 3D的數(shù)據(jù)交互。對工業(yè)設(shè)備完成了虛擬建模和功能定義,建立了工業(yè)設(shè)備模型庫,用戶可通過簡單的拖拽式操作,完成生產(chǎn)線的搭建。此外,針對安川MH-12工業(yè)機器人進行數(shù)學(xué)分析,設(shè)計控制界面并實現(xiàn)了虛擬仿真功能。為提高用戶的系統(tǒng)體驗感,設(shè)計了虛擬調(diào)試系統(tǒng)的人機交互界面。本文僅對三菱虛擬PLC和安川MH-12工業(yè)機器人進行了研究,基于Unity 3D開發(fā)的跨平臺調(diào)試系統(tǒng),可以集成其他平臺的虛擬PLC以及工業(yè)機器人,對于研究其他平臺的虛擬控制器以及工業(yè)機器人具有一定的實用意義和參考價值,為實現(xiàn)不同平臺虛擬控制器與工業(yè)機器人的自動化生產(chǎn)線調(diào)試提供了一種新思路。