姜作飛 閆廣利 孫佳隆
摘 要:自動化集裝箱碼頭TOS-ECS集成缺乏成熟的接口標準,規范的接口有利于降低軟件開發維護的時間和成本。該文對TOS-ECS接口技術進行研究,首先介紹自動化集裝箱碼頭的軟件系統架構,然后介紹目前TOS與ECS接口通信的主流實現技術,并對各類接口技術進行分析比較,總結接口數據內容與格式,最后介紹數據庫設計原則,描述數據庫建表、測試數據準備、AnyLogic仿真測試等接口設計與驗證過程,為TOS和ECS開發者在設計接口時提供參考。
關鍵詞:自動化集裝箱碼頭;設備控制系統;接口;數據庫
中圖分類號:TP311.5 文獻標志碼:A
0 引言
自動化集裝箱碼頭具有作業效率高、安全可靠性高、環境污染小、節約人力等優點,是目前各集裝箱碼頭的發展趨勢。自動化集裝箱碼頭實現自動化作業,離不開碼頭操作系統(TOS)和設備控制系統(ECS)的密切配合,作為2個獨立的異構系統,TOS與ECS的信息交換依賴于接口通信。規范的接口有利于降低各種自動化軟件開發維護的時間和成本、提高軟件兼容性。然而,作為傳統行業,自動化碼頭中相關的軟件技術較為封閉,行業標準也并不成熟,該文對主流接口技術進行介紹,并闡述數據庫方式接口的設計原則、設計過程。
1 軟件系統架構
碼頭自動化系統通常包括TOS(碼頭操作系統)、上層ECS(設備調度管理系統)、下層ECS(設備控制系統)、遠程控制系統、通信交互單元、單機控制系統、自動化裝卸設備,完整的系統架構圖如圖1所示。
其中ECS是監控和控制自動化碼頭設備級所有事件和過程的軟件,特別是在協調不同類型自動化設備之間的交互時,ECS是碼頭軟件環境中必不可少的一部分。ECS一般由自動化供應商或裝卸設備制造商提供。TOS軟件負責整個碼頭的邏輯控制,包括關鍵功能,象船舶計劃、集裝箱庫存維護、工作指令生成和閘口操作。TOS軟件通常由商業公司或碼頭運營商自己提供。TOS負責根據最高效的作業順序發布任務指令,告知ECS箱區作業任務的起點、終點。ECS根據TOS指令自動規劃機械設備的運行路線并控制設備運行,指揮設備完成作業,同時反饋相關作業任務的操作狀態及結果給TOS。ECS與TOS的關系和制造企業的MES(制造執行系統)與ERP(企業資源計劃系統)的關系類似。
由于系統提供者商業戰略、技術特點、開發人員數量等因素的不同,TOS、ECS的功能范圍會有差別,象Navis的TOS包括設備調度優化功能,煙臺華東電子將調度優化抽象為ATEC軟件,ABB的ECS可以支持設備選擇、路徑選擇。
2 主流TOS-ECS接口技術
2.1 TOS-ECS接口通信架構方式
目前全球市場應用最廣泛的自動化集裝箱碼頭ECS和TOS軟件產品分別來自TBA和Navis,國內有較好應用案例的是振華重工和煙臺華東電子有限公司。Navis的TOS產品N4基于J2EE開發,支持關聯數據庫或JMS異步消息方式的ECS接口,提供數據庫接口與TBA的ECS產品TEAMS對接,提供JMS接口與卡爾瑪的ECS產品TLS對接。振華重工從2006年開始開發ECS配套軟件,并在廈門遠海碼頭項目中首次應用,遠海項目采用消息隊列+WebService技術實現與煙臺華東電子CiTOS的接口通信,ECS調用TOS的WebService服務獲取任務信息,TOS調用ECS的WebService服務獲取ECS返回的結果信息。煙臺華東電子提取TOS和ECS的部分功能做成ATEC產品,ATEC提供了多種接口方式與ECS對接:WebService、HTTP接口、socket、消息隊列。PEMA(港口設備生產協會)聯合控制系統提供商、TOS提供商和港機制造商象ABB、Siemens、Navis、TBA、Kalmar等成立接口標準化小組,并于2014年完成TOS與ECS接口規范文檔,文檔中提出現有系統中ECS接口架構方案分為消息傳遞和共享數據庫2種。
綜上所述,ECS接口通信架構方式主要分為共享數據、遠程服務調用(WebService)、消息中間件(MQ,即Message Queue)3類。
2.2 各通信架構方式比較分析
2.2.1 數據庫共享數據方式
2個系統A、B通過連接同一個數據庫,操作同一張表來實現數據交換。當系統A請求系統B處理數據時,系統A插入一條數據,系統B查詢讀取系統A插入的數據進行處理,反之亦然。
優點:使用同一數據庫,交互簡單;方便記錄狀態、時間戳等。
缺點:要避免數據表無限擴大。2套系統同時操作可能發生沖突,象行鎖、表鎖和查詢等待。
2.2.2 WebService
WebService是一種跨編程語言和跨操作系統的遠程調用技術,通過本地客戶端調用遠程服務器上的方法,來實現軟件系統之間的互聯互通。
優點:跨平臺、跨語言。
缺點:請求應答及同步調用時,存在堵塞問題,客戶端發送請求后,要等待服務端返回信息。
2.2.3 消息隊列
消息隊列MQ的應用場景是交互雙方“生產”和“消費”的速度或穩定性等性能不一致,作為抽象層,消息隊列彌合雙方的差異,多用于構建分布式互聯網應用。消息隊列常用的公共名詞包括消息(Message)、話題(Topic)、生產者(Producer)和消費者(Consumer)。
消息隊列與WebService相比,多了Broker集群,生產者把指定話題的消息發布到Broker集群,Broker集群會對消息做持久化,消費者從Broker集群訂閱指定話題的消息。TOS-ECS接口會維護TOS請求隊列與ECS結果隊列2個隊列服務,TOS請求隊列的生產者在TOS,消費者在ECS,ECS結果隊列生產者在ECS,消費者在TOS。
優點:1)實現系統解耦。2)以異步方式運行,提高系統響應速度。3)實現削峰,并發量大時允許消息隊列積壓。
缺點:1)多了一個消息隊列系統,系統可用性降低。2)系統復雜性增加,象需要考慮一致性問題、重復消費問題。
通過對3種通信方式的優缺點分析,可以發現使用數據庫方式實現相對簡單,消息隊列方式適合高并發場景,WebService方式需要在通信雙方分別開發不同接口、存在同步調用阻塞問題。自動化集裝箱碼頭真實生產場景中TOS與ECS系統交互數據量小,采用數據庫方式是最佳選擇。
2.3 TOS-ECS接口數據內容與格式
TOS發往ECS的是作業指令,ECS發往TOS的是作業狀態和設備狀態。
(1)作業指令:主要包括新作業指令、取消或更新作業指令、翻箱命令、重試命令等。作業指令可以指定裝卸設備,也可以不指定裝卸設備。可以按順序發布多條工作指令來創建作業列表,要么針對特定裝卸設備,要么由裝卸設備自由選擇作業列表。
(2)作業狀態:包括啟動/結束一條具體任務、激活一條任務、接近抓箱/放箱位置、集裝箱抓箱/放箱動作、OCR識別集裝箱、請求取箱/放箱位置(象翻箱動作)、集裝箱落位(象OCR拍攝平臺)、鎖頭仍處于閉合狀態,等待進一步動作、任務指令錯誤等。
(3)設備狀態:裝卸設備報告他們的常規狀態,不管他們是否在執行作業。象定時“心跳”監控、裝卸設備位置和可用性信息、請求新的作業命令。
傳輸的數據可以是ASCII字符或二進制數據的形式。PEMA標準提供了3種實現方案:XML,SQL,二進制消息。數據格式、通信協議也可以自定義,象ABB公司定義了AALP(ABB應用層協議),規定好消息頭、消息體,通過Socket通信方式收發數據,按AALP開發的TOS軟件可以與ABB的設備控制系統通信。
3 TOS-ECS數據庫接口設計
3.1 數據庫設計原則
自動化集裝箱碼頭裝卸作業流程主要包括裝船作業、卸船作業、提箱作業、收箱作業、移箱作業。生產作業過程包括岸橋裝卸、水平搬運、場橋堆碼3個環節。TOS-ECS接口數據庫設計要覆蓋所有作業流程、作業環節必要的交換信息。TOS與ECS交互的內容需要包括堆場地圖信息、作業任務、作業任務狀態、裝卸設備狀態。堆場地圖信息包括所有場箱位的集裝箱信息。作業任務要指定抓箱位置、放箱位置、要操作的集裝箱編號。作業任務狀態保存作業執行進度。裝卸設備狀態包括設備控制模式、設備位置。即數據庫至少要包括堆場地圖表,作業任務表,設備狀態表。
(1)堆場地圖表:按實際堆場規格保存每一個場箱位的集裝箱信息,以箱區號、貝號、排號、層號為主鍵,集裝箱信息包括集裝箱編號、類型、重量、箱門朝向。
(2)作業任務表:以任務編號為主鍵,當前執行狀態(新建、開始、完成、錯誤、取消等)、集裝箱編號、作業的起點位置、終點位置、起點類型、終點類型,優先級、執行本條作業任務的裝卸設備編號、集裝箱在拖車上的位置和箱門朝向。
(3)裝卸設備狀態表:以設備編號為主鍵,當前設備執行的作業任務編號,設備操作模式、機械狀態,設備的位置。
此外數據庫設計還包括以下要點:表之間的外鍵引用關系,各字段取值范圍、命名規則、編號規則,各字段讀寫權限分配,數據類型,表及字段命名要與行業術語一致,各表必須包括創建時間、更新時間字段。
3.2 數據庫接口設計與驗證過程
結合某碼頭實際數據進行數據庫設計及接口測試,以下是接口設計、驗證的過程。
(1)數據庫建模:采用PowerDesigner工具建模,完成表名、字段名、數據類型、數據長度、主鍵、外鍵引用、字段是否為空的定義,然后導出Oracle SQL文件,用SQL Developer導入Oracle數據庫,完成數據庫的創建。
(2)測試數據準備:測試數據依據實際項目的堆場布局、設備配置來設計,象箱區數量、貝位數、排數、層數、設備數量,根據作業流程設計不同的測試數據。不同表的測試數據分別填在Excel文件不同的Sheet中。為簡化數據導入工作,用Winform實現一個導入工具。用NPOI類庫操作Excel,從文件中讀入各Sheet頁各單元格內容。Oracle.ManagedDataAccess.dll操作Oracle數據庫。Excel文件sheetname與數據庫表名稱一致,表頭與數據庫表的各字段名一致,讀取各Sheet各單元格內容,按字段名及表名拼接為SQL語句,執行SQL語句導入數據庫。導入前禁用外鍵,完成導入后再啟用外鍵,均在代碼中用SQL實現。
(3)仿真驗證:采用AnyLogic仿真工具進行多智能體仿真,繪制堆場、船舶、岸橋、AGV、場橋智能體模型,并為智能體添加相關屬性、方法,編寫業務邏輯代碼,與Oracle數據庫連接,用數據驅動仿真模型執行作業任務,并用圖表展示測試結果。
4 結語
設計良好的TOS-ECS接口對自動化集裝箱碼頭的軟件集成具有非常關鍵的作用。該文首先介紹了自動化碼頭軟件架構,然后總結了目前主流的接口技術,并對各種接口技術進行分析比較,最后介紹了TOS-ECS數據庫設計原則、接口設計與驗證過程。
參考文獻
[1]楊宇華,張氫,聶飛龍.集裝箱自動化碼頭發展趨勢分析[J].中國工程機械學報,2015,13(6):571-576.
[2]周曉霞,姚彥龍,吳洲.基于貝加萊PCC架構的自動化碼頭調度管理與控制系統[J].自動化博覽,2016(5):104-107.
[3]陳怡璇.“不安分”的程序員——訪上海振華重工電氣有限公司副總經理葉軍[J].上海國資,2014(12):90-92.
[4]何鋼,張耀周,李鋒.集裝箱自動化碼頭關鍵技術[J].港口科技,2017(2):6-13,18.
[5]劉峰,鄂海紅. 基于海量數據的消息隊列的性能對比與優化方案[J].軟件,2016,37(10):33-37.