郎新星,康永新
(中國電子科技集團(tuán)公司第二研究所,山西 太原 030024)
作為典型的自動化物流倉儲設(shè)備之一,自動化立體倉庫在各行業(yè)中的應(yīng)用越來越廣泛,它代替了傳統(tǒng)的平面?zhèn)}庫和貨架,通過充分利用空間高度,增加了相同占地面積上的可用存儲空間;通過堆垛機(jī)和貨叉的快速移動,實現(xiàn)了由物到人的便捷存取;通過配套信息管理系統(tǒng),提高了庫房及物料管理的工作效率和信息化程度。自動化立體倉庫的主體由貨架、堆垛機(jī)、輸送機(jī)及操作控制系統(tǒng)組成,可引入AGV小車完成托盤或料箱的流轉(zhuǎn)及搬運任務(wù),提高了整個系統(tǒng)的自動化程度,能同時完成物料的存取及信息存儲功能。這其中,操作控制系統(tǒng)主要由倉庫控制系統(tǒng)(WCS)和WCS組成,在自動化立體倉庫系統(tǒng)中起著主導(dǎo)性的作用[1]。
WCS是倉庫控制系統(tǒng)(Warehouse Control System)的縮寫。WCS是介于WMS系統(tǒng)和可編程控制器(PLC)系統(tǒng)之間的一層管理控制系統(tǒng)。它與WMS系統(tǒng)進(jìn)行信息交互,接收WMS系統(tǒng)發(fā)來的指令,進(jìn)行空間計算和任務(wù)優(yōu)先級調(diào)配之后,將其發(fā)送給PLC系統(tǒng),從而驅(qū)動自動化立體倉庫及輸送設(shè)備觸發(fā)相應(yīng)的機(jī)械動作。它可以將PLC系統(tǒng)的狀態(tài)及數(shù)據(jù)實時采集并反映在軟件界面上,方便用戶進(jìn)行手動操作及監(jiān)控設(shè)備的實時狀態(tài)。WCS通常由WCS服務(wù)器、WCS控制工作站兩部分組成[2]。服務(wù)器負(fù)責(zé)與WMS或其他系統(tǒng)的信息交互,同時負(fù)責(zé)維護(hù)后臺數(shù)據(jù)庫??刂乒ぷ髡咀鳛樽詣踊Ⅲw倉庫的核心控制系統(tǒng),負(fù)責(zé)向相關(guān)機(jī)械設(shè)備發(fā)送執(zhí)行指令及獲取設(shè)備的實時狀態(tài),并及時上報至服務(wù)端。
WCS系統(tǒng)的整體架構(gòu)采用四層結(jié)構(gòu)自上至下進(jìn)行構(gòu)建,分別為:應(yīng)用層、服務(wù)層、功能層和數(shù)據(jù)層,如圖1所示。
圖1 WCS體系架構(gòu)圖
應(yīng)用層:系統(tǒng)應(yīng)用的前端形式,可根據(jù)客戶需求進(jìn)行不同平臺的搭建。應(yīng)用層負(fù)責(zé)用戶界面的呈現(xiàn)和數(shù)據(jù)信息的顯示,以及部分控制功能的入口,不對業(yè)務(wù)邏輯或數(shù)據(jù)操作進(jìn)行處理。
服務(wù)層:與設(shè)備的通訊需要搭建PLC通訊服務(wù),完成PLC狀態(tài)信息的讀取和操作指令的寫入;數(shù)據(jù)庫訪問服務(wù)完成系統(tǒng)內(nèi)部管理和控制信息的記錄及讀?。豢梢暬Ч膶崿F(xiàn)需要具備資源文件讀寫和加載服務(wù);WCS與外部上游管理系統(tǒng)(WMS、ERP、SAP、MES等)或控制系統(tǒng)(PDA、RFID、PAD、LED等)進(jìn)行信息交互和指令下達(dá),通過外部系統(tǒng)接口完成服務(wù)。
功能層:結(jié)合具體的業(yè)務(wù)邏輯,針對特定的設(shè)備任務(wù)進(jìn)行操作,負(fù)責(zé)對訪問服務(wù)調(diào)用的數(shù)據(jù)模型進(jìn)行處理,完成數(shù)據(jù)的管理和應(yīng)用功能的實現(xiàn)。
數(shù)據(jù)層:針對PLC狀態(tài)點進(jìn)行數(shù)據(jù)采集,創(chuàng)建持久化的數(shù)據(jù)模型,供服務(wù)訪問和功能調(diào)用。針對數(shù)據(jù)庫對象實體進(jìn)行存儲和管理,完成編程對象和數(shù)據(jù)庫表之間的映射。
通過該架構(gòu)的設(shè)計,使得軟件系統(tǒng)結(jié)構(gòu)的劃分更為明確,在保證功能模塊獨立完整的同時降低了耦合度;有助于開發(fā)團(tuán)隊分工合作,促進(jìn)合作開發(fā)和資源共享,解決了協(xié)同開發(fā)過程中的沖突問題;提高了各功能模塊的可復(fù)用性,使得開發(fā)成本和后期維護(hù)成本都大大降低。
WCS的核心功能模塊如圖2所示。
圖2 WCS功能模塊
任務(wù)調(diào)度模塊:對上游系統(tǒng)發(fā)送的自動出入庫任務(wù)及自身發(fā)起的手動出入庫任務(wù)生成隊列,并按照插入優(yōu)先級進(jìn)行排序,如設(shè)備發(fā)生報警,可對隊列進(jìn)行刷新和清空等操作。
手動控制模塊:包括手動出入庫任務(wù)的發(fā)起,對巷道進(jìn)行封鎖,控制輸送機(jī)進(jìn)行移動,對設(shè)備報警進(jìn)行總體恢復(fù)。
設(shè)備監(jiān)控模塊:包括整體布局俯視動態(tài)圖,堆垛機(jī)水平移動實時位置監(jiān)控,提升機(jī)實時高度顯示,控制模式顯示,移動設(shè)備的速度、加速度、功耗、運行時長、電流值,存儲空間分布,料箱或托盤狀態(tài),以及部分關(guān)鍵PLC狀態(tài)點顯示。
參數(shù)設(shè)置模塊:包括貨位初始化及禁用操作,料箱或托盤的初始化及凍結(jié)操作,PLC通訊必要參數(shù)配置和數(shù)據(jù)庫服務(wù)必要參數(shù)設(shè)置等。
系統(tǒng)管理模塊:包括用戶角色創(chuàng)建及賬號密碼管理,角色權(quán)限分配及配置,系統(tǒng)出入庫操作日志記錄及查詢,設(shè)備報警記錄瀏覽及檢索,針對出入庫頻次、料箱使用頻次、設(shè)備報警頻次等數(shù)據(jù)的統(tǒng)計圖表。
WCS可根據(jù)實際需求接入掃描槍、RFID、PDA等眾多周邊設(shè)備,接口對接方式眾多,應(yīng)囊括絕大部分市面主流的數(shù)據(jù)對接方式,例如,WEBSERVICES數(shù)據(jù)庫中間表、SOCKET報文、REST、HTTP協(xié)議等,并可根據(jù)客戶實際需求完成數(shù)據(jù)及功能接口的定制開發(fā)。下面以與WMS對接為例進(jìn)行說明,WCS服務(wù)檢測到數(shù)據(jù)表中記錄發(fā)生變化,根據(jù)操作類型識別出入庫操作類型,根據(jù)料箱號和取貨口號進(jìn)行設(shè)備動作指令發(fā)送,根據(jù)任務(wù)狀態(tài)進(jìn)行作業(yè)條件變更。出入庫流程如圖3所示。
圖3 WCS與WMS對接流程
(1)項目簡介??蛻魹闊熍_某集橡膠油封、PTFE油封、聚氨酯高壓油封等產(chǎn)品的研發(fā)、制造于一體的專業(yè)化公司。通過為其提供雙存儲位的自動化立體倉庫設(shè)備,并在項目中運用本文設(shè)計的WCS,對其共計1 500多種規(guī)格的系列產(chǎn)品進(jìn)行管控,包括減振器油封、發(fā)動機(jī)油封、氣門油封、傳動系統(tǒng)油封、車橋油封、轉(zhuǎn)向系統(tǒng)油封、軸承油封、液壓缸油封等的原材料、半成品和成品。該項目WCS設(shè)計與實現(xiàn),使倉庫的出入庫、調(diào)撥、庫存轉(zhuǎn)移和庫存盤點等日常業(yè)務(wù)都能夠穩(wěn)定、高效地進(jìn)行,并能夠應(yīng)對多用戶協(xié)同使用和任務(wù)交叉排序的情況,促進(jìn)了客戶的信息化建設(shè)和智能生產(chǎn)。
(2)技術(shù)路線。首先,以本文提出的架構(gòu)搭建思路作為整體設(shè)計的前提。其次,基于客戶實際的業(yè)務(wù)特點進(jìn)行需求分析,對客戶的實際功能需求和業(yè)務(wù)流程進(jìn)行了歸納總結(jié),完成信息架構(gòu)的搭建。然后,在WCS系統(tǒng)整體的設(shè)計階段分別對架構(gòu)、功能和數(shù)據(jù)結(jié)構(gòu)進(jìn)行設(shè)計。相對于傳統(tǒng)WCS系統(tǒng),本項目的WCS在常規(guī)架構(gòu)基礎(chǔ)上加入了數(shù)據(jù)感知服務(wù),通過異步方式完成PLC信息狀態(tài)的獲取。在通過訂閱機(jī)制獲取PLC狀態(tài)的基礎(chǔ)上,結(jié)合SQL Dependency技術(shù)實現(xiàn)任務(wù)的異步更新和優(yōu)先級排序,從而完成任務(wù)的拆分、調(diào)度和優(yōu)化。在系統(tǒng)的實現(xiàn)階段,采用MVVM模式搭建系統(tǒng)基礎(chǔ)框架,并基于OPC UA標(biāo)準(zhǔn)模型進(jìn)行改造和建模,提升了通訊接口的實時性和通用性。另外,為了規(guī)范整個物流系統(tǒng)內(nèi)所有硬件設(shè)備的通訊格式和協(xié)議標(biāo)準(zhǔn),采用相對更容易序列化和較為主流的JSON文件格式進(jìn)行傳輸和交互。在任務(wù)分解的過程中,結(jié)合自身設(shè)備和現(xiàn)場物流環(huán)境的特點,將堆垛機(jī)、傳輸線、AGV的任務(wù)作為一個完整任務(wù)的三個獨立單元,根據(jù)實際情況進(jìn)行組合和協(xié)調(diào)。在設(shè)備調(diào)試和用戶后期使用過程中,對WCS系統(tǒng)功能和性能展開了測試與分析,通過用戶真實使用環(huán)境下的實際操作和編寫測試用例方式相結(jié)合進(jìn)行測試,針對用戶體驗進(jìn)行了部分優(yōu)化和調(diào)整。
(3)架構(gòu)設(shè)計。應(yīng)用層:應(yīng)用層主要針對UI進(jìn)行設(shè)計和客戶端開發(fā),實現(xiàn)用戶和業(yè)務(wù)流程及后端數(shù)據(jù)的接入及交互。本項目采用WPF進(jìn)行客戶端開發(fā),并利用其MVVM模式進(jìn)行模塊解耦。ViewModel層為View層和Model層的中間傳遞層,它將前端View層所需展示的數(shù)據(jù)從Model層中進(jìn)行獲取和轉(zhuǎn)化,并完成傳遞。同時,ViewModel層還可以針對前端用戶指令和功能接口進(jìn)行業(yè)務(wù)流程的封裝。數(shù)據(jù)的更新、增加和刪除等實際操作則交由Model層來完成,在完成持久化操作的同時,還可感知數(shù)據(jù)綁定視圖的信息和狀態(tài)變化,并在發(fā)生變化時通知View-Model層執(zhí)行相應(yīng)的操作。
服務(wù)層:針對PLC信息獲取的服務(wù)以PLC供應(yīng)商提供的OPC UA服務(wù)作為基礎(chǔ),針對具體功能流程服務(wù)進(jìn)行自主開發(fā),包括PLC通訊、路徑規(guī)劃、任務(wù)生成和分解、入庫單據(jù)服務(wù)、庫位存儲服務(wù)、電子標(biāo)簽服務(wù)等功能。將上述功能進(jìn)行整合并形成通用功能服務(wù),整體層次以功能流程為基本單位,針對具體業(yè)務(wù)進(jìn)行開發(fā)。該過程需要使用服務(wù)的通信組件,使每個服務(wù)將自己提供給其他服務(wù)使用。
功能層:該層主要完成核心業(yè)務(wù)功能,同時將設(shè)備控制動作進(jìn)行串聯(lián),完成設(shè)備與軟件功能的交互,針對不同的功能需求進(jìn)行邏輯處理和指令響應(yīng)。根據(jù)客戶的需求和設(shè)備的動作流程,按照設(shè)備的每個獨立結(jié)構(gòu)和功能單元進(jìn)行模塊劃分,控制輸送線和堆垛機(jī)運動的模塊為內(nèi)部傳輸模塊;控制外形檢測、稱重的部分為檢測模塊;控制AGV的模塊為搬運模塊。
數(shù)據(jù)層:數(shù)據(jù)層是系統(tǒng)數(shù)據(jù)訪問與操作的接口,包括數(shù)據(jù)庫存儲和資源文件的存儲等。根據(jù)客戶要求,數(shù)據(jù)庫采用SQL Server進(jìn)行搭建,并利用Redis進(jìn)行緩存和遠(yuǎn)程字典服務(wù)。針對兩種數(shù)據(jù)庫的操作進(jìn)行通用化封裝,形成數(shù)據(jù)庫操作組件,供各個功能模塊進(jìn)行調(diào)用。
(4)功能設(shè)計。根據(jù)系統(tǒng)的架構(gòu)設(shè)計,將整體WCS系統(tǒng)劃分為五大功能模塊:基礎(chǔ)管理、庫位管理、任務(wù)調(diào)度、AGV管理、設(shè)備監(jiān)控。
基礎(chǔ)管理包括用戶管理、角色管理、權(quán)限管理。用戶管理對系統(tǒng)用戶的基本信息進(jìn)行增、刪、改、查,超級管理員賬戶可對普通操作用戶進(jìn)行管理,普通操作用戶可對自己的密碼進(jìn)行修改。角色管理可使管理員對普通用戶的角色進(jìn)行劃分和分配,如管理員、操作員、審計員等。權(quán)限管理結(jié)合角色管理進(jìn)行用戶行為的限制和歸類,如托盤的使用權(quán)限分配、操作功能入口的可進(jìn)入限制等。
庫位管理是對當(dāng)前自動化立體倉庫所有庫位進(jìn)行序列化生成和管理,對其他設(shè)備外部的平庫貨架、虛擬貨區(qū)進(jìn)行定義和劃分,采用統(tǒng)一的編碼規(guī)則進(jìn)行界定和標(biāo)識。在推薦入庫貨位時,根據(jù)每個貨位的狀態(tài)和位置,可以配合AGV及堆垛機(jī)完成路線優(yōu)化。結(jié)合用戶權(quán)限,可針對庫位進(jìn)行用戶分配、狀態(tài)變化,通過“禁用”和“啟用”功能來規(guī)定某貨位是否能放置托盤,通過“凍結(jié)”和“解凍”功能來規(guī)定某托盤是否能用于出入庫操作。
任務(wù)管理包括任務(wù)的生成、插入、排序、刪除、轉(zhuǎn)化等。根據(jù)任務(wù)操作類型的不同和涉及的硬件設(shè)備不同,進(jìn)行整體任務(wù)的串聯(lián)和調(diào)度。在每一條任務(wù)生成時,對當(dāng)前時間進(jìn)行序列化,并在當(dāng)前數(shù)據(jù)庫中最新任務(wù)的基礎(chǔ)上進(jìn)行追加,生成流水號與當(dāng)前任務(wù)綁定,從而保證任務(wù)的唯一性。如遇到出庫任務(wù)為內(nèi)側(cè)料箱,需要將外側(cè)料箱首先進(jìn)行轉(zhuǎn)儲,則生成一條轉(zhuǎn)儲類型的子任務(wù),同當(dāng)前父任務(wù)一同插入任務(wù)隊列,隊列中所有任務(wù)根據(jù)優(yōu)先級進(jìn)行排序。另外,為了防止任務(wù)意外沖突和死鎖,為用戶提供了人工追加和刪除任務(wù)的功能按鈕。
AGV管理分為AGV調(diào)度、AGV本體檢測、工作站管理、充電站管理、通訊站管理和接駁點管理等。通過WEB API方式進(jìn)行通訊,實現(xiàn)點位部署、AGV配置、搬運任務(wù)生成與調(diào)度、交通管制、整體日志管理等功能。
設(shè)備監(jiān)控實現(xiàn)針對當(dāng)前任務(wù)隊列的顯示、所有硬件設(shè)備實時狀態(tài)的顯示、用戶操作軌跡的實時顯示、物流設(shè)備整體運動狀態(tài)的可視化。得益于本設(shè)計架構(gòu)的良好兼容性,在整體可視化系統(tǒng)的實現(xiàn)方式選擇時,既可采用二維也可采用三維的方式進(jìn)行開發(fā)。由于本項目涉及的堆垛機(jī)較多,且堆垛機(jī)兼顧巷道較多,故采用二維俯視圖的方式進(jìn)行展示,用戶可觀測到每個硬件設(shè)備的實時位置和移動速度。
本文介紹了自動化立體倉庫WCS的體系架構(gòu)和核心功能,探討了其系統(tǒng)流程,并以某客戶項目為案例進(jìn)行了設(shè)計思路驗證。文中闡述的設(shè)計架構(gòu)和搭建方法已經(jīng)在多個實際項目中交付客戶并通過驗證,對同類軟件系統(tǒng)具有一定的參考意義。然而,本文中WCS在與PLC通訊時采用的是基于OPC UA的交互方式,依賴于PLC供應(yīng)商提供的OPC UA服務(wù)器構(gòu)建的服務(wù)環(huán)境,訂閱PLC的狀態(tài)點最大數(shù)量為500個,超過上限之后會出現(xiàn)短時間內(nèi)斷線無法重連的情況。可以通過自主研發(fā)OPC服務(wù)來解決這一問題,同時應(yīng)用服務(wù)器冗余守護(hù)進(jìn)程機(jī)制,構(gòu)建冗余狀態(tài)機(jī),對系統(tǒng)進(jìn)行故障處理,提高了系統(tǒng)的可靠性。