跳至主要内容

获取与使用其他站点的数据

前置条件:B 的 Tag 已采集且有效,A 已加入 B。在 A 选用 B 的 IO、保存 PLC 范围,再引用 Tag;选用 IO 不复制设备、Tag 或数值。

操作教程

操作教程: 获取与使用其他站点的数据

在 A 选择 B 的 IO 与 PLC 范围,取得来源引用并用 Python 读取,再配置报警与趋势。

1. 准备来源与消费方

前置条件:B 的 Tag 已采集且有效,A 已加入 B。在 A 选用 B 的 IO、保存 PLC 范围,再引用 Tag;选用 IO 不复制设备、Tag 或数值。

2. 打开 B 的设备目录

  1. 在“站点 → 本站能力 → IO 采集”添加 B 的节点,确认已选用且可用。
  2. 点击该节点旁“浏览设备”,或在“站点与设备”中直接选择 B。
  3. 在“设备列表”按名称、编号或协议查找目标设备。搜索覆盖已加载设备;点击“加载更多设备”可继续读取。
  4. 核对来源站点与设备启用状态,再编辑 PLC 使用范围。

完成标志 目录由来源维护,不在 A 新建 PLC 连接。来源中断时保留已存范围,恢复后重新加载目录。

3. 预览并保存 PLC 使用范围

  1. 在目标设备的“使用范围”列勾选“使用”(为我所用),查看“已保存 PLC”和“当前选择”数量。
  2. 检查“当前选择中未在分页显示”的设备;它们仍在选择中,不会因为当前页没有显示而自动取消。
  3. 点击“预览 PLC 范围变更”,核对新增、移除和现有业务依赖。
  4. 勾选“我已核对新增、移除及依赖信息”,点击“确认并保存 PLC 使用范围”。
  5. 等待“PLC 使用范围已保存并生效”,确认无“范围未生效”或“目录版本待更新”提示。

完成标志 保存生效后,本站可在该范围内使用来源 Tag。设备勾选只是草稿,预览也不提交变更。

如果结果不一致

  • 移除会影响现有引用时,预览列出依赖并阻止保存;先修改对应业务引用,再重新预览。
  • 来源目录或配置版本变化时,刷新后重新预览;即使设备集合不变,也可能需要更新目录版本。
  • 切换到另一站点前会询问是否放弃未保存 PLC 选择;仅切换工作区视图会保留草稿。

4. 从“站点 Tag”取得来源引用

TagRef 是稳定的来源引用,格式为 hq://io/<io-domain-uuid>/<device-uuid>/<tag-uuid>。可在已同步的站点 Tag 中展开“来源引用”并复制;已有目标点完整引用时可直接进入下一步。

  1. 打开“Tag 管理 → 站点 Tag”,确认目标站点与目标数据库属于 A。查看目录需 admin:view,以及站点查看或管理权限、IO 或 Tag 查看权限;同步另需 io:manage。
  2. 在“来源站点”选择 B,在“来源设备”选择已纳入范围的 PLC;目录有下一页时点击“加载更多设备”。
  3. 点击“预览设备 Tag 同步”,查看本批新增、更新、相同或冲突的定义。此操作以设备目录分页,不是仅同步一个勾选 Tag。
  4. 核对本批目标与差异,勾选确认并“确认保存本批”;再“预览下一批”,逐批确认。
  5. 在“已同步 Tag”中按代码或名称搜索目标点,展开其“来源引用”,选中并复制完整 hq://io/... 文本。

完成标志 同步只保存本站 Tag 定义与来源绑定,不新增采集设备、复制值/规则/历史或开放写入。引用从目录复制,不用站点名称或 IP 拼接。

如果结果不一致

  • 本批有冲突时不能保存,核对列出的来源与本站差异后重新预览;此前已确认的批次不受影响。
  • 保存结果待核实时,点击“核实本批保存结果”,确认该批是否已保存后再继续下一批。

5. 用远端点位事件运行只读 Python

内置 hqcontrol 读取已采集状态,无需另装包。“Run Test”仅支持本地 Tag;读取远端 TagRef 需使用点位变化事件,将目标纳入动作范围。

  1. 在 A 按 Python 教程准备项目与权限。在“配置中心 → script → 代码”创建 scripts/read_value.py 并粘贴示例。
  2. 将 tags.read(...) 引号内的完整来源引用替换为上一步复制的 URI,保存源文件。再到 Settings → Python → Python 模块 → 高级项目配置 → 项目运行配置中设置此脚本入口与运行限制,查看应用状态。脚本读取的 Tag 必须与下方事件选择的 Tag 相同。
  3. 进入“运行”,点击“新增事件”,来源类型选择“点位变化”。在“选择触发点位”中依次选择 B、目标设备和同一个 Tag;设置业务需要的触发条件与最小间隔。
  4. 添加“脚本动作”,在“选择脚本”中选中该入口,确认“动作启用”并保存动作绑定。启用事件并点击“保存事件”,查看保存与应用结果。
  5. 等待有效变化满足触发条件,在“记录”对照脚本 Value、Quality 与 B 的状态。恢复连接后的首个有效值可能仅建立基线。
  6. 不再需要持续读取时,停用并保存该事件。
scripts/read_value.py · 完整只读入口Python
# scripts/read_value.py
from hqcontrol import tags

def main(ctx):
    response = tags.read("hq://io/<io-domain-id>/<device-uid>/<tag-uid>")
    if not response or response.get("ok") is not True:
        raise RuntimeError("Tag read failed")
    snapshot = response["value"]
    if not tags.is_good_quality(snapshot):
        raise RuntimeError("Tag quality is not good")
    print("Value:", snapshot.get("value"), "Quality:", snapshot.get("quality"))
    return {"value": snapshot.get("value")}

if __name__ == "__main__":
    main({})

完成标志 触发后,脚本在 A 读取事件范围内的远端值。未触发则查事件启用、条件与来源变化;执行失败则查质量和权限。示例不写 PLC 或归档趋势。

6. 核对质量与采集需求

默认复用来源已采集值(reuse-only),不另建 PLC 连接。按需采集点须在来源具备有效采集需求,并满足范围与订阅要求。

左右滑动查看完整表格

结果检查位置
当前值且质量 good对照来源 Tag 的值与时间,再接入业务。
暂无值 / 未采集来源设备和 Tag 的启用状态、采集模式与实际采集需求。
质量无效 / 来源不可用来源设备、IO 服务和站间连接;恢复后等待有效新值。
范围或权限拒绝PLC 使用范围、调用账号和所需能力授权。
引用不存在来源是否删除或重建点位,重新从目录核对稳定引用。

完成标志 读到一个远端值不代表已经在 A 建立报警判断或趋势记录;这些消费功能各自配置。

7. 打开 B 的报警、趋势或画面

  1. 在 A 的“站点 → 本站能力”中,分别为所需能力添加 B 的节点,检查来源已选用且可用。
  2. 点击节点旁的“查看报警”“查看趋势”或“打开画面”。页面仍通过当前门户访问,并切换到所选来源的运行内容;B 的画面使用 B 的 Tag 绑定。
  3. 在历史趋势中选择点位与起止时间,查询 B 在该时段仍保留的记录。普通 LAN 的远端报警只读;确认、搁置或解除搁置时直接登录 B,并使用具备权限的账号。
  4. 若提示该来源没有可访问的对应菜单,在 B 核对运行菜单与用户访问权限;若来源不可用,先恢复来源服务或连接。

完成标志 报警与趋势各自有入口,不依赖同时选用画面。结果仍属于 B,来源不会在失败时自动替换为 A 的同名菜单或数据。

8. 在 A 使用远端输入

左右滑动查看完整表格

用途当前操作入口保存后的含义
只读 Python配置中心 → script → 代码;用完整来源引用调用 tags.read,再按上文绑定同一远端点位的事件。脚本在 A 执行,读取 B 的已采集状态。
点位变化触发脚本配置中心 → script → 运行 → 新增事件,选“点位变化”,在“选择触发点位”中选择 B、设备与一个 Tag。配置并启用事件及动作后,连续、当前且有效的值变化才参与触发。
A 自己的报警与趋势Tag 管理 → 站点 Tag → 已同步 Tag → “报警/趋势配置”;同时在本站能力配置对应服务处理的设备。A 独立维护规则和留存;不会复制 B 已有的报警规则、趋势策略或历史。
自写页面按页面 SDK 教程声明读取范围与运行上下文。页面使用其已授权的接口;参数采用各接口要求的 FullCode 或引用格式。
外部程序按 IO State API 配置凭据、Profile 与读取范围。外部接口范围单独授权,站点加入不自动扩大 API Key 权限。

完成标志 分别保存设备范围、Tag 定义、报警、趋势和事件,再核对服务、输入质量与结果。同步 Tag 定义不会自动创建运行画面的点位绑定。

再次点击图片或按 Esc 关闭