跳到主要内容

OPC UA 服务器

🎬 Browse the OPC UA node tree · 27초 · 2026.09 기준 화면

网关本身内置了 OPC-UA 服务器,可将采集到的标签值原样暴露给外部 OPC-UA 客户端(SCADA, HMI)。本页面涵盖了该内置服务器的 连接信息 · 安全设置、节点树(标签列表 + 实时值 + 时序)、连接状态 · 客户端证书 · 客户端连接证书 · 账户,所有内容均在同一个画面(共六个标签页)中管理。

OPC UA 服务器 › 服务器信息标签页 — 标签页, 状态, 端点, 安全, 服务器证书

编号位置内容
①标签页栏六个标签页
②状态卡片服务器状态 · 会话 · 订阅 · 暴露节点数
③端点TCP / TLS 连接 URL 及提供的安全策略
④安全匿名访问 · 无安全端点 · 客户端证书 · 账户
⑤服务器证书主体 · 指纹 · 有效期, [下载 (.der)]

OPC UA 服务器 › 节点标签页 — 在左侧树中选择标签,右侧显示详情

编号位置内容
①节点树엣지 → OPC → 태그, 连接状态点和最新值
②面板头部CSV 图标 — 下载地址空间
③节点详情所选节点的详细信息和时序
内置 OPC-UA 服务器规格
  • 实现: Eclipse Milo 1.1.8
  • 传输: 仅 opc.tcp (UA Binary)。端点路径为 /opcua — opc.tcp://<호스트>:12000/opcua (TCP 端口) · opc.tcp://<호스트>:12443/opcua («TLS» 端口)。12443 同样不是 HTTPS,而是 带有安全策略的 opc.tcp
  • 安全策略: Basic256Sha256 / Aes128_Sha256_RsaOaep / Aes256_Sha256_RsaPss — 分别对应 Sign · SignAndEncrypt,两个端口均支持
  • None (无安全): 当 opc.ua.server.security.none=yes(默认) 时,仅在 TCP 端口 打开会话端点。根据规范,Discovery(/opcua/discovery) 始终为 None,但无法开启会话
  • 用户令牌: Anonymous (opc.ua.server.anonymous=yes, 默认) / UserName+Password / X.509 (仅限服务器信任列表中的证书)
  • 服务器证书: 首次启动时通过自签名(RSA 2048) 创建并存放在 $PE_DATA_DIR/pp-data/opcua/ — 升级后仍保留同一证书及信任列表
  • PubSub: 不支持 — 如需发布功能,请使用 Sparkplug B

点击左侧菜单 OPC UA 服务器 图标或直接通过 http://<gateway>/ui/opcua 进入。


1. 画面构成​

画面头部由六个标签页组成。如果在 URL 末尾加上 #server · #nodes · #sessions · #certs · #client-certs · #accounts,可直接打开对应标签页;否则将打开该浏览器最后访问的标签页。

标签页内容
服务器信息服务器状态 · 运行时间,当前会话 · 订阅 · 暴露节点数。外部客户端连接所需的 TCP / TLS 端点 URL(复制按钮) 及各端点实际提供的安全策略标识。匿名访问 · 无安全端点的开关, 客户端证书 · 账户数量, 服务器证书(主体 · SHA-1 指纹 · 有效期 · 密钥)
节点左侧 节点树(엣지 → OPC → 태그, 每个 OPC 的 连接状态点(悬停显示状态名称) 和标签数量, 每个标签的 最新值) 与右侧 节点详情(元数据 + 实时值 + 若为数值/布尔标签则显示 时序图表)。通过面板头部的 CSV 图标下载地址空间
连接状态当前会话 · 订阅 · 监控项数量, 被拒绝的连接数, 会话列表
客户端证书尝试建立安全通道的客户端证书的 已拒绝 · 已信任 列表, [信任] [移至拒绝列表] [删除], 服务器证书 [下载 (.der)]
客户端连接证书Edge 作为客户端 连接到外部 OPC UA 服务器时使用的证书。参考 OPC UA 协议
账户默认管理员 + 附加账户(只读 / 读写) 管理

端点 URL 的主机为 opc.ua.server.domain。若该值为回环地址(127.0.0.1 · localhost · 0.0.0.0, 安装默认值),则系统会根据浏览器访问的主机自动生成 URL — 以防止远程复制的 URL 指向用户本地 PC。


2. NodeId 约定​

每个标签通过以下 OPC-UA NodeId 形式暴露。地址空间的根为 Edge ID (Objects 之下),其下为 OPC(连接) 文件夹,再下为标签。

ns=2;s=<EDGE_ID>.<OPC_ID>.<TAG_ID>

例: ns=2;s=EDGE_00303.OPC_00303.TAG_TEST_00042

  • 若标签包含 标签组,则挂在 OPC 文件夹下的 GROUP.<그룹> 文件夹中,但标签的 NodeId 保持上述格式不变。
  • 每个 OPC 文件夹下都有 _Status 文件夹,并每 2 秒提供一次 Connected · State · LastError · LastCollectedAt · CycleMs (只读)。
  • 若 edge.id 为空或不符合 EDGE_ + 大写字母 · 数字 · _ 格式,则不会生成名称且无法启动 OPC-UA 服务器(记录 ERROR 日志)。
2026.11 起 NodeId 已变更

旧版本的 NodeId 为 EDGE.<SITE_ID>.<OPC_ID>.<TAG_ID>。现在根节点为 Edge ID 且取消了站点层级。由于没有兼容别名,升级后需重新配置 SCADA 侧的 NodeId。

外部客户端(UaExpert, KEPServerEX, Ignition 等) 可直接使用此 NodeId 进行订阅。详情面板的 NodeId 右侧设有 复制 按钮,方便将 ID 复制到剪贴板。


3. 节点树 — 搜索 / 刷新​

  • 在树顶部的搜索栏输入文本,可对树 · OPC · 标签名称进行 实时部分匹配 过滤。若匹配项在子节点中,则父节点(OPC, Edge) 也会自动展开显示。
  • 画面头部的刷新(↻) 按钮 — 重新获取树及各标签页的信息。由于平时会自动更新,极少需要手动点击。
  • 每行的 ◂/▾ 切换按钮可折叠/展开子树。搜索激活时为展示匹配项会自动展开,清空搜索后将恢复至之前的折叠状态。
  • 长值自动省略 (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,则绘制 vis-timeline 的 range box 图表 代替 ECharts 折线图 — 该形式将相同值连续的区间合并为一个方块,在视觉上强调 状态变化时点。

项目说明
方块 = 相同值连续区间例: "RUNNING" 在 12:00~12:35 期间保持不变,则该区间为一个方块
方块颜色基于值哈希自动生成 — 相同文本始终为相同颜色
方块标签值原文 (较长时悬停显示全部)
时间轴 zoom/panvis 基础交互 (鼠标滚轮 / 拖拽)
更新轮询时将 history 按 ASC 排序并重构整个数据集 (波动较小时无闪烁)
切换节点时通过 disposeStringTimeline() 销毁实例 + 重新创建新节点的图表

STRING 图表适用于直观查看如 状态机 日志(READY → RUNNING → ERROR → IDLE) 等非数值时序数据。相同色调方案同样适用于 查看标签值趋势 (tag-view)。


5. Edge 系统标签​

树中会自动显示一个名为 OPC_SYSTEM_<EDGE_ID> 的系统连接。这里汇总了 38 个将网关自身状态暴露为 OPC-UA 节点的系统标签,标签 ID 为 TAG_<EDGE_ID>_90000 ~ TAG_<EDGE_ID>_90037。

代表性标签:

标签名称含义
THREAD_COUNTJVM 线程数
TAG_COUNT注册标签总数
SERVER_STARTED_TIMESTAMPEdge 启动时间(epoch ms)
PLC_CON_CONNECTED_COUNT当前连接的连接(OPC)数
MEMORY_USED_PERCENT内存使用率(%)

系统连接的 连接状态 始终显示为 CONNECTED (因是自身,无连接概念),且不存在 _Status 文件夹。


6. 配合外部客户端使用 — 流程​

  1. 在 服务器信息 标签页复制端点 URL (例: opc.tcp://<gateway>:12000/opcua)。若去掉路径 /opcua 则无法连接 — 服务器将以 BadTcpEndpointUrlInvalid 拒绝 HELLO 请求。
  2. 在 UaExpert / KEPServerEX 等 OPC-UA 客户端中添加新服务器 → 输入上述 URL → 选择安全策略。
    • 若开启了 无安全端点,可以通过 TCP 端口以 None 方式连接。
    • 使用安全策略(如 Basic256Sha256) 连接时,服务器最初会拒绝客户端证书。在 客户端证书 标签页的 已拒绝 列表中将指纹与 SCADA 侧证书核对后点击 [信任] — 无需重启,下次连接起生效。若客户端也需信任服务器证书,可通过 [下载 (.der)] 获取并导入。
  3. 认证模式:
    • Anonymous — 若服务器信息标签页中开启了 匿名访问,则直接连接。匿名会话 仅限读取。
    • Username / Password — 默认管理员(opc.ua.server.user / opc.ua.server.password) 或 账户 标签页中的附加账户。
    • X.509 — 仅接受存在于服务器信任列表中的证书。
  4. 连接后,直接订阅 NodeId 为 ns=2;s=... 格式的标签。

7. 账户 · 写入​

  • 默认管理员(opc.ua.server.user / password) 具有 读写 权限,且无法在画面中删除。密码可在设置画面中更改。
  • 在 账户 标签页创建附加账户 — 用户名须以英文或数字开头,仅限英文、数字及 ._-,最长 64 字符(不可使用默认管理员用户名);密码 8~128 字符。权限分为 只读 / 读写。权限变更立即应用于已开启会话;删除 · 禁用 · 更改密码则会断开该账户的会话。
  • 非匿名会话(默认管理员 · 读写账户 · 受信任 X.509 证书) 向标签节点 写入 时,该值将被传递至相应 PLC(流程与驱动写入一致,记录于 tm_tag_write 的账户 · 安全策略 · 连接 IP)。仅在 PLC 写入成功时,节点值才会更新。
  • 写入被拒绝的情况:
结果原因
Bad_NotWritable只读标签(client_access=R) — 对所有人
Bad_UserAccessDenied匿名会话, 只读账户, 或在 HA 对中此 Edge 缺乏 PLC 写入权限
Bad_InternalErrorPLC 写入失败, 或处于启动阶段写入路径尚未就绪
匿名 · 无安全为出厂默认值

opc.ua.server.anonymous 和 opc.ua.server.security.none 的默认值均为 yes。在此状态下,网络中的任何客户端均可在无需证书或密码的情况下 读取所有标签 (匿名会话的写入仍被禁止)。在生产网络中,请在设置画面的 OPC UA 服务器 标签页中关闭 允许匿名访问 及 无安全端点。


8. 故障排查​

现象排查点
树中看不到 OPC자주 하는 작업 → 새 PLC 연결 추가 是否已完成, 网关中该 OPC 的 采集自动启动 选项是否开启
标签旁的值显示为 -该标签从未更新过。检查采集启动 / OPC 连接 / Quality
客户端连接失败,提示 BadTcpEndpointUrlInvalid端点 URL 末尾缺少 /opcua
树中可见但外部客户端找不到 NodeId输入错误, 或使用了 2026.11 之前的 EDGE.<SITE_ID>... 格式 NodeId (§2)
服务器信息标签页显示 «停止»edge.id 为空或格式错误, 或无法获得 PE_DATA_DIR — 这两种情况均不会启动服务器并记录 ERROR 日志
使用安全策略连接被拒绝客户端证书尚未信任 — 在 客户端证书 标签页点击 [信任]
无法通过 None 连接无安全端点 已关闭, 或尝试通过 12443 端口连接(None 会话仅限 TCP 端口)
写入返回 Bad_NotWritable / Bad_UserAccessDenied参考 §7 表
图表为空该标签在 Cassandra 中尚无历史数据(刚注册的标签) — 等待片刻后将添加数据点
图表显示波动剧烈将范围扩大至 24小时,自动下采样将使曲线平滑
客户端不信任服务器证书网关自签名证书 — 在客户端执行 "Trust" 操作或导入通过 [下载 (.der)] 获取的证书

9. 更多信息​

  • Node-RED (/ui/flow) — 通过流对同一标签值进行加工/外部发送。参考 자주 하는 작업 → Node-RED 로 자동화 / IIoT 플로우。
  • REST API — 可直接通过 HTTP 获取相同数据。参考 고급 / 통합 파트너용 → REST API。
  • 驱动技术指南 → OPC-UA — 描述网关的 OPC-UA 客户端 侧 (连接外部 OPC-UA 服务器获取数据的路径)。