徐建峰+邊志成+宓為建
自動化集裝箱碼頭解決方案項目(以下簡稱“總包項目”)是軟硬件結合的系統(tǒng)集成項目。按照傳統(tǒng)的項目實施方法,這類項目需要先后經(jīng)歷2個串行的實施階段:第一階段由硬件制造和控制軟件開發(fā)2項并行的活動組成,第二階段僅包含系統(tǒng)調試活動。本文針對總包項目的特點,將設備模擬器引入總包項目,并提出設備模擬器的有限狀態(tài)機模型和軟件實現(xiàn)方法,使總包項目第二階段活動的部分工作前移,從而達到縮短項目工期的目的。
1 概述
(1)總包項目的主要活動和實施流程 自動化集裝箱碼頭的日常作業(yè)和運營通常是在碼頭管理信息系統(tǒng)的指揮下,通過控制軟件操控自動化設備實現(xiàn)的。在總包項目中,乙方需要提供自動化設備和控制軟件,并保證自動化設備、控制軟件和碼頭管理信息系統(tǒng)能夠協(xié)同配合完成作業(yè)??偘椖康?/p>
主要活動包括硬件制造、控制軟件開發(fā)和系統(tǒng)調試等,其中系統(tǒng)調試又分為單機調試、多機調試和系統(tǒng)聯(lián)調等3個步驟。按照傳統(tǒng)的項目實施方法,總包項目的實施由2個階段串聯(lián)而成,其中,第二階段的系統(tǒng)調試活動必須在第一階段的硬件制造和控制軟件開發(fā)活動完成之后進行(見圖1)。
(2)設備模擬器 設備模擬器主要用于對設備進行軟件模擬。對控制軟件而言,設備模擬器的接口應與真實設備的接口相同;給予同樣的指令后,設備模擬器的反饋應與真實設備的反饋相似。將設備模擬器引入總包項目后,系統(tǒng)調試活動中的單機調試和多機調試能夠提前至項目第一階段與控制軟件開發(fā)活動同時進行,從而為縮短項目第二階段的實施時間創(chuàng)造條件。為開發(fā)可供調試使用的設備模擬器,需要采用合適的模型設計和軟件實現(xiàn)方法。
(3)有限狀態(tài)機 有限狀態(tài)機是一種針對系統(tǒng)的數(shù)學模型,能夠對系統(tǒng)在有限狀態(tài)之間的轉移行為以及系統(tǒng)在狀態(tài)變化時產(chǎn)生的動作行為進行描述。有限狀態(tài)機模型適合描述狀態(tài)敏感的系統(tǒng):這類系統(tǒng)具有有限種可能的狀態(tài),并且其狀態(tài)變化由輸入推動;系統(tǒng)的輸出時間與輸入時間有關,輸出內容則取決于輸出時的系統(tǒng)狀態(tài)。[1]根據(jù)系統(tǒng)的有限狀態(tài)機模型,能夠推算出有限狀態(tài)機模型的輸入-輸出對應關系,且這種對應關系與系統(tǒng)的輸入-輸出對應關系一致。由于具有以上特性,有限狀態(tài)機模型可以作為針對真實系統(tǒng)的模擬系統(tǒng),用于要求真實系統(tǒng)的場合,例如對真實系統(tǒng)的測試[2-4]以及基于真實系統(tǒng)的軟件開發(fā)和測試[5-9]等。
2 自動化集裝箱碼頭設備模擬器的有限
狀態(tài)機模型設計
自動化集裝箱碼頭的主要設備包括雙小車岸橋(double-trolley quayside crane,DTQC)、自動化軌道式龍門起重機(automated rail-mounted gantry crane,ARMG)和自動導引小車(automated guided vehicle,AGV)等。集裝箱碼頭各種設備的作業(yè)流程均按照“指令+反饋”的異步方式進行控制:當作業(yè)流程開始時,設備先行準備就緒;控制軟件首先給出指令,然后設備開始執(zhí)行指令,并在指令執(zhí)行完成后發(fā)出反饋;控制軟件再給出下一個指令,設備再次開始執(zhí)行指令,并在指令執(zhí)行完成后發(fā)出反饋;如此反復,直到完成作業(yè)流程。根據(jù)指令和反饋定義事件,并根據(jù)流程歸納狀態(tài),就可以給出設備的事件和狀態(tài)設計,以此作為設備模擬器的開發(fā)依據(jù)。本文假設所有指令均成功執(zhí)行,不考慮失敗的反饋事件。以下分別給出適當簡化后的自動化集裝箱碼頭主要設備的事件和狀態(tài)設計。
2.1 DTQC的有限狀態(tài)機模型
DTQC由大車、主小車、門架小車和中轉平臺等組成,其中:大車負責沿岸線方向移動;主小車負責在船舶與中轉平臺之間搬運集裝箱;門架小車負責在中轉平臺與AGV之間搬運集裝箱;中轉平臺負責識別集裝箱信息(如箱號、尺寸等)以及拆裝旋鎖。
2.1.1 DTQC有限狀態(tài)機的事件
(1)大車移動指令事件 DTQC只能沿垂直方向和大梁方向搬運集裝箱;因此,在DTQC裝卸集裝箱之前,裝卸船箱位和大車應當處于岸線上的同一位置。如果兩者不在同一位置,控制軟件會發(fā)出大車移動指令,要求大車向裝卸船箱位所在的岸線位置移動。
(2)大車反饋事件 大車到達目標位置后停止,并向控制軟件發(fā)出反饋。
(3)主小車等待位指令事件 為避免主小車和門架小車在中轉平臺發(fā)生沖突,以及避免主小車在中轉平臺作業(yè)完成前進入中轉平臺,DTQC在中轉平臺以外為主小車設置了等待位。在主小車將去中轉平臺抓箱或放箱,但中轉平臺暫時不允許其進入的情況下,控制軟件發(fā)出主小車等待位指令,要求主小車向等待位移動。
(4)主小車平臺位指令事件 在主小車將去中轉平臺抓箱或放箱,且中轉平臺允許主小車進入的情況下,控制軟件發(fā)出主小車平臺位指令,要求主小車向中轉平臺移動。當該指令事件觸發(fā)時,主小車可能剛完成上一個指令,可能正在向等待位移動,也可能正在等待位等待。
(5)主小車船舶位指令事件 當主小車將去船上抓箱或放箱時,控制軟件發(fā)出主小車船舶位指令,要求主小車向船舶方向移動。
(6)主小車反饋事件 主小車到達指定位置并完成相應的抓箱或放箱任務后,向控制軟件發(fā)出反饋。
(7)中轉平臺作業(yè)指令事件 主小車或門架小車在中轉平臺完成放箱任務后,控制軟件發(fā)出中轉平臺作業(yè)指令,要求中轉平臺識別集裝箱信息并實施旋鎖拆裝作業(yè)。
(8)中轉平臺反饋事件 中轉平臺作業(yè)完成后,向控制軟件發(fā)出反饋。
(9)門架小車等待位指令事件 DTQC在中轉平臺以外為門架小車設置了等待位。門架小車在中轉平臺完成抓箱或放箱任務后,控制軟件發(fā)出門架小車等待位指令,要求門架小車向等待位移動。
(10)門架小車平臺位指令事件 在門架小車將去中轉平臺抓箱或放箱,且中轉平臺允許門架小車進入的情況下,控制軟件發(fā)出門架小車平臺位指令,要求門架小車向中轉平臺移動。endprint
(11)門架小車AGV位指令事件 在門架小車將去AGV抓箱或放箱,且AGV已經(jīng)到達的情況下,控制軟件發(fā)出門架小車AGV位指令,要求門架小車向AGV移動。
(12)門架小車反饋事件 門架小車到達目標位置并完成相應的抓箱或放箱任務后,向控制軟件發(fā)出反饋。
2.1.2 DTQC有限狀態(tài)機的狀態(tài)
DTQC的大車、主小車、門架小車和中轉平臺具有各自的狀態(tài),整個DTQC的狀態(tài)可以用上述4個對象的狀態(tài)值的組合進行描述。
大車狀態(tài)的狀態(tài)值包括空閑、未到位、移動中和已到位。初始狀態(tài)下,當DTQC沒有任務時,大車狀態(tài)為“空閑”。DTQC開始執(zhí)行裝卸任務后,當大車靜止時,如果大車與裝卸船箱位在岸線上的位置不同,則大車狀態(tài)為“未到位”;否則,大車狀態(tài)為“已到位”。當大車移動時,大車狀態(tài)為“移動中”。
主小車狀態(tài)的狀態(tài)值包括空閑、等待位移動中、等待位到達、平臺位移動中、平臺位到達、船舶位移動中和船舶位到達。當主小車沒有任務時,主小車狀態(tài)為“空閑”。主小車等待位指令觸發(fā)后,主小車狀態(tài)為“等待位移動中”。主小車反饋事件觸發(fā)后,若觸發(fā)前主小車狀態(tài)為“等待位移動中”,則主小車狀態(tài)變?yōu)椤暗却坏竭_”。主小車其他狀態(tài)值的含義與之類似,此處不再贅述。
門架小車狀態(tài)的狀態(tài)值包括空閑、等待位移動中、等待位到達、平臺位移動中、平臺位到達、AGV位移動中和AGV位到達。門架小車各狀態(tài)值的含義與主小車相應狀態(tài)值的含義類似,此處不再贅述。
中轉平臺狀態(tài)的狀態(tài)值包括空閑、主小車占用、門架小車占用和作業(yè)中。主小車平臺位指令事件觸發(fā)后,中轉平臺狀態(tài)變?yōu)椤爸餍≤囌加谩?。“門架小車占用”狀態(tài)值的含義與“主小車占用”狀態(tài)值的含義類似。主小車或中轉小車在中轉平臺完成抓箱或放箱任務后,以及中轉平臺作業(yè)完成前,中轉平臺狀態(tài)為“作業(yè)中”。其他情況下,中轉平臺狀態(tài)為“空閑”。
裝船作業(yè)流程中DTQC大車、主小車、門架小車和中轉平臺的狀態(tài)轉換分別如圖2~5所示。
2.2 ARMG的有限狀態(tài)機模型
ARMG由大車和小車組成,其中:大車負責沿箱區(qū)長邊方向水平移動;小車負責沿箱區(qū)短邊方向水平移動和垂直移動以及抓箱和放箱。
2.2.1 ARMG有限狀態(tài)機的事件
(1)Park指令事件 在ARMG未抓箱的情況下,控制軟件發(fā)出Park指令,要求大車沿箱區(qū)長邊方向移動,或要求小車沿箱區(qū)短邊方向移動,從而使ARMG去某個堆場的箱位抓箱或避讓同軌道的另一臺ARMG等。
(2)抓箱指令事件 在ARMG要抓取的集裝箱位于小車吊具正下方的情況下,控制軟件發(fā)出抓箱指令,要求小車下降,執(zhí)行抓箱動作。需要注意的是,在ARMG到達可與AGV交互的位置后并從AGV上抓箱前,AGV應當已經(jīng)帶箱到達可與ARMG交互的位置。
(3)放箱指令事件 ARMG抓箱后,控制軟件發(fā)出放箱指令,要求ARMG將集裝箱放到目標位置。需要注意的是,在ARMG到達可與AGV交互的位置后并放箱到AGV上前,AGV應當已經(jīng)空車到達可與ARMG交互的位置。
(4)反饋事件 ARMG完成相應指令后,向控制軟件發(fā)出反饋。
2.2.2 ARMG有限狀態(tài)機的狀態(tài)
ARMG有限狀態(tài)機的狀態(tài)值包括空閑、Park中、Park完畢、抓箱中、抓箱完畢和放箱中。當ARMG沒有任務時,其狀態(tài)為“空閑”。當執(zhí)行Park指令時,ARMG狀態(tài)為“Park中”;當Park指令完成后,ARMG狀態(tài)為“Park完畢”。ARMG其他狀態(tài)值的含義與之類似,此處不再贅述。ARMG作業(yè)流程中的狀態(tài)轉換如圖6所示。
2.3 AGV的有限狀態(tài)機模型
AGV是在DTQC與ARMG之間水平運輸集裝箱的自動化設備,其必須沿指定路徑行駛。為防止多臺AGV在行駛過程中發(fā)生沖突,控制軟件分別定義每條AGV路徑的許用區(qū)間,規(guī)定AGV必須在到達許用區(qū)間的最遠端之前停止。隨著許用區(qū)間的不斷刷新,AGV逐漸向其路徑上的更遠位置行駛,直至其到達路徑終點。
2.3.1 AGV有限狀態(tài)機的事件
(1)路徑規(guī)劃指令事件 AGV的任務確定后,控制軟件指定AGV的移動目標并規(guī)劃AGV從當前位置到目標位置的移動路徑。需要注意的是,該事件觸發(fā)后,AGV路徑的許用區(qū)間長度為0。
(2)許用區(qū)間刷新指令事件 每經(jīng)過一定的時間間隔,控制軟件刷新AGV路徑的許用區(qū)間,引導AGV向路徑上的更遠位置行駛。
(3)反饋事件 AGV到達路徑許用區(qū)間的最遠端并停止后,向控制軟件發(fā)出反饋。
2.3.2 AGV有限狀態(tài)機的狀態(tài)
AGV有限狀態(tài)機的狀態(tài)值包括空閑、暫停中、移動中和已到達。當AGV沒有移動目標時,其狀態(tài)為“空閑”。當AGV未到達路徑許用區(qū)間的末端時,其狀態(tài)為“移動中”。當AGV到達路徑許用區(qū)間的末端,但尚未到達路徑終點時,其狀態(tài)為“移動中”。當AGV到達路徑終點時,其狀態(tài)為“已到達”。AGV作業(yè)流程中的狀態(tài)轉換如圖7所示。
3 基于有限狀態(tài)機的自動化集裝箱碼頭
設備模擬器的軟件實現(xiàn)
自動化集裝箱碼頭的設備模擬器軟件按照面向對象的方法開發(fā):多個設備模擬器實例按照并行的方式組成系統(tǒng),以模擬自動化集裝箱碼頭的所有作業(yè)設備。自動化集裝箱碼頭的設備模擬器實例按照確定的時間間隔執(zhí)行線程,以實現(xiàn)指令讀取、狀態(tài)刷新和反饋輸出等功能。
3.1 設備模擬器的系統(tǒng)架構
如圖8所示,自動化集裝箱碼頭的每個設備模擬器實例均由設備類實例、配置類實例、流程類實例和接口類實例組成,其中:設備類實例用于區(qū)分設備類型,并為各類設備的參數(shù)和流程定義統(tǒng)一的名稱;配置類實例用于定義每個設備的參數(shù),如編號、尺寸和速度等,以區(qū)分同類設備中的不同個體;流程類實例用于描述設備的作業(yè)流程,即設備對各種指令事件的處理方式,以實現(xiàn)設備在作業(yè)流程中的狀態(tài)變化規(guī)律;接口類實例用于實現(xiàn)設備模擬器實例與外界的通信。endprint
如圖9所示,自動化集裝箱碼頭的設備模擬器實例以并行方式組成系統(tǒng),其用戶界面集成了顯示、配置和控制等功能,其中:顯示功能用于顯示各個設備模擬器實例的實時狀態(tài);配置功能用于對各個模擬器實例的參數(shù)和狀態(tài)進行手動設置;控制功能用于向設備模擬器實例發(fā)送設備指令。DTQC模擬器和ARMG模擬器通過數(shù)據(jù)庫(OPC)與控制軟件通信;AGV模擬器則直接與控制軟件通信,僅用數(shù)據(jù)庫存儲歷史記錄。
3.2 設備模擬器的線程邏輯
每個設備模擬器實例內部都有唯一的主線程。在設備模擬器實例的運行過程中,每經(jīng)過一定的時間間隔都會重新觸發(fā)主線程。設備模擬器實例的主線程邏輯如圖10所示。主線程觸發(fā)后,若設備模擬器實例沒有未完成的工作流程,且沒有新的指令,則直接反饋設備當前狀態(tài);若設備模擬器實例沒有未完成的工作流程,但有新的指令,則新建工作流程并更新設備狀態(tài),然后反饋設備狀態(tài);若設備模擬器實例有尚未完成的工作流程,則直接更新并反饋設備狀態(tài)。以上步驟完成后,若當前時間與最后一次觸發(fā)主線程的時間間隔已超過觸發(fā)周期,則再次觸發(fā)主線程;否則,模擬器暫時等待。
4 基于有限狀態(tài)機的自動化集裝箱碼頭
設備模擬器應用案例
目前,設備模擬器已在振華重工承接的總包項目中投入應用,其中,廈門遠海和青島前灣自動化集裝箱碼頭已投入商業(yè)運營。如表1所示:由于引入設備模擬器,廈門遠??偘椖抗て诳s短約9個月,占項目總時間的25.0%;青島前灣總包項目工期縮短約6.5個月,占項目總時間的28.3%。由此可見,使用設備模擬器能夠節(jié)約系統(tǒng)調試時間,使總包項目工期明顯縮短。
參考文獻:
[1] CHOW T S. Testing software design modeled by finite-state machines[J]. IEEE Transactions on Software Engineering, 1978, SE-4(3):178-187.
[2] 張涌,錢樂秋,王淵峰. 基于擴展有限狀態(tài)機測試中測試輸入數(shù)據(jù)自動選取的研究[J]. 計算機學報,2003,26(10):1295-1303.
[3] 周章慧,王同洋,吳俊軍,等. 基于有限狀態(tài)機的健壯性測試研究[J]. 計算機工程與科學,2009,31(5):93-97.
[4] ERMAKOV A D, PROKOPENKO S A, YEVTUSHENKO N. Checking software security using EFSMs[C]//IEEE.Pro-ceedings of 18th International Conference of Young Spe-cialists on Micro/Nanotechnologies and Electron Devices (EDM) 2017, Piscataway, June 29-July 3, 2017: 87-90.
[5] 唐雄民,易娜,彭永進. 一種基于有限狀態(tài)機的電力電子電路控制方法的研究[J]. 電工電能新技術,2006,25(3):25-28.
[6] 譚超,??桑诘V偉. 基于有限狀態(tài)機的采煤機變頻牽引控制系統(tǒng)的研究[J]. 煤礦機械,2009,30(12):224-226.
[7] 包健,魏麗娜,趙建勇. 基于有限狀態(tài)機的電梯控制系統(tǒng)故障診斷方法[J]. 計算機應用,2012,32(6):1692-1695.
[8] 張博倫,王寧,馬慧敏. 有限狀態(tài)機在模擬演練系統(tǒng)中的應用[J]. 計算機系統(tǒng)應用,2013,22(2):100-103.
[9] AMALFITANO D, FASOLINO A R, TRAMONTANA P, et al. MobiGUITAR: automated model-based testing of mobile apps[J]. IEEE Software, 2015, 32(5): 53-59.endprint