# 龙门起重机(Gantry Crane)
![](https://box.kancloud.cn/68bab58c88f7ff1b37ea895e85524485_69x49.png)
## 综述
龙门起重机是一种带轮子的高架起重机,它跨越在堆场两边,可以吊起集装箱。龙门起重机通常用在对集卡进行装卸,在堆场之间搬运集装箱,进行digging操作或是重新堆垛集装箱。它分为RTG(轮胎式龙门起重机)和RMG(轨道式龙门起重机)。可以在其他(Miscellaneous)选项卡上配置其3D图形。
## 属性
![](https://box.kancloud.cn/5c328b6f7de1475cecfd0d7a8c6c7899_486x720.png)
## 龙门起重机(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)选项卡
![](https://box.kancloud.cn/cf5d2d90b608b6904fa6c400af85a5cb_494x652.png)
**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。
![](https://box.kancloud.cn/af8faf245911df3afab1fcf7ca3c67cc_468x140.png)
**堆叠/解除堆叠预警(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)**
![](https://box.kancloud.cn/feab394a454d7921ca34c34751f30943_468x137.png)
小车和提升机的属性可以通过点击各自的属性(Prosperities)按钮进行编辑。还可以在视图中将它们切换为不可单击。
可以在通用(General)选项卡上编辑起重机的属性。
## 更多细节
**digging操作**
![](https://box.kancloud.cn/043eb43ad06f5b1bd30bee9a4546069d_196x158.png)
FlexTerm将遵循以下步骤来决定是否应该进行digging操作:
1. 对于有可能进行digging的箱区,将查看复选框“若隔离,将进行有序的解除堆垛(Do ordered unstacking if segregated)”。如果选中,并且bay或单元格被隔离,那么集装箱将被交换到顶部,RTG将不会进行digging操作。
2. 否则,RTG会digging。它使用RTG其他(Miscellneous)选项卡上的“Digging”部分中的信息来确定如何进行digging操作。
可以通过集装箱的颜色判断RTG什么时候在digging。当集装箱为白色时,表示它正在被移出当前位置。
## 起重机运动策略
![](https://box.kancloud.cn/7cdd1f3fef2570814c6b4147165360a5_468x59.png)
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命令帮助。
![](https://box.kancloud.cn/9393fcd34680cbf1e9cf245e29ebb790_809x554.png)
![](https://box.kancloud.cn/5277aed4f7914ab5ab464b49463ce8e3_803x541.png)
![](https://box.kancloud.cn/f40a02e4eeb4cc2757dd69b30150eaf6_761x551.png)
![](https://box.kancloud.cn/8c299f95f119f5f7ea774fec87392d84_859x442.png)
![](https://box.kancloud.cn/1c4b3d03c71b07c1d94bfeb656d568f3_770x509.png)
![](https://box.kancloud.cn/b21e4d660de63b5ac405ccabc6aab205_831x599.png)
![](https://box.kancloud.cn/98fe922d49e769cf573e12dbc1376115_405x537.png)
![](https://box.kancloud.cn/59eb26fdae9b455bd173492143b54ef7_711x225.png)
![](https://box.kancloud.cn/ccfda1caeac1a4cdc5be81da2288b28b_731x225.png)
## 默认双RMG避碰逻辑
FlexTerm为双RMG提供了默认的避碰逻辑,这是典型的自动化集装箱码头RMG策略之一。下面是如何使用默认双RMG避碰逻辑的案例。首先,建立如下图所示的模型,模型中有一个箱区,两端有两个换乘区。设置泊位规划器和闸口规划器,使船舶装卸和闸口装卸同时进行。建立随机单元的箱区分配规则,以增加RMG碰撞的概率。设置资源分配规则,使水侧RMG仅工作在水侧转运区
,岸侧RMG仅工作在岸侧转运区。
![](https://box.kancloud.cn/5bea1ecbc8313859cd6137f0d81b27e2_854x651.png)
将如下图所示的代码写在模型重置触发器中。注意:左右RMG是根据箱区空间上的相对位置来定义的。可以从堆场规划器的2D视图中查看箱区的来源。API命令的帮助,请参阅FlexTerm命令帮助。
![](https://box.kancloud.cn/3791344e0592fbf3d5ab3898199878ed_594x235.png)
将如下图所示的代码卸载龙门起重机移动策略触发器中。有关移动策略触发器和FlexTerm命令帮助的详细信息,请参阅前面的章节。
![](https://box.kancloud.cn/7d0bb88790f36f7f1d013ee09928b361_623x315.png)
注意:为了使默认避碰逻辑正常工作,需要对龙门起重机进行如下设置:
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库
- 数据统计
- 准备时间