写点什么

AIRIOT 物联网低代码平台如何配置 OPC UA 驱动?

作者:Geek_a614b3
  • 2022 年 5 月 20 日
  • 本文字数:3663 字

    阅读完需:约 12 分钟

AIRIOT物联网低代码平台如何配置OPC UA驱动?

AIRIOT 支持驱动类型丰富,驱动包括但不限于通用驱动信息,无线驱动信息,行业驱动信息及各个厂商驱动。驱动稳定性强,经受住各个大型项目考验,持续稳定运行。

AIRIOT 如何配置 OPC UA 驱动,操作如下:

​驱动配置​​​决定驱动如何连接 OPCUA 服务器,​​数据点​​配置决定驱动从 OPCUA 服务器上读取哪些数据。

如何测试

  1. 安装驱动,安装完成后在选择设备驱动时可以看到 opcua。没有驱动授权时也可以添加少量数据点做测试。

  2. 创建一个模型,设备驱动选择 opcua。创建一个属于该模型的资产。

  3. 参考驱动配置一节,配置模型中的驱动配置。

  4. 参考数据点配置一节,在模型中添加一个状态正常的数据点。

  5. 保存配置,点击重启驱动。

  6. 在模型的数据点的下拉框中选择第 2 步创建的资产,查看是否有数据。

驱动配置

说明

跟连接 OPCUA 服务器相关的配置有以下五项(前三项为必填项),这些信息一般从 OPCUA 服务器的配置页面上可以找到,简要说明如下:

  • ​OPC主机URL​​:包含了 OPCUA 服务器的 ip 地址(也可以是域名或者计算机名)和端口。请确保驱动运行的服务器可以 ping 通 OPCUA 服务器的地址,并且 OPCUA 服务器的端口没有被占用。

  • ​安全模式​​​:连接 OPCUA 服务器时的认证方式。有​​None​​​,​​Sign​​​ ,和​​Sign&Encrypt​​​三种,分别对应匿名登录,签名验证和签名与加密认证(不同厂商的翻译可能不同)。局域网环境通常允许匿名登录,不允许匿名登录时需要在驱动配置中填写​​用户名​​​和​​密码​​。

  • ​安全策略​​​:证书加密方式。驱动支持选择​​None​​​,​​Basic128Rsa15​​​ ,​​Basic256​​​,和​​Basic256Sha256​​​四种中的一种,OPCUA 服务器会支持若干种​​安全策略​​​。当​​安全模式​​​是​​None​​​时​​安全策略​​​也是​​None​​。

  • ​用户名​​:非匿名登录时可能需要填写。

  • ​密码​​:非匿名登录时可能需要填写。

​采集周期​​参数决定了驱动将数据上传到平台的频率,由于驱动是通过订阅的方式更新数据的,缩短采集周期并不会增加 OPCUA 服务器的负载。

除了采集周期外,OPCUA 服务器上的数据更新后平台上的数据多快更新还取决于 OPCUA 服务器采集实际设备的周期和推送数据更新信息的最小周期。这两个参数可以在驱动的配置文件配置中配置,但是实际的周期由 OPCUA 服务器根据自身能力决定。

示例

以 KEPSevrer 为例。版本为 ​​V6.4 321.0​​。

匿名登录

此时支持匿名登录。



驱动配置如下:



非匿名登录

此时不能匿名登录。注意 KEPServer 支持两种加密方法(对应驱动的​​安全策略​​​),勾选的加密方法后可以在下拉框中三选一(选择项对应驱动的​​安全模式​​)。

KEPServer 安全策略下拉框选项与驱动的​​安全模式​​的对应关系如下,需要注意在测试使用的版本中“签名与加密”比“签名;签名与加密”覆盖的范围更广。

增加和修改端点后,需要重启运行时后才能生效。方法为右键点击托盘中的 KEPServer 的绿色小图标,选择“重新初始化”。



根据上述配置,驱动的​​安全策略​​​和​​安全模式​​有 2*2=4 种有效的组合,以下为其中一种有效配置:



当第一次运行驱动时候,需要在 OPCUA 服务器的配置界面添加证书。

驱动启动或者重启后,刷新受信任的客户端页面,会看到一个名为​​HTKJ Client​​的客户端。如果前面没有红叉,则无需做任何操作;如果前有个红叉,右键选择证书,点击信任。等待一段时间即可(驱动会自动重连)。


数据点配置

说明

没个数据点有 3 个 OPCUA 相关的必填配置:

  • ​命名空间(NamespaceIndex)​​:整数,0 是 OPCUA 服务器的配置。KEPServer 上的数据点的命名空间一般是 2。

  • ​数据点ID(identifier)​​:字符串。一般不同层级之间用一个分隔符分开。

  • ​数据类型​​:实际没有影响,随便选一个就可以。

数据点的名称和标识只跟平台功能相关,与 OPCUA 无关。

示例

需要第三方 OPCUA 客户端 Ua Expert,请自行下载。

首先使用 UaExpert 连接上 OPCUA 服务器,配置与上一节类似(​​可以参考​​)。

连接成功后,可以左侧看到一组多级目录(结构类似于下图),在目录中找到一个有效的数据点(图标为标签)。



单击标签页,看右侧的 NamespaceIndex 和 identifier。



在平台上,添加数据点,命名空间写 UaExpert 中 NamespaceIndex 对应的数值,数据点 ID 写 Identifier 对应的值。注意符号和大小写。

OPCUA 数据点的状态码不是 Good 时,驱动不会上传这个数据。



添加大量数据点时推荐使用数据点导入功能。

尽管 OPCUA 的数据点 ID 没有格式限制,但是实际上数据点 ID 由几段字符串拼接而成(与 OPCDA 相似)。比如上图中 OPCUA 服务器上的数据点实际上是在设备 Sim 的通道 dev1 下。



常见问题

如果驱动运行时实际设备掉线会发生什么

如果实际设备(如 PLC)掉线,一般 OPCUA 上的数据点的状态码会不正常(不是 Good)。此时驱动会发现数据点状态码的变化(前提是驱动中添加了这个数据点),之后不再向平台推送这个数据点的数据(不影响其他数据的推送),直到数据点的状态码变为 Good。

可以采集哪些数据类型

布尔型转为 0 和 1,字符串类型(包含 ByteString)保存为字符串,日期转化为长整型(毫秒级 Unix 时间戳),数值类型不做处理。

证书如何生成

驱动会自动生成证书,证书可以多次使用或导出(在与 jar 包同级的 cert 目录下)。暂不支持导入预先生成的证书。

避免多次信任证书

一般当安全策略和安全模式不是 None,则需要在 OPCUA 服务器上信任证书。而当容器删除后(比如升级驱动)证书会重新创建,则需要在 OPCUA 服务器上重新信任。可以通过持久化证书的方式解决这个问题(不要改文件名)。

  1. 正常运行驱动,并在 OPCUA 服务器上信任证书

  2. 信任后驱动可以正常上数

  3. 登上服务器,将容器中的 cert 目录拷贝到本地

  4. 假设拷贝到 /home/app/ua 目录下,opcua 容器的驱动名是 opcua

  5. mkdir -p /home/app/uacert

  6. docker cp opcua:/app/cert /home/app/ua

  7. 此时 /home/app/ua 下会有一个 cert 目录,里面有一个证书(没有说明没上数)

  8. 在运维平台中将证书挂载

  9. 找到服务,点击修改,增加数据卷

  10. 容器:/app/cert,主机:/home/app/ua/cert,模式:bind

  11. 保存后会重启驱动

  12. 也可以直接修改 docker-compose 文件

在 windows 平台中,证书在驱动对应目录的 cert 子目录中,直接保存文件即可。以后更新版本后,在驱动运行前将保存的文件拷贝到 cert 子目录中。

不上数了,怎么排查

很多原因都能导致不上数,建议按照如下顺序进行排查:

  • OPCUA 驱动服务是否在运行

  • 平台后台首页左侧导航栏中找到系统操作,在驱动中是否有 OPCUA 驱动

  • 驱动配置和数据点配置是否无误

  • OPCUA 服务器是否正常工作

  • 用 UaExpert 能否连接到服务器

  • OPCUA 的端口是否被占用

  • 运行平台的服务器能否 ping 通 OPCUA 服务器

  • 驱动容器能否 ping 通 OPCUA 服务器

配置文件

配置文件尽量不要让客户自行修改。修改后必须重启容器或者进程才能生效。

驱动是多个 OPCUA 客户端的集合。驱动的配置文件作用于驱动连接的所有服务器,不限制于某个模型或资产。

batchSize 的最大值,publishInterval 和 samplingInterval 的最小值由 OPCUA 服务器决定,需要通过 OPCUA 服务器的管理软件查看

  • client.readMode: 读取数据的模式,分为 subscribe(订阅)和 direct(直接读取)两种。默认 subscribe,尽量不要使用 direct 模式。

  • client.batchSize: 每个订阅包含的最大 NodeID 数量。整数,默认 100。仅在订阅模式有效。

  • client.publishInterval: 客户端希望服务器执行订阅的周期(秒),实际上的周期由服务器决定。小数,默认 0.5,即周期为 0.5*1000=500ms。仅在订阅模式有效。

  • client.samplingInterval: 服务器对 MonitoredItems 的采样周期(秒)。小数,默认 1.0,即周期为 1.0*1000=1000ms。仅在订阅模式有效。

  • client.maxPendingPublishRequests: 客户端 publishRequests 队列的长度,如果订阅模式时服务器总报​​Bad_TooManyPublishRequests​​,则要将这个值降低。整数,默认 10。如果配置文件中的这个值<0,则实际的 maxPendingPublishRequests=所有连接这台服务器的资产的数据点的不重复的 NodeId 数量/batchSize + 1,比如一个客户端需要订阅 590 个不同的 Node,batchSize 为 100,则 maxPendingPublishRequests=590/100 + 1=5+1=6.

  • client.autoReconnect: 驱动运行一段时间后自动断开所有 opcua 客户端并重连(不断开驱动与平台的连接)。格式为​​XhYmZs​​,即 X 小时加 Y 分钟加 Z 秒(例:24h=24 小时,1h30m=90 分钟)。从配置文件中解析出来的时间不超过 10 分钟时不启用此功能。

  • client.replaceURL:是否替换 endPointURL ,默认为 false。客户端连接 OPCUA 服务器时,会先根据配置的 endpointURL 获取对应设备上的所有 OPCUA 服务器的信息(其中包含另一个 endpointURL ),然后再通过条件筛选出一台 OPCUA 服务器,最后使用服务器返回的信息配置客户端并连通。当平台上配置的 endpointURL 是代理的地址时,返回的服务器信息中的 URL 可能仍会是内网地址。将这个选项设置为​​true​​时,会在检测到两个 enpointURL 不一致时将最终客户端配置的 URL 替换为平台配置的 URL。


试用产品:https://airiot.cn/try

用户头像

Geek_a614b3

关注

还未添加个人签名 2022.03.30 加入

还未添加个人简介

评论

发布
暂无评论
AIRIOT物联网低代码平台如何配置OPC UA驱动?_Geek_a614b3_InfoQ写作社区