# 龍門起重機(Gantry Crane)

## 綜述
龍門起重機是一種帶輪子的高架起重機,它跨越在堆場兩邊,可以吊起集裝箱。龍門起重機通常用在對集卡進行裝卸,在堆場之間搬運集裝箱,進行digging操作或是重新堆垛集裝箱。它分為RTG(輪胎式龍門起重機)和RMG(軌道式龍門起重機)。可以在其他(Miscellaneous)選項卡上配置其3D圖形。
## 屬性

## 龍門起重機(Gantry Crane)選項卡
**運行順序(Travel Sequence)** - 該字段允許指定起重機的運行方式。從左到右指定操作的順序,每兩個操作之間必須用“>”字符分隔。若不使用“>”字符進行分隔,兩個操作將同時執行。例如,“L>XY>D”表示吊具將首先升起,然后大車和小車同時移動,然后吊具下降。
<div style="margin-left:20px;line-height:2em">
<b>附加運行順序語法功能</b> - 在說明運行順序時,可以使用幾個額外的語法選項。所有語法選項都由一個前導句點(.)指定,后面跟著要使用的選項和圓括號中的表達式。例如,一個選項為:“.dl(5)”,它指定在起重機在該操作上剩下的距離單位小于5時,起重機可以繼續下一個操作。可以在括號中添加更復雜的flexscript表達式,例如隨機分布和全局變量。可選的表達式如下:
<ul>
<li>.dl(expression) - 剩余距離 - 當起重機的剩余行程小于指定的距離時,可以繼續下一個操作。
<li>.df(expression) - 運行距離 - 當起重機運行了指定的距離后,可以繼續下一個操作。
<li>.tl(expression) - 剩余時間 - 當起重機的剩運行時間小于指定的時間時,可以繼續進行下一個操作。
<li>.tf(expression) - 運行時間 - 當起重機運行了指定的實踐后,可以繼續下一個操作。
</ul>
<i>例子</i><br>
L.dl(2)>XY.tf(1)>D - 該操作順序表示起重機啟動升降機。當起重機距離目標起升高度不超過2個單位長度時,立即啟動大車和小車的運動。當大車運動完畢,起重機會在小車啟動一個單位時間后下降吊具(由于X上沒有增加選項,下降吊具前大車必須完成動作)。<br>
L>X>Y.df(triangular(1,3,2))>D - 該操作順序表示在小車在完成1到3個單位距離之間的隨機運動后開始下降吊具。
</div>
**起升高度(Lift Height)** - 該值表示起重機的最大提升高度。長度單位取決于模型單位窗口的設置。
**等待時升起吊具(Lift Hoist When Idle)** - 該選項可以使起重機在等待集卡時更有效率。如果勾選該項,當RTG無任務時,吊具將升起,這樣當下次RTG有任務時,它就可以省去提升吊具產生的時間/提升距離。如果該項未選中,RTG將在空閑時保持吊具位置。空閑時的吊具升起時間以RTG的提升速度為基礎。
**移動時間(Movement Time)** - 這些選項允許指定移動時間是由每次移動的時間決定還是每次移動的速度決定。按照每次移動的時間指定的操作將根據視圖中顯示的百分比進行指定。可以左右拖動黑方塊來更改執行每個操作所花費的時間所占比例。
*單次移動時間*
**對于未堆垛的集裝箱(For Unstacking)** - 該值表示將集裝箱從堆場中取出并放置到卡車上所需的時間。該值僅與目標集裝箱關聯。如果需要進行digging操作,則該時間應該在其他(Miscellaneous)選項卡上進行設置。
**對于堆垛的集裝箱(For Stacking)** - 該值表示將一個集裝箱從卡車移動至堆場所花費的時間。
**速度(Speeds)** - 該組值表示RTG的各個機構的速度。每個機構的移動都是單獨設置的。如果加減速為0,則RTG將以最高速度立刻開始移動或立刻完全停止,沒有任何加減速時間。時間和長度單位取決于模型單位窗口的設置。
## 其他(Miscellaneous)選項卡

**digging操作(Digging)** - 如果起重機必須移動一個集裝箱(由于其他集裝箱堆放在目標箱的上面),這些值用來計算獲取到目標集裝箱所需的時間。有四個選項可以計算digging操作的時間。每個選項用不同的方式使用“Dig Time”表達式:
* “基于每個集裝箱位移的時間(Based on Time Per Displaced Container)” - 對每個必須移開的集裝箱計算digging時間,然后RTG將這些集裝箱移動到附近的新位置。
* “基于每個集裝箱位移的時間(非真正digging) Based on Time Per Displaced Container(no real digging)” - 對每個必須移開的集裝箱計算digging操作時間,但是RTG實際上并不移動任何集裝箱,而是按照計算出時間進行等待,然后FlexTerm將目標集裝箱交換到集裝箱堆的頂部,RTG直接將其從頂部移動。
* “基于每個未堆疊的集裝箱的時間(非真正digging) Based on Time Per Unstacked Container(no real digging)” - Dig Time是指集裝箱進行digging操作的平均時間,在整個操作中只計算一次。之后按照計算出時間進行等待,然后FlexTerm將目標集裝箱交換到集裝箱堆的頂部,RTG直接將其從頂部移動。
* 基于RTG速度(Based on RTG Speeds) - 不使用該選項卡上的digging操作時間。而是使用“龍門起重機(Gantry Crane)”選項卡上給出的速度值與模型中的距離和要移動的集裝箱數量一起計算digging時間。
**digging操作策略(Digging Strategy)** - 如果用戶選擇的digging策略是“基于每個集裝箱位移的時間”或“基于RTG速度”,那么用戶可以在digging策略(選擇一個集裝箱放置策略)組合框中選擇一個策略。這個列表結合了“同一bay內的digging操作”和用戶在堆場規劃器中定義的所有集裝箱放置策略。“同一bay內的digging操作”是指在digging操作中移動的集裝箱將被放入同一個bay。它將搜索bay中的哪個單元格(或行)中集裝箱數量最少,并將需要移動的集裝箱放入該單元格中。RTG操作通常使用“同一bay內的digging操作”選項。如果用戶選擇了一個集裝箱放置策略,FlexTerm將搜索整個箱區,并根據所選擇的策略找到放置集裝箱的箱位。這讓用戶可以實現自定義的digging策略。例如,用戶可以在RMG操作中將集裝箱移動到同一個箱區中的另一個bay。

**堆疊/解除堆疊預警(Stacking/Unstacking Early Notification)** - 這些選項允許自定義起重機在接收到卡車即將在箱區中堆疊或解除堆疊集裝箱的通知時的行為。可以選擇起重機將如何對此類通知作出反應,以最大限度地提高起重機的效率。
**狀態改變時觸發(On State Change)** - 當RTG的狀態發生變化時,將觸發此觸發器。可以使用此觸發器來運行自己的邏輯。
**路徑網絡(Nerwork Travel)** - 有時RTG用于覆蓋幾個箱區。當各個箱區首尾相接排列時,RTG可以沿箱區來回移動。當箱區首尾對齊地排列在一起時,RTG必須沿著路徑網絡從一個箱區移動到另一個箱區。當RTG在網絡上運行時,它將按照這些路徑網絡中指定的速度運行而不是龍門起重機的速度。如果加減速為0,則RTG將以最高速度立刻開始移動或立刻完全停止,沒有任何加減速時間。時間和長度單位取決于模型單位窗口的設置。
* 在路徑網絡節點中旋轉(Rotate on NetworkNode) - 如果勾選該選項,RTG會在網絡節點上自動旋轉。
> 注意:為了正確地使用RTG的路徑網絡,需要正確地設置網絡節點。更多信息和示例,請參閱網絡節點(Network Node)部分。
**外觀(Appearance)** - 該選項允許快速更改起重機的顯示圖形為標準RTG、標準RMG、單懸臂RMG或雙懸臂RMG。該選項并不影響起重機的工作方式。
**小車和起升機(Trolley and Hoist)**

小車和提升機的屬性可以通過點擊各自的屬性(Prosperities)按鈕進行編輯。還可以在視圖中將它們切換為不可單擊。
可以在通用(General)選項卡上編輯起重機的屬性。
## 更多細節
**digging操作**

FlexTerm將遵循以下步驟來決定是否應該進行digging操作:
1. 對于有可能進行digging的箱區,將查看復選框“若隔離,將進行有序的解除堆垛(Do ordered unstacking if segregated)”。如果選中,并且bay或單元格被隔離,那么集裝箱將被交換到頂部,RTG將不會進行digging操作。
2. 否則,RTG會digging。它使用RTG其他(Miscellneous)選項卡上的“Digging”部分中的信息來確定如何進行digging操作。
可以通過集裝箱的顏色判斷RTG什么時候在digging。當集裝箱為白色時,表示它正在被移出當前位置。
## 起重機運動策略

FlexTerm提供了一種對起重機的運動進行建模方法來避免潛在沖突或優化起重機性能,例如雙RMG的情況。雙RMG意味著兩個相同的RMG在同一軌道上運行,因此不能繞過對方。運動策略觸發器是專門用來模擬這種情況的。觸發器在特定的時間觸發,如在起重機完成工作并處于空閑狀態,或者在一個起重機動作序列的開始或者結束后,當卡車或AGV到達堆場的指定位置,等待起重機裝或卸集裝箱時觸發。觸發器如下:
* RMG_MOVEMENT_ON_STACK:當卡車進行堆存操作時觸發
* RMG_MOVEMENT_ON_UNSTACK:當卡車進行解除堆垛操作時觸發<br>這兩個觸發器的附加訪問變量有:
<ul style="margin-left:20px;line-height:2em;list-style-type:circle;">
<li>參數1 - 觸發器類型
<li>參數2 - 集裝箱id
<li>參數節點3 - 集卡
</ul>
該觸發器的返回值有:
<ul style="margin-left:20px;line-height:2em;list-style-type:circle;">
<li>非0 - 龍門起重機不會構建默認的指令序列
<li>0 - 龍門起重機會構建默認的指令序列
</ul>
* RMG_MOVEMENT_ON_STACK_PRENOTIFY:當龍門起重機被提前告知卡車正準備進行堆存操作時觸發
* RMG_MOVEMENT_ON_UNSTACK_PRENOTIFY:當龍門起重機被提前告知卡車正準備進行解除堆垛操作時觸發<br>這兩個觸發器的附加訪問變量有:
<ul style="margin-left:20px;line-height:2em;list-style-type:circle;">
<li>參數1 - 觸發器類型
<li>參數2 - 集裝箱id
<li>參數節點3 - 集卡
</ul>
該觸發器的返回值有:
<ul style="margin-left:20px;line-height:2em;list-style-type:circle;">
<li>非0 - 龍門起重機不會構建默認的指令序列
<li>0 - 龍門起重機會構建默認的指令序列
</ul>
* RMG_MOVEMENT_ON_DIRECT_MOVE:當龍門起重機準備將集裝箱從一個區域移動至轉運區時觸發<br>這個觸發器的附加訪問變量有:
<ul style="margin-left:20px;line-height:2em;list-style-type:circle;">
<li>參數1 - 觸發器類型
<li>參數2 - 集裝箱id
<li>參數節點3 - 交換區箱位
</ul>
該觸發器的返回值有:
<ul style="margin-left:20px;line-height:2em;list-style-type:circle;">
<li>非0 - 龍門起重機不會構建默認的指令序列
<li>0 - 龍門起重機會構建默認的指令序列
</ul>
* RMG_MOVEMENT_ON_INSTR_START:當龍門起重機開始執行指令前觸發
* RMG_MOVEMENT_ON_INSTR_END:當龍門起重機完成一條指令后觸發<br>這兩個觸發器的附加訪問變量有:
<ul style="margin-left:20px;line-height:2em;list-style-type:circle;">
<li>參數1 - 觸發器類型
<li>參數2 - 指令編號
</ul>
該觸發器的返回值有:
<ul style="margin-left:20px;line-height:2em;list-style-type:circle;">
<li>非0 - 將通知龍門起重機更新或刷新其指令序列。因此,無論何時通過rsmove()或rswait()插入指令,都應該返回一個非零值來更新指令序列
<li>0 - 對指令序列不執行任何操作
</ul>
移動策略(Movement Strategy)下拉菜單中包含的默認示例是針對一個特定模型,該模型的構建是為了演示此觸發器的使用以及為該觸發器專門設計的那些API函數。模型有一個岸橋,集卡車隊有四輛卡車。一個箱區垂直于泊位,兩個RMG在該箱區工作(RMG_1工作在水側,RMG_2工作在岸側),在水側有一個轉運區,還有負責將泊位道路和轉運區相連的網絡節點。下面是該模型的屏幕截圖。可以通過教程和規劃器部分的幫助文件來構建這個模型。該示例模型中涉及的每個對象的幫助頁面同樣能提供幫助。
要構建此示例模型,請確保將兩個RMG連接在一起。還需要將所有卡車與網絡節點使用“A”連接相連,以便卡車能夠沿著網絡行駛。在傳輸區域節點和箱區之間建立“A”連接。對于RMG_1,轉到“屬性(Properties)”窗口,在“其他(Miscellaneoud)”選項卡中,在“移動策略(Movement Strategy)”下拉列表中選擇“簡單移動策略示例(Simple Movementstrategy Example)”。對于RMG_2,保持移動策略觸發器為空。確保在模擬開始時將RMG_2移動到箱區的中間。模型運行一段時間后,將看到RMG_1試圖在岸側裝載集裝箱,RMG_2將離開以避免與RMG_1發生沖突。
有關使用此觸發器中的API命令的幫助,請參閱FlexTerm命令幫助。









## 默認雙RMG避碰邏輯
FlexTerm為雙RMG提供了默認的避碰邏輯,這是典型的自動化集裝箱碼頭RMG策略之一。下面是如何使用默認雙RMG避碰邏輯的案例。首先,建立如下圖所示的模型,模型中有一個箱區,兩端有兩個換乘區。設置泊位規劃器和閘口規劃器,使船舶裝卸和閘口裝卸同時進行。建立隨機單元的箱區分配規則,以增加RMG碰撞的概率。設置資源分配規則,使水側RMG僅工作在水側轉運區
,岸側RMG僅工作在岸側轉運區。

將如下圖所示的代碼寫在模型重置觸發器中。注意:左右RMG是根據箱區空間上的相對位置來定義的。可以從堆場規劃器的2D視圖中查看箱區的來源。API命令的幫助,請參閱FlexTerm命令幫助。

將如下圖所示的代碼卸載龍門起重機移動策略觸發器中。有關移動策略觸發器和FlexTerm命令幫助的詳細信息,請參閱前面的章節。

注意:為了使默認避碰邏輯正常工作,需要對龍門起重機進行如下設置:
1. 關閉堆疊和解除堆疊預警
2. 大車、小車、升降運動應由速度表決定,而不是由堆疊/解除堆疊時間決定
3. 對于真正的digging操作,將digging策略設置為“同一bay內的digging(Same Bay Digging)”,將digging模式設置為“基于RTG速度(Based on RTG speeds)”
4. 對于非真實的digging,將digging策略設置為非真實digging情形之一。
- 歡迎使用FlexTerm
- 快速上手
- 安裝FlexTerm
- FlexSim簡介
- FlexTerm簡介
- FlexTerm建模范例
- 循序漸進:學習步驟
- 循序漸進:泊位計劃
- 循序漸進:堆場計劃
- 循序漸進:大門計劃
- 循序漸進:軌道計劃
- 教程
- 一個簡單的碼頭
- 添加閘口
- 集裝箱堆場布置
- 規劃器
- 泊位規劃器
- 閘口規劃器
- 堆場規劃器
- 軌道規劃器
- 對象庫
- FlexTerm對象庫簡介
- 背景(Background)
- 泊位規劃器(Berth Planner)
- 底盤池(Chassis Pool)
- 岸橋(Crane)
- 雙小車岸橋(Dual Trolley Crane)
- 龍門起重機(Gantry Crane)
- 閘口規劃器(Gate Planner)
- 閘口處理器(Gate Process)
- 閘口隊列(Gate Queue)
- 閘口道路(Gate Road)
- 閘口吸收器(Gate Sink)
- 閘口至堆場(Gate To Yard)
- 網絡節點(Network Node)
- 車廂(Rail Block)
- 資源組(Resource Group)
- 跨運車(Straddle Carrier)
- 跨運車組(Strad Gang)
- 空箱叉車(Top Loader)
- 交通控制(Traffic Control)
- 轉運區(Transfer Area)
- 卡車(Truck)
- 卡車隊(Truck Gang)
- 啊啊(Wheeled Block)
- 箱區(Yard Block)
- 堆場至閘口(Yard To Gate)
- 其他
- 集裝箱碼頭菜單
- 集裝箱類型
- 起重機分配算法
- 集裝箱碼頭標準績效評估
- 導入模型數據
- 模型視圖
- 模型單位
- 道路網絡
- 標準FlexSim用戶手冊
- 切換到標準FlexSim庫
- 數據統計
- 準備時間