使用 OPC-UA 节点查看器 (/ui/opcua)
网关自身内置了 OPC-UA 服务器,可将采集到的标签值原样暴露给外部 OPC-UA 客户端(SCADA、HMI)。本页面即该内置服务器的查看器,可在同一画面中查看 连接信息 与 节点树(标签列表 + 实时值 + 时序)。
- 实现: Eclipse Milo 0.6.16 (Apache 2.0)
- OPC UA 规范: 1.04 (IEC 62541:2020)
- Transport: opc.tcp:// (default port 12000) / opc.tcp+TLS (12443)
- Security policies: None / Basic128Rsa15 / Basic256 / Basic256Sha256 / Aes128_Sha256_RsaOaep / Aes256_Sha256_RsaPss
- User token: Anonymous (
opc.ua.server.anonymous=yesdefault) / UserName+Password / X.509 - Encoding: UA Binary
- Profile: Standard 2017 Server
- PubSub MQTT (1.05): 不支持 — 需要发布时请使用 Sparkplug B
点击左侧菜单 OPC-UA 查看器,或直接访问 http://<gateway>/ui/opcua。
1. 画面构成
| 区域 | 内容 |
|---|---|
| 顶部 端点面板 | 外部客户端接入所用的 TCP / TLS Endpoint URL、Application Name、Namespace Index、认证信息(Username / 是否允许 Anonymous / Password 切换) |
| 左侧 节点树 | 사이트 → OPC → 태그 三级树。以内联方式显示各 OPC 的 连接状态(CONNECTED/DISCONNECTED/UNKNOWN)、标签数量以及各标签的 最新值 |
| 右侧 节点详情 | 树中所选节点的元数据 + 实时值 +(若为数值/布尔标签)时序图表 |
点击顶部 端点 URL 旁的 复制 图标可一次性复制;点击 Password 栏(在已认证会话下)可显示明文。
2. NodeId 约定
各标签以如下 OPC-UA NodeId 暴露。
ns=2;s=<SITE_ID>.<OPC_ID>.<TAG_ID>
例:ns=2;s=SITE_00001.OPC_00303.TAG_TEST_00042
外部客户端(UaExpert、KEPServerEX、Ignition 等)可直接使用该 NodeId 订阅。详情面板中 NodeId 右侧带有 复制 按钮,便于复制到剪贴板。
3. 节点树 — 搜索 / 刷新
- 在树顶部搜索框输入文本,可按树、OPC、标签名称进行 实时部分匹配 过滤。若匹配项位于子孙节点,父节点(OPC、站点)也会自动展开显示。
- 搜索框右侧的刷新(↻)图标 — 重新获取缓存的树/端点信息。平时会自动刷新,几乎无需点击。
- 通过各行的 ◂/▾ 开关可折叠/展开子树。搜索处于激活状态时会自动展开以显示匹配项,清空搜索后会恢复到此前的折叠状态。
- 长值自动省略 (ellipsis) — 树节点的 当前值 超出列宽时会以
text-overflow: ellipsis进行…处理。鼠标悬停时通过 tooltip 显示完整明文 — 这是防止 JSON / 长 STRING 值破坏树布局的保护措施。
树中显示的值以 2 秒周期 自动刷新(/ui/opcua/tree)。树结构、展开状态、右侧详情及图表均保持不变。
4. 节点详情 + 时序图表
点击标签行后,右侧会显示以下内容。
- NodeId(可复制)
- Tag ID / DataType / PLC Address / Alias / Description
- Value(当前值 + 最后刷新时刻,精确到 ms)
- Status(
OK/ERROR (메시지))
图表类型会根据值类型自动切换。
4.1 数值 / 布尔(ECharts 折线图)
若值为 数值型(Integer/Long/Float/Double 等) 或 布尔型,则绘制 ECharts 时序折线图。
| 图表功能 | 说明 |
|---|---|
| 范围选择 | 通过图表右上角下拉框选择 1분/5분/10분/30분/1시간(default)/3시간/12시간/24시간 — 立即从 Cassandra(tm_tag_point)取回历史数据并重绘 |
| dataZoom 滑块 | 图表下方灰色调(浅灰)拖动条 — 横向 zoom / pan |
| 自动追加 | 2 秒周期轮询会将新值追加到图表 |
| Tooltip | 鼠标悬停时显示 ms 级时刻 + 值 |
| 布尔 | 以 step end 形式(阶梯型)可视化 0/1 切换 |
| 采样 | 最多保留 5,000 点,超出后从最旧的点开始移除(lttb 降采样) |
4.2 STRING(vis-timeline 箱型图)
若值为 STRING,则不绘制 ECharts 折线图,而绘制 vis-timeline 的 range box 图表 — 将相同值连续的区间合并为一个箱体,从而在视觉上强调 状态变化时点。
| 项目 | 说明 |
|---|---|
| 箱体 = 相同值的连续区间 | 例:"RUNNING" 在 12:00~12:35 期间保持不变,则该区间为一个箱体 |
| 箱体颜色 | 基于值哈希自动生成 — 相同文本始终为同一颜色 |
| 箱体标签 | 值的明文(过长时悬停显示全文) |
| 时间轴 zoom/pan | vis 默认交互(mouse wheel / drag) |
| 刷新 | 轮询时将 history 按 ASC 排序并整体重建数据集(几乎无变动时不会闪烁) |
| 切换节点时 | 通过 disposeStringTimeline() 销毁实例并重新生成新节点的图表 |
STRING 图表适合一览 状态机 日志(
READY → RUNNING → ERROR → IDLE)等非数值时序数据。同样的风格也适用于 查看标签值趋势 (tag-view)。
5. EDGE 系统标签
以 EDGE_<...> 开头的一个虚拟 OPC 会自动显示在树中。这是将网关自身状态以 OPC-UA 节点形式暴露的系统标签集合。
代表性标签:
| 标签名称(Description) | 含义 |
|---|---|
THREAD_COUNT | Java 线程数 |
TAG_COUNT | 已注册标签总数 |
SERVER_STARTED_TIMESTAMP | 服务器启动时刻(epoch ms) |
OPC_CONNECTED_COUNT | 连接正常的 OPC 数量 |
HEAP_USED_MB | JVM 堆使用量(MB) |
EDGE 系统 OPC 的 连接状态 始终显示为 CONNECTED(因为是自身,不存在连接概念)。
6. 与外部客户端配合使用 — 流程
- 在本画面复制 TCP Endpoint(例:
opc.tcp://<gateway>:12000)。 - 在 UaExpert / KEPServerEX 等 OPC-UA 客户端中添加新服务器 → 输入上述 URL。
- 认证模式:
- 若已启用 Anonymous(顶部面板显示 允许 Anonymous),可直接接入。
- 否则使用 Username / Password(Password 可在顶部面板点击后临时以明文查看)。
- 接入后即可直接订阅 NodeId 为
ns=2;s=...格式的标签。
7. 故障排查
| 现象 | 巡检要点 |
|---|---|
| 树中看不到 OPC | 确认 자주 하는 작업 → 새 PLC 연결 추가 是否已完成,以及网关是否已开启该 OPC 的 自动开始采集 选项 |
标签旁的值显示为 - | 该标签从未刷新过。请检查采集是否启动、OPC 连接、Quality |
| 树中可见但外部客户端找不到 NodeId | 存在拼写错误或 OPC-UA 服务器未启用。请确认 app.properties 的 opc.ua.server.tcp.enable=true |
| 图表为空 | 该标签在 Cassandra 中尚无 history(刚注册的标签)— 稍等片刻即会追加数据点 |
| 图表显示参差不齐 | 将范围扩大到 24 小时 后会启用自动降采样,曲线更平滑 |
라이센스/CN 인증서 警告(TLS 端点) | 网关的自签名证书 — 请在客户端进行 "Trust" 处理。如需应用企业证书请咨询运维人员 |
8. 了解更多
- Node-RED(
/ui/flow)— 通过流程对同一标签值进行加工/外发。参见자주 하는 작업 → Node-RED 로 자동화 / IIoT 플로우。 - REST API — 可通过 HTTP 直接获取相同数据。参见
고급 / 통합 파트너용 → REST API。 - 驱动技术参考 → OPC-UA — 说明网关的 OPC-UA 客户端 侧(接入外部 OPC-UA 服务器获取数据的路径)。