ProductStateDetectionActivity - 产品状态检测
概述
ProductStateDetectionActivity 是一个 MES 专用的产品状态检测节点,用于在产品入站时检测产品的当前状态是否允许进入当前工序。该节点支持正常产品状态检测和跨产线产品状态检测,可以验证产品是否已完成前置工序、是否为 NG 状态等。
基本信息
| 属性 | 值 |
|---|---|
| 显示名称 | 产品状态检测 |
| 类名 | ProductStateDetectionActivity |
| 命名空间 | CMS.Plugin.MesSuite.Activitys |
| 基类 | InboundDetectionActivity |
| 分类 | 工序步骤 |
| 排序 | 15 |
| 发布 | 是 |
配置说明
该节点通过工艺配置和流程上下文变量进行控制,无需直接配置属性。
工艺配置
| 配置项 | 说明 |
|---|---|
| ProductStateDetection | 正常生产时的产品状态检测开关 |
| ProductStateDetectionOfInspection | 点检时的产品状态检测开关 |
| ProductStateDetectionOfCrossLine | 跨产线产品状态检测开关 |
输入变量
| 变量名 | 常量 | 类型 | 说明 |
|---|---|---|---|
| SerialNumber | FlowItemCollection.SerialNumber | string | 产品 序列号 |
| ProductModel | FlowItemCollection.ProductModel | AssociationProductModel | 产品型号信息 |
| HasRepairMark | FlowItemCollection.HasRepairMark | bool | 是否为返修标记 |
| HasInspectionMark | FlowItemCollection.HasInspectionMark | bool | 是否为点检标记 |
输出变量
| 变量名 | 常量 | 类型 | 说明 |
|---|---|---|---|
| Inbound_ResultVariable_Value | FlowItemCollection.InboundResultValue | string | 入站结果(检测失败时) |
| Inbound_Description_Value | FlowItemCollection.InboundDescriptionValue | string | 入站异常描述(检测失败时) |
业务逻辑
执行流程
┌──────────────────────────────────────── ─────────────────────┐
│ ProductStateDetectionActivity │
├─────────────────────────────────────────────────────────────┤
│ 1. 检查功能是否启用 │
│ ├─ 点检模式 → 检查 ProductStateDetectionOfInspection │
│ └─ 正常模式 → 检查 ProductStateDetection + CrossLine │
├─────────────────────────────────────────────────────────────┤
│ 2. 获取检测所需数据 │
│ ├─ 产品型号 │
│ ├─ 序列号 │
│ ├─ 返修标记 │
│ └─ 物料参数 │
├─────────────────────────────────────────────────────────────┤
│ 3. 执行产品状态检测 │
│ └─ 调用 IProductTraceChecker.ProductStateDetectionAsync │
├─────────────────────────────────────────────────────────────┤
│ 4. 执行跨产线检测(如果启用) │
│ └─ 调用 CrossProductionLineProductStateDetectionAsync │
├─────────────────────────────────────────────────────────────┤
│ 5. 处理检测结果 │
│ ├─ 全部通过 → 继续流程 │
│ └─ 任一失败 → 设置入站结果和异常描述 │
└─────────────────────────────────────────────────────────────┘
检测类型
| 检测类型 | 配置项 | 配置位置 | 说明 |
|---|---|---|---|
| 产品状态检测 | ProductStateDetection | 过程设置 - 产品状态检测设置 | 检测产品在当前产线的状态,验证是否完成配置的检测工序 |
| 跨产线检测 | ProductStateDetectionOfCrossLine | 过程设置 - 产品状态检测设置(跨产线段) | 检测产品在其他产线段的状态,用于跨线段流转场景 |
数据类型区分
| 模式 | TraceDataType | 说明 |
|---|---|---|
| 点检模式 | InspectionPoint | 点检数据 |
| 正常模式 | Normal | 正常生产数据 |
检测内容
产品状态检测通过 ITraceCacheService 查询追溯缓存数据,验证产品是否满足进站条件。主要包括以下检测项:
1. 前置工序完成检查
验证产品是否已完成必要的前置工序:
- 配置位置:在**过程设置(Process Configuration)**模块的"产品状态检测设置"中配置
- 可以为每个产品型号、配方、工序组合配置需要检测的前置工序列表
- 支持配置多个检测工序,系统会验证产品是否在这些工序中有合格记录
- 检测机制:根据产品型号、配方和当前工序,查询过程设置中配置的状态检测规则
- 验证逻辑:检查产品在配置的检测工序中是否有合格的过站记录
- 失败条件:如果产品未完成配置的任一检测工序,则检测失败,不允许进站
- 数据来源:从追溯缓存(
ITraceCacheService)中查询产品的历史过站记录 - 配置参考:详见 过程设置 - 产品状态检测设置
2. 产品质量状态检查
验证产品在前置工序和当前工序中的质量判定结果:
- 检测机制:查询产品在前置工序和当前工序中的合格/不合格(NG)状态
- 验证逻辑:
- 检查产品是否在任何前置工序中被判定为 NG
- 检查产品在当前工序是否已存在 NG 记录(如重复进站)
- 失败条件:
- 如果产品在前置工序中为 NG 状态,则不允许进入当前工序
- 如果产品在当前工序已有 NG 记录且未经返修,则不允许再次进站
- 例外情况:返修产品可能有特殊处理逻辑,允许重新进入 NG 工序
3. 返修状态处理
针对返修产品的特殊检测逻辑:
- 标记识别:通过
HasRepairMark变量识别返修产品 - 检测策略:返修产品可以重新进入已完成过的工序
- 验证逻辑:检测器根据返修标记调整验证规则,允许返修流程
- 参数传递:
isRepair参数会传递给IProductTraceChecker,由具体实现决定放行策略
4. 物料关联状态检查
验证产品关联物料的状态(如果提供 了物料信息):
- 检测范围:检查当前采集的物料信息(
materials参数) - 验证逻辑:验证物料是否在前置工序中正确使用和记录
- 关联检查:确认物料与产品的绑定关系是否有效
- 数据来源:从追溯缓存中查询物料的使用记录
缓存机制
产品状态检测依赖追溯缓存服务(ITraceCacheService):
- 缓存周期:维护指定天数内的追溯数据(通过
Period属性配置) - 缓存内容:产品过站记录、质量状态、物料关联关系
- 性能优势:快速检测,避免频繁查询数据库
- 数据同步:产品出站时自动更新缓存数据
使用示例
典型入站流程
┌──────────────────┐ ┌──────────────────┐ ┌──────────────────┐
│DuplicateCodeDetection│──▶│ProductStateDetection│──▶│MissingProcessDetection│
│ 重码校验 │ │ 产品状态检测 │ │ 漏工序检测 │
└──────────────────┘ └──────────────────┘ └──────────────────┘
完整入站检测流程
┌──────────────────┐
│InboundInitialize │
│ 进站初始化 │