宮瑞哲,饒 豐,任 楠,吳睿婧,蔡 苗
(1.北京機(jī)械工業(yè)自動(dòng)化研究所,北京 100120;2.北自所(北京)科技發(fā)展股份有限公司,北京 100120)
1)數(shù)字孿生概念
上世紀(jì)七十年代,孿生體的概念第一次由美國(guó)國(guó)家航空航天局(NASA)提到。2003年,數(shù)字孿生(Digital Twin)由Grieves教授(美國(guó)密歇根大學(xué))正式提出并對(duì)Digital Twin進(jìn)行了定義[3~5]。數(shù)字孿生的目標(biāo)是對(duì)物理模型實(shí)體構(gòu)建具有實(shí)時(shí)同步、高保真度等特性的虛擬映射模型。數(shù)字孿生需要運(yùn)用跨學(xué)科的知識(shí)和技術(shù)[8]并且通過(guò)采集物理實(shí)體的實(shí)時(shí)數(shù)據(jù)和分析歷史運(yùn)行數(shù)據(jù)來(lái)進(jìn)行虛擬模型的構(gòu)建。數(shù)字孿生實(shí)現(xiàn)了物理世界與信息世界的交互與融合[1]。
2)數(shù)字孿生國(guó)內(nèi)外現(xiàn)狀
數(shù)字孿生概念最早在國(guó)外得到成功應(yīng)用。在美國(guó),美國(guó)空軍研究實(shí)驗(yàn)室(AFRL)、美國(guó)國(guó)家航空航天局[6]等研究中心將數(shù)字孿生應(yīng)用至航空航天的發(fā)動(dòng)機(jī)剩余使用壽命預(yù)測(cè)、故障預(yù)測(cè)與健康管理等方面;佐治亞理工學(xué)院(Georgia Tech)和賓夕法尼亞州立大學(xué)(PSU)等科研院校探索數(shù)字孿生在智慧工廠方面的應(yīng)用。在歐洲,Olaf Sauer(弗勞恩霍夫研究院的工業(yè)4.0專(zhuān)家)指出數(shù)字孿生是德國(guó)工業(yè)4.0的主攻方向;亞琛工業(yè)大學(xué)(RWTH)等高校在數(shù)字孿生領(lǐng)域開(kāi)展大量研究[7]。
近年來(lái),國(guó)內(nèi)的科研院所和高校對(duì)數(shù)字孿生展開(kāi)了大量的研究。中國(guó)信息通信研究院(CAICT)和中國(guó)電子技術(shù)標(biāo)準(zhǔn)化研究院(CESI)等科研院所對(duì)數(shù)字孿生技術(shù)進(jìn)行了大量標(biāo)準(zhǔn)化工作,為數(shù)字孿生在國(guó)內(nèi)的發(fā)展奠定堅(jiān)實(shí)基礎(chǔ)[7];國(guó)內(nèi)高校在數(shù)字孿生技術(shù)理論研究中也取得重要進(jìn)展,如北航陶飛團(tuán)隊(duì)對(duì)數(shù)字孿生開(kāi)展大量研究,提出數(shù)字孿生車(chē)間等概念,創(chuàng)辦Digital Twin國(guó)際期刊,并在智能制造工廠開(kāi)展數(shù)字孿生的實(shí)踐[2]。
制造企業(yè)在傳統(tǒng)生產(chǎn)模式下,各環(huán)節(jié)之間的信息交互通信不夠及時(shí)、全面,對(duì)工廠生產(chǎn)過(guò)程的可視化程度低,工廠每天都產(chǎn)生大量的數(shù)據(jù),但是這些數(shù)據(jù)利用程度很低。
目前,國(guó)內(nèi)企業(yè)正在由傳統(tǒng)生產(chǎn)模式向智能化數(shù)字化生產(chǎn)模式的轉(zhuǎn)型過(guò)程中,數(shù)字孿生是企業(yè)通向數(shù)字化轉(zhuǎn)型的重要橋梁。數(shù)字孿生技術(shù)的引入,實(shí)現(xiàn)設(shè)備監(jiān)控,實(shí)時(shí)采集設(shè)備運(yùn)行數(shù)據(jù),設(shè)備運(yùn)行狀況以可視化的形式進(jìn)行呈現(xiàn)。通過(guò)數(shù)據(jù)的積累(如關(guān)于設(shè)備故障的數(shù)據(jù)),結(jié)合關(guān)聯(lián)規(guī)則挖掘技術(shù)進(jìn)行故障信息的預(yù)測(cè)、調(diào)度方式的分析與優(yōu)化。數(shù)字孿生技術(shù)在智能工廠的引入推動(dòng)了智能工廠在數(shù)字化和網(wǎng)絡(luò)化的發(fā)展,在智能制造的進(jìn)程中起到重要的推動(dòng)作用。
自動(dòng)化立體倉(cāng)庫(kù)是智能工廠倉(cāng)儲(chǔ)物流的重要系統(tǒng),堆垛機(jī)是自動(dòng)化立體倉(cāng)庫(kù)的關(guān)鍵設(shè)備。將數(shù)字孿生技術(shù)應(yīng)用到堆垛機(jī)系統(tǒng),可以實(shí)現(xiàn)對(duì)堆垛機(jī)系統(tǒng)的全方位可視化監(jiān)控。將實(shí)時(shí)數(shù)據(jù)與歷史數(shù)據(jù),結(jié)合機(jī)器學(xué)習(xí)算法,實(shí)現(xiàn)故障預(yù)測(cè)、設(shè)備健康管理、優(yōu)化調(diào)度算法和運(yùn)行模式。
在搭建堆垛機(jī)數(shù)字孿生體的準(zhǔn)備階段,對(duì)堆垛機(jī)的作業(yè)模式進(jìn)行分析,獲得堆垛機(jī)工作模式及相關(guān)參數(shù);對(duì)堆垛機(jī)上的機(jī)械結(jié)構(gòu)進(jìn)行分析,了解堆垛機(jī)設(shè)備上各個(gè)組件的作用以及相互之間的關(guān)系;對(duì)堆垛機(jī)執(zhí)行作業(yè)時(shí)的調(diào)度邏輯進(jìn)行分析,分析其運(yùn)行調(diào)度邏輯;對(duì)堆垛機(jī)上各智能傳感器應(yīng)用原理及作用進(jìn)行分析,獲得在運(yùn)行期間各個(gè)傳感器信號(hào)變化的意義。
堆垛機(jī)在運(yùn)行過(guò)程中,主要有三個(gè)方向的運(yùn)動(dòng):沿軌道水平方向移動(dòng)、沿軌道垂直方向移動(dòng)和在取貨或者放貨時(shí)垂直于巷道平面的移動(dòng)。堆垛機(jī)定位一個(gè)貨架位置需要通過(guò)層數(shù)、列數(shù)和排數(shù)三個(gè)屬性值。堆垛機(jī)作業(yè)是一個(gè)立體空間內(nèi)的載具轉(zhuǎn)移:通過(guò)三個(gè)方向的移動(dòng)使得堆垛機(jī)從起始層、列、排到達(dá)目的層、列、排。根據(jù)運(yùn)動(dòng)類(lèi)型的不同,堆垛機(jī)運(yùn)行模式可以分為入庫(kù)、出庫(kù)等。入庫(kù)即堆垛機(jī)將外部設(shè)備上的載具運(yùn)載至貨架貨位。出庫(kù)是入庫(kù)的一個(gè)逆過(guò)程。
堆垛機(jī)可以分為三個(gè)模塊:堆垛機(jī)主體部件、堆垛機(jī)載貨平臺(tái)和堆垛機(jī)載貨貨叉。三個(gè)模塊分別是沿軌道水平方向移動(dòng),沿軌道垂直方向移動(dòng)以及沿垂直軌道面的方向移動(dòng)。如圖1所示,將堆垛機(jī)主體部件的移動(dòng)方向設(shè)為X軸,堆垛機(jī)載貨平臺(tái)的移動(dòng)方向設(shè)為Y軸,堆垛機(jī)載貨貨叉的移動(dòng)方向設(shè)為Z軸。堆垛機(jī)設(shè)備可以抽象看作在一個(gè)三維空間內(nèi),各部件沿不同的坐標(biāo)軸進(jìn)行移動(dòng)。
圖1 堆垛機(jī)三維空間示意圖
堆垛機(jī)的作業(yè)是由調(diào)度程序進(jìn)行控制的。對(duì)于入庫(kù)作業(yè),調(diào)度程序按照預(yù)置的單一或組合入庫(kù)策略(就近原則、貨架受力均勻、物料分區(qū)存放等)計(jì)算出載具最優(yōu)入庫(kù)貨位地址,并由堆垛機(jī)執(zhí)行完成。對(duì)于出庫(kù)作業(yè),當(dāng)上位管理程序下發(fā)出庫(kù)作業(yè)后,調(diào)度程序按照預(yù)置的單一或組合出庫(kù)策略(路徑優(yōu)化、復(fù)合任務(wù)等)計(jì)算載具的最優(yōu)出庫(kù)作業(yè)模式,并由堆垛機(jī)執(zhí)行完成。
堆垛機(jī)上各智能傳感器,在堆垛機(jī)運(yùn)動(dòng)過(guò)程中信號(hào)跟隨發(fā)生變化,通過(guò)傳感器信號(hào)值,了解當(dāng)前堆垛機(jī)狀態(tài)改變。如:通過(guò)采集堆垛機(jī)水平與豎直編碼器值,實(shí)時(shí)獲得堆垛機(jī)在巷道內(nèi)的某一個(gè)精確位置;通過(guò)載貨信號(hào)開(kāi)關(guān),明確當(dāng)前堆垛機(jī)上是否有載具。
要建立堆垛機(jī)孿生體,真實(shí)反映設(shè)備的實(shí)時(shí)運(yùn)行,需采集堆垛機(jī)的動(dòng)作數(shù)據(jù)、檢測(cè)開(kāi)關(guān)數(shù)據(jù)、故障數(shù)據(jù)、運(yùn)行數(shù)據(jù)、作業(yè)數(shù)據(jù)、貨架數(shù)據(jù)、歷史故障數(shù)據(jù)等。動(dòng)作數(shù)據(jù)、檢測(cè)開(kāi)關(guān)數(shù)據(jù)、故障數(shù)據(jù)和運(yùn)行數(shù)據(jù)等可以從設(shè)備實(shí)時(shí)采集到;作業(yè)數(shù)據(jù)、貨架數(shù)據(jù)和歷史故障數(shù)據(jù)等可以從與其他系統(tǒng)交互中獲得。
所采集的各種數(shù)據(jù)主要包括以下內(nèi)容。動(dòng)作數(shù)據(jù)指堆垛機(jī)的運(yùn)行狀態(tài)信息,如堆垛機(jī)的運(yùn)行方向、動(dòng)作等;檢測(cè)開(kāi)關(guān)數(shù)據(jù)指堆垛機(jī)上的全部光電開(kāi)關(guān)數(shù)據(jù),如堆垛機(jī)的精確位置、是否帶載等;故障數(shù)據(jù)指堆垛機(jī)實(shí)時(shí)發(fā)生的各種故障信息,如堆垛機(jī)的變頻器故障等,這類(lèi)數(shù)據(jù)對(duì)堆垛機(jī)的運(yùn)維具有重要的參考價(jià)值;運(yùn)行數(shù)據(jù)指堆垛機(jī)當(dāng)前運(yùn)行的各類(lèi)參數(shù)數(shù)據(jù),如堆垛機(jī)水平運(yùn)行速度、垂直運(yùn)行速度等。作業(yè)數(shù)據(jù)指堆垛機(jī)執(zhí)行作業(yè)的詳細(xì)信息,比如作業(yè)類(lèi)型、起始地址、目的地址等;貨架數(shù)據(jù)指所有貨架的狀態(tài)、存儲(chǔ)的載具信息;歷史故障數(shù)據(jù)指堆垛機(jī)故障的歷史日志,利用這類(lèi)數(shù)據(jù)可對(duì)堆垛機(jī)進(jìn)行設(shè)備健康診斷。
堆垛機(jī)采用PLC進(jìn)行控制,通過(guò)讀取PLC的數(shù)據(jù)進(jìn)行設(shè)備信息采集。本系統(tǒng)堆垛機(jī)使用西門(mén)子公司生產(chǎn)的PLC,利用其對(duì)應(yīng)的通信工具S7.net進(jìn)行數(shù)據(jù)采集程序開(kāi)發(fā)。在開(kāi)發(fā)中,通過(guò)調(diào)用ReadClass方法進(jìn)行數(shù)據(jù)塊讀取,為了使得數(shù)據(jù)讀取延遲降低,采用各數(shù)據(jù)塊多線程同步數(shù)據(jù)讀取方式。使用單線程讀取方式和多線程讀取方式,各進(jìn)行多次數(shù)據(jù)采集,記錄讀取時(shí)延,如圖2所示。從圖中可以看出,使用多線程讀取數(shù)據(jù),效率得到明顯提升。
圖2 單線程、多線程設(shè)備數(shù)據(jù)采集時(shí)延變化曲線圖
除了從堆垛機(jī)直接進(jìn)行數(shù)據(jù)采集外,還需從其它相關(guān)系統(tǒng)(如MES、WMS等)獲取與堆垛機(jī)運(yùn)行相關(guān)的數(shù)據(jù)。通過(guò)系統(tǒng)間接口進(jìn)行數(shù)據(jù)的交互。
基于上述對(duì)堆垛機(jī)的分析和數(shù)據(jù)的準(zhǔn)備,本節(jié)通過(guò)堆垛機(jī)模型的建立、模型的處理、模型的數(shù)據(jù)驅(qū)動(dòng)開(kāi)發(fā)等環(huán)節(jié)完成數(shù)字孿生體的構(gòu)建。使用SOLIDWORKS建立堆垛機(jī)和貨架三維模型,模型包含堆垛機(jī)設(shè)備全部細(xì)節(jié)與組件,按照1:1000比例系數(shù)進(jìn)行縮放。將建立的堆垛機(jī)模型導(dǎo)入到3DMax中,使用3DMax對(duì)模型進(jìn)行輕量化;同時(shí)完成對(duì)模型的貼圖、上色等美化處理,如圖3所示。處理完成后,將模型導(dǎo)出為Unity3D可以識(shí)別的.pfx格式文件。
圖3 3Dmax優(yōu)化后的載貨臺(tái)組件
模型處理完,模型的結(jié)構(gòu)依舊是比較離散的,所有組件都存放在同一集合內(nèi),這種關(guān)系模式對(duì)后續(xù)模型的動(dòng)畫(huà)驅(qū)動(dòng)會(huì)造成很大負(fù)擔(dān)。因此,在編寫(xiě)腳本前,首先要根據(jù)對(duì)模型實(shí)際運(yùn)動(dòng)情況的分析,完成模型關(guān)系重新建立。通過(guò)系統(tǒng)分析環(huán)節(jié)介紹,將堆垛機(jī)模型分為三個(gè)模塊:堆垛機(jī)主體部件、堆垛機(jī)載貨平臺(tái)和堆垛機(jī)載貨貨叉。在模型進(jìn)行數(shù)據(jù)驅(qū)動(dòng)時(shí),可以將堆垛機(jī)載貨平臺(tái)作為堆垛機(jī)主體部件子物體,這樣前者只需完成垂直方向運(yùn)動(dòng),其水平方向運(yùn)動(dòng)會(huì)跟隨后者完成;同理,堆垛機(jī)載貨貨叉作為堆垛機(jī)載貨平臺(tái)子物體。通用模型格式的堆垛機(jī)3D模型如圖4所示。
圖4 通用模型格式的堆垛機(jī)3D模型
完成堆垛機(jī)模型關(guān)系整理后,建立模型與數(shù)據(jù)的連接,為后續(xù)模型驅(qū)動(dòng)做準(zhǔn)備。數(shù)據(jù)連接包含模型與設(shè)備的連接、模型與其他系統(tǒng)的連接。通過(guò)采集到的設(shè)備數(shù)據(jù),對(duì)模型的各部件進(jìn)行數(shù)據(jù)驅(qū)動(dòng)。
堆垛機(jī)主體部件的數(shù)據(jù)驅(qū)動(dòng),通過(guò)式(1)將讀取到的設(shè)備水平方向的實(shí)際數(shù)值(Stacker_z)映射為模型中對(duì)應(yīng)的數(shù)值F(Stacker_z):
式(1)中,StackerPYL為偏移參數(shù),StackerMutiple為比例參數(shù)。這兩個(gè)參數(shù)均根據(jù)堆垛機(jī)主體部件現(xiàn)場(chǎng)實(shí)際情況進(jìn)行調(diào)整后獲得。
當(dāng)前模型中堆垛機(jī)主體部件的位置為StackerZ,與F(Sacker_z)進(jìn)行比較,計(jì)算差值Stacker_zdiff:
如果差值Stacker_zdiff大于0.001f,則更新堆垛機(jī)主體部件的位置transform.localPosition。
堆垛機(jī)載貨平臺(tái)的數(shù)據(jù)驅(qū)動(dòng),采用與堆垛機(jī)主體部件數(shù)據(jù)驅(qū)動(dòng)類(lèi)似的方法,通過(guò)式(3)將讀取到的當(dāng)前設(shè)備垂直方向的實(shí)際數(shù)值(ZHT_y)映射為模型中對(duì)應(yīng)的數(shù)值,并與當(dāng)前模型中堆垛機(jī)載貨平臺(tái)的位置ZHTY進(jìn)行比較,計(jì)算差值ZHT_ydiff:
式(3)中,ZHTPYL為偏移參數(shù),ZHTMutiple為比例參數(shù)。這兩個(gè)參數(shù)均根據(jù)堆垛機(jī)載貨平臺(tái)現(xiàn)場(chǎng)實(shí)際情況進(jìn)行調(diào)整獲得。
如果差值ZHT_ydiff大于0.001f,則更新模型中堆垛機(jī)載貨平臺(tái)的位置transform.localPosition。
堆垛機(jī)載貨貨叉的數(shù)據(jù)驅(qū)動(dòng),將到位信號(hào)以及收叉伸叉信號(hào)映射為模型中的對(duì)貨叉移動(dòng)速度調(diào)整的判定量。為了讓模型中的載貨貨叉能夠逼真地反映貨叉物理實(shí)體,讓貨叉移動(dòng)速度自學(xué)習(xí),不斷進(jìn)行自我迭代,設(shè)計(jì)了以下迭代算法。
首先記錄模型中每個(gè)貨叉的最大伸叉長(zhǎng)度L,通過(guò)統(tǒng)計(jì)伸叉時(shí)間T來(lái)計(jì)算伸叉速度。。不斷地使用下次伸叉速度對(duì)其進(jìn)行修正:
其中,Vnew表示當(dāng)前修正得到的速度,Vi表示上一次修正得到的速度,Vj表示此次伸叉過(guò)程計(jì)算得到的速度,ω為權(quán)重系數(shù)(根據(jù)現(xiàn)場(chǎng)情況,進(jìn)行調(diào)整后獲得)。為了記錄每次系統(tǒng)運(yùn)行后得到的Vnew,將該數(shù)值寫(xiě)到本地文本中。下一次啟動(dòng)本系統(tǒng)時(shí),從本地文本中讀取最近一次得到的Vnew。
堆垛機(jī)載貨貨叉伸叉過(guò)程的數(shù)據(jù)驅(qū)動(dòng)方式如式(5)所示:
當(dāng)貨叉左伸時(shí),μ取1;當(dāng)貨叉右伸時(shí),μ取-1。根據(jù)HCX數(shù)值的變化更新模型中堆垛機(jī)載貨貨叉的位置transform.localPosition。
使用可視化的UI界面對(duì)數(shù)據(jù)進(jìn)行可視化展示。使用圖表的方式能夠更加直觀的呈現(xiàn)數(shù)據(jù)所包含的信息,幫助發(fā)現(xiàn)規(guī)律[4]。
1)設(shè)備運(yùn)行狀態(tài)可視化
從堆垛機(jī)設(shè)備上獲取的系統(tǒng)實(shí)時(shí)的開(kāi)關(guān)信號(hào)量、故障信號(hào)量和運(yùn)行數(shù)據(jù)信息等。對(duì)于布爾類(lèi)型的數(shù)據(jù),通過(guò)指示燈(使用Image組件繪制)進(jìn)行表示;整型以及浮點(diǎn)類(lèi)型數(shù)據(jù),通過(guò)文本框(使用Text組件繪制)進(jìn)行展示。界面如圖5所示。
圖5 設(shè)備實(shí)時(shí)數(shù)據(jù)可視化
2)系統(tǒng)數(shù)據(jù)可視化
從其他系統(tǒng)獲取到的數(shù)據(jù),如作業(yè)信息數(shù)據(jù)、貨架信息數(shù)據(jù)。這些數(shù)據(jù)都是通過(guò)接口程序從其他系統(tǒng)獲取的,其形式均為數(shù)據(jù)集合。使用表單UI對(duì)該類(lèi)數(shù)據(jù)的可視化展示。將這些數(shù)據(jù)與表單UI的文本組件綁定,定時(shí)動(dòng)態(tài)進(jìn)行數(shù)據(jù)的刷新。如圖6所示。
圖6 貨架數(shù)據(jù)可視化
3)運(yùn)維數(shù)據(jù)的可視化
通過(guò)采集設(shè)備數(shù)據(jù),獲得實(shí)時(shí)故障信息;通過(guò)與其他系統(tǒng)的交互,獲得歷史故障數(shù)據(jù);建立算法對(duì)故障位置、頻率、作業(yè)特點(diǎn)等數(shù)據(jù)進(jìn)行分析處理,輸出設(shè)備故障統(tǒng)計(jì)信息并提出維護(hù)建議。如圖7所示。
圖7 運(yùn)維數(shù)據(jù)可視化
本文實(shí)現(xiàn)了堆垛機(jī)的數(shù)字孿生系統(tǒng)的搭建,將堆垛機(jī)物理模型映射到三維堆垛機(jī)虛擬模型,使用可視化手段對(duì)堆垛機(jī)的實(shí)時(shí)運(yùn)行狀態(tài)、堆垛機(jī)狀態(tài)數(shù)據(jù)、系統(tǒng)信息數(shù)據(jù)和運(yùn)維數(shù)據(jù)進(jìn)行展示。未來(lái),數(shù)字孿生將結(jié)合機(jī)器學(xué)習(xí)和深度學(xué)習(xí)技術(shù)對(duì)堆垛機(jī)系統(tǒng)的數(shù)據(jù)分析建模,實(shí)現(xiàn)歷史故障進(jìn)行診斷、未來(lái)趨勢(shì)預(yù)測(cè),通過(guò)孿生體模擬運(yùn)行的反饋,實(shí)現(xiàn)堆垛機(jī)調(diào)度優(yōu)化與效率提升[1]。