陳加才,張虎,文紹華,劉永坡,陳勇
(四川航天長征裝備制造有限公司,四川成都 610100)
加工單元是一種能獨立完成特定生產(chǎn)任務(wù)的制造系統(tǒng)[1]。隨著物聯(lián)網(wǎng)、信息物理系統(tǒng)等技術(shù)的發(fā)展,單元的生產(chǎn)效率不斷提高[2]。然而,一方面,現(xiàn)有單元數(shù)字化程度仍不高;另一方面,企業(yè)生產(chǎn)模式正由單品種大批量向多品種變批量過渡。為提升產(chǎn)能,企業(yè)必須提升對生產(chǎn)過程信息的掌控能力。加工單元作為企業(yè)實現(xiàn)智能制造、數(shù)字化決策等目標的數(shù)據(jù)源,其數(shù)字化程度直接影響生產(chǎn)效率。因此為解決上述問題,有必要針對加工單元的管控系統(tǒng)進行研究,實現(xiàn)單元全流程數(shù)字化管控與面向多品類產(chǎn)品的柔性制造[3]。
加工單元的控制核心在于PLC,而RFID是實現(xiàn)數(shù)字化追蹤的關(guān)鍵[4]。根據(jù)PLC控制策略,王元生等[5-7]實現(xiàn)了單元自動裝卸、機床控制。通過對加工流程進行分析,何佩云等[8-9]利用RFID研究了單元柔性控制系統(tǒng)??字緦W(xué)等[10-11]利用基于PLC的過程控制算法,開發(fā)了設(shè)備通信上位機程序。上述研究內(nèi)容一定程度上實現(xiàn)了單元數(shù)字化控制,但仍存在如下不足:(1)設(shè)備覆蓋管控與采集難。基于PLC的設(shè)計控制策略解決了機床、機器人的管控問題,NC程序傳輸,RFID讀寫等均無法通過PLC完成,且缺少可視化界面。(2)系統(tǒng)維護擴展難。一些研究實現(xiàn)了單元可視化管控,但生產(chǎn)業(yè)務(wù)與程序代碼高度耦合,難以應(yīng)對業(yè)務(wù)變動造成的控制邏輯變化。(3)系統(tǒng)響應(yīng)慢。現(xiàn)有管控軟件采用面向生產(chǎn)過程的流程化設(shè)計,無法做到對設(shè)備/設(shè)施的狀態(tài)實時響應(yīng)。
基于上述問題,本文作者以某車削單元為研究對象,分析單元生產(chǎn)流程,研究單元信息架構(gòu)、異構(gòu)數(shù)據(jù)采集以及基于有限狀態(tài)機的生產(chǎn)調(diào)度策略等內(nèi)容,利用面向?qū)ο笳Z言C#開發(fā)響應(yīng)式管控系統(tǒng),以實現(xiàn)單元數(shù)字化柔性生產(chǎn)、可視化/自動化監(jiān)控。
整個單元由4臺數(shù)控機床、1臺工業(yè)機器人、裝卸臺、暫存工件/托盤的線邊倉、1臺采集數(shù)據(jù)的總控PLC、管控系統(tǒng)及相應(yīng)配套設(shè)備組成。為減少占地面積,保證作業(yè)安全的同時便于觀測生產(chǎn),單元采用封閉式、單側(cè)布局的方式,將機床與線邊倉布置在兩側(cè)。為了減少重復(fù)搬運、提升運行效率,將工件進出單元的操作布置在同一裝卸臺上,實現(xiàn)裝置復(fù)用。單元的整體布局如圖1所示。
單元生產(chǎn)流程的物料流如圖2所示。生產(chǎn)流程分為入庫(工件從裝卸臺運至線邊倉)、上料(工件從線邊倉運至機床)、加工、下料(工件從機床運至線邊倉)、出庫(工件從線邊倉運至裝卸臺)。機器人負責(zé)機床加工外的全部流程。為提升柔性生產(chǎn)能力,由托盤裝載工件進行加工,托盤采用RFID作為唯一標識。入庫后,工件會綁定托盤,因此追蹤托盤RFID即可實時監(jiān)控工件。為保證數(shù)據(jù)安全,入庫與上料時會校驗RFID,校驗失敗會執(zhí)行回滾。根據(jù)業(yè)務(wù)需求,在進行生產(chǎn)調(diào)度時,出入庫優(yōu)先級高于上下料。
圖2 加工單元物料流
管控系統(tǒng)控制下的生產(chǎn)調(diào)度是一個數(shù)據(jù)密集型過程,系統(tǒng)需通過不同通信協(xié)議和數(shù)據(jù)結(jié)構(gòu)與各設(shè)備實時進行數(shù)據(jù)流、控制流交互,同時系統(tǒng)內(nèi)還存在大量維護業(yè)務(wù)運行的基礎(chǔ)數(shù)據(jù)。圖3所示為單元信息互通架構(gòu),考慮到動態(tài)業(yè)務(wù)數(shù)據(jù)與靜態(tài)基礎(chǔ)信息“動靜分離”管理及后續(xù)擴展,根據(jù)業(yè)務(wù)特點與用戶權(quán)限分割需求,將管控系統(tǒng)分為基于B/S架構(gòu)的Web端單元管理平臺和基于C/S架構(gòu)的調(diào)度服務(wù)程序。前者部署于Web服務(wù)器,負責(zé)基礎(chǔ)數(shù)據(jù)/生產(chǎn)任務(wù)管理、看板展示;后者部署于調(diào)度服務(wù)器,負責(zé)讀取任務(wù)并執(zhí)行生產(chǎn)調(diào)度、設(shè)備通信。為提升系統(tǒng)性能與數(shù)據(jù)安全性,在二者間部署數(shù)據(jù)庫/ FTP服務(wù)器,存儲運行數(shù)據(jù)與機床NC程序。
圖3 加工單元信息互通架構(gòu)
管控系統(tǒng)采用“設(shè)備-以太網(wǎng)-client”的三層結(jié)構(gòu)與設(shè)備進行通信,將采集數(shù)據(jù)封裝處理后存儲到數(shù)據(jù)庫中,以實現(xiàn)單元生產(chǎn)調(diào)度與信息展示。為降低數(shù)據(jù)復(fù)雜度,提升通信效率,采用PLC作為數(shù)據(jù)主源,將單元大部分數(shù)據(jù)集中采集后過濾、驗證、打包,并利用TCP/IP協(xié)議傳輸給系統(tǒng),其他不能集成通信的數(shù)據(jù)則以各設(shè)備協(xié)議進行傳遞,如RFID數(shù)據(jù)(TCP/IP、串口)、NC程序等(FOCAS協(xié)議)。
硬件設(shè)備運行數(shù)據(jù)是管控系統(tǒng)進行生產(chǎn)調(diào)度的邏輯依據(jù)[12]。為屏蔽異構(gòu)數(shù)據(jù)的多樣性,在管控系統(tǒng)內(nèi)構(gòu)建了針對底層硬件的通信模塊。模塊數(shù)據(jù)流如圖4所示。
模塊介于上層業(yè)務(wù)代碼與底層設(shè)備間,包括API、異常處理、數(shù)據(jù)處理、緩沖區(qū)、硬件通信等子模塊。在系統(tǒng)進行硬件通信時,考慮到可能存在因車間生產(chǎn)現(xiàn)場業(yè)務(wù)需求的變化而造成的硬件設(shè)備變更,管控系統(tǒng)應(yīng)盡量減少與硬件設(shè)備的耦合程度,并具備可擴展的通信能力。根據(jù)上述需求,將通信配置信息(報文結(jié)構(gòu)、通信地址、通信協(xié)議等)以JSON字串的形式在數(shù)據(jù)庫/配置文件中持久化存儲,由該模塊利用數(shù)據(jù)讀取技術(shù)加載到內(nèi)存后,生成數(shù)據(jù)映射字典。模塊在與設(shè)備數(shù)據(jù)進行交互時,利用數(shù)據(jù)映射字典,根據(jù)通信數(shù)據(jù)字節(jié)索引、比特索引、對象類名、屬性名、對象編號等配置內(nèi)容進行數(shù)據(jù)映射,實現(xiàn)非結(jié)構(gòu)化字節(jié)數(shù)據(jù)和系統(tǒng)使用的結(jié)構(gòu)化對象數(shù)據(jù)雙向映射。
為提升系統(tǒng)的響應(yīng)能力,減少無效請求,模塊在進行數(shù)據(jù)映射后,采用事件響應(yīng)完成數(shù)據(jù)傳遞,上層則通過調(diào)用API將控制數(shù)據(jù)注入模塊,實現(xiàn)系統(tǒng)與底層硬件雙向通信。
有限狀態(tài)機(Finite State Machine,F(xiàn)SM)也稱有限狀態(tài)自動機,是一種面向事件驅(qū)動型系統(tǒng)的建模工具[13]。對于適用FSM建模的系統(tǒng),其只有有限狀態(tài),且始終處于某行為確定狀態(tài)。系統(tǒng)下個狀態(tài)是當前狀態(tài)和輸入內(nèi)容的函數(shù)。系統(tǒng)會響應(yīng)外部/內(nèi)部事件,并進行狀態(tài)跳轉(zhuǎn)或維持當前狀態(tài)。
由于設(shè)備/設(shè)施行為可預(yù)測,因此可利用FSM對單元關(guān)鍵調(diào)度對象進行建模,控制其狀態(tài)轉(zhuǎn)移,并基于異步編程與事件驅(qū)動設(shè)計構(gòu)建響應(yīng)式系統(tǒng),從而避免無效等待,實現(xiàn)有序調(diào)度,增強可重構(gòu)能力。
為優(yōu)化建模過程,提出以下對象選擇原則:(1)應(yīng)滿足FSM特征;(2)生命周期應(yīng)盡量覆蓋單元生產(chǎn)流程;(3)狀態(tài)轉(zhuǎn)換應(yīng)盡量多地調(diào)動設(shè)備運轉(zhuǎn),從而提高效率?;谏鲜鲈瓌t,由于搬運任務(wù)均由機器人完成,而工件生命周期內(nèi)系統(tǒng)對各設(shè)備均有調(diào)用,但對二者單獨建模均無法覆蓋整個生產(chǎn)流程,因此文中分別對機器人及工件進行FSM建模。
3.1.1 機器人調(diào)度對象運行建模
機器人調(diào)度對象由機器人設(shè)備及其任務(wù)信息組成。任務(wù)類型包括入庫、出庫、上料、下料、回滾。單個任務(wù)包含一或多條原子級機器人指令,并可能涉及其他設(shè)備的調(diào)用、數(shù)據(jù)庫的讀寫等操作。根據(jù)任務(wù)類型和優(yōu)先級,對象狀態(tài)如表1所示。
機器人調(diào)度對象由用戶/硬件觸發(fā)的外部事件驅(qū)動。為體現(xiàn)出入庫優(yōu)先級高于上下料的業(yè)務(wù)需求,依據(jù)任務(wù)區(qū)分了驅(qū)動事件,包括:鎖定機器人C0、添加入庫C1、添加出庫C2、裝卸臺/線邊倉未就緒C3、校驗失敗C4、檢驗成功C5、上料請求C6、下料請求C7、任務(wù)完成C8、硬件故障C9、硬件恢復(fù)C10、窗口關(guān)閉C11、運行調(diào)試C12。
用戶點擊出入庫或調(diào)試機器人時,若機器人空閑,系統(tǒng)會將它鎖定,并僅響應(yīng)出入庫/機器人調(diào)試而忽略上下料,否則系統(tǒng)會待其執(zhí)行完當前任務(wù)再鎖定。當未添加任務(wù)并關(guān)閉窗口時,機器人回到空閑狀態(tài),可響應(yīng)上下料。校驗RFID時,若校驗失敗,會執(zhí)行回滾(將工件退回裝卸臺/線邊倉)??紤]到系統(tǒng)的安全性,機器人硬件故障時,無論當前處于何種狀態(tài),系統(tǒng)將跳轉(zhuǎn)到故障并報警。檢測到機器人正常后,系統(tǒng)跳轉(zhuǎn)到之前狀態(tài)并繼續(xù)執(zhí)行?;谏鲜隽鞒蹋{(diào)度對象狀態(tài)轉(zhuǎn)移過程如圖5所示。
圖5 機器人調(diào)度對象狀態(tài)遷移過程
3.1.2 工件調(diào)度對象運行建模
工件調(diào)度對象面向單元內(nèi)工件建模,其運行狀態(tài)由工件位置、托盤綁定、機床狀態(tài)等信息決定。根據(jù)工件生命周期中加工、流轉(zhuǎn)過程,可得其狀態(tài)如表2所示。
表2 工件調(diào)度對象狀態(tài)
工件調(diào)度對象由機器人/機床觸發(fā)的外部事件驅(qū)動。通過分析加工流程,總結(jié)出如下事件:運至裝卸臺C0、運至線邊倉C1、運至機床C2、機床確定C3、NC程序傳輸完成C4、機床加工完成C5、讀取到RFID C6、取消綁定C7。
用戶將工件安裝在托盤并固定于裝卸臺后,點擊入庫,指定加工任務(wù)。入庫流程中,系統(tǒng)讀取RFID,使工件綁定托盤。監(jiān)測到有機床空閑時,系統(tǒng)在倉內(nèi)找到匹配工件,傳輸/校驗NC程序并啟動機床。機床請求上下料時,系統(tǒng)自動響應(yīng)請求。工件在線邊倉時(處于S2、S3、S4或S7),用戶點擊出庫,系統(tǒng)調(diào)度機器人搬運,同時解綁托盤,并終結(jié)該對象。據(jù)此可得工件狀態(tài)遷移過程如圖6所示。
圖6 工件狀態(tài)遷移過程
FSM的實現(xiàn)模式有過程模式、狀態(tài)模式等[14]。過程模式利用嵌套條件語句實現(xiàn)事件觸發(fā)/狀態(tài)跳轉(zhuǎn)。狀態(tài)模式將控制邏輯基于狀態(tài)拆分,能避免過程模式維護困難的問題,但狀態(tài)間切換無明確表達,沒有體現(xiàn)事件的驅(qū)動特性,不利于擴展。
由于上述問題的存在,文中基于狀態(tài)模式改進了面向生產(chǎn)調(diào)度過程的狀態(tài)機結(jié)構(gòu)??紤]到同時調(diào)度多個對象的需求,簡化了調(diào)度對象的數(shù)據(jù)結(jié)構(gòu),將狀態(tài)/行為分離,由調(diào)度對象動態(tài)保存狀態(tài),由狀態(tài)處理程序靜態(tài)保存對象跳轉(zhuǎn)策略。圖7所示為狀態(tài)機結(jié)構(gòu)及該結(jié)構(gòu)下實現(xiàn)機器人/工件調(diào)度的程序類圖,展示了以下關(guān)鍵類部分屬性、函數(shù)和關(guān)系。
圖7 狀態(tài)機的類
IStateMachineContext接口:狀態(tài)機調(diào)度對象,保存了狀態(tài)變量與運行信息。
泛型T:調(diào)度對象類型約束,約束為實現(xiàn)IStateMachineContext接口的類。
IStateHandler
IDriveData接口:驅(qū)動數(shù)據(jù),由外部系統(tǒng)注入,包含了外部系統(tǒng)觸發(fā)的事件及調(diào)度對象標識,如工件/機器人編號等。該數(shù)據(jù)是狀態(tài)轉(zhuǎn)移驅(qū)動源。
StateMachine
WorkpieceContext類:實現(xiàn)IStateMachineContext接口的工件調(diào)度對象。
RobotContext類:實現(xiàn)IStateMachineContext接口的機器人調(diào)度對象。
其余為機器人運行狀態(tài)(S0-S12)與工件運行狀態(tài)(S0-S9)對IStateHandler
當系統(tǒng)需調(diào)度新工件/機器人時(如新工件入庫),調(diào)用狀態(tài)機RegContext即注冊調(diào)度對象。這使系統(tǒng)分別對WorkpieceContext類與RobotContext類創(chuàng)建一個狀態(tài)機實例,并以較小的數(shù)據(jù)結(jié)構(gòu)便可生產(chǎn)調(diào)度。當業(yè)務(wù)變動導(dǎo)致對象調(diào)度邏輯新增/變更時,僅需創(chuàng)建IStateHandler
圖8所示為狀態(tài)機的程序流程。當事件觸發(fā)時,系統(tǒng)執(zhí)行InsertDrive注入數(shù)據(jù)。狀態(tài)機內(nèi)由單獨線程執(zhí)行DriveMachine。
圖8 事件驅(qū)動流程
該函數(shù)從DriveQueue獲取驅(qū)動,依據(jù)標識找到調(diào)度對象后,由其狀態(tài)獲取對應(yīng)IStateHandler實例并執(zhí)行DoStateAction完成狀態(tài)輸出,隨后執(zhí)行GetEvent判斷跳轉(zhuǎn)事件是否觸發(fā),若觸發(fā),則根據(jù)事件id執(zhí)行GetNext,更新調(diào)度對象狀態(tài),實現(xiàn)狀態(tài)跳轉(zhuǎn)。
考慮到編碼時調(diào)用多方dll的需求,文中采用面向?qū)ο笳Z言C#編程,以SqlServer2018為系統(tǒng)數(shù)據(jù)庫,利用FTP進行文件傳輸,并用IIS管理器完成服務(wù)(Web/FTP服務(wù))部署。
圖9所示為管控系統(tǒng)軟件架構(gòu)。單元管理平臺為B/S架構(gòu)。為降低耦合度,基于.NET Core技術(shù),采用Vue +WebAPI前后端分離方案。單元管理平臺處于系統(tǒng)上層,還負責(zé)與外部MES數(shù)據(jù)通信,該方案保證在已有代碼基礎(chǔ)上,對MES開放指定接口即可通信,提升了系統(tǒng)動態(tài)集成能力。
圖9 管控系統(tǒng)軟件架構(gòu)
調(diào)度服務(wù)程序采用C/S架構(gòu),由于它直接與硬件設(shè)備通信,因此技術(shù)方案應(yīng)具備快速開發(fā)調(diào)試、易于部署的能力。據(jù)此,采用了Winform+MVC的方案,利用Winform控件庫進行程序界面的迅捷設(shè)計,通過MVC模式實現(xiàn)了UI與數(shù)據(jù)的解耦。
文中將開發(fā)的管控系統(tǒng)部署在四川航天長征裝備制造有限公司某車間車削單元,圖10所示為管控系統(tǒng)程序界面與單元運行展示。該系統(tǒng)實現(xiàn)了基于生產(chǎn)現(xiàn)場運行事件的自動響應(yīng)與調(diào)度控制,能根據(jù)生產(chǎn)任務(wù)自動控制相關(guān)設(shè)備實現(xiàn)物料轉(zhuǎn)運、倉儲管理、生產(chǎn)加工、日志記錄。使用該管控系統(tǒng)后,加工單元對工件實現(xiàn)了100%的狀態(tài)追蹤,形成了面向單元生產(chǎn)現(xiàn)場的實時可視化/自動化化監(jiān)控、異常處理、設(shè)備保護、數(shù)據(jù)統(tǒng)計與分析一體化系統(tǒng)。
圖10 單元運行展示
文中針對加工單元數(shù)字化管控所需解決的設(shè)備管控與采集難、數(shù)字化程度低、系統(tǒng)響應(yīng)慢等問題,利用.NET技術(shù),設(shè)計并開發(fā)了基于FSM的數(shù)字化管控系統(tǒng)。該管控系統(tǒng)的特點如下:(1)通過B/S與C/S架構(gòu)的組合設(shè)計,將基礎(chǔ)數(shù)據(jù)與生產(chǎn)數(shù)據(jù)動靜分離,與硬件設(shè)備組成了單元信息互聯(lián)互通架構(gòu)。(2)構(gòu)建了可配置通信格式的設(shè)備通信模塊,實現(xiàn)多源異構(gòu)設(shè)備實時數(shù)據(jù)采集與封裝處理。(3)基于響應(yīng)式系統(tǒng)設(shè)計,利用FSM對生產(chǎn)調(diào)度進行行為建模,能夠依據(jù)生產(chǎn)事件驅(qū)動單元自動化生產(chǎn)調(diào)度與設(shè)備管控。
此管控系統(tǒng)已在公司某車削單元完成了測試與部署。經(jīng)測試,在系統(tǒng)控制下,此單元實現(xiàn)了全流程數(shù)字化自動生產(chǎn)調(diào)度,為后續(xù)數(shù)字孿生車間、數(shù)字工廠的建設(shè)提供了數(shù)據(jù)基礎(chǔ)。