我需要为以下场景建模:
-
有一台机器,产品沿单一轴线缓慢通过工作区域,因此设有输入区、工作区和输出区。机器始终以较慢的速度移动,例如20毫米/秒。
-
机器人将产品放置到该机器的输入端(称为缓冲区)。
-
产品长度可在500...1500毫米之间变化(其他尺寸不重要),产品从另一条输送带(称为输入)随机到达。
图像1309×875 90.2 KB
挑战在于:机器人应始终尽可能靠近工作区域放置产品。只要缓冲区有足够空间,机器人也可以在其中添加产品。
例如:
-
机器人将第一个产品紧贴缓冲区末端放置。下一个产品应间隔一定距离添加(第一个产品的长度 + 间隙)。
图像1309×537 75.4 KB
-
持续添加产品直至缓冲区满,此时应等待直到有足够空间容纳下一个产品(其长度可能随机)。
图像1308×489 66.4 KB
对这种机器有什么建模思路吗?
Tilma 2026年3月27日 下午2:392
这是一个有趣的案例!
你可以尝试在流程中添加一个**射线传感器(RaycastSensor)**,用于测量可用距离,并创建一个可通过属性移动的框架来放置你的产品。
在FromConveyorProcess中,您提供产品长度;在ToConveyorProcess中,您测量可用距离并计算差值,以确定放置产品的框架位置。在启动TransportIn之前移动该框架非常重要,否则将使用之前的位置。
Raycast_PlaceOffset.vcmx(949.7 KB)
2个赞
汉斯 2026年4月9日,上午11:033
@蒂尔玛谢谢,我已经将这个解决方案整合到我当前建模的场景中。在我的实际模型中,还有一个额外的复杂性:新产品可以从多个来源(而不仅是一个)到达传送带。
因此,我在多个地方添加了类似的逻辑。来自传送带他们会在产品被拾取前发送其长度信息。
但我遇到了以下障碍,不确定这是否属于流程例程的限制。
本质上:
-
根据您之前的逻辑,传送带接收到产品长度(假设为1500毫米),并到达等待信号(缓冲区已相当满,因此正在等待传感器的距离指示,以确定是否有足够空间容纳新产品)。您好!请问有什么可以帮您翻译的吗?
-
产品到达另一个 从传送带上取下并送到这里。该过程发送产品长度 → 至传送带,可能为350毫米。
-
此时传感器距离可能为959毫米,因此条件判断应为True:
<当前对象>::距离信号 >= 产品长度 + 200
但实际未满足条件,因为程序变量“产品长度”仍保持1500毫米。
图像1126×271 18 KB
图片1124 × 273 = 306,732
19.1 KB
所以呢WaitSignal,<This>::DistanceSignal正在被持续监测,但产品长度不是。
我尝试将条件改为这样,但出现了错误。
<This>::DistanceSignal >= <This>::ProductLength + 200
这是一个已知的限制吗?
TSy 2026年4月9日,下午2:254
我认为您误解了表达式语法,不要使用<This>::ProductLength,只需使用ProductLength来引用ProductLength变量的值(在这种情况下,它只是过程例程中的一个属性)
您的输出中应该会收到关于表达式的错误信息。