黃才勝
摘 ?要:基于汽車電子、消費電子行業(yè)的倉儲系統(tǒng),利用OPC UA、Socket、WebSocket、H5等技術開發(fā)自動無人倉儲的監(jiān)控系統(tǒng)。服務端使用OPC UA、Socket協(xié)議采集底層設備控制系統(tǒng)的運行參數(shù),將需要保存的參數(shù)存儲到MySQL數(shù)據(jù)庫中,并生成JSON格式數(shù)據(jù)使用WebSocket協(xié)議發(fā)送給前端,前端使用H5建模,前端在運行中接收、分析數(shù)據(jù)并展示各設備的實時運動軌跡和當前運行狀況,通過操作可消除非故障性報警,與WMS系統(tǒng)進行聯(lián)網(wǎng),查看倉庫各個庫位的庫存信息,以此來實現(xiàn)對整個無人倉的集中監(jiān)控與管理。最終,通過系統(tǒng)調(diào)試與深化設計進一步完善系統(tǒng),期望該文可以為類似項目提供參考。
關鍵詞:自動無人倉儲;OPC UA;WebSocket;監(jiān)控系統(tǒng)
中圖分類號: TP311 ? ? ? ? ? ? 文獻標志碼:A
0 引言
自動無人倉是計算機技術結(jié)合自動化行業(yè)的復雜系統(tǒng),其有傳統(tǒng)倉儲系統(tǒng)無可比擬的優(yōu)點,多層貨架密集存儲節(jié)約了數(shù)倍空間,從貨物入庫到出庫由計算機自動調(diào)配合理分配空間,堆垛機、穿梭車在密集空間搬運貨物靈活自如。在如此大型的系統(tǒng)中,監(jiān)控系統(tǒng)是不可或缺的一部分,其可以全面監(jiān)控整個系統(tǒng)的運行情況、設備出現(xiàn)異常時能快速上報、促使管理人員在最短的時間內(nèi)處理異常,使系統(tǒng)恢復正常運轉(zhuǎn),可以簡單快捷地查看庫區(qū)任何貨位的庫存情況,收集到的數(shù)據(jù)全面、精細,對重要數(shù)據(jù)進行永久存儲,查詢系統(tǒng)的相關工作報表,基于Web的訪問方式使其使用非常便捷。
1 工程概況
由于無人倉儲系統(tǒng)內(nèi)都是由各種自動化設備在相應任務指令下自動工作的,因此該系統(tǒng)具備面積大、貨物存儲密集、設備多、各個供應商的設備數(shù)據(jù)結(jié)構不統(tǒng)一、汽車電子和消費電子生產(chǎn)周期快、要求處理異常時間短等特點。這就需要開發(fā)一套完善的系統(tǒng)兼容不同供應商的設備,實時監(jiān)控整個系統(tǒng)的運行狀況。設備控制器數(shù)據(jù)能全面反應現(xiàn)場設備的運行狀態(tài),計算機和網(wǎng)絡系統(tǒng)數(shù)據(jù)傳輸快,從底層設備到前端顯示只需秒級甚至毫秒級時間,這樣在出現(xiàn)故障時能快速上報故障設備、故障地點、故障原因,并能記錄系統(tǒng)運行參數(shù),查看一段時間內(nèi)的運行情況,分析故障參數(shù)并改善系統(tǒng)運行工況,預防后期出現(xiàn)相同故障或減少頻發(fā)的次數(shù)。
2 系統(tǒng)整體架構
無人倉儲監(jiān)控系統(tǒng)主要分為底層設備層、數(shù)據(jù)采集服務層、前端展示層,系統(tǒng)結(jié)構圖如圖1所示。底層設備層主要由PLC和定制控制器控制各自動化設備,設備運行過程中,所有參數(shù)都保存在PLC存儲區(qū),定制控制器控制的設備運行參數(shù)保存在控制器Socket服務端。數(shù)據(jù)采集服務層使用OPC UA和Socket協(xié)議[1], OPC UA協(xié)議分2種形式獲取PLC存取區(qū)數(shù)據(jù),一種形式是采用按一定時間間隔讀取數(shù)據(jù),另一種形式采用訂閱的方式獲取其數(shù)據(jù),該方式主要針對那些時間敏感度較高的數(shù)據(jù),當PLC存取區(qū)數(shù)據(jù)改變時,PLC程序會主動上報數(shù)據(jù)給上位數(shù)據(jù)采集系統(tǒng),通過這2種方式對不同時間敏感度的數(shù)據(jù)進行分層次采集,既能夠及時獲取時間敏感度較高的數(shù)據(jù),又避免PLC運行負擔過大,影響性能。
數(shù)據(jù)采集服務層采集到的設備層數(shù)據(jù),一方面將其組合成JSON格式,通過WebSocket協(xié)議發(fā)送給前端展示層,另一方面將需要永久保存的數(shù)據(jù)存儲到數(shù)據(jù)庫中,方便后期查詢和作為生成報表的數(shù)據(jù)源。前端接收到服務層發(fā)送上來的數(shù)據(jù),解析該JSON格式字串,分發(fā)到不同展示區(qū)及設備模型進行狀態(tài)展示,使監(jiān)控人員對現(xiàn)場運行狀況一目了然。
3 倉儲監(jiān)控系統(tǒng)設計
3.1 系統(tǒng)模式
自動無人倉儲監(jiān)控系統(tǒng)的工作模式為中控室集中監(jiān)控、人工參與處理異常的模式,在中控室運行該系統(tǒng)的前端監(jiān)控界面,服務端將各設備參數(shù)采集上來并發(fā)送到前端,當設備有異常時會提示詳細報警信息,管理人員會根據(jù)具體報警信息選擇處理方案。管理人員還可以在辦公室查看各種運行報表,以此來優(yōu)化系統(tǒng)或提前預知系統(tǒng)可能出現(xiàn)的故障。
3.2 硬件配置
2臺服務器,一臺作為主運行服務器,另一臺作為主機熱備服務器。每臺服務器需4核以上處理器,具備多線程處理能力,一臺交換機,一個大屏顯示器或其他需要訪問的電腦、手機設備作為客戶端運行硬件環(huán)境。底層數(shù)據(jù)源來自數(shù)十臺西門子PLC和RCS系統(tǒng)的控制器。
3.3 軟件配置
該系統(tǒng)部署在Windows Server 2016系統(tǒng)上,數(shù)據(jù)采集服務端基于.NET開發(fā)的Windows Service和 Asp.NET Api系統(tǒng),服務器上安裝.NET4.6或以上版本,開啟Asp.NET4.6或以上版本功能,服務器安裝MySQL8.0版本數(shù)據(jù)庫,客戶端基于Web開發(fā)運行在瀏覽器上。
4 倉儲監(jiān)控系統(tǒng)功能設計
4.1 倉儲管理流程及監(jiān)控過程
無人倉儲工作流程主要分為自動入庫和自動出庫2個部分,該倉儲監(jiān)控系統(tǒng)主要對該過程進行監(jiān)控跟蹤[2]。
4.1.1 入庫工作流程
貨物上輸送線→掃描儀掃描條形碼信息→信息提交至WMS/WCS→WMS/WCS獲取物料具體信息(上位ERP系統(tǒng))→生成入庫任務,基于入庫規(guī)則分配庫位→任務指令和任務號下發(fā)至下位輸送線控制器和堆垛機控制器→控制器接收入庫任務指令和任務號→貨物運輸。
在運輸過程中貨物要經(jīng)過外形檢測、外形檢測異常將直接被輸送到異??诓蟾娼oWMS/WCS系統(tǒng),外形檢測正常,輸送線系統(tǒng)將貨物運送到環(huán)形小車或輸送線入庫口并上報給WMS/WCS,WMS/WCS下發(fā)指令給堆垛機控制器,堆垛機按任務在巷道內(nèi)將貨物輸送到指定的貨架排,最后由貨叉或穿梭板將貨物運送到指定貨位,堆垛機控制器上報任務完成信號給WMS/WCS。
4.1.2 出庫工作流程
WMS/WCS系統(tǒng)接收出庫任務并計算出庫貨位生成任務號下發(fā)給堆垛機系統(tǒng),堆垛機按照指定行走路徑到達預定庫位,提取貨物,將貨物輸送到環(huán)穿小車或輸送線并上報給WMS/WCS,輸送線接收到WMS/WCS指令,將貨物運送到相應出庫口并上報給WMS/WCS。
4.1.3 監(jiān)控跟蹤功能
在入庫過程中,監(jiān)控系統(tǒng)從輸送線控制器和堆垛機控制器中獲取任務號,跟蹤顯示貨物在輸送線上的運動軌跡,直到貨叉或穿梭車放下貨物入庫成功,或排放到異??冢∠仑浳?。
在出庫過程中監(jiān)控系統(tǒng)從堆垛機控制器獲取任務號,一直跟蹤顯示貨物隨堆垛機一起運動到輸送線,然后從輸送線控制器獲取任務號,跟蹤貨物在輸送線上運動的軌跡,直到貨物到達出庫口并被取走。
在整個監(jiān)控過程中可以點擊貨物或承載貨物的設備查看當前任務ID,通過ID可以查看貨物的具體信息。當?shù)讓釉O備工作模式或工作狀態(tài)發(fā)生改變或出現(xiàn)異常時,上報當前工作模式、工作狀態(tài)和報警,并記錄到數(shù)據(jù)庫中永久保存。
4.2 功能模塊設計
4.2.1 數(shù)據(jù)采集
數(shù)據(jù)采集功能塊設計中,每個設備類擁有一些共同的屬性和功能,如ID、IP地址、數(shù)據(jù)節(jié)點、連接功能、讀取數(shù)據(jù)功能等,其中數(shù)據(jù)節(jié)點又包含節(jié)點名屬性和節(jié)點當前值屬性等,屬性名對應OPC UA訪問的節(jié)點標簽,包括名字空間、標簽層級關系、標簽名。以此基本類為基類,對所有設備類型和設備參數(shù)節(jié)點進行繼承。系統(tǒng)配置與運行分為3步。1)將各設備的屬性配置成XLM文檔,當服務初始化時,讀取配置文檔初始化各設備的相關屬性。2)運行過程中,實時采集PLC或其他控制器中的設備運行參數(shù)。3)在采集時,上位程序?qū)⒃摴?jié)點標簽名發(fā)送到OPC UA控制器,OPC UA控制器返回對應的節(jié)點值給上位程序。在數(shù)據(jù)采集方式設計過程中,選取了2種方式,分別為讀取與訂閱。
讀?。翰捎幂喸兎椒?,間隔設定的時間將每個節(jié)點標簽名組成數(shù)組發(fā)送給OPC UA控制器,OPC UA控制器按照標簽對應關系返回相應的值,也可以發(fā)送一組節(jié)點的父節(jié)點標簽給OPC UA控制器,OPC UA控制器將該父節(jié)點下的所有子節(jié)點數(shù)據(jù),按照字節(jié)數(shù)組的形式返回給客戶端,客戶端按照順序解析該字節(jié)數(shù)組,讀取父節(jié)點字節(jié)數(shù)組的方式比下發(fā)每個節(jié)點標簽的速度快數(shù)倍甚至數(shù)十倍。
訂閱:將需要采集的節(jié)點標簽加入訂閱列表中下發(fā)給OPC UA控制器,該方法是OPC UA控制器按照設定的掃描間隔(一般是200 ms)掃描節(jié)點值,當節(jié)點值發(fā)生改變時,主動上報給上位程序,該方法采集的數(shù)據(jù)實時性更高,通信消耗更小。
如果因外界因素造成采集模塊與設備控制器信號中斷,當網(wǎng)絡連接恢復后能夠自動重連,以此來最大程度地降低因網(wǎng)絡通信中斷等外界原因造成數(shù)據(jù)丟失的影響。
4.2.2 數(shù)據(jù)適配分發(fā)功能模塊
設計適配前端展示數(shù)據(jù)格式和保存到數(shù)據(jù)庫數(shù)據(jù)格式2種。
由于現(xiàn)場設備各種各樣不同設備來自不同廠家,數(shù)據(jù)不能完全統(tǒng)一,針對該情況先設計一些共同的功能,如獲取設備當前值功能、前端數(shù)據(jù)適配功能、數(shù)據(jù)庫設備適配功能等,讓所有設備適配器都繼承自該基類,然后根據(jù)各自的數(shù)據(jù)特點重寫該基類方法。數(shù)據(jù)庫存儲功能是利用Entity Framework進行數(shù)據(jù)庫操作。發(fā)送到前端的功能是利用WebSocket協(xié)議與前端進行雙向通信,以此可以實時更新現(xiàn)場設備的運行狀態(tài),如果由于外界原因造成前端和服務端網(wǎng)絡中斷,當恢復網(wǎng)絡連接后前后端具備自動重連功能,方便監(jiān)控人員使用,減少或防止漏報信息。
4.3 數(shù)據(jù)庫層
數(shù)據(jù)庫層包括工廠車間表、車間區(qū)域表、設備類型表、設備表,這些表預定義從工廠車間信息、該車間有多少工作區(qū)域、整個車間有多少設備類型、每個工作區(qū)域有多少工作設備。報警表、工作狀態(tài)表實時存儲各設備的工作狀況。通過角色表、用戶表、角色菜單表進行權限管理。
4.4 前端監(jiān)控界面層
前端監(jiān)控界面層設置編輯態(tài)、運行態(tài)2種。
編輯態(tài)是用于繪制場景布局,場景布局主要是根據(jù)現(xiàn)場設計的CAD圖紙繪制一些靜態(tài)控件和一些配置參數(shù),靜態(tài)控件布局有貨架、環(huán)穿軌道、輸送線、堆垛機巷道等,靜態(tài)控件繪制是根據(jù)設備模型為單位進行拖拽放置,然后可以編輯這些控件的ID、名稱、位置、大小、顏色、狀態(tài)等。
參數(shù)配置包括服務端WebSocket地址、顯示時界面和實際的縮放比例、不同語言的對照表等,通過編輯可預定義運行時的場景并保存成配置文件。運行態(tài)讀取場景配置文件載入運行場景,接收后臺服務數(shù)據(jù),解析數(shù)據(jù)運行得到各個設備組件及設置設備狀態(tài)。
4.5 報表
管理系統(tǒng)API功能塊包括各種API返回各種報表參數(shù)給前端管理界面,管理系統(tǒng)界面訪問管理API,查看以圖形展現(xiàn)的各種報表。
下面主要以堆垛機為例進行論述:接收到的參數(shù)包括設備ID,當前位置(X、Y、Z)、是否載貨、報警列表等。堆垛機運動有3個空間坐標X、Y、Z ,堆垛機主體按照X參數(shù)沿巷道行走,載貨平臺按照Y參數(shù)由堆垛機提升結(jié)構進行升降,穿梭板按照Z參數(shù)在貨架內(nèi)進行穿梭運動。當有設備出現(xiàn)故障報警時,設備顯示為紅色,點擊該故障設備可以查看報警信息列表,用戶也可以查看各個設備的運行參數(shù)、貨架庫位的存儲貨物信息。
5 系統(tǒng)調(diào)試與深化設計
5.1 調(diào)試方案
系統(tǒng)開始運行,采集服務端將載入底層設備參數(shù)配置文件,連接底層設備各個控制器,下發(fā)訂閱參數(shù)標簽地址,啟動WebSocket服務。開啟采集、存儲數(shù)據(jù)、發(fā)送到前端數(shù)據(jù)線程,啟動Web Api功能。一切準備就緒,前端就可以連接服務端。在瀏覽器中訪問前端站點,前端將加載場景布局控件,并且會顯現(xiàn)是否與服務端WebSocket連接成功,連接成功就將接收后端發(fā)送的數(shù)據(jù),并動態(tài)加載運動設備或輸送線上運動的貨物,可以點擊各個設備查看設備當前的運行參數(shù)和貨物情況。當有設備報警時,該設備將呈現(xiàn)紅色,并給出報警原因列表。點擊貨位上的貨物可查看貨物信息清單,經(jīng)過信息整理,形成相應報表信息。
5.2 深化設計
該系統(tǒng)涉及的數(shù)據(jù)量大,給前端處理帶來了一定壓力;因此,采用實時發(fā)送發(fā)送周期內(nèi)的變化數(shù)據(jù),沒變化的數(shù)據(jù)間隔較長一段時間,按順序依次發(fā)送,使前端運行效果更流暢,當有新的連接時,發(fā)送所有數(shù)據(jù)給新連接上來的用戶,避免新連接上來的前端用戶長時間等待后臺沒有變化的數(shù)據(jù)而顯示不全。
設備數(shù)據(jù)上報時帶有一定隨機性(尤其運動中的設備位置信息),后方的設備有時會比前方設備的數(shù)據(jù)先上報,針對這一問題,對運動設備數(shù)據(jù)按照位置記錄進行有效排序,從而防止顯示界面上出現(xiàn)設備碰撞、穿越、重疊及混亂的現(xiàn)象,并將算法邏輯放置在后臺服務端,以此減輕前端的運行壓力。
6 結(jié)論
自動無人倉儲監(jiān)控系統(tǒng)解決了大空間多設備的全局監(jiān)控問題,對不同廠家的各種設備進行聯(lián)網(wǎng),形成統(tǒng)一的處理方案,幫助監(jiān)控人員對現(xiàn)場形成有效的集中監(jiān)控,能夠準確的跟蹤設備的實時位置、狀態(tài),方便查閱貨物的各種信息,減少了系統(tǒng)故障漏報少報的問題、縮短了解決系統(tǒng)故障的時間。該系統(tǒng)具有對不同時間敏感度的數(shù)據(jù)按時間分層采集處理,采集模塊與底層設備控制器、前端與服務端斷線都能自動重連等穩(wěn)定運行的特點。采集模塊和前端采用配置和編輯模式,對于不同的項目都能夠快速移植。
參考文獻
[1]顧巖,程奐翀,王震,等.基于OPCUA的3D實時監(jiān)控系統(tǒng)設計與實現(xiàn)[J].系統(tǒng)仿真學報,2017,29(11):2767-2773.
[2]陳文娟.倉庫物流管理三維可視化仿真監(jiān)控系統(tǒng)的設計[J].物流技術,2014,33(15):421-422,453.