npm 包 node-opcua-address-space 使用教程

阅读时长 9 分钟读完

前言

node-opcua-address-space 是一个基于 Node.js 平台的 OPC UA 服务器端库。它提供了一个简单的 API 来创建和管理一个 OPC UA 地址空间,可以让开发人员快速、方便地在应用程序中实现 OPC UA 服务器端。

在本篇文章中,我们将探讨如何使用 node-opcua-address-space 包来创建和管理 OPC UA 地址空间。

安装

npm 是 Node.js 的包管理工具,我们可以通过 npm 来安装 node-opcua-address-space 包。在终端中执行以下命令即可:

创建地址空间

首先,我们需要创建一个 OPC UA 地址空间。在 node-opcua-address-space 中,我们使用 AddressSpace 类来实现这个功能。

在代码中,我们首先需要引入 AddressSpace 类和 generateAddressSpace 方法:

然后,我们可以使用以下代码来创建一个新的 OPC UA 地址空间:

如果我们已经有了一个 XML 文件,描述了 OPC UA 地址空间的结构,我们可以使用 generateAddressSpace 方法来直接从 XML 文件中生成一个 OPC UA 地址空间。例如:

添加变量

创建好地址空间后,我们可以向地址空间中添加变量。使用 AddressSpaceaddVariable 方法可以方便地完成这个任务。例如:

-- -------------------- ---- -------
----- ---------- - --------------------------
    ------------ --------------------------------
    ------- --------------------
    ----------- -------------
    --------- ---------
    ------ -
        ---- -- -- -
            ------ --- ---------
                --------- ----------------
                ------ ----------------
            ---
        --
        ---- --------- -- -
            ---------------- - --------------------------
            ------ -----------------
        -
    -
---

代码解释:

  • organizedBy 参数指定了变量要添加到哪个节点下。
  • nodeId 参数用来指定该变量的节点 ID。
  • browseName 参数用来指定该变量在地址空间中的名称。
  • dataType 参数指定了该变量的数据类型。
  • value 参数是一个对象,用来指定该变量的读写属性、初始值、以及获取和设置变量值的方法。

需要注意的是,value 中的 get 方法用于获取变量值,set 方法用于设置变量值。

添加方法

除了添加变量,还可以在地址空间中添加方法。使用 AddressSpaceaddMethod 方法可以方便地完成这个任务。例如:

-- -------------------- ---- -------
----- -------- - -------------------------------- -
    ------- ------------------
    ----------- -----------
    --------------- -
        -
            ----- ----
            --------- --------
        --
        -
            ----- ----
            --------- --------
        -
    --
    ---------------- -
        -
            ----- ----
            --------- --------
        -
    --
    ----------- -----
    ------- ---------------- -------- -- -
        ----- - - ------------------------------------
        ----- - - ------------------------------------
        ------ -
            ----------- -----------------
            ---------------- --
                --------- ----------------
                ------ - - -
            --
        --
    -
---

代码解释:

  • myObject 参数用来指定要添加方法的对象节点。
  • nodeId 参数用来指定该方法的节点 ID。
  • browseName 参数用来指定该方法在地址空间中的名称。
  • inputArguments 参数用来指定该方法的输入参数列表,包括参数名和数据类型。
  • outputArguments 参数用来指定该方法的输出参数列表,包括参数名和数据类型。
  • executable 参数指定该方法是否可执行。
  • invoke 参数指定该方法的执行函数。该函数接收一个输入参数列表和一个上下文对象,返回一个包含执行结果的对象。

需要注意的是,invoke 函数需要返回一个包含执行结果的对象,其中包括一个状态码和输出参数列表。状态码用于指示方法的执行情况,输出参数用于返回方法的结果。

添加节点

除了变量和方法,我们还可以在地址空间中添加各种类型的节点,例如对象节点、folder 节点、参照节点等。在 node-opcua-address-space 中,我们可以使用 AddressSpace 的各种方法来添加这些节点。

例如,我们可以使用 AddressSpaceaddObject 方法来添加一个对象节点:

代码解释:

  • organizedBy 参数指定了对象节点要添加到哪个节点下。
  • browseName 参数用来指定该对象节点在地址空间中的名称。

除了 addObject 方法,还有其他诸如 addFolderaddReferenceTypeaddDataItemType 等方法可以用来添加不同类型的节点。

总结

在本篇文章中,我们探讨了如何使用 node-opcua-address-space 包来创建和管理 OPC UA 地址空间。我们学习了如何添加变量、方法以及节点,并了解了一些常用的 API。希望这篇文章可以给大家带来帮助。完整示例代码如下:

-- -------------------- ---- -------
----- - ------------- --------------------- -------- --------- ----------- - - ------------------------------------

----- ------------ - ----------------------
----- -------- - ------------------------
    ------------ --------------------------------
    ----------- ----------
---

----- ---------- - --------------------------
    ------------ ---------
    ------- --------------------
    ----------- -------------
    --------- ---------
    ------ -
        ---- -- -- -
            ------ --- ---------
                --------- ----------------
                ------ ----------------
            ---
        --
        ---- --------- -- -
            ---------------- - --------------------------
            ------ -----------------
        -
    -
---

----- -------- - -------------------------------- -
    ------- ------------------
    ----------- -----------
    --------------- -
        -
            ----- ----
            --------- --------
        --
        -
            ----- ----
            --------- --------
        -
    --
    ---------------- -
        -
            ----- ----
            --------- --------
        -
    --
    ----------- -----
    ------- ---------------- -------- -- -
        ----- - - ------------------------------------
        ----- - - ------------------------------------
        ------ -
            ----------- -----------------
            ---------------- --
                --------- ----------------
                ------ - - -
            --
        --
    -
---

------ -- -- -
    ----- -------- - --------------------- ----------- ------------------------
    ----- ---------------------------------- ----------
-----

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65143

纠错
反馈