【问题标题】:Product ID tracking in a sorter machine (PLC programming)分拣机中的产品 ID 跟踪(PLC 编程)
【发布时间】:2021-02-24 22:29:39
【问题描述】:

我正在为包装分拣机编写一个 PLC 程序(Q 系列 Mitsubishi PLC,GXWORKS 2 软件)。机器的逻辑如下:

1.包裹被引入传送带。条形码阅读器扫描仪获取包裹条形码。

2.条码发送到我们的SMS(分拣管理系统),它计算出口并发送回PLC。

3.包裹到达计算出的出口,然后导出到滑槽。

产品的跟踪由编码器和移位寄存器完成。这意味着每个内存地址都代表传送带中的一个物理位置。然后,移位寄存器将代表包的位沿着内存缓冲区移动,直到位到达代表出口的地址,从而可以导出包。

我的问题不是产品的追踪,而是产品ID的追踪:

当包裹进入传送带时,会为该产品设置一个 ID (1,2,...,n)。这个想法是,这个 ID 用于跟踪该包的状态,例如,如果包是在正确的出口中派生的,是否有损坏的条形码等。

我的问题是,我怎样才能有效地跟踪这个 ID。我在考虑使用相同的移位寄存器,而不是移动一个位,而是移动一个更大的数字,例如 |1|0000011|,其中第一位的作用就像一个标志,代表产品的存在,其余的数字是产品编号。当标志到达出口地址时,我可以减去 10000011 - 10000000 = 00000011,得到产品 ID。

有没有更有效的方法来做到这一点?

【问题讨论】:

  • 在计算出的出口前是否有条形码扫描仪?在出口前检查条形码是有意义的,以确保它位于正确的位置。
  • 我的机器入口只有一个条码扫描器:(
  • 传送带上同时有多少个包裹?在给定时间传送带上总是有 1 个包裹?
  • 传送带上最多可以有 70 个包裹。传送带入口处并不总是包裹,因为感应是手动的,有时可能没有包裹被感应。

标签: plc


【解决方案1】:

我不清楚带有编码器的部分,所以我用 nr x 个传感器替换它。 也许你可以解释得更好,然后我会更新答案。

现在,让我们想象一个简单的输送机模型:

        S           S               S
        |           |               |EXIT
---------------------------------------------------
    x           x   x           x
---------------------------------------------------
  • x 是传送带上的包裹
  • s 是传送带上的传感器
  • EXIT 是包退出的地方

您可以创建一个表示包的功能块:FB_Package

FB_Package 具有以下数据结构:

TYPE ST_Package :
STRUCT
    sBarcode : STRING;
    eLocation : E_ConveyorLocation;
    eState : E_PackageState;
    uiPackageID: UINT;
END_STRUCT
END_TYPE

然后您可以创建一个 FB_Conveyor 拥有/或管理 FB_Packages 数组

FB_Package 有一个步骤链,用于检查传送带上的当前位置。 每次从传送带接收到新位置时,它都会在其步骤链中检查该位置在考虑当前位置的情况下是否合理(例如,到达下一个位置的时间范围以及接收到的位置是否在当前位置之后)。 如果检查成功,包会更新它的位置,当到达最后一个位置时,fbPackage 实例会将其状态更改为 ePackageExited。

fbConveyor 实例识别出包裹已退出传送带并重置其在数组中的实例。

如您所见,我将 ENUMS 用于包位置和状态,因为它们是人类可读的,并且使您的代码比以字节为单位移动更容易理解。

【讨论】:

    猜你喜欢
    • 2020-11-06
    • 2012-07-26
    • 1970-01-01
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-30
    相关资源
    最近更新 更多