我目前正在学习装配,这可能是一个基础问题,但我一直没弄明白。已经尝试从VC课程中寻求帮助,但没有解决问题。


我创建了一个演示布局,目标是让工人将一定数量的产品装入一个箱子(本质上就是装配一个组件)。流程如下:

  1. 取一个箱子并放在工作台上
  2. 然后,根据装配所需数量取出产品,放入同一个箱子
  3. 装配完成后,将其放到输出传送带上
  4. 用新箱子重复此过程

布局:

装配示例:

什么是正确方法来模拟这个过程?我遇到了一系列问题。

  1. 问题1:工人确实拿了箱子并放入第一个瓶子,但随后又拿了另一个箱子。然后重复这个循环。

  2. 问题2:如果结果应该是一个装配,那么输入一个产品是否正确?使用喂料器或喂料流程时,我没有看到仅通过初始步骤喂入装配的可能性。

In this case, using a **Process Node** with a **Create statement** is indeed the correct approach. Here's a breakdown of when to use each: ### **Process Node + Create Statement** - **Use when**: You need to create **new components** or **new instances** of components during simulation. - **Example**: When a part arrives at a workstation and needs a new component (like a pallet, fixture, or documentation) that doesn't exist yet. - **Your case**: If you're creating components that didn't previously exist in the model, this is the right method. ### **Feeder** - **Use when**: You need to **select from existing components** that are already in the model (typically stored in a list or queue). - **Example**: When you have a pool of available resources (like workers, tools, or transport devices) and need to assign one to a task. - **Key point**: The feeder **doesn't create new components** - it selects from existing ones. ### **Summary** - ✅ **Process Node + Create**: Creates **new** components - ✅ **Feeder**: Selects from **existing** components So if you're generating new components during runtime, you're using the correct approach. The feeder serves a different purpose - resource selection rather than creation.

流程示意图如下:


我很乐意帮助你分析问题并提供建议!

谢谢!

尝试调整流程,现在有2个流程:

  1. 箱子从传送带进入加工区再输出
  2. 产品装入箱子

两个流程中的工序应创建同一组装的步骤(如果我的理解正确)。

尝试解释我的逻辑:

  • 箱式送料器创建装配体时仅包含“包装盒”步骤。它到达传送带末端,但不知为何消失且未停止在Box_FromConveyor :cry:
  • Product_Feeder创建包含“产品”步骤的装配体时,该步骤立即报错:流程节点 #2::流程执行器::Product_Feeder::传输输出错误:不支持包含多个装配体实例的列表。
  • 处理过程中,第一个传输输入仅引入任意产品(包装盒)。随后通过获取装配体定义首个未完成步骤——装配体中包装盒之后的步骤是产品。理论上,下一个传输输入应抓取3×4个产品并将其放入包装盒。

顺便说一下,这是流程图:

知道这里有什么问题吗?谢谢!

你好,

没有完整的布局很难理解全部内容,但根据我所看到的,似乎有几个错误。

你看了关于装配的视频教程

我还建议参考 eCat 中的布局模板《装配 - 砖块示例布局》,其中提供了多个装配示例。你可以尝试采用《产品类型构建装配》中的方法,通过产品创建装配,这样会更简单。

1 个赞

Tilma,

感谢建议!我查看了该布局中的“构造示例”,按照其中的逻辑,我的测试现在可以运行了。但有两处我不太满意:

  1. 为了精确匹配装配中的12个瓶子,我在流程中添加了一个 while 循环,重复执行TransportIn12次。

这看起来像是一种变通方案。如果装配从 3x4 变为 4x5 怎么办?如果装配步骤已包含产品的排列模式,流程能否直接利用这些信息来获取正确数量的产品?

  1. 所有瓶子都被放置在了盒子的同一位置。从视觉效果上,我希望它们能立即按正确的模式摆放。

有什么好方法可以实现这一点吗?(除了创建12个新坐标系并逐个分配TransportIn(转换至其自身坐标系)

我不确定这里用Construct语句是否最佳。如果不用它,反而能同时解决两个问题:既不需要While循环,瓶子也能直接放到正确的位置。

--> 要么采用将箱子作为装配步骤导入、瓶子作为产品的方法,要么像我之前建议的那样,全部作为产品处理。

针对不同的排列模式,也有多种可能方案:可以每个模式单独做一个装配,也可以在一个装配中为每个模式设置不同的并行步骤。

这里有个示例:示例_装配.vcmx(2.9 MB)

1个赞

谢谢@Tilma,示例非常棒:+1:现在清楚了,我发现解决方案其实可以比我原来想的简单得多。

1个赞

@Tilma实际上我还有一个后续问题要问你——假设每个瓶子放入包装盒都需要一定的时间来完成,所以我们可能需要添加一个工作:耗时 x 秒每添加一瓶后。

我找不到任何方法来完成这个任务,因为进程似乎一直卡在那里。运输瓶子需运输至整个装配步骤完成(所有插槽填满为止)。获取装配不返回下一个空槽位。

您对如何实现每次搬运瓶子的动作后都跟随一个工作声明有什么想法吗?

我想到一个变通方法:在传输链接中可以设置一个较长的放置时间来模拟工作时间。

我目前没打算在论坛上非常活跃,但花了几分钟愉快地做了一个新示例。:grinning_face_with_smiling_eyes:

正如您所说,最简单的方法是在传输链接中延长放置时间。如果您想让操作员的动作看起来更自然,可以通过在“程序”选项卡中添加新例程来调整该传输过程中操作员的移动(参见第22页)。流程建模资源手册 | Visual Components 学院

更现实但稍复杂的方式是,在工序说明之间逐个添加产品。为此,您需要在装配过程中每一步对应一个产品。您可以使用自动装配插件来实现。要轻松实现这一点(请查看论坛帖子中的演示视频或PDF)。然后在一个while循环中,每次添加一个步骤,执行一个工作语句,并检查装配是否完成,以便在完成时能够跳出循环。

以下是两个示例:

带检查装配的装配示例.vcmx(3.0 MB)

1 个赞

很高兴收到你的消息:smiling_face_with_sunglasses:不知道你是怎么学会VC的,不过当你遇到难题时,我觉得最好的方法就是在论坛上向更有经验的人请教——尤其是这些例子特别有帮助。

嗯,谢谢!我明白自动装配插件和每个插槽一个装配步骤的设计逻辑了,晚点我试试看。

这个流程实际上是我正在模拟的一个真实场景的一部分——我希望能在此基础上增加更多步骤。(1) 操作员应在工作站上将瓶子装入独立包装——瓶子包装无需从外部获取,本质上只需更换产品类型; (2) 装满的箱子应放置在输出端等待的托盘上,而非输出传送带; (3) 托盘装满后,应运出。您好!请问有什么我可以帮助您翻译或解答的吗?
我会尝试自己研究如何实施这些额外步骤——但如果实在卡在某个地方,我可能会再联系你,希望你能提供更多例子。:sweat_smile:

祝你今天过得愉快!

@Tilma我又创建了一个类似的测试,想试试自动装配插件。结果在Box送料器上遇到了这种奇怪的现象。

当设置为送料时纸箱组装(我手动创建的组装步骤,包含纸箱步骤和瓶子排列模式),它进料的是空纸箱。

但是,当设置为进料纸箱组装_分步(自动生成的,包含纸箱和每个瓶子的独立步骤),它却立即进料已组装好的完整组件(包含所有瓶子)?它本应该进料空纸箱这一步。

附上布局文件以防万一(请忽略其他一些未完成的部分)。
装配、箱体装配、托盘装配.vcmx(2.8 MB)

产品创建器行为(供料器组件使用的)在创建装配产品实例时不支持定义装配步骤,因此会创建完全填充默认产品的实例。

您需要使用带有创建语句的流程来创建部分填充的装配体。

1 个赞

@TSy但为什么在第一个例子中没有创建完全填充的装配体呢?产品创建器设置为箱体装配,但它生成了一个空的部件。

实际上,我想答案是在这种情况下,我将最后一步定义为默认产品类型 = 空值

在另一种情况下,为每个产品都设置了类型。

更新:在注意到这些示例并将装配体中每个产品的默认类型设置为空值后,问题解决了。:+1: