百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Flexsim案例十二|AGV分布模型构建

haoteby 2025-04-06 16:10 21 浏览

建立模型

1.新建一个模型。

2.使用直线路径创建工具,创建四条逆时针方向的直线路径。并确保两条直线路径之间留有创建弯曲路径的间隔。

注意:路径方向非常重要。默认状态下,创建的路径都是单向路径。如果你的模型不能正常运行,那么很可能是因为没有正确的创建路径方向导致的。在这个模型当中,我们创建了一个沿逆时针方向的闭环。您可以查看每一条路径上的箭头以明确它的方向。

3.使用衔接工具将四条直线路径平滑衔接。再一次确认路径是否沿逆时针方向。

4.在闭环路径的底部添加一个发生器,顶部添加一个吸收器,并在它们之间创建一个A连接。

5.在实体库中,在底部路径并靠近发生器的位置拖入一个决策点。使用A连接将决策点与发生器相连。

6.在顶部路径靠近吸收器的位置创建第二个决策点,并建立决策点与吸收器之间的A连接。

7.从实体库中拖入两个任务执行器。

8.向模型中拖入一个分配器,并建立分配器与任务执行器之间的A连接。

9.红选两个AGV并将它们与吸收器附近的决策点进行A连接,在弹出的菜单中选择TravelerAGV。这会使得AGV在建立好的路径上去完成行进任务。

10.在发生器中选择使用运输工具。并在发生器和分配器之间创建S连接。

运行模型

重置并运行模型

可以看到其中一个任务执行器行进至发生器,装载临时实体,然后模型就出现了一个“死锁”的消息。

决策点的分派

这个模型反映了AGV模块与传统flexsim行进网络在逻辑上的最大区别。AGV系统的前向搜索机制更加复杂。AGV在行进过程中会一直寻找该路径上的下一个决策点,去分配或请求。如果一辆AGV不能请求到下一个决策点,那么它就会停在前一个决策点。这个停止距离可能会跨越多个路径区段。

死锁

这个模型包含了一个死锁状态。第一辆AGV请求吸收器处的决策点,而这个决策点正被第二辆AGV请求。然而第二辆AGV将要请求的发生器附近的决策点却正被第一辆请求。这种类型的死锁被称之为循环等待,因为分派或者分派请求陷入了一种彼此循环等待的状态。死锁将会是构建AGV系统时常常会遇到的情况。而避免死锁正是在设计过程中去模拟的重要原因。

Flexsim提供了一个自动探测死锁的功能,而且这个功能默认处在开启状态。您可以通过右键AGV路径或决策点,选择AGVNetworkProperties,切到常规选项卡,勾选或取消检测死锁,然后单击确定关闭对话框。

检测死锁的功能在调试阶段非常有用,但是由于它需要额外的计算,您可能需要在模型建立完毕时关闭这个功能使得模型能够更流畅的运行。

如何解决死锁问题

有几种策略可以来解决AGV系统当中的死锁问题。在这个案例当中只需添加一个额外的决策点。这种做法增加了系统中的潜在停留点,可以使AGV不必去请求一个阻塞的决策点。

1.在左侧和右侧的路径上各添加一个决策点。

2.重置并运行模型

现在AGV就不会再陷入死锁了。

决策点的取消分派

由于模型具备了新的结构,AGV不再会陷入死锁。但您可能会发现它们仍然有时会彼此等待。这种情况是由于决策点分派和取消分派的机制导致的,具体说来就是决策点的取消分派类型。默认的设定是非常保守的,即在AGV到达下一个决策点时才取消上一个决策点的分派。这会从本质上导致两个决策点之间的间隔在AGV正在行进时被保留。您可以修改这个设置。

1.红选在模型中所有的决策点。如果您还红选了决策点之外的其他实体是没有影响的。所以可以简单的框选所有实体。

2.单击任意一个决策点。

3.在右侧的快捷属性窗口中,在取消分派类型中,选择DeallocateWhenPastCurrent。

4.选择下拉框相应的选项,这会在所有的决策点中应用更改。

5.重置并运行模型。

现在AGV不会再彼此等待了。

取消分派类型

基本的AGV模型默认有两种分派类型。它们是到达下一决策点时取消分派和经过当前决策点时取消分派。您可以对这些类型在AGVNetworkProperties窗口中进行重新的配置或者添加您自定义的类型

Modeling

1. Create a new model.

2. Using the Straight Path Creation Tool, create four straight, counterclockwise paths. And make sure there is space between the two straight paths to create a curved path.

Note: Path direction is very important. By default, the paths created are all one-way paths. If your model doesn't work, it's most likely caused by not creating the correct path direction. In this model, we create a closed loop in a counterclockwise direction. You can look at the arrows on each path to determine its direction.

3. Use the join tool to join the four straight paths smoothly. Again, confirm that the path is in a counter-clockwise direction.

4. Add a generator at the bottom of the closed loop path and an absorber at the top and create an A connection between them.

5. In the Entity Library, drag in a decision point on the bottom path and near the generator. Use an A connection to connect the decision point to the generator.

6. Create a second decision point on the top path close to the absorber and establish an A connection between the decision point and the absorber.

7. Drag in two task executors from the entity library.

8. Drag a dispatcher into the model and establish an A connection between the dispatcher and the task executor.

9. Red-select two AGVs and connect them with the decision point near the absorber, and select TravelerAGV in the pop-up menu. This will allow the AGV to complete the travel task on the established path.

10. Select Use Transport in the generator. And create an S connection between the generator and the distributor.

run the model

reset and run the model

You can see that one of the task executors travels to the generator, loads the flowitem, and the model has a "deadlock" message.

Assignment of decision points

This model reflects the biggest logical difference between the AGV module and the traditional flexsim traveling network. The forward search mechanism of the AGV system is more complicated. The AGV will always look for the next decision point on the path to allocate or request during the journey. If an AGV cannot request to the next decision point, it will stop at the previous decision point. This stopping distance may span multiple path segments.

deadlock

This model contains a deadlock state. The first AGV requests a decision point at the absorber that is being requested by the second AGV. However, decision points near the generator that the second AGV will be requesting are being requested by the first. This type of deadlock is called a circular wait, because dispatch or dispatch requests are stuck in a state of circular wait for each other. Deadlocks will be a common occurrence when building AGV systems. Avoiding deadlocks is an important reason to simulate in the design process.

Flexsim provides an automatic deadlock detection function, and this function is enabled by default. You can right-click on the AGV path or decision point, select AGVNetworkProperties, go to the General tab, check or uncheck Detect Deadlock, and then click OK to close the dialog.

The ability to detect deadlocks is very useful during the debugging phase, but since it requires extra computation, you may want to turn it off when the model is built to make the model run more smoothly.

How to solve deadlock problem

There are several strategies to solve the deadlock problem in AGV systems. Just add an extra decision point in this case. This practice increases the potential stop points in the system, so that the AGV does not have to request a blocked decision point.

1. Add a decision point to the path on the left and one on the right.

2. Reset and run the model

Now the AGV will no longer fall into deadlock.

Unassignment of decision points

Due to the new structure of the model, the AGV will no longer fall into deadlock. But you may find that they still sometimes wait for each other. This situation is due to the mechanism of decision point dispatch and de-assignment, specifically the decision point's de-assignment type. The default setting is very conservative, that is, the assignment of the previous decision point is only cancelled when the AGV reaches the next decision point. This essentially causes the gap between the two decision points to be preserved while the AGV is traveling. You can modify this setting.

1. Red select all decision points in the model. It doesn't matter if you also red-select entities other than the decision point. So you can simply box select all entities.

2. Click on any decision point.

3. In the shortcut properties window on the right, in the deallocation type, select DeallocateWhenPastCurrent.

4. Select the appropriate option from the drop-down box, which will apply the changes to all decision points.

5. Reset and run the model.

Now AGVs don't wait for each other anymore.

Cancel dispatch type

The basic AGV model has two dispatch types by default. They are undispatch when the next decision point is reached and undispatch when the current decision point is passed. You can reconfigure these types in the AGVNetworkProperties window or add your own custom types

注:本模型使用的是FlexSim 2019

参考资料:百度百科,Flexsim7.5.4版本中文用户手册【北京创时能公司汉化】版

翻译:Google翻译

本文由LearningYard学苑原创,文中部分图片和文字均来源于网络,如有侵权请联系删除!

相关推荐

DIY桌面激光雕刻机#是时候展现真正的技术了

激光雕刻机。这期视频我们来看一下我是如何DIY一台桌面激光雕刻机。前几天在水池子边上发现了一台旧电脑,我看这电脑上还有一些东西可以利用到,比如光驱上面拆出了步进电机和滑轨。所以本期视频我将用这些废品去...

100000块多米诺骨牌拼成超级马里奥,这款机器人1天就完成了

智东西(公众号:zhidxcom)编译|王健恩编辑|高歌智东西7月30日消息,美国工程师兼YouTube博主MarkRober创造出了一个可以自动摆放多米诺骨牌的机器人。这个机器人被命名为D...

这个3D打印机器人可以在30秒内打开密码锁

密码锁看似很安全?也许曾经是,但现在你可要当心了!这是因为一台3D打印制造的机器人就可以在半分钟内打开你的密码锁。上周四,知名黑客萨米·卡姆卡尔(SamyKamkar)在自己的网站上公布了一个称之为...

密码锁也不安全 这款机器人30秒即可自动打开

大学生和体育爱好者们要注意了,千万不要再把贵重物品存放在公共储物柜里。因为现在已经出现了一种3D打印的机器人,据说世界上各大锁商推出的大部分密码锁,它都能够在30秒之内打开。著名黑客山米·卡姆卡(Sa...

硬件单片机模拟器,再也不用买开发板了...

#头条创作挑战赛#记得2006年在凌阳科技(sunplus)工作的时候,凌阳科技开发了自己的编译器/集成开发环境(unspIDE),那个IDE除了有keil那样的编辑器、编译器、链接器、调试器、下载...

3D打印机分哪几部分构成?(3d打印机结构组成及系统分析)

3D打印机的构成根据技术类型(如FDM、SLA、SLS等)有所不同,但以最常见的FDM(熔融沉积成型)3D打印机为例,其核心组成部分可分为以下模块:1.机械结构框架提供整体支撑和稳定性,常见材质为金...

初学者学伺服都需要什么?石家庄诺仕通

#初学者学伺服都需要什么?#对于初学者学习伺服系统,需要从...

arduino(arduino是单片机吗)

arduino学习笔记arduino学习笔记1-什么是arduino?...

自制写字机,你需要的全套资料都在这里

小编之前发过《用废旧光驱制作迷你绘图仪》,很多读者都成功制作了自己的绘图仪。但是该方法的缺点是gcode要在inkscape软件中生成,然后通过grbl-controller这个没有界面的程序发送画图...

自己动手DIY3D打印机 瞬间效果出现桌面时,大家都惊呆了!

3D打印机,对数码产品比较了解的朋友都知道,但是真正玩过的童鞋可能就不多了。其实3D打印机离我们并不远,随着3D打印技术越来越成熟,3D打印机的学习资料也越来越多,这让自己动手做一台桌面3D打印机也成...

机器人仅用24小时将十万块多米诺骨牌拼出马里奥,创下世界纪录

十万块多米诺骨牌倒下是个啥场面?等等,十万块?那得搭多久啊?...

如何制作一个机器人?(制作机器人的方法)

1.简单机械机器人(例如自动小车)2.智能机器人(带有人工智能或计算机视觉)3.工业机器人(用于生产自动化)4.人形机器人(类人结构,可以行走、对话)...

CrowPi2树莓派4学习套件评测第1部分–开箱和首次启动

文章来源:CNXSoftware中文站2020年6月,我曾写过一篇关于深圳易科诺...

基于 Arduino UNO 的蓝牙汽车(arduino智能小车蓝牙控制app)

HC-05蓝牙模块HC-05是一款易于使用的蓝牙SPP模块,针对流畅的串行无线通信配置进行了优化。串口蓝牙模块是完全合格的蓝牙V2.0+EDR(增强数据速率)3Mbps调制,具有总2.4...

电机驱动设计方案带你初识机电一体化

在直流电机驱动电路的设计中,主要考虑以下几点:功能:电机是单向还是双向转动?需不需要调速?...