跳到主要内容

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 用户权限、节点访问级别和现场安全。
历史读取为空历史目标名称、目标类型、已有记录和查询时间范围。

相关操作​