程嘉豪,杜寶江
(200093 上海市 上海理工大學 機械工程學院)
隨著自動化生產(chǎn)的不斷發(fā)展,工業(yè)機器人和PLC 已經(jīng)成為現(xiàn)代工業(yè)生產(chǎn)中不可或缺的一部分。在高校,對學生在工業(yè)機器人PLC 控制應(yīng)用能力上的培養(yǎng)變得越來越重要。高校開展PLC 控制實驗的目的在于培養(yǎng)學生在機電自動控制中的理論結(jié)合實踐的工程應(yīng)用能力。在前期階段,考慮到電氣設(shè)備的危險性和學生對電氣原理及操作的不熟練,使用虛擬PLC 控制虛擬設(shè)備來進行教學與實驗。之后,學生需要進一步使用實物PLC來進行接線編程的實操訓練。但由于學生實操編程經(jīng)驗不足,往往容易發(fā)生誤操作和控制錯誤[1],引起設(shè)備損壞,尤其是高成本的大型設(shè)備,如工業(yè)機器人等[2]。
目前,高校里的實物PLC 控制實驗的控制對象主要為一些簡易被控裝置,如電機、信號燈等。對于接近實際的被控對象,如機器人、自動生產(chǎn)線等大型設(shè)備,由于成本、場地以及實操存在危險等原因,難以大量應(yīng)用[3]??紤]到制造業(yè)的發(fā)展趨勢,工業(yè)機器人PLC 控制實驗大量應(yīng)用于高校教學中就顯得尤為重要。
針對實物機器人難以大批量用于學生PLC控制實驗的問題,廈門大學航空航天學院的卓勇教授提出了借助虛擬現(xiàn)實技術(shù)、Unity3D 來構(gòu)建虛擬機器人仿真環(huán)境的方法解決實物機械手的場地、成本以及機械傷害的問題[4]?;谠撍悸?,本文進一步探討了虛實交互功能的開發(fā),并應(yīng)用于學生實驗的可行性。
本文提出了構(gòu)建基于Unity3D 的虛機實電機械手PLC 控制實驗平臺的方案,滿足了學生實驗的通用性和使用的便捷性,有效地降低實驗的危險性以及設(shè)備的損耗。學生可以在編寫完程序后,通過搭建實物PLC 控制系統(tǒng)并掛接虛擬樣機的方式來模擬運行,使用校驗模塊來進行測試校驗。
本平臺用于PLC 控制實驗。對于虛擬環(huán)境的創(chuàng)建,應(yīng)有真實的物理引擎及豐富的UI 交互開發(fā)工具,所以本平臺選用Unity3D 引擎搭建,使用C#來進行編程開發(fā)。選用高校常用的三菱PLC 應(yīng)用于實物PLC 控制系統(tǒng)。
學生在實驗中,首先需要編寫PLC 程序,然后完成實電部分實驗裝置的搭建,再配合實驗平臺的虛機部分進行模擬運行[5]。整個實驗流程如圖1 所示。
圖1 實驗流程Fig.1 Experiment process
針對整個實驗流程,本系統(tǒng)分成了4 個部分來構(gòu)建,分別是機械手虛擬樣機的構(gòu)建、實物PLC 控制系統(tǒng)的搭建方案、虛實通訊模塊以及PLC 編程及校驗模塊,整體的方案框如圖2 所示。
圖2 整體方案Fig.2 Overall program
機械手虛擬樣機的建立是虛機實電中虛機部分的構(gòu)建,通過建立模型并參照實物機械手的運動特性,確立虛擬機械手各軸之間的運動關(guān)系,最終構(gòu)建出能夠按照實物機械手的工作方式來運行的虛擬機械手。
PLC 實物控制系統(tǒng)是虛機實電中實電部分的實驗裝置搭建。對于實物PLC 控制系統(tǒng)掛接虛擬樣機模擬運行的實驗方式,學生通過搭建實物PLC 控制系統(tǒng)來完成實電部分操作,并用于與虛機配合完成實驗。
虛實通訊模塊是虛擬機械手和實物PLC 控制系統(tǒng)連接通訊的重要技術(shù)手段,虛擬機械手通過接收通訊模塊發(fā)出的數(shù)據(jù)來驅(qū)動運行。
PLC 編程及校驗模塊是學生實驗的內(nèi)容設(shè)計部分。學生在編程模塊按要求編寫PLC 程序來用于控制實驗。校驗模塊在學生編寫完P(guān)LC 程序,搭建完實物PLC 控制系統(tǒng)接入PC 機進行模擬運行時配合使用,用于校驗PLC 程序以及控制系統(tǒng)。
針對實物機械手的虛擬樣機設(shè)計,通過分析實物機械手的運動特性,完成了虛擬機械手模型的建立,確立了虛擬機械手的運行方式,從而完成了虛機的構(gòu)建。
本文選用ABB IRB1600 來進行虛擬樣機設(shè)計。IRB1600 機器人為六軸多關(guān)節(jié)串聯(lián)機械手,6個關(guān)節(jié)均為轉(zhuǎn)動副,常用于上下料、弧焊等領(lǐng)域。在實際運動中,各關(guān)節(jié)間存在父子關(guān)系,比如:1 軸轉(zhuǎn)動會帶動23456 軸轉(zhuǎn)動,3 軸轉(zhuǎn)動會帶動456 軸一起轉(zhuǎn)動等。
機械手各軸的模型使用工業(yè)軟件完成建模裝配即可。由于機械手各軸之間存在轉(zhuǎn)動關(guān)系,所以虛擬機械手各軸需要確定旋轉(zhuǎn)軸的方向和位置。使用3DMAX 來調(diào)整虛擬機械手各軸模型的自身坐標系位置及方向。根據(jù)Unity3D 的模型格式要求,導出FBX 格式。導入U3D 后,模型效果如圖3 所示。
圖3 機械手虛擬樣機Fig.3 Manipulator virtual prototype
參照機械手的實際運動特性,在U3D 中進一步調(diào)節(jié)各軸模型間的父子關(guān)系,調(diào)整后結(jié)果如圖3 右側(cè),保證六軸角度的變化能夠驅(qū)動虛擬機械手如實運動。
虛機接收到實電部分的運行數(shù)據(jù),經(jīng)字符串分解后可得序號、角速度和轉(zhuǎn)向。在Unity3D 中,機械手的運動使用Rotate()函數(shù)來完成。序號決定了需要驅(qū)動的機械手的軸,角速度和轉(zhuǎn)向確定了Rotate()中參數(shù)的數(shù)值和正負。通過逐幀地解析接收到運行數(shù)據(jù)并調(diào)用Rotate(),可驅(qū)動機械手運行。
本段通過完成機械手模型的構(gòu)建和運行方式,實現(xiàn)了對實物機械手的虛擬化,能用于被實電部分的數(shù)據(jù)驅(qū)動運行。
針對學生搭建實電控制裝置的實驗流程以及虛機實電中對運行數(shù)據(jù)的采集需要,本段分析了實機實電的實際控制對象,提出了一套用于虛機實電的實物PLC 控制系統(tǒng)的搭建方案。
在實機實電中,PLC 程序的實際控制對象是機械手各軸的步進電機,在機械手為虛擬樣機的情況下,本文提出直接搭建實物PLC 控制實物步進電機的電路,再在此基礎(chǔ)上加入傳感器和數(shù)據(jù)交換模塊來對步進電機的運行狀態(tài)進行數(shù)據(jù)采集,用于驅(qū)動虛擬機械手。整體方案如圖4 所示。
圖4 實物PLC 控制系統(tǒng)的搭建方案Fig.4 Construction plan of physical PLC control system
其中,PLC 選用FX2N 系列,步進驅(qū)動器選用ND556,步進電機選用60BYG250A,數(shù)據(jù)交換模塊選用Arduino 單片機。在數(shù)據(jù)的采集和處理上,本文選用霍爾傳感器和Arduino 單片機來完成。霍爾傳感器在磁場變化時,會發(fā)出脈沖信號,根據(jù)此原理配合Arduino 的中斷功能,即可測出電機轉(zhuǎn)動一圈所用的時間,從而算出轉(zhuǎn)速和轉(zhuǎn)向[6]。
學生在搭建完實物PLC 控制實物步進電機的部分后,將霍爾傳感器放在帶有磁鐵的電機轉(zhuǎn)盤的旁邊,用于對電機的運行數(shù)據(jù)進行采集,即可完成實電裝置的搭建。
本段通過分析實機實電的控制對象,提出了一套用于虛機實電的實物PLC 控制系統(tǒng)的搭建方案。在無實物機械手的情況下,較好地完成了對學生實操能力的訓練,同時能夠用于驅(qū)動虛擬機械運行,完成機械手PLC 控制實驗。
針對虛機與實電部分的數(shù)據(jù)通訊問題,本段分析了虛實通訊過程中的輸入輸出,提出了硬件與軟件部分的設(shè)計方案,實現(xiàn)了以實物PLC 控制系統(tǒng)驅(qū)動虛擬機械手的技術(shù)。
驅(qū)動虛擬機械手運行需要提供轉(zhuǎn)動軸的序號、轉(zhuǎn)動方向以及角速度。其中,角速度可以通過計算步進電機轉(zhuǎn)動一圈所需時間來得出。轉(zhuǎn)動時間和轉(zhuǎn)向直接使用傳感器來測得,轉(zhuǎn)動軸的序號在數(shù)據(jù)交換模塊中直接指定。數(shù)據(jù)交換模塊完成輸入與輸出的轉(zhuǎn)換并發(fā)送給虛擬機械手,用于驅(qū)動虛擬機械手運行。
表1 通訊模塊的輸入與輸出Tab.1 Input and output of communication module
硬件設(shè)計部分由實電部分的數(shù)據(jù)采集、數(shù)據(jù)的處理輸出以及虛機部分接收數(shù)據(jù)3 個部分構(gòu)成,具體的數(shù)據(jù)傳遞流程如圖5 所示。
圖5 虛實通訊中的數(shù)據(jù)傳遞流程Fig.5 Data transfer process in virtual and real communication
對輸入數(shù)據(jù)的采集,本文中使用2 個霍爾傳感器來配合完成,分別用于測電機轉(zhuǎn)向和記錄轉(zhuǎn)動時間。對輸入數(shù)據(jù)的處理及輸出選用Arduino單片機來完成。虛機部分通過創(chuàng)建虛擬接口來完成數(shù)據(jù)的接收。
軟件設(shè)計部分用于處理采集到的數(shù)據(jù),并發(fā)送給虛擬機械手。
在輸出中,角速度的值通過t1和t2運算得出。編寫Arduino 程序來計算時間差?t=t2-t1,得電機轉(zhuǎn)動一圈所需的秒數(shù),通過換算得步進電機的角速度度2π/?t rad/s。轉(zhuǎn)向通過判斷監(jiān)測轉(zhuǎn)向的霍爾傳感器的高低電平來得出。當轉(zhuǎn)速傳感器觸發(fā)中斷時,通過Arduino 判斷轉(zhuǎn)向傳感器電位的高低,得出順時針或逆時針,使用1或0來標識輸出。
Arduino 完成數(shù)據(jù)處理后,將角速度、轉(zhuǎn)向和需要轉(zhuǎn)動軸的序號以字符串“序號+‘:’+角速度+‘|’+轉(zhuǎn)向”的格式用Println 指令發(fā)送給PC 機。
PC 端需根據(jù)Arduino 的串口屬性,初始化一個屬性相應(yīng)的虛擬接口。使用Readline()接收單片機向串口發(fā)出的數(shù)據(jù)。通過遍歷接收到的字符串,分別取出序號、角速度以及轉(zhuǎn)向3 個子字符串,即可用于驅(qū)動虛擬機械手。
本段通過對虛實通訊模塊的輸入輸出需求的分析,提出了硬件設(shè)計和軟件設(shè)計方案,完成了輸入數(shù)據(jù)的采集、數(shù)據(jù)處理、數(shù)據(jù)輸出整個流程,實現(xiàn)了以實電的運行數(shù)據(jù)驅(qū)動虛擬機械手運動的功能。
針對學生編寫PLC 程序以及結(jié)合虛機實電完成程序校驗的實驗流程,本段提出PLC 編程及校驗模塊的設(shè)計方案。
本模塊以一軸為例,要求學生編寫PLC 程序控制虛擬機械手的1 軸逆時針轉(zhuǎn)動90°。實驗中,給出了機械手1軸步進電機的步距角為1.8°、軸的轉(zhuǎn)動速率為22.5°/s,以及減速器的傳動比為25,學生需根據(jù)公式(ω×i)/θ和(α×i)/θ算出機械手1 軸轉(zhuǎn)動所需的脈沖數(shù)和脈沖速率,并編寫控制程序,界面如圖6 所示。
圖6 程序設(shè)計模塊Fig.6 Programming module
本模塊用于校驗學生編寫的PLC 程序是否滿足要求。學生通過實物PLC 驅(qū)動虛擬機械手的方式配合程序校驗模塊來進行模擬運行。該模塊會實時檢測虛擬機械手各軸轉(zhuǎn)動的角度,通過與控制要求的角度作對比,判斷是否滿足要求,如圖7 所示。
圖7 運行校驗Fig.7 Run and check
機械手各軸轉(zhuǎn)動角度的檢測直接通過使用U3D 的反射來獲取模型面板上的Rotation 值來實現(xiàn)。通過判斷機械手轉(zhuǎn)動的角度和目標角度的差值來確認是否滿足控制要求,最終的差值小于5%,則編寫的PLC 控制程序基本滿足了控制要求。
本文針對實物機械手由于場地、安全、成本限制而難以用于學生PLC 控制實驗的問題,研究了實物PLC 控制虛擬機械手的虛機實電控制技術(shù),提出了以實物PLC 控制虛擬機械手完成PLC控制實驗的方案。目前相關(guān)方案已經(jīng)初步應(yīng)用于高校的虛擬仿真實驗中。使用結(jié)果表明,該系統(tǒng)能夠在無實物機械手的情況下完成機械手的PLC控制實驗,有效降低了實驗的成本,提高了學生的實操能力,并以PLC 驅(qū)動虛擬機械手運動的方式直觀地展示PLC 控制系統(tǒng)的模擬運行。