首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >分拣机中的产品ID跟踪(PLC编程)

分拣机中的产品ID跟踪(PLC编程)
EN

Stack Overflow用户
提问于 2021-02-22 17:39:27
回答 1查看 236关注 0票数 0

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

1.在输送机中诱导包装。条形码读取器扫描仪获取包条形码。

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

3.将包裹运至计算器出口,然后导出为滑槽。

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

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

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

我的问题是,如何有效地跟踪这个ID。我在想,在使用相同的移位寄存器时,没有移动唯一的位,而是移动一个较大的数字--例如,要移动一个更大的数字--例如,第一个位的作用就像一个标志,它代表一个产品的存在,其余的数字是产品ID。当标志到达出口地址时,我可以减除10000011 - 10000000 = 00000011,得到产品ID。

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-24 14:24:22

编码器的部件对我来说不清楚,所以我用nr x传感器代替它。也许你能更好地解释,然后我会更新答案。

现在,让我们想象一下传送带的一个简单模型:

代码语言:javascript
复制
        S           S               S
        |           |               |EXIT
---------------------------------------------------
    x           x   x           x
---------------------------------------------------

  • x是传送带上的包装,
  • s是沿传送带的传感器,
  • 出口是货包出口

的地方。

您可以创建一个表示包的函数块: FB_Package

FB_Package具有以下数据结构:

代码语言:javascript
复制
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作为包的位置和状态,因为它们是人类可读的,并且使您的代码比以字节为单位的位移动更容易理解。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66320703

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档