汪華健,汪志鋒
(上海第二工業(yè)大學(xué),上海 201209)
隨著科學(xué)技術(shù)的不斷發(fā)展,自動化生產(chǎn)線越來越普及,與此同時PLC編程控制自動化生產(chǎn)也廣泛應(yīng)用于人們生活的方方面面,對于該方面的人才培養(yǎng)需求也在增加。
但是目前我國高校中的PLC實(shí)驗(yàn)教學(xué)存在一些設(shè)備上問題,如需求量大、能夠提供更新硬件機(jī)會較少、所需要的實(shí)驗(yàn)設(shè)備價格昂貴;學(xué)校的設(shè)備提供給學(xué)生實(shí)驗(yàn)時,學(xué)生很少有接觸相關(guān)操作,器材的損壞率比較高且難維護(hù);這也導(dǎo)致了各高校各個需要實(shí)驗(yàn)教學(xué)專業(yè)的可以使用的器材是越來越少,達(dá)不到很好的教學(xué)需求,從而實(shí)驗(yàn)教學(xué)效果并不顯著。
針對這一難題,提出應(yīng)用虛擬現(xiàn)實(shí)技術(shù)來開發(fā)一個虛擬仿真實(shí)訓(xùn)系統(tǒng),能夠在一定程度上解決器材缺乏的問題;運(yùn)用虛擬現(xiàn)實(shí)技術(shù)可以模擬具有一些人類所擁有的感知功能,比如聽覺、視覺、觸覺等;當(dāng)模擬環(huán)境的真實(shí)性足夠時,用戶可以在虛擬現(xiàn)實(shí)世界體驗(yàn)到最真實(shí)的感受,讓人有種身臨其境的感覺; 并且虛擬現(xiàn)實(shí)技術(shù)能夠?qū)崿F(xiàn)人機(jī)交互,使用戶在操作過程中,可以隨意操作并且得到環(huán)境最真實(shí)的反饋[1]。
研究中以德國費(fèi)斯托的MPS實(shí)訓(xùn)教學(xué)系統(tǒng)為原型,該教學(xué)系統(tǒng)主要由工件傳動系統(tǒng)和控制系統(tǒng)組成,按照一定的工藝順序,通過氣動、電動機(jī)、傳感器等電氣設(shè)備將一個物料分揀循環(huán)單元引入到氣壓傳動控制課程綜合實(shí)訓(xùn)中[4]。通過對該系統(tǒng)的學(xué)習(xí)能夠很好地提升相關(guān)專業(yè)學(xué)生的專業(yè)知識和動手能力。
研究中仿真教學(xué)系統(tǒng)框架如圖1所示,主要包括三個部分:上位機(jī)、PLC和虛擬環(huán)境(下位機(jī)仿真軟件端),上位機(jī)需要使用通訊線連接PLC進(jìn)行編程,而PLC還通過通訊模塊連接仿真軟件端,在使用時用戶通過鼠標(biāo)鍵盤等外設(shè)控制上位機(jī)進(jìn)行編程,編程后通過外設(shè)在虛擬環(huán)境中實(shí)時驗(yàn)證編程正確性,以達(dá)到PLC編程實(shí)驗(yàn)?zāi)康摹?/p>
圖1 系統(tǒng)框架圖
其中上位機(jī)主要用于PLC組態(tài)及編程,應(yīng)該通過電腦RJ45端口(網(wǎng)線端口)連接好PLC的通訊口或者使用串口與PLC通訊口連接;上位機(jī)應(yīng)安裝有PLC編程軟件如TIA Protal或者WinCC等,并在使用前與通信模塊完成編程前的一系列的配置,如設(shè)置計算機(jī)和PLC的IP地址在同一網(wǎng)段上、通訊校驗(yàn)一致等。
由于各種類型PLC使用通訊協(xié)議不同,所以通信模塊需要根據(jù)PLC型號的不同來確定模塊采用協(xié)議轉(zhuǎn)換網(wǎng)關(guān)的型號。
仿真軟件主要中包括虛擬場景、交互界面以及通信數(shù)據(jù)處理;虛擬場景中的設(shè)備和實(shí)驗(yàn)換環(huán)境可采用3D建模,而交互界面的搭建以及通信數(shù)據(jù)的處理可在Unity3d引擎開發(fā)平臺中編寫腳本實(shí)現(xiàn)。
由于德國FESTO公司的MPS模塊化生產(chǎn)加工實(shí)訓(xùn)系統(tǒng)實(shí)際包含工位較多,研究中選取典型的4個工位進(jìn)行虛擬場景的搭建:①提取單元:通過氣閥將工件吸取到指定位置;②加工單位:工件鉆孔等加工工藝;③檢測單位:工件加工是否符合要求的檢測;④分類單位:對工件進(jìn)行分類。
通過對整個仿真教學(xué)系統(tǒng)進(jìn)行分析,確定開發(fā)流程有以下幾步:①建立虛擬MPS生產(chǎn)線的四個工位的模型,需要最大限度地模擬模型的動畫,提高軟件的仿真性;②分析MPS生產(chǎn)線,將其PLC的輸入輸出點(diǎn)(IO點(diǎn))表格化,方便數(shù)據(jù)處理;③模型和動畫導(dǎo)出為Unity3D可用的FBX格式,并導(dǎo)入Unity 軟件中處理;④合理分配模型和UI界面占比,搭建軟件最合適的操作界面;⑤編寫腳本實(shí)現(xiàn)利用PLC控制虛擬生產(chǎn)線這一功能;⑥軟件的測試及BUG修復(fù)。
仿真軟件端中的虛擬設(shè)備的建模直接決定著系統(tǒng)的仿真性,雖然Unity3D自帶建模功能,但是其不能夠滿足軟件的仿真性,所以需要使用一款強(qiáng)大的建模軟件來相應(yīng)的模型,并且模型能夠?qū)險nity3D中使用??商峁┻x擇的軟件為3Dmax和Maya,3Dmax是Autodesk開發(fā)的一款建模軟件,相對于Maya來說,盡管3Dmax操作方面比較生硬,但是3Dmax學(xué)習(xí)起來要稍微簡單一些,有很多功能也比較智能,而Maya操作比較靈活,但功能比較零碎;綜合考慮需要自動化生產(chǎn)線模型的復(fù)雜程度、軟件學(xué)習(xí)的復(fù)雜程度,3Dmax更加適合作為本次開發(fā)的建模軟件。另外,3ds Max具有非常好的性價比,它提供的功能遠(yuǎn)比自身的低價位強(qiáng)大得多,可以大大降低生產(chǎn)成本,對硬件系統(tǒng)的要求也相對較低[8]。一般的通用配置可以滿足學(xué)習(xí)和使用的需要。
近年來,虛擬現(xiàn)實(shí)技術(shù)的高速發(fā)展也使得相關(guān)開發(fā)工具的選擇有很多,例如Unity3D、虛幻引擎、Vega Prime、WTK、VirTools等。
研究中選擇的是Unity3D開發(fā)引擎。其對比與其它工具主要有以下幾個有點(diǎn):
1)Unity3D為開發(fā)者提供了免費(fèi)版本,該免費(fèi)版本完全以滿足仿真軟件端的開發(fā)需求,從而降低開發(fā)成本
2)軟件支持2D、3D開發(fā),對各類常見的媒體文件都能夠兼容,不僅能夠建立一些模型,還能導(dǎo)入外部3D模型使用;
3)本軟件使用的編程語言有C# 和JavaScript,其中C#在學(xué)習(xí)和使用等方面相對較為簡單[2];
4)Unity3D軟件提供Asset Store功能,可以在商店選用一些擴(kuò)展資源來節(jié)省開發(fā)時間等。
在三維模型建立之前,首先需要的是對于實(shí)際設(shè)施設(shè)備的深入分析以及外形素材收集,研究中通過3DMAX 軟件對待仿真的設(shè)施設(shè)備—MPS模塊化實(shí)訓(xùn)教學(xué)系統(tǒng)進(jìn)行了建模工作,在模型制作完成之后。即可對模型進(jìn)行貼圖制作,貼圖制作要充分運(yùn)用3DSMAX 軟件的UVW 貼圖功能,保證貼圖與真實(shí)情況盡可能的相符,如圖2所示為使用3DMAX所建立的模型。
圖2 三維模型圖
模型建立主要對各種元器件進(jìn)行建模,建模完成需要對單元中的工藝流程進(jìn)行分析,如圖3所示,以壓力檢測單元所需要實(shí)現(xiàn)的功能為例:①夾緊氣缸夾緊到達(dá)工位的工件(左邊);②轉(zhuǎn)動臂帶動工件轉(zhuǎn)動到壓力檢測氣缸下方(中間位置);③壓力檢測氣缸下降到位,壓力檢測裝置檢測壓力,檢測結(jié)束檢測氣缸上升;④轉(zhuǎn)動臂繼續(xù)轉(zhuǎn)動至與下一工位交接處(右邊位置);⑤夾緊氣缸伸出并松開工件,送至下一站,轉(zhuǎn)動臂返回初始位置。
圖3 檢測單元示圖
使用Unity3D來開發(fā)仿真軟件端,主要進(jìn)行以下一些步驟:
1)搭建交互界面, 提供軟件操作基礎(chǔ)功能,軟件進(jìn)入試驗(yàn)后的交互界面如圖二;
2)將模型導(dǎo)入Unity3D,并對模型進(jìn)一步優(yōu)化,提高仿真性;
3)編寫軟件腳本,實(shí)現(xiàn)控制模型動畫的邏輯以及和PLC通訊的數(shù)據(jù)處理;
4)測試仿真軟件端,主要進(jìn)行PLC對仿真軟件端的實(shí)時控制測試。
軟件的人機(jī)交互界面(UI)的設(shè)計如圖4所示,其中左邊是軟件端的首頁UI界面,右邊是軟件的模型操作UI界面。
圖4 仿真軟件端UI界面示圖
軟件中設(shè)計手動控制和自動控制;手動控制用于模擬PLC信號控制,來對各個實(shí)驗(yàn)單元進(jìn)行學(xué)習(xí);自動控制用于控制真實(shí)PLC信號控制,來調(diào)試用戶編寫的PLC程序。而動畫按鈕主要用于預(yù)覽整個工作流程,復(fù)位按鈕主要實(shí)現(xiàn)整個模型動畫的初始化。
PLC教學(xué)中很重要的一個教學(xué)點(diǎn)是對輸入(Input)輸出(Output)點(diǎn)的分析,軟件將輸入輸出點(diǎn)(IO點(diǎn))作為UI的一部分,展示給用戶,如圖1所示,在PLC傳到仿真軟件端中Q點(diǎn)(輸出點(diǎn))的信號為1時,其對應(yīng)在模塊界面中輸入指示燈(Q)變亮,并進(jìn)行表1中對應(yīng)各個Q點(diǎn)的動作。
表1 輸出點(diǎn)(Q點(diǎn))功能表
當(dāng)模塊中檢測到各個不同狀態(tài)時,對應(yīng)輸出指示燈(I點(diǎn))變亮(I點(diǎn)值為1),其中每個狀態(tài)與表1中狀態(tài)一一對應(yīng)。
表1 輸入點(diǎn)(I點(diǎn))功能表
將模型導(dǎo)入Unity3D后主要是對模型材質(zhì)和動畫的調(diào)整,將模型優(yōu)化,然后通過腳本實(shí)現(xiàn)點(diǎn)擊按鈕出現(xiàn)相應(yīng)的動畫以及IO點(diǎn)按鍵和燈的變化。例如將整體流程動畫做好,例如通過以下示例腳本實(shí)現(xiàn)點(diǎn)擊動畫播放整體流程:
public void AniplayOnClick()
{
PlayButton.SetColor(true); ∥點(diǎn)擊后按鈕顏色改變
PlayAni[Temp0.clip.name].speed=1; ∥設(shè)置播放速度
PlayAni.Play();∥動畫播放
}
腳本編寫好后需要將動畫以及UI中的按鈕對應(yīng)綁定才能實(shí)現(xiàn)UI控制動畫;在所有功能完成后,將整個項(xiàng)目打包成計算機(jī)可運(yùn)行程序EXE并安裝在下位機(jī)上。
要使整個軟件功能完整,需要實(shí)現(xiàn)Unity3D軟件與PLC的通訊,這也是整個項(xiàng)目的關(guān)鍵技術(shù),研究中使用的PLC是西門子S7-300系列的PLC;PLC所發(fā)出的是信號以PROFINET的形式,而在Unity開發(fā)的仿真軟件端設(shè)有通信接口,通信協(xié)議為TCP /IP,要實(shí)現(xiàn)PLC和軟件端的實(shí)時通訊,主要將PROFINET的信號形式通過通信協(xié)議轉(zhuǎn)換為TCP /IP協(xié)議的信號傳輸。
根據(jù)通信協(xié)議轉(zhuǎn)換的需要,研究中選取泗博TS-180網(wǎng)關(guān)和卓嵐5143L網(wǎng)關(guān)來處理協(xié)議轉(zhuǎn)換,編程計算機(jī)將編譯好的PLC程序下載到西門子S7-300PLC中去,西門子S7-300通過以太網(wǎng)與TS-180網(wǎng)關(guān)進(jìn)行通訊連接,TS180的目的是將S7-300的PROFINET形式的信號轉(zhuǎn)換成RS232信號。TS-180網(wǎng)關(guān)通過RS232通訊線與RS232轉(zhuǎn)TCP網(wǎng)關(guān)的RS232接口連接。RS232轉(zhuǎn)TCP網(wǎng)關(guān)將RS232信號轉(zhuǎn)換成TCP信號,再通過網(wǎng)線將TCP接口與安裝有虛擬軟件端的電腦網(wǎng)口連接,通過TCP/IP可以處理來自傳輸層的請求,將請求分組裝入IP數(shù)據(jù)報,填充包頭,選擇去往信宿機(jī)的路徑,然后將數(shù)據(jù)報發(fā)往適當(dāng)?shù)木W(wǎng)絡(luò)接口;并且能夠很好地處理路徑、流控、擁塞等問題[3];從而完成數(shù)據(jù)的雙向傳輸,如圖4所示。
圖5 通訊模塊示意圖
通過對Unity3D軟件與PLC之間的通訊進(jìn)行分析得知,將PLC發(fā)出(接受)PROFINET的信號形式可以通過硬件(通訊網(wǎng)關(guān))轉(zhuǎn)換為TCP /IP協(xié)議的信號,而TCP /IP協(xié)議一般電腦都是支持的,其中可以通過Socket來實(shí)現(xiàn)數(shù)據(jù)傳輸;Socket是應(yīng)用層與TCP/IP協(xié)議族通信的中間軟件抽象層,它可以創(chuàng)建一個套接字,或通過網(wǎng)絡(luò)讀寫的文件描述符,socket、listen、connect等一系列操作系統(tǒng)提供的接口用于實(shí)現(xiàn)TCP協(xié)議相關(guān)的功能。在開發(fā)中,Socket其實(shí)就是一個門面模式,它把復(fù)雜的TCP/IP協(xié)議族隱藏在Socket接口后面,對用戶來說,一組簡單的接口就是全部,讓Socket去組織數(shù)據(jù),以符合指定的協(xié)議;而TCP協(xié)議可以讓PLC和Unity之間通過三次握手建立穩(wěn)定的通信信道,發(fā)送字節(jié)流。
系統(tǒng)完成開發(fā)后進(jìn)行測試,測試中使用西門子S7-300進(jìn)行測試;首先要對上位機(jī)進(jìn)行配置,設(shè)置上位機(jī)的IP地址與TS-180、PLC同一網(wǎng)段,然后在博途編程軟件中的網(wǎng)絡(luò)視圖界面將TS-180與PLC組態(tài),并將TS-180分配給PLC,分配完成后雙擊 TS-180進(jìn)入配置界面,在TS-180配置界面修改TS-180 IP地址與PLC在同一網(wǎng)段,再配置TS-180和擴(kuò)展IO口地址一致。
圖6 組態(tài)配置示意圖
按照系統(tǒng)框架圖所示連接好上位機(jī)、PLC和下位機(jī)后,開始對仿真軟件端進(jìn)行測試,軟件首頁可通過點(diǎn)擊預(yù)覽觀看整個工作流程,也可點(diǎn)擊單個單元進(jìn)入模型操作界面,如圖7所示(以壓力檢測單元為例)。
圖7 操作界面示意圖
模型操作界面中設(shè)有手動模式控制和自動模式控制,在手動模式下,左邊的Q點(diǎn)按鈕可以點(diǎn)擊,模擬PLC輸出到軟件中的信號,右邊的I點(diǎn)為各個傳感器的狀態(tài),當(dāng)I點(diǎn)變?yōu)榫G色時,對應(yīng)值為1;手動模式主要的作用也就是讓使用者更好地了解MPS生產(chǎn)線以及直觀的看到PLC的指令會如何控制執(zhí)行對象,如圖8所示,通過手動模式操作轉(zhuǎn)動臂到達(dá)壓力檢測氣缸的下方。
圖8 手動模式操作演示圖
在自動模式下,需要通過通訊模塊連接上位機(jī),在上位機(jī)中提前寫好PLC程序?qū)懭氲絇LC中,點(diǎn)擊自動模式可以理解為啟動按鈕,其中Q點(diǎn)變?yōu)椴豢牲c(diǎn)擊狀態(tài),其功能和I點(diǎn)類似,Q點(diǎn)亮(紅色變?yōu)楹谏?表示PLC輸出點(diǎn)值為1;整個單元的模型應(yīng)該按照其工藝流程自動運(yùn)行,如圖9所示,通過自動模式將工件送到下一工位(最右邊)處。
圖9 自動模式操作演示圖
系統(tǒng)測試除了基本的BUG測試與修復(fù),還要通過讓高校自動化學(xué)生經(jīng)過多次對虛擬場景的控制實(shí)驗(yàn)測試,按照對實(shí)際生產(chǎn)線的了解來完成對整個系統(tǒng)的操作,來確定系統(tǒng)是否可穩(wěn)定運(yùn)行。
圖10 系統(tǒng)運(yùn)行示圖
經(jīng)過學(xué)生實(shí)際使用測試,學(xué)生們可以通過手動模式直觀感受被控對象的運(yùn)行,在短時間內(nèi)了解系統(tǒng)的功能,還可以通過自動模式來檢查自己對MPS生產(chǎn)線的了解,檢驗(yàn)自己的PLC編程能力。將整個系統(tǒng)運(yùn)用到實(shí)驗(yàn)課程中時,即使得教學(xué)資源得到了豐富,又在一定程度上提升了教學(xué)效果。
仿真系統(tǒng)經(jīng)過測試后,總結(jié)了一些實(shí)驗(yàn)中遇到的問題,以及對改進(jìn)方法的設(shè)想。
當(dāng)前的教學(xué)系統(tǒng)還沒有做到適配所有的PLC,但是各個類型的PLC發(fā)出和接收的信號只是協(xié)議上的區(qū)別,其它都是大同小異,在今后的進(jìn)一步研究中,要去適配更多類型的PLC。
當(dāng)前軟件中的模型不能做到選用特定幾個出來進(jìn)行單獨(dú)實(shí)驗(yàn),實(shí)際上的MPS自動化加工生產(chǎn)線的每個模塊可以單獨(dú)使用,也可以任意拼裝使用,所以軟件在進(jìn)一步更新中需要實(shí)現(xiàn)這個功能。