MaterialVerificationActivity - 物料校验(并行)
概述
MaterialVerificationActivity 是一个 MES 专用的物料并行校验节点,用于实时监听物料校验信号或条码变量的变化,并自动执行物料校验。与 MaterialDetectionActivity 不同,该节点支持多物料并行校验,通过订阅变量变化事件实现实时响应。
基本信息
| 属性 | 值 |
|---|---|
| 显示名称 | 物料检测 |
| 类名 | MaterialVerificationActivity |
| 命名空间 | CMS.Plugin.MesSuite.Activitys |
| 基类 | ProcessBusinessActivity |
| 分类 | 工序步骤 |
| 排序 | 10 |
| 发布 | 是 |
| 退出模式 | Manual(手动退出) |
配置说明
配置属性
| 属性名 | 显示名称 | 类型 | 默认值 | 说明 |
|---|---|---|---|---|
| SerialNumberVariableName | 产品码变量 | string | "Inbound_SerialNumberVariable" | 产品码变量名 |
| TriggerType | 校验触发类型 | MaterialDetectionTriggerType | VerificationSignal | 触发校验的方式 |
| VerificationSuccessWriteValue | 校验成功下发值 | int | 1 | 校验成功时写入的值 |
| VerificationFailWriteValue | 校验失败下发值 | int | 2 | 校验失败时写入的值 |
| IsRestVerificationResult | 复位校验结果 | bool | true | 触发信号复位时是否复位结果 |
| VerificationRestWriteValue | 复位结果下发值 | int | 0 | 复位时写入的值 |
| ReadRetryCount | 读取重试次数 | int | 10 | 读取变量失败时的重试次数 |
| ReadRetryDelay | 读取重试延时 | int | 500 | 读取重试间隔(毫秒) |
| WriteRetryCount | 写入重试次数 | int | 10 | 写入变量失败时的重试次数 |
| WriteRetryDelay | 写入重试延时 | int | 500 | 写入重试间隔(毫秒) |
| IsDeliverResults | 下发结果 | bool | true | 校验完成后是否下发结果 |
触发类型
| 枚举值 | 说明 |
|---|---|
| VerificationSignal | 监听校验信号变量变化触发 |
| BarcodeVariable | 监听条码变量变化触发 |
工艺配置
| 配置项 | 说明 |
|---|---|
| MaterialDetection | 物料检测功能开关 |
| MaterialDetections | 物料检测配置列表 |
| MaterielStateDetection | 物料状态检测触发时机 |
| MaterielMissingProcessDetection | 物料漏工序检测触发时机 |
物料检测配置(MaterialDetectionVariable)
| 字段 | 说明 |
|---|---|
| Name | 物料名称 |
| Key | 物料参数键 |
| VerificationSignal | 校验信号变量 |
| BarcodeVariable | 条码变量 |
| VerificationResultSignal | 校验结果信号变量 |
| BindMaterialVariable | 绑定物料变量 |
| ExceptionVariable | 异常描述变量 |
业务逻辑
执行流程
┌─────────────────────────────────────────────────────────────┐
│ MaterialVerificationActivity │
├─────────────────────────────────────────────────────────────┤
│ EnterAsync - 初始化阶段 │
│ ├─ 检查工位是否启用 │
│ ├─ 检查功能是否启用 │
│ ├─ 根据触发类型收集监听变量 │
│ ├─ 创建变量监听通道 │
│ └─ 注册变量变化事件处理 │
├─────────────────────────────────────────────────────────────┤
│ OnTagValueChanged - 变量变化处理 │
│ ├─ 判断变化的变量是否为监听目标 │
│ ├─ 触发信号 = 1 → 执行校验 │
│ ├─ 触发信号 = 0 → 执行复位(如果启用) │
│ └─ 并行处理多个物料的校验 │
├─────────────────────────────────────────────────────────────┤
│ VerificationAsync - 校验处理 │
│ ├─ 读取物料条码 │
│ ├─ 获取产品型号 │
│ ├─ 执行条码规则检测 │
│ ├─ 执行物料状态检测(如果启用) │
│ ├─ 执行物料漏工序检测(如果启用) │
│ └─ 下发校验结果 │
└─────────────────────────────────────────────────── ──────────┘
变量监听机制
┌─────────────────────────────────────────────────────────────┐
│ 变量监听流程 │
├─────────────────────────────────────────────────────────────┤
│ 1. 创建监听通道 │
│ └─ FlowVariableChannelListener │
├─────────────────────────────────────────────────────────────┤
│ 2. 订阅变量变化事件 │
│ └─ TagChanged 事件 │
├─────────────────────────────────────────────────────────────┤
│ 3. 变量变化时触发回调 │
│ ├─ 获取变化的变量名和新旧值 │
│ ├─ 匹配对应的物料配置 │
│ └─ 执行校验或复位 │
├─────────────────────────────────────────────────────────────┤
│ 4. 流程取消时取消订阅 │
│ └─ UnSubscribe() │
└─────────────────────────────── ──────────────────────────────┘
校验结果输出
每个物料校验完成后,会在流程上下文中设置以下变量:
| 变量名模式 | 类型 | 说明 |
|---|---|---|
| {物料名}_Verification_ErrorCode | int | 错误代码 |
| {物料名}_VerificationMaterialDetailId | Guid? | 物料明细 ID |
| {物料名}_MaterialCode | string | 物料条码 |
| {物料名}_VerificationResultSignal_Value | bool | 校验结果 |
| {物料名}_BindMaterialVariable_Value | string | 绑定的物料条码 |
| {物料名}_ExceptionVariable_Value | string | 异常描述 |
| {物料名}_MaterialVerification_Counter | int | 校验计数器 |
| {物料名}_MaterialVerification_Result | DataItemCollection | 校验结果集合 |
使用示例
基本配置
{
"Name": "物料并行校验",
"Type": "MaterialVerificationActivity",
"TriggerType": "VerificationSignal",
"VerificationSuccessWriteValue": 1,
"VerificationFailWriteValue": 2,
"IsRestVerificationResult": true,
"VerificationRestWriteValue": 0,
"IsDeliverResults": true
}
使用条码变量触发
{
"Name": "物料并行校验",
"Type": "MaterialVerificationActivity",
"TriggerType": "BarcodeVariable",
"ReadRetryCount": 5,
"ReadRetryDelay": 200
}
典型流程
┌──────────────────┐
│InboundInitialize │
│ 进站初始化 │
└────────┬─────────┘
│
▼
┌──────────────────┐
│MaterialVerificationActivity│ ← 持续监听物料校验
│ 物料并行校验 │
│ (手动退出模式) │
└────────┬─────────┘
│ 物料校验完成
▼
┌──────────────────┐
│ 后续工序处理 │
└──────────────────┘
与 MaterialDetectionActivity 的区别
| 特性 | MaterialDetectionActivity | MaterialVerificationActivity |
|---|---|---|
| 执行模式 | 串行,单次执行 | 并行,持续监听 |