Skip to Content
本页目录

OPC UA 服务端

通过内置 OPC UA Server 将转发组内的变量公开为节点。外部客户端可以浏览、读取,并在权限允许时写入节点;还可关联历史数据和历史报警目标。

转发组范围和目标启停见数据转发。本页只说明 OPC UA 端点、安全认证、历史目标、节点属性和专用调试。

功能入口

进入“开发配置 → 数据转发”,按以下顺序配置:

  1. 保存转发组变量范围;只有范围内变量才会创建 OPC UA 节点。
  2. 新增目标,选择“OPC UA 服务端”,填写目标基本信息。
  3. 打开“目标属性”,配置端点、身份、安全策略、证书和历史目标绑定。
  4. 保存并启用目标,确认服务端运行后,再在“变量属性”中设置节点数据类型和写入权限。

目标基本信息

参数默认值如何配置
所属转发组-必须选择已保存的转发组。
目标名称-必填,同一转发组内不能重复。
启用开启关闭时不会启动 OPC UA Server。
日志级别Info排查证书、会话或节点问题时临时使用 Debug。
启动超时60 秒页面可填 1~3600 秒。

原生 Method 调用

先开启被调用设备或转发目标的“允许方法调用”,再启动或重启本 UA 目标。在 ThingsGateway/Methods 下按实例名称找到公开方法,第一个输入为 TimeoutMs,随后是业务参数。无需建立方法变量,调用仍使用当前 UA 会话认证。

关闭被调用实例的开关后,已发布节点也会拒绝执行;之后才开启方法或改变插件定义,需要重启本 UA 目标并重新浏览。基础类型使用 UA 类型,复杂对象、Decimal 和可空值使用 JSON 字符串。输出、类型约定和验证步骤见插件方法调用。原节点写入仍按目标与变量的“允许RPC写入”执行。

目标属性

端点配置

参数默认值如何配置
服务地址opc.tcp://127.0.0.1:48410OPC UA Endpoint。多个地址用英文分号分隔;必须填写客户端实际可访问的地址。
名称标识TGateway_OPC_UA_ServerIdentify 返回的应用名称,同时用于自动生成服务端应用证书主题。

安全与认证

参数默认值如何配置
安全策略关闭关闭时只发布 None 安全端点;开启时发布 SignAndEncrypt,策略为 Basic256Sha256、Aes128_Sha256_RsaOaep 和 Aes256_Sha256_RsaPss。客户端需选择双方支持的组合。
允许证书登录关闭仅安全端点可用;开启后发布 X509 用户身份令牌。
客户端证书信任模式ManualTrustListManualTrustList 在调试页维护信任库;SpecifiedCA 只信任指定 CA 签发的客户端证书。
受信客户端CA空仅 SpecifiedCA 使用。选择后只接受该 CA 签发的客户端应用证书和用户证书;留空则自动信任有效客户端证书,并未限定组织签发根。
用户名空用户名登录时的固定账号;客户端必须提交非空用户名。
密码空与用户名完全匹配的密码;不要在截图或日志公开。
服务端证书名称空安全端点建议选择带私钥的服务端证书;留空时系统按应用名称生成。
服务端签发CA空服务端证书由 CA 签发时选择对应 CA,客户端需要完整证书链时必须配置。

配置身份与加密会话

  1. 在“证书管理”准备服务端证书,包含私钥、客户端实际访问的域名/IP,以及匹配 OPC UA 应用身份的 Application URI。
  2. 在目标选择“服务端证书名称”和对应“服务端签发CA”,开启安全策略,保存后用客户端重新获取端点。
  3. 核对端点为 SignAndEncrypt,服务证书、应用 URI 和完整链符合预期。安全策略关闭时发布 None 和匿名令牌;仅填写用户名密码不会关闭匿名。安全策略开启后不再发布 None 或匿名令牌。
  4. 用正确用户名密码建立新会话并读取节点;再用错误密码核对身份拒绝,避免继续使用已有会话。
  5. 需要证书用户登录时开启“允许证书登录”,在端点发现中核对 Certificate 令牌,再实际使用 X509 用户证书激活会话。

客户端应用证书用于建立安全通道,用户证书用于登录,两份身份分别信任。应用已受信不代表用户已获准;“允许证书登录”也不替代信任配置。指定 CA 模式应明确选择组织 CA,不能把该字段留空解释为只信任本组织。

手工模式下,在证书库分别维护应用信任锚、应用签发者、用户信任锚和用户签发者。签发者用于补链,信任锚用于建立信任;通过 CA 信任时还需满足 CRL 吊销检查。直接信任自签名叶子时,也应分别上传准确的应用与用户公钥并核对指纹。删除用户信任后,使用相同应用建立的新用户会话应被拒绝,服务端原有节点和值仍可保留。

写入与历史

参数默认值说明
允许RPC写入开启OPC UA 客户端写入的目标级总开关。变量级权限也必须允许。
历史数据目标-填写稳定的 组名/目标名;留空时不开放历史数据读取。
历史报警目标-填写支持历史报警查询的 组名/目标名;留空时不开放历史事件读取。

历史目标名称必须填写稳定目标名称(组名/目标名),且目标实现对应的历史查询能力;配置后先确认目标在线并已有查询时间范围内的记录。

开放历史数据与报警事件

  1. 先创建历史数据存储,让同一变量产生至少两个不同值,在网关历史查询中确认这两个样本及时间。
  2. 将其稳定名称填入 OPC UA 目标的“历史数据目标”,保存后重新连接并浏览。节点应声明 Historizing 和 HistoryRead。
  3. 在独立客户端执行标准 Raw History 读取,使用覆盖实际样本的 UTC 时间窗口,核对值、质量、源时间及续读信息。循环读取当前值不能代替历史读取。
  4. 需要事件历史时,另外创建历史报警存储并生成一次实际越限,填入“历史报警目标”。通过根事件通知节点执行事件 HistoryRead,按选择字段的顺序读取来源、消息和严重度。
  5. 清空相应绑定后重新连接,核对对应历史访问位取消、请求被拒绝,同时原数据库仍可查询,实时节点继续可读。

清除绑定只控制协议暴露能力,不删除旧历史、不关闭变量报警。数值历史和报警事件使用不同查询结构,必须分别验证。

目标变量属性

保存目标后,打开“变量属性”,为需要公开的变量配置节点属性。

参数默认值说明
数据类型ObjectOPC UA 节点对外使用的数据类型,应与源变量和客户端预期一致。
允许RPC写入开启当前节点的写入权限。目标、变量和客户端用户权限必须同时允许。

变量必须已在转发组范围内;新增目标变量属性不会把变量加入转发组。

核对标量与数组类型

目标类型客户端应核对的结果
Object从源值推导类型;Int16 源仍暴露 Int16,不能按任意 JSON 理解。源 decimal 的自动投影使用 Double。
Boolean、各整数、Float、Double同时核对节点 DataType 与线上 Variant,不只比较显示文本。非零数值可转换为 true,但源寄存器值并未改变。
Decimal显式类型使用标准 DecimalDataType 的 ExtensionObject,客户端需支持该十进制结构。
String数值 100 会成为文本 "100",消费端应按字符串处理。
一维数组核对 ValueRank、元素类型及每个元素;Byte 数组应保持数组形态,不能误作 ByteString 标量。

目标类型变宽不会扩展现场源点的有效值域。更改类型后重新浏览,写入使用新声明的类型,并继续满足源变量范围。

验证写入权限

先由外部客户端写入一个允许的测试值,核对写结果、采集回读和现场源端三处一致。再分别关闭目标级“允许RPC写入”和单节点的同名开关,每次保存并建立新会话:读取应继续可用,写入应被拒绝,现场值保持原值。恢复权限后再次测试写入,不能把客户端本地缓存变化当作现场执行成功。

目标调试

进入“开发配置 → 数据转发”,选择 OPC UA 服务端目标后打开“调试”。

功能作用
证书库维护手工信任模式下的客户端信任证书。
协议调试 · OpcUaServer查看端点和服务状态,执行 OPC UA 服务端专用操作。

证书库

OPC UA 服务端:证书库

上传或删除证书后,页面提示重启目标时应按提示执行。

OPC UA 服务端调试

OPC UA 服务端:核心状态

证书变更、节点写入和断开客户端连接要求相应权限。执行前确认客户端身份和现场影响。

“特殊方法”目录中即使列出 UploadAsync,也不代表当前服务端支持任意主题消息上传。该方法在此目标返回“未提供通用消息上传通道”的业务失败;节点读写应使用 OPC UA 客户端或对应调试入口。检查方法业务结果,不能只看外层请求成功。

独立客户端可创建订阅及 Value 监视项,先记录分配的 SubscriptionId、发布周期、采样周期和队列策略,再改变源值,核对随后通知中的节点、新值和质量。初始快照与普通 Read 不算变化通知。删除订阅后普通 Read 应继续工作,删除订阅不会关闭会话或删除节点。

验证方法

  1. 启用目标,使用 OPC UA 客户端连接服务地址。
  2. 浏览命名空间,找到一个已纳入转发范围的变量节点。
  3. 读取节点值并与源变量比较。
  4. 只有在目标、变量、客户端用户和现场权限均允许时测试写入。
  5. 配置历史目标后,使用包含实际记录的时间范围验证历史数据或事件。

常见问题

现象检查方法
客户端无法连接服务地址、目标状态、防火墙、安全策略、服务端证书和客户端信任。
客户端证书被拒绝信任模式、手工信任库、指定 CA、证书链和证书用途。
用户名登录失败用户名、密码、证书登录设置、安全策略和用户权限。
看不到节点转发组范围、目标变量属性、目标重启状态和客户端浏览权限。
读取值不正确源变量状态、目标变量数据类型、转发组范围和目标日志。
写入被拒绝目标权限、变量权限、OPC UA 用户权限、节点访问级别和现场安全。
历史读取为空历史目标名称、目标类型、已有记录和查询时间范围。

相关操作