跳到主要内容
版本:Next

QualificationJudgmentActivity - 合格判断

概述

属性
节点名称合格判断
节点描述合格判断
节点类型抽象基类
命名空间CMS.Plugin.MesSuite.Activitys
程序集CMS.Plugin.MesSuite.Activitys
分类工序步骤
排序26
发布
基类ProcessBusinessActivity

功能说明

QualificationJudgmentActivity 是质量判定节点的抽象基类,提供了两种核心的合格判断方法:

  1. PLC 合格判断:从 PLC 采集的参数中读取合格信号,判断产品是否合格
  2. 本机合格判断:根据配方参数的上下限范围,对采集的参数值进行本地校验

该节点作为基类,被 PLCQualificationJudgmentActivityLocalQualificationJudgmentActivityCompositeQualificationJudgmentActivity 继承使用。

核心方法

PLCJudgmentAsync - PLC 合格判断

从流程数据中读取 PLC 采集的合格信号,进行质量判定。

protected virtual async Task<(int resultVariable, string unqualifiedReason)> PLCJudgmentAsync()

判断逻辑

  • FlowItemCollection.ParameterCollectData 获取采集数据
  • 读取合格信号变量(默认为 OutboundQualityVariable
  • 结果值:1 = 合格,2 = 不合格,0 = 未知
  • 如果不合格,尝试从工艺模型的不良原因列表中匹配具体原因

LocalJudgmentAsync - 本机合格判断

根据配方参数的上下限范围,对采集的参数值进行本地校验。

protected virtual async Task<(int resultVariable, string unqualifiedReason)> LocalJudgmentAsync(double? exclusionValue = null, bool ignoreNull = false)

参数说明

参数类型说明
exclusionValuedouble?排除值,当参数值等于此值时跳过校验
ignoreNullbool是否忽略空值,为 true 时空值不判定为 NG

判断逻辑

  1. 获取当前配方版本的参数定义
  2. 遍历工艺参数,与配方参数进行匹配
  3. 检查采集值是否在配方参数的上下限范围内
  4. 超出范围或为空(且不忽略空值)则判定为不合格

JudgmentAsync - 单参数判断

对单个参数进行合格判断。

protected virtual Task<(int? resultVariable, string unqualifiedReason)> JudgmentAsync(
FormulaVersion2ProcessParameterModel formulaParameter,
double? data,
bool ignoreNull = false,
string parameterIsNull = null,
string parameterOutOfRange = null)

判断规则

  • 参数值 < 下限 或 参数值 > 上限 → 不合格(resultVariable = 2)
  • 参数值为空且有上下限定义且不忽略空值 → 不合格(resultVariable = 2)
  • 其他情况 → 合格(resultVariable = null,表示通过)

流程数据项

输入数据项

数据项类型说明
ApplicationDataProcessModel工艺模型,包含工艺参数和不良原因定义
OrderModelOrderModel工单模型,包含配方信息
FormulaApplyModelFormulaApplyModel配方应用模型
ParameterCollectDataIReadOnlyDictionary<string, IVariableValue>参数采集数据
OutboundQualityVariablestring合格信号变量名

输出数据项

数据项类型说明
OutboundResultValueint出站结果值(1=合格,2=不合格)
QualityResultValueint质量结果值
QualityResultReasonstring不合格原因

依赖服务

服务接口说明
IBusinessTextProvider业务文本提供者,获取不良原因等文本
IFormulaProvider配方提供者,获取配方版本信息

业务文本

文本键默认值说明
UnknownReason未知原因无法确定不良原因时使用
ParameterIsNull参数为空参数值为空时的提示
ParameterOutOfRange参数超出范围参数超出上下限时的提示

扩展开发

继承此基类

[Design("自定义合格判断", "自定义合格判断步骤"), Category("工序步骤")]
[Serializable]
public class CustomQualificationJudgmentActivity : QualificationJudgmentActivity
{
public override async Task ProcessAsync(ProcessflowEventArgs args)
{
// 调用 PLC 判断
(var plcResult, var plcReason) = await PLCJudgmentAsync();

// 调用本机判断
(var localResult, var localReason) = await LocalJudgmentAsync();

// 自定义综合判断逻辑
var finalResult = plcResult == 1 && localResult == 1 ? 1 : 2;

Flow.DataItems[FlowItemCollection.QualityResultValue] = finalResult;
Flow.DataItems[FlowItemCollection.QualityResultReason] = finalResult != 1 ? $"{plcReason}|{localReason}" : string.Empty;
}
}

重写判断方法

protected override Task<(int? resultVariable, string unqualifiedReason)> JudgmentAsync(
FormulaVersion2ProcessParameterModel formulaParameter,
double? data,
bool ignoreNull = false,
string parameterIsNull = null,
string parameterOutOfRange = null)
{
// 自定义判断逻辑
// ...
return base.JudgmentAsync(formulaParameter, data, ignoreNull, parameterIsNull, parameterOutOfRange);
}

相关节点

注意事项

  1. 此节点为抽象基类,不能直接在流程中使用
  2. PLC 判断依赖于参数采集节点先采集数据
  3. 本机判断需要配方参数定义上下限范围
  4. 不良原因匹配需要在工艺模型中预先配置不良原因列表