黃才勝

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