在生产线上安装了2台摄像机Cam1和Cam2。它们配备有传感器,一旦产品接触到其中一个传感器,就会向我的程序发出信号。那些摄像机一个接一个地放置。
在Cam2之后,安装了天平B,并且还装有传感器。当产品到达那里时,将对产品进行称重并用重量向我的程序发出信号。然后我的程序必须基于两个捕获的图像和从B(重量)接收到的数据对该产品进行评估。
实际上,Cam1和Cam2之间可以容纳一种/两种产品。而且Cam2和B之间也可以放一种/两种产品。
我很难找到一种稳定的算法来确定图像以及权重是否属于同一产品。工厂内部存在一些无法更改的困难条件:
必须以编程方式解决此问题。工厂有很多障碍,使我无法在那里进行任何修改。
我最初的解决方案是为每个摄像机FIFO_Cam1和FIFO_Cam2分配一个FIFO。一旦我的程序从其中一台摄像机接收到信号,便捷的FIFO就会使所捕获的产品图像排队。 然后,当我从B收到信号时,我从每个FIFO中取出顶部图像,并认为它们属于同一个产品,该产品的权重也与最后一个信号相同。
不幸的是,我的考虑只能解决速度问题(Nr。1),而不能解决所有情况(Nr。2)。
当保存到FIFO_Cam1中的产品数量超过5个时,我试图设定一个阈值,我会用DESYNCH信号通知生产线,但不能正常工作,不能解决大多数情况。
任何帮助或想法将不胜感激!
谢谢。
答案 0 :(得分:0)
您需要一个信号让您知道线路停止或急剧减速。
因此,要照顾好丢失的产品,我将存储拍摄照片/测量值的时间戳。
如果生产线以相同的速度运行,那么您应该始终在两次事件之间看到相同的时间差。如果产品丢失,则下一次测量将以所需时间的大约两倍进行,因此您可以在fifo中查找与您期望的时间增量相匹配的项目。您还可以跟踪同一队列中的连续时间戳。它还可以告诉您可能跳过了多少种产品。
要允许生产线速度发生某些变化,您应该持续更新时间增量(最后X个成功的项目)。显然,如果生产线停止,则需要允许停止时间(这就是为什么需要信号的原因,我认为标记每个产品会更容易)。如果您可以测量线速度,那将更好,因为您可以更准确地调整预期的增量。
这仍然是近似解决方案。确保在测量中考虑到一些误差。如果生产线速度发生巨大变化,或者所取出产品的数量过高,则可能仍然无法正常工作。例如,假设第一个相机扫描了10个产品,然后生产线停了一段时间,然后以不同的速度启动,有人将8个产品下线,现在您得到下2张照片。无法肯定地说出如何将后面的图片与第一张图片配对。