网淘吧Visual Components、Flexsim 仿真技术博客 | Python、C#、Delphi xe 机器人编程教程 - 网淘吧

多台AMR在多台机器上取箱并清空 - Process Modeling - visual compents 疑难解答

2026-04-07 新闻来源:网淘吧 围观:43
电脑广告
手机广告

您好, 根据您的描述,您正在模拟一个场景:多个加工台的芯片料箱会基于时间分布被填满,随后需要AMR(自主移动机器人)将其运至清空区倾倒,再将空料箱放回缓冲区。您目前遇到的问题是,每次只能运输一个料箱,而您希望扩展到多台并行机器,实现多台AMR协同工作(例如,一些AMR取走满箱,另一些AMR从缓冲区补充空箱)。 要实现多台AMR并行协同作业,关键在于建立一种**容量拉动式**的调度机制,而不是依赖单一的、顺序触发的信号。以下是一些建议的思路和方法,可以帮助您在visual Components中实现这一目标: ### 核心思路:从“信号触发”转向“任务队列与资源调度” 您当前的“信号”方式可能形成了一个顺序链条。要并行化,需要将“需要运输的满箱”和“可用的空箱”视为任务,将AMR视为资源,并通过一个中央调度器或基于条件的任务分配系统来管理。 ### 具体建议方法: 1. **使用“物料流”或“任务分配器”组件**: * Visual Components 中的“物料流”或某些专用的任务分配器组件(具体名称可能因版本而异,例如“Dispatcher”、“Task Planner”或通过“AGV Interface”的高级功能)正是为这类场景设计的。 * **工作原理**:您可以将每个加工台的“满箱输出点”、清空区的“倾倒点”、缓冲区的“空箱存放/拾取点”定义为**任务点**。当加工台的料箱满时,它向系统发布一个“取走满箱”的任务。调度器会从空闲的AMR车队中分配一台去执行。同样,当加工台需要空箱时,发布“补充空箱”任务,由调度器分配给(可能是另一台)AMR去缓冲区取空箱并送达。 2. **利用“AGV Interface”或“Fleet Control”功能**: * 如果您使用的是支持车队管理的AGV/AMR模型,通常会有配套的接口或控件。您可以配置一个**车队**,并定义多个**运输任务**。这些任务可以设置为**并行处理**,只要有多台空闲的AMR,它们就可以同时被分配任务。 3. **通过“脚本”实现自定义调度逻辑**: * 如果标准组件灵活性不足,您可以使用Python脚本实现一个更自定义的调度系统。 * **基本架构**: * **任务列表**:创建两个全局列表(或队列),一个用于`pending_pickup_tasks`(待取走的满箱),一个用于`pending_delivery_tasks`(待补充的空箱)。 * **事件触发**:加工台料箱满时,将其位置/ID加入`pending_pickup_tasks`。加工台空箱被取走后,将其自身ID加入`pending_delivery_tasks`。 * **AMR状态管理**:每台AMR都有状态(空闲、前往取货、运送中、前往缓冲等)。 * **调度循环**:编写一个定期运行或事件驱动的函数,检查是否有`空闲AMR`和`待处理任务`。如果有,则将该任务分配给该AMR,并更新任务列表和AMR状态。AMR完成任务后,状态恢复为“空闲”,并触发下一个任务分配。 * **优先级与规则**:您可以在脚本中轻松定义规则,例如“优先处理等待时间最长的任务”或“让特定AMR专门负责取货或送货”。 4. **检查与配置关键点**: * **AMR数量**:确保您在场景中放置了多台AMR,并且它们都被正确配置到同一个车队或调度系统中。 * **路径网络与避让**:确保路径网络足够支持多车同时运行,并设置了合理的避让规则,防止死锁。 * **缓冲区与清空区的容量**:将这些区域设置为**允许多个容器同时存在**(例如,设置较大的容量或将其定义为“存储区”),避免成为流程瓶颈。 ### 操作步骤建议: 1. **审查现有组件**:首先查看您使用的“Buffer Zone”和“Dump Zone”组件属性,看是否有“最大容量”、“同时处理数量”或“任务生成”等相关设置。 2. **引入调度器**:尝试在组件库中搜索“Dispatcher”、“Task Planner”或“Material Flow”相关的组件,将其添加到场景中,并按照其帮助文档将您的加工台、缓冲区、清空区和AMR车队与其连接。 3. **考虑脚本方案**:如果标准调度器不符合您的特定逻辑,使用Python脚本实现上述自定义调度可能是最强大和灵活的方式。Visual Components的API通常支持获取组件状态、控制AMR移动和触发任务。 由于我无法直接查看您的`TestSimNew.vcmx`文件,以上是基于通用仿真原则和Visual Components常见功能提供的方向。建议您从**尝试配置一个车队调度器**或**开始编写一个简单的双任务队列脚本**入手,这应该能突破目前单次运输的限制,实现多AMR并行作业。 如果您在尝试具体方法时遇到问题,可以提供更多关于您所用组件类型或脚本片段的细节,以便获得更具体的指导。 祝您项目顺利!

流程建模

您好,

我正在研究一个场景:希望基于时间分布模拟芯片料箱填满的过程。一旦填满,AMR(自主移动机器人)将取走料箱,将其倒入清空区,然后将空料箱放回缓冲区。我使用了流程节点来处理料箱流程、清空区和缓冲区。我在料箱流程节点和缓冲区之间设置了信号——基于时间延迟,信号发送到缓冲区,这将启动AMR取走一个料箱,将其循环运送到清空区再送回缓冲区。然而,我遇到的问题是每次只能运输一个料箱。我希望将此过程扩展到多台并行机器——因此需要多台AMR协同工作,一些AMR从机器上取走满箱,另一些AMR用缓冲区中的空箱进行补充。有没有办法可以模拟容量拉动机制,使多台AMR协同工作?如有任何帮助,将不胜感激。

TestSimNew.vcmx(1.6 MB)

您好,我不太确定是否理解正确,但如果您希望AMR去取回新产品,在实际产品完成并需要运送到下一工序之前,您可以采用两种方法:一是在机器前设置两个工序作为缓冲区;二是尝试使用 **StartTransportIn + WaitTransport** 方法,类似于 eCat 中的“双夹爪机器看管”布局模板。

从帮助文件中得知:

StartTransportIn 语句允许您启动将一个或多个产品实例运输到工序中,并在运输过程中执行其他语句。

TestSim_with StartTransportIn.vcmx(1.8 MB)

感谢 Tilma,另外我们将使用具备全向移动能力的AMR。有没有办法控制AMR的导航,使其在特定路径上能够横向移动,而不是直行?

我的意思是,为了避免撞到柱子,能否强制AMR保持当前朝向,先向左移动,再向前,然后向右?



我认为仅靠基本提供的流程建模功能实现起来比较困难,但或许可以通过任务控制器(Mission Controller)实现。

@rprasann 目前 VC 对应的是 MR 模块,没有 AMR 模块,因此使用 MR 来实现 AMR 功能可能无法实现或较为困难!

免责申明
部分文章来自各大搜索引擎,如有侵权,请与我联系删除。
打赏

文章底部电脑广告
手机广告位-内容正文底部

相关文章

上网淘巴领天猫淘宝优惠券,一年省好几千。

广告  ×

您是本站第938074名访客 今日有0篇新文章/评论