跳至主要内容

计算 Tag:从公式到运行结果

本例把原始 0–10000 换算为 0–1 MPa。只有点表确实定义这一量程时才使用该比例,其他工程采用自己的换算。

操作教程

操作教程: 计算 Tag:从公式到运行结果

从一个本地数值 Tag 开始,使用界面选择输入、编写公式、发布并启用,再配置报警和趋势。计算结果为只读 number 或 boolean。

1. 准备一个明确的输入点

本例把原始 0–10000 换算为 0–1 MPa。只有点表确实定义这一量程时才使用该比例,其他工程采用自己的换算。

  1. 在 Tag 测试确认本地原始压力 Tag 的值、质量和量程;记录稳定 Device Code 与 Tag Code。
  2. 执行创建、发布或启停前,确认当前账号拥有对应计算 Tag 权限。
  3. 进入 Tag 管理 → 计算 Tag,点击“新增计算 Tag”。

完成标志 输入点与权限已确认,编辑窗口打开。计算公式只引用本地 IO 或已发布计算 Tag,不直接访问 PLC。

2. 选择 Tag 并填写公式

界面维护稳定 TagRef,通常无需手填 UUID 或另建别名。

  1. 计算 Tag 名称填写 PressureMPa。名称允许英文字母、数字、下划线和分隔点,不能有空格或短横线。
  2. 点击“选择 Tag”,先在左侧选择本地 PLC / 设备,再在右侧点击原始压力点。
  3. 选择器会在公式中插入“设备编码.Tag 编码”作为输入名,并将它绑定到稳定 TagRef;在该输入名后输入 / 10000。
  4. 数字结果显示填写 2 位小数;它只改变显示,不降低内部计算精度。
  5. 按点表核对换算比例;修改输入时重新从目录选择,确保公式名称与绑定对应。

完成标志 核对输入绑定与除数:原始值 2500 应得到 0.25 MPa。

3. 保存、发布并启用

保存草稿只保存编辑内容。发布生成确定版本;启用后才参与运行。

  1. 点击“保存草稿”只保存内容,不改变运行版本。
  2. 要让新定义参与运行,点击“保存、发布并启用”。若账号只有发布权限,按钮显示“保存并发布”,之后由有启用权限的账号启用。
  3. 等待结果,检查发布版本(generation)和启用状态。若显示已发布但未启用,按页面提示处理后点击“启用并开始计算”。
  4. 在“计算结果”点击“刷新结果”,核对值、质量和计算时间。

完成标志 输入 2500 应得到 0.25;其他值按相同比例核对,并检查质量和时间。

如果结果不一致

  • 保存失败:按字段提示检查名称、输入及语法。
  • 结果无效:先检查输入质量,再检查公式、发布和启用状态。
  • 版本冲突:刷新并核对其他修改,再决定新的编辑,不能直接覆盖。

4. 为计算结果添加报警

计算 Tag 列表的“报警”按钮配置结果的报警规则,不会再次读取 PLC。

  1. 在已发布 PressureMPa 行点击“报警”,再点击“新增规则”。
  2. 选择与结果类型匹配的条件,填写所需阈值,并选择 Settings 中已定义的报警分类编号。
  3. 按需要展开高级参数,设置恢复死区和触发延时,保持单位与 MPa 一致。
  4. 启用规则,点击“保存报警规则”,核对列表中出现对应条件。
  5. 观察报警状态;计算结果质量异常时,结合质量与规则状态判断,不仅看最后一次数值。

完成标志 分别确认规则已保存及报警是否触发。

5. 记录计算结果的历史趋势

计算 Tag 列表的“趋势”按钮管理历史记录,历史按已计算结果产生。

  1. 在同一行点击“趋势”,检查当前状态是否为未记录。
  2. 点击“记录历史趋势”,默认采用自动选择的推荐策略。
  3. 需要明确策略时展开高级趋势参数,选择趋势策略与变化死区,再保存趋势参数。
  4. 运行后确认“正在记录”,在历史趋势中选择计算结果和时间。
  5. 停止记录时使用“停止记录”;修改公式并发布新版本不会改写之前记录的历史数据。

完成标志 已有历史区间能查询到结果;此前未记录的时间不自动补齐。

6. 在 Python 与画面中读取

使用专用 ReadCalculatedTag 方法,名称与列表保存值完全一致;不要额外加 PLC 或 CALC 前缀。

  1. 进入脚本工作台 → 代码,选择项目并在 scripts/ 新建 read_calculated.py,粘贴下方代码并保存。
  2. 把代码中的名称改为列表中实际保存的计算 Tag 名称;本例为 PressureMPa。
  3. 选中该文件后点击“Run Test”;若文件仍有修改,按钮显示“Save & Test”,会先保存并应用当前文件再运行。查看控制台结果并与计算 Tag 列表比较。
  4. 在 Mingcedar Studio 运行表达式中使用 ReadCalculatedTag("PressureMPa");未发布、停用或无有效权限 / 质量时处理空值。
scripts/read_calculated.pyPython
value = ReadCalculatedTag("PressureMPa", None)
if value is None:
    raise RuntimeError("Calculated value is unavailable")
print(value)

完成标志 Python 输出与计算结果一致。普通 Tag 的 SDK 方法与 IO State V2 SignalRef 不自动变为计算 Tag 接口。

7. 修改公式并处理异常

公式采用 Mingcedar 表达式语法,不能在其中 import Python、执行 SQL 或写入 PLC。

  1. 编辑已有定义,选择输入和运算符修改公式;布尔条件可用 &&、||、!,条件返回可用 if(condition, yes, no)。
  2. 除法前确认分母可能为零时的业务行为;不要随意用 0 掩盖无效测量。
  3. 保存并重新发布,核对新发布版本、运行质量和计算时间。
  4. 类型变更与已有报警规则不兼容时,先处理规则;删除计算 Tag 前先处理其报警 / 趋势定义及依赖。

完成标志 确认新版本已运行,并检查输入质量、除零、引用及依赖错误。

权限参考:查看、编辑、发布与启停

按钮不可用时,先核对当前账号的权限和计算 Tag 状态。

  • calculated-tag:view:查看定义、运行值和诊断。
  • calculated-tag:manage:创建、修改和保存草稿。
  • calculated-tag:publish:发布计算版本。
  • calculated-tag:enable:启用或停用运行版本。

数值核对:压力换算

下列值说明本页 0–10000 到 0–1 MPa 的换算关系。显示精度不改变计算结果。

  • 原始值 0 → 0 MPa;2500 → 0.25 MPa;10000 → 1 MPa。
  • 输入质量不可用时,检查计算结果质量和求值时间,不能将旧值继续作为当前有效值。
  • 恢复后重新核对输入与求值时间,再确认显示结果。

表达式参考:组合状态与零分母

以下 PumpPLC 为示例设备编码。编辑时从 Tag 选择器插入本项目的输入名,再组合运算符;两行分别是两个独立公式。

  • 运行命令为 true 且故障为 false,第一式结果为 true;故障为 true 时结果为 false。
  • 合格数 95、总数 100,第二式结果为 95。总数为 0 时按本例约定返回 0,业务画面应明确区分“无样本”与“合格率为零”。
  • 这是计算表达式语法,不是 Python;不在公式中导入模块、访问数据库或执行写入。
TextText
PumpPLC.RunCommand && !PumpPLC.FaultActive

if(PumpPLC.TotalCount > 0, PumpPLC.GoodCount / PumpPLC.TotalCount * 100, 0)

再次点击图片或按 Esc 关闭