跳到主要内容
版本:Next

MaterialDeductionActivity - 物料扣减

概述

MaterialDeductionActivity 是一个 MES 专用的物料扣减节点,用于在生产过程中自动扣减物料库存。该节点通过监听扣减信号或条码变量的变化,实时执行物料扣减操作,支持多物料并行扣减。

基本信息

属性
显示名称物料扣减
类名MaterialDeductionActivity
命名空间CMS.Plugin.MesSuite.Activitys
基类ProcessBusinessActivity
分类工序步骤
排序10
发布
退出模式Manual(手动退出)

配置说明

配置属性

属性名显示名称类型默认值说明
SerialNumberVariableName产品码变量string"Inbound_SerialNumberVariable"产品码变量名
TriggerType扣减触发类型MaterialDeductionTriggerTypeDeductionSignal触发扣减的方式
DeductionSuccessWriteValue扣减成功下发值int1扣减成功时写入的值
DeductionFailWriteValue扣减失败下发值int2扣减失败时写入的值
IsRestVerificationResult复位扣减结果booltrue触发信号复位时是否复位结果
DeductionRestWriteValue复位结果下发值int0复位时写入的值
ReadRetryCount读取重试次数int10读取变量失败时的重试次数
ReadRetryDelay读取重试延时int500读取重试间隔(毫秒)
WriteRetryCount写入重试次数int10写入变量失败时的重试次数
WriteRetryDelay写入重试延时int500写入重试间隔(毫秒)
IsDeliverResults下发结果booltrue扣减完成后是否下发结果

触发类型

枚举值说明
DeductionSignal监听扣减信号变量变化触发
BarcodeVariable监听条码变量变化触发

工艺配置

配置项说明
MaterialDeduction物料扣减功能开关
MaterialDeductions物料扣减配置列表

物料扣减配置(MaterialDeductionVariable)

字段说明
Name物料名称
DeductionTriggerSignal扣减触发信号变量
BarcodeVariable条码变量
DosageMode用量提供方式
DosageQtyVariable使用量变量
DeductionResultSignal扣减结果信号变量
ExceptionVariable异常描述变量

业务逻辑

执行流程

┌─────────────────────────────────────────────────────────────┐
│ MaterialDeductionActivity │
├─────────────────────────────────────────────────────────────┤
│ EnterAsync - 初始化阶段 │
│ ├─ 检查工位是否启用 │
│ ├─ 检查功能是否启用 │
│ ├─ 根据触发类型收集监听变量 │
│ ├─ 创建变量监听通道 │
│ └─ 注册变量变化事件处理 │
├─────────────────────────────────────────────────────────────┤
│ OnTagValueChanged - 变量变化处理 │
│ ├─ 判断变化的变量是否为监听目标 │
│ ├─ 触发信号 = 1 → 执行扣减 │
│ ├─ 触发信号 = 0 → 执行复位(如果启用) │
│ └─ 并行处理多个物料的扣减 │
├─────────────────────────────────────────────────────────────┤
│ DeductionAsync - 扣减处理 │
│ ├─ 读取产品码、物料条码、使用量 │
│ ├─ 获取产品型号和工单 │
│ ├─ 调用物料服务执行扣减 │
│ └─ 下发扣减结果 │
└─────────────────────────────────────────────────────────────┘

用量提供方式

模式说明
Device从设备变量读取使用量
其他使用系统配置的默认用量

扣减结果输出

每个物料扣减完成后,会在流程上下文中设置以下变量:

变量名模式类型说明
{物料名}_MaterialDetailIdstring物料明细 ID
{物料名}_MaterialCodestring物料条码
{物料名}_DeductionResultSignal_Valuebool扣减结果
{物料名}_DosageQtydouble?扣减量
{物料名}_ExceptionVariable_Valuestring异常描述
{物料名}_MaterialDeduction_Counterint扣减计数器
{物料名}_MaterialDeduction_ResultDataItemCollection扣减结果集合

使用示例

基本配置

{
"Name": "物料扣减",
"Type": "MaterialDeductionActivity",
"TriggerType": "DeductionSignal",
"DeductionSuccessWriteValue": 1,
"DeductionFailWriteValue": 2,
"IsRestVerificationResult": true,
"DeductionRestWriteValue": 0,
"IsDeliverResults": true
}

使用条码变量触发

{
"Name": "物料扣减",
"Type": "MaterialDeductionActivity",
"TriggerType": "BarcodeVariable",
"ReadRetryCount": 5,
"ReadRetryDelay": 200
}

典型流程

┌──────────────────┐
│MaterialVerificationActivity│
│ 物料校验 │
└────────┬─────────┘
│ 校验通过

┌──────────────────┐
│MaterialDeductionActivity│ ← 持续监听扣减信号
│ 物料扣减 │
│ (手动退出模式) │
└────────┬─────────┘
│ 扣减完成

┌──────────────────┐
│ 后续工序处理 │
└──────────────────┘

错误处理

错误场景处理方式
工位未启用记录警告,不执行扣减
功能未启用记录警告,不执行扣减
物料码为空设置错误信息"物料码获取失败"
未找到产品型号设置错误信息"未找到产品型号"
扣减失败记录错误信息,下发失败结果

依赖服务

服务接口说明
IVariableDataCache变量数据缓存服务
IFlowVariableService流程变量服务
IMaterialProvider物料服务,执行扣减操作
IOrderProvider工单服务
IProductProvider产品服务
ILmesMetrics指标服务

注意事项

  1. 功能启用:需要在工艺配置中启用物料扣减功能
  2. 工位启用:工位必须处于启用状态
  3. 手动退出:该节点为手动退出模式,需要外部控制流程退出
  4. 并行处理:多个物料的扣减是并行执行的
  5. 取消机制:新的扣减请求会取消同一物料的上一次扣减
  6. 库存更新:扣减成功后会更新物料库存
  7. 追溯记录:扣减操作会记录到追溯数据中

相关节点


最后更新时间: 2025-11-28