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 │
│ 进站初始化 │
└────────┬─────────┘
│
▼
┌──────────────────┐
│DuplicateCodeDetection│
│ 重码校验 │
└────────┬─────────┘
│
▼
┌──────────────────┐
│ProductStateDetection│ ← 当前节点
│ 产品状态检测 │
└────────┬─────────┘
│
▼
┌──────────────────┐
│MissingProcessDetection│
│ 漏工序检测 │
└──────────────────┘
错误处理
| 错误场景 | 入站结果 | 说明 |
|---|---|---|
| 产品状态检测失败 | ProductNG | 产品状态不允许进站 |
| 跨产线检测失败 | ProductNG | 跨产线状态不允许进站 |
| 跨产线检测异常 | ProductNG | 检测过程发生异常 |
异常原因
当检测失败时,系统会:
- 设置入站结果为
ProductNG - 从
IAbnormalCauseProvider获取异常原因模板 - 合并产品状态检测和跨产线检测的错误信息
依赖服务
| 服务接口 | 说明 |
|---|---|
| IProductTraceChecker | 产品追溯检查服务,执行实际的状态检测 |
| IEntryResultProvider | 入站结果配置服务 |
| IAbnormalCauseProvider | 异常原因配置服务 |
注意事项
- 功能启用:需要在工艺配置中启用产品状态检测功能
- 过程设置配置:必须在"过程设置"模块中为产品型号、配方、工序组合配置检测规则
- 在"产品状态检测设置"中配置需要检测的工序列表
- 在"产品状态检测设置(跨产线段)"中配置跨线段检测规则
- 返修处理:返修标记会传递给检查器,由检查器决定是否放行
- 点检模式:点检模式使用独立的配置项
- 跨产线检测:跨产线检测独立于正常检测,可单独启用
- 检查器顺序:多个
IProductTraceChecker按注册顺序执行 - 异常处理:跨产线检测异常会被捕获并记录,不会中断流程
- 物料参数:检测时会自动采集物料参数供检查器使用
- 配置维护:当工艺流程变更时,需要同步更新过程设置中的检测配置
相关节点
- InboundDetectionActivity - 进站检测基类
- InboundInitializeActivity - 入站初始化节点
- DuplicateCodeDetectionActivity - 重码校验节点
- MissingProcessDetectionActivity - 漏工序检测节点
- ProductAutomaticRepairActivity - 产品自动修复节点
最后更新时间: 2025-11-28