QualificationJudgmentActivity - 合格判断
概述
| 属性 | 值 |
|---|---|
| 节点名称 | 合格判断 |
| 节点描述 | 合格判断 |
| 节点类型 | 抽象基类 |
| 命名空间 | CMS.Plugin.MesSuite.Activitys |
| 程序集 | CMS.Plugin.MesSuite.Activitys |
| 分类 | 工序步骤 |
| 排序 | 26 |
| 发布 | 否 |
| 基类 | ProcessBusinessActivity |
功能说明
QualificationJudgmentActivity 是质量判定节点的抽象基类,提供了两种核心的合格判断方法:
- PLC 合格判断:从 PLC 采集的参数中读取合格信号,判断产品是否合格
- 本机合格判断:根据配方参数的上下限范围,对采集的参数值进行本地校验
该节点作为基类,被 PLCQualificationJudgmentActivity、LocalQualificationJudgmentActivity 和 CompositeQualificationJudgmentActivity 继承使用。
核 心方法
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)
参数说明:
| 参数 | 类型 | 说明 |
|---|---|---|
| exclusionValue | double? | 排除值,当参数值等于此值时跳过校验 |
| ignoreNull | bool | 是否忽略空值,为 true 时空值不判定为 NG |
判断逻辑:
- 获取当前配方版本的参数定义
- 遍历工艺参数,与配方参数进行匹配
- 检查采集值是否在配方参数的上下限范围内
- 超出范围或为空(且不忽略空值)则判定为不合格
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,表示通过)
流程数据项
输入数据项
| 数据项 | 类型 | 说明 |
|---|---|---|
| ApplicationData | ProcessModel | 工艺模型,包含工艺参数和不良原因定义 |
| OrderModel | OrderModel | 工单模型,包含配方信息 |
| FormulaApplyModel | FormulaApplyModel | 配方应用模型 |
| ParameterCollectData | IReadOnlyDictionary<string, IVariableValue> | 参数采集数据 |
| OutboundQualityVariable | string | 合格信号变量名 |
输出数据项
| 数据项 | 类型 | 说明 |
|---|---|---|
| OutboundResultValue | int | 出站结果值(1=合格,2=不合格) |
| QualityResultValue | int | 质量结果值 |
| QualityResultReason | string | 不合格原因 |
依赖服务
| 服务接口 | 说明 |
|---|---|
| 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);
}
相关节点
- LocalQualificationJudgmentActivity - 本机合格判断
- PLCQualificationJudgmentActivity - PLC 合格判断
- CompositeQualificationJudgmentActivity - 综合合格判断
- ProcessBusinessActivity - 工序业务活动基类
- ParameterCollectActivity - 参数采集节点
注意事项
- 此节点为抽象基类,不能直接在流程中使用
- PLC 判断依赖于参数采集节点先采集数据
- 本机判断需要配方参数定义上下限范围
- 不良原因匹配需要在工艺模型中预先配置不良原因列表