| RMVL 2.4.0 Robotic Manipulation and Vision Library

载入中...
搜索中...
未找到
类 | 宏定义 | 类型定义 | 枚举 | 函数 | 变量
OPC UA 模块

本模块基于 open62541 开发 [15] [16] 更多...

## 类
class | rm::OpcuaClientView
| OPC UA 客户端视图 更多...
class | rm::OpcuaClient
| OPC UA 客户端 更多...
class | rm::OpcuaClientTimer
| OPC UA 客户端定时器 更多...
class | rm::EventType
| OPC UA 事件类型 更多...
class | rm::Event
| OPC UA 事件 更多...
struct | rm::Argument
| OPC UA 方法参数信息 更多...
class | rm::Method
| OPC UA 方法 更多...
class | rm::ObjectType
| OPC UA 对象类型 更多...
class | rm::Object
| OPC UA 对象 更多...
struct | rm::PublishedDataSet
| 待发布的数据集 (PDS) 更多...
class | rm::OpcuaPublisher
| OPC UA 发布者 更多...
class | rm::OpcuaServerView
| OPC UA 服务器视图 更多...
class | rm::OpcuaServer
| OPC UA 服务器 更多...
class | rm::OpcuaServerTimer
| OPC UA 服务器定时器 更多...
struct | rm::FieldMetaData
| 数据集字段元数据 更多...
class | rm::OpcuaSubscriber
| OPC UA 订阅者 更多...
class | rm::NodeId
| OPC UA 节点 ID 更多...
class | rm::DataType
| OPC UA 数据类型 更多...
struct | rm::UserConfig
| 用户信息 更多...
class | rm::VariableType
| OPC UA 变量类型 更多...
class | rm::Variable
| OPC UA 变量 更多...
struct | rm::DataSourceVariable
| OPC UA 数据源变量 更多...
class | rm::View
| OPC UA 视图 更多...

## 宏定义
#define | uaCreateVariableType(val, ...)
| 创建变量类型，BrowseName、DisplayName、Description 均为变量类型的名称
#define | uaCreateVariable(val, ...)
| 创建变量，BrowseName、DisplayName、Description 均为变量类型的名称

## 类型定义
using | rm::DataChangeNotificationCallback = std::function<void(OpcuaClientView, const Variable &)>
| 数据变更通知回调函数
using | rm::EventNotificationCallback = std::function<void(OpcuaClientView, const std::vector<Variable> &)>
| 事件通知回调函数
using | rm::MethodCallback = std::function<std::pair<bool, std::vector<Variable>>(const NodeId &, const std::vector<Variable> &)>
| OPC UA 方法回调函数
using | rm::ValueCallbackBeforeRead = std::function<void(OpcuaServerView, const NodeId &, const Variable &)>
| 值回调函数，Read 可调用对象定义
using | rm::ValueCallbackAfterWrite = std::function<void(OpcuaServerView, const NodeId &, const Variable &)>
| 值回调函数，Write 可调用对象定义
typedef std::tuple< UA_Server *, std::string_view, uint16_t > | rm::FindNodeInServer
| 目标节点信息（服务端指针、浏览名、命名空间索引）
typedef std::tuple< UA_Client *, std::string_view, uint16_t > | rm::FindNodeInClient
| 目标节点信息（客户端指针、浏览名、命名空间索引）
using | rm::Variables = std::vector<Variable>
| 变量列表别名
using | rm::DataSourceRead = std::function<Variable(const NodeId &)>
| 数据源回调函数，Read 函数指针定义
using | rm::DataSourceWrite = std::function<void(const NodeId &, const Variable &)>
| 数据源回调函数，Write 函数指针定义

## 枚举
enum | rm::AccessLevel : uint8_t { rm::VARIABLE_READ = 1U , rm::VARIABLE_WRITE = 2U }

## 函数
NodeId | rm::operator| (NodeId origin, rm::FindNodeInServer &&fnis)
| 服务端路径搜索
NodeId | rm::operator| (NodeId origin, rm::FindNodeInClient &&fnic)
| 客户端路径搜索

## 变量
constexpr DataType | rm::tpBoolean {UA_TYPES_BOOLEAN}
| 数据类型：Boolean
constexpr DataType | rm::tpSbyte {UA_TYPES_SBYTE}
| 数据类型：Sbyte
constexpr DataType | rm::tpByte {UA_TYPES_BYTE}
| 数据类型：Byte
constexpr DataType | rm::tpInt16 {UA_TYPES_INT16}
| 数据类型：Int16
constexpr DataType | rm::tpUInt16 {UA_TYPES_UINT16}
| 数据类型：UInt16
constexpr DataType | rm::tpInt32 {UA_TYPES_INT32}
| 数据类型：Int32
constexpr DataType | rm::tpUInt32 {UA_TYPES_UINT32}
| 数据类型：UInt32
constexpr DataType | rm::tpInt64 {UA_TYPES_INT64}
| 数据类型：Int64
constexpr DataType | rm::tpUInt64 {UA_TYPES_UINT64}
| 数据类型：UInt64
constexpr DataType | rm::tpFloat {UA_TYPES_FLOAT}
| 数据类型：Float
constexpr DataType | rm::tpDouble {UA_TYPES_DOUBLE}
| 数据类型：Double
constexpr DataType | rm::tpString {UA_TYPES_STRING}
| 数据类型：String
constexpr NodeId | rm::nodeBoolean {0, UA_NS0ID_BOOLEAN}
| 数据类型节点：Boolean 节点 ID
constexpr NodeId | rm::nodeSbyte {0, UA_NS0ID_SBYTE}
| 数据类型节点：Sbyte 节点 ID
constexpr NodeId | rm::nodeByte {0, UA_NS0ID_BYTE}
| 数据类型节点：Byte 节点 ID
constexpr NodeId | rm::nodeInt16 {0, UA_NS0ID_INT16}
| 数据类型节点：Int16 节点 ID
constexpr NodeId | rm::nodeUInt16 {0, UA_NS0ID_UINT16}
| 数据类型节点：UInt16 节点 ID
constexpr NodeId | rm::nodeInt32 {0, UA_NS0ID_INT32}
| 数据类型节点：Int32 节点 ID
constexpr NodeId | rm::nodeUInt32 {0, UA_NS0ID_UINT32}
| 数据类型节点：UInt32 节点 ID
constexpr NodeId | rm::nodeInt64 {0, UA_NS0ID_INT64}
| 数据类型节点：Int64 节点 ID
constexpr NodeId | rm::nodeUInt64 {0, UA_NS0ID_UINT64}
| 数据类型节点：UInt64 节点 ID
constexpr NodeId | rm::nodeFloat {0, UA_NS0ID_FLOAT}
| 数据类型节点：Float 节点 ID
constexpr NodeId | rm::nodeDouble {0, UA_NS0ID_DOUBLE}
| 数据类型节点：Double 节点 ID
constexpr NodeId | rm::nodeString {0, UA_NS0ID_STRING}
| 数据类型节点：String 节点 ID
constexpr NodeId | rm::nodeDatetime {0, UA_NS0ID_DATETIME}
| 数据类型节点：Datetime 节点 ID
constexpr NodeId | rm::nodeObjectsFolder {0, UA_NS0ID_OBJECTSFOLDER}
| 对象节点：ObjectsFolder 节点 ID
constexpr NodeId | rm::nodeTypesFolder {0, UA_NS0ID_TYPESFOLDER}
| 对象节点：TypesFolder 节点 ID
constexpr NodeId | rm::nodeViewsFolder {0, UA_NS0ID_VIEWSFOLDER}
| 对象节点：ViewsFolder 节点 ID
constexpr NodeId | rm::nodeObjectTypesFolder {0, UA_NS0ID_OBJECTTYPESFOLDER}
| 对象节点：ObjectTypesFolder 节点 ID
constexpr NodeId | rm::nodeVariableTypesFolder {0, UA_NS0ID_VARIABLETYPESFOLDER}
| 对象节点：VariableTypesFolder 节点 ID
constexpr NodeId | rm::nodeServer {0, UA_NS0ID_SERVER}
| 对象节点：OpcuaServer 节点 ID
constexpr NodeId | rm::nodeFolderType {0, UA_NS0ID_FOLDERTYPE}
| 对象类型节点：FolderType 节点 ID
constexpr NodeId | rm::nodeBaseObjectType {0, UA_NS0ID_BASEOBJECTTYPE}
| 对象类型节点：BaseObjectType 节点 ID
constexpr NodeId | rm::nodeBaseEventType {0, UA_NS0ID_BASEEVENTTYPE}
| 对象类型节点：BaseEventType 节点 ID
constexpr NodeId | rm::nodeBaseDataVariableType {0, UA_NS0ID_BASEDATAVARIABLETYPE}
| 变量类型节点：BaseDataVariableType 节点 ID
constexpr NodeId | rm::nodePropertyType {0, UA_NS0ID_PROPERTYTYPE}
| 变量类型节点：PropertyType 节点 ID
constexpr NodeId | rm::nodeOrganizes {0, UA_NS0ID_ORGANIZES}
| 引用类型节点：Organizes 节点 ID
constexpr NodeId | rm::nodeHasTypeDefinition {0, UA_NS0ID_HASTYPEDEFINITION}
| 引用类型节点：HasTypeDefinition 节点 ID
constexpr NodeId | rm::nodeHasComponent {0, UA_NS0ID_HASCOMPONENT}
| 引用类型节点：HasComponent 节点 ID
constexpr NodeId | rm::nodeHasProperty {0, UA_NS0ID_HASPROPERTY}
| 引用类型节点：HasProperty 节点 ID
constexpr NodeId | rm::nodeHasSubtype {0, UA_NS0ID_HASSUBTYPE}
| 引用类型节点：HasSubtype 节点 ID
constexpr NodeId | rm::nodeHasModellingRule {0, UA_NS0ID_HASMODELLINGRULE}
| 引用类型节点：HasModellingRule 节点 ID

## 详细描述

本模块基于 open62541 开发 [15] [16]

- 提供了 OPC UA 服务器、客户端的封装，以及 OPC UA 支持的数据类型包括 Object、Variable、Method、View、Event 的定义。
- 关于如何使用此模块，可参考 工业自动化通信协议 —— OPC UA 说明文档

## 宏定义说明

## ◆ uaCreateVariable

#define uaCreateVariable | ( |  | val,
|  |  | ... )

`#include <rmvl/opcua/variable.hpp>`

值:
rm::Variable val = __VA_ARGS__; \
val.browse_name = val.display_name = val.description = #val
rm::Variable
OPC UA 变量
定义 variable.hpp:147
rm::Variable::browse_name
std::string browse_name
浏览名称 BrowseName
定义 variable.hpp:291
rm::Variable::display_name
std::string display_name
展示名称 DisplayName
定义 variable.hpp:302
rm::Variable::description
std::string description
变量的描述
定义 variable.hpp:304

创建变量，BrowseName、DisplayName、Description 均为变量类型的名称

参数

  [in] | val | 变量的名称
  [in] | ... | 构造列表

## ◆ uaCreateVariableType

#define uaCreateVariableType | ( |  | val,
|  |  | ... )

`#include <rmvl/opcua/variable.hpp>`

值:
rm::VariableType val = __VA_ARGS__; \
val.browse_name = val.display_name = val.description = #val
rm::VariableType
OPC UA 变量类型
定义 variable.hpp:32
rm::VariableType::browse_name
std::string browse_name
浏览名称 BrowseName
定义 variable.hpp:124
rm::VariableType::description
std::string description
变量类型的描述 - zh-CN
定义 variable.hpp:135
rm::VariableType::display_name
std::string display_name
展示名称 DisplayName
定义 variable.hpp:133

创建变量类型，BrowseName、DisplayName、Description 均为变量类型的名称

参数

  [in] | val | 变量类型的名称
  [in] | ... | 构造列表

## 类型定义说明

## ◆ DataChangeNotificationCallback

using rm::DataChangeNotificationCallback = std::function<void(OpcuaClientView, const Variable &)>

`#include <rmvl/opcua/client.hpp>`

数据变更通知回调函数

参数

  [in] | client_view | 客户端视图，指代当前客户端
  [in] | value | 数据发生变更后的变量

## ◆ DataSourceRead

using rm::DataSourceRead = std::function<Variable(const NodeId &)>

`#include <rmvl/opcua/variable.hpp>`

数据源回调函数，Read 函数指针定义

参数

  [in] | nd | 待读取的变量节点的 NodeId

返回
  向服务器提供的待读取的变量

## ◆ DataSourceWrite

using rm::DataSourceWrite = std::function<void(const NodeId &, const Variable &)>

`#include <rmvl/opcua/variable.hpp>`

数据源回调函数，Write 函数指针定义

参数

  [in] | nd | 待写入的变量节点的 NodeId
  [in] | value | 从服务器接收到的变量，一般用于写入外部数据

## ◆ EventNotificationCallback

using rm::EventNotificationCallback = std::function<void(OpcuaClientView, const std::vector<Variable> &)>

`#include <rmvl/opcua/client.hpp>`

事件通知回调函数

参数

  [in] | client_view | 客户端视图，指代当前客户端
  [in] | event_fields | 事件数据

## ◆ FindNodeInClient

typedef std::tuple<UA_Client *, std::string_view, uint16_t> rm::FindNodeInClient

`#include <rmvl/opcua/utilities.hpp>`

目标节点信息（客户端指针、浏览名、命名空间索引）

## ◆ FindNodeInServer

typedef std::tuple<UA_Server *, std::string_view, uint16_t> rm::FindNodeInServer

`#include <rmvl/opcua/utilities.hpp>`

目标节点信息（服务端指针、浏览名、命名空间索引）

## ◆ MethodCallback

using rm::MethodCallback = std::function<std::pair<bool, std::vector<Variable>>(const NodeId &, const std::vector<Variable> &)>

`#include <rmvl/opcua/method.hpp>`

OPC UA 方法回调函数

参数

  [in] | nd | 方法节点所在对象的 NodeId
  [in] | iargs | 输入参数列表

返回值

  res,oargs |

返回
  是否成功完成当前操作，以及输出参数列表

## ◆ ValueCallbackAfterWrite

using rm::ValueCallbackAfterWrite = std::function<void(OpcuaServerView, const NodeId &, const Variable &)>

`#include <rmvl/opcua/server.hpp>`

值回调函数，Write 可调用对象定义

参数

  [in] | sv | OPC UA 服务器视图，指代当前服务器
  [in] | nd | 待写入的变量节点的 NodeId
  [in] | data | 服务器写入的变量

## ◆ ValueCallbackBeforeRead

using rm::ValueCallbackBeforeRead = std::function<void(OpcuaServerView, const NodeId &, const Variable &)>

`#include <rmvl/opcua/server.hpp>`

值回调函数，Read 可调用对象定义

参数

  [in] | sv | OPC UA 服务器视图，指代当前服务器
  [in] | nd | 待读取的变量节点的 NodeId
  [in] | value | 服务器读取到的变量

## ◆ Variables

using rm::Variables = std::vector<Variable>

`#include <rmvl/opcua/variable.hpp>`

变量列表别名

示例
  samples/opcua/opcua_server.cpp.

## 枚举类型说明

## ◆ AccessLevel

enum rm::AccessLevel : uint8_t

`#include <rmvl/opcua/variable.hpp>`

枚举值
VARIABLE_READ Python: rm.VARIABLE_READ | 读权限
VARIABLE_WRITE Python: rm.VARIABLE_WRITE | 写权限

## 函数说明

## ◆ operator|() [1/2]

NodeId rm::operator| | ( | NodeId | origin,
|  | rm::FindNodeInClient && | fnic )

`#include <rmvl/opcua/utilities.hpp>`

客户端路径搜索

参数

  [in] | origin | 起始 NodeId
  [in] | fnic | 目标节点信息（客户端指针、命名空间、浏览名）

返回
  目标 NodeId

## ◆ operator|() [2/2]

NodeId rm::operator| | ( | NodeId | origin,
|  | rm::FindNodeInServer && | fnis )

`#include <rmvl/opcua/utilities.hpp>`

服务端路径搜索

参数

  [in] | origin | 起始 NodeId
  [in] | fnis | 目标节点信息（服务端指针、命名空间、浏览名）

返回
  目标 NodeId

## 变量说明

## ◆ nodeBaseDataVariableType

NodeId rm::nodeBaseDataVariableType {0, UA_NS0ID_BASEDATAVARIABLETYPE}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

变量类型节点：BaseDataVariableType 节点 ID

## ◆ nodeBaseEventType

NodeId rm::nodeBaseEventType {0, UA_NS0ID_BASEEVENTTYPE}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

对象类型节点：BaseEventType 节点 ID

## ◆ nodeBaseObjectType

NodeId rm::nodeBaseObjectType {0, UA_NS0ID_BASEOBJECTTYPE}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

对象类型节点：BaseObjectType 节点 ID

## ◆ nodeBoolean

NodeId rm::nodeBoolean {0, UA_NS0ID_BOOLEAN}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型节点：Boolean 节点 ID

## ◆ nodeByte

NodeId rm::nodeByte {0, UA_NS0ID_BYTE}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型节点：Byte 节点 ID

## ◆ nodeDatetime

NodeId rm::nodeDatetime {0, UA_NS0ID_DATETIME}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型节点：Datetime 节点 ID

## ◆ nodeDouble

NodeId rm::nodeDouble {0, UA_NS0ID_DOUBLE}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型节点：Double 节点 ID

## ◆ nodeFloat

NodeId rm::nodeFloat {0, UA_NS0ID_FLOAT}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型节点：Float 节点 ID

## ◆ nodeFolderType

NodeId rm::nodeFolderType {0, UA_NS0ID_FOLDERTYPE}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

对象类型节点：FolderType 节点 ID

## ◆ nodeHasComponent

NodeId rm::nodeHasComponent {0, UA_NS0ID_HASCOMPONENT}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

引用类型节点：HasComponent 节点 ID

## ◆ nodeHasModellingRule

NodeId rm::nodeHasModellingRule {0, UA_NS0ID_HASMODELLINGRULE}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

引用类型节点：HasModellingRule 节点 ID

## ◆ nodeHasProperty

NodeId rm::nodeHasProperty {0, UA_NS0ID_HASPROPERTY}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

引用类型节点：HasProperty 节点 ID

## ◆ nodeHasSubtype

NodeId rm::nodeHasSubtype {0, UA_NS0ID_HASSUBTYPE}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

引用类型节点：HasSubtype 节点 ID

## ◆ nodeHasTypeDefinition

NodeId rm::nodeHasTypeDefinition {0, UA_NS0ID_HASTYPEDEFINITION}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

引用类型节点：HasTypeDefinition 节点 ID

## ◆ nodeInt16

NodeId rm::nodeInt16 {0, UA_NS0ID_INT16}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型节点：Int16 节点 ID

## ◆ nodeInt32

NodeId rm::nodeInt32 {0, UA_NS0ID_INT32}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型节点：Int32 节点 ID

## ◆ nodeInt64

NodeId rm::nodeInt64 {0, UA_NS0ID_INT64}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型节点：Int64 节点 ID

## ◆ nodeObjectsFolder

NodeId rm::nodeObjectsFolder {0, UA_NS0ID_OBJECTSFOLDER}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

对象节点：ObjectsFolder 节点 ID

## ◆ nodeObjectTypesFolder

NodeId rm::nodeObjectTypesFolder {0, UA_NS0ID_OBJECTTYPESFOLDER}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

对象节点：ObjectTypesFolder 节点 ID

## ◆ nodeOrganizes

NodeId rm::nodeOrganizes {0, UA_NS0ID_ORGANIZES}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

引用类型节点：Organizes 节点 ID

## ◆ nodePropertyType

NodeId rm::nodePropertyType {0, UA_NS0ID_PROPERTYTYPE}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

变量类型节点：PropertyType 节点 ID

## ◆ nodeSbyte

NodeId rm::nodeSbyte {0, UA_NS0ID_SBYTE}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型节点：Sbyte 节点 ID

## ◆ nodeServer

NodeId rm::nodeServer {0, UA_NS0ID_SERVER}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

对象节点：OpcuaServer 节点 ID

## ◆ nodeString

NodeId rm::nodeString {0, UA_NS0ID_STRING}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型节点：String 节点 ID

## ◆ nodeTypesFolder

NodeId rm::nodeTypesFolder {0, UA_NS0ID_TYPESFOLDER}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

对象节点：TypesFolder 节点 ID

## ◆ nodeUInt16

NodeId rm::nodeUInt16 {0, UA_NS0ID_UINT16}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型节点：UInt16 节点 ID

## ◆ nodeUInt32

NodeId rm::nodeUInt32 {0, UA_NS0ID_UINT32}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型节点：UInt32 节点 ID

## ◆ nodeUInt64

NodeId rm::nodeUInt64 {0, UA_NS0ID_UINT64}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型节点：UInt64 节点 ID

## ◆ nodeVariableTypesFolder

NodeId rm::nodeVariableTypesFolder {0, UA_NS0ID_VARIABLETYPESFOLDER}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

对象节点：VariableTypesFolder 节点 ID

## ◆ nodeViewsFolder

NodeId rm::nodeViewsFolder {0, UA_NS0ID_VIEWSFOLDER}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

对象节点：ViewsFolder 节点 ID

## ◆ tpBoolean

DataType rm::tpBoolean {UA_TYPES_BOOLEAN}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型：Boolean

## ◆ tpByte

DataType rm::tpByte {UA_TYPES_BYTE}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型：Byte

## ◆ tpDouble

DataType rm::tpDouble {UA_TYPES_DOUBLE}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型：Double

## ◆ tpFloat

DataType rm::tpFloat {UA_TYPES_FLOAT}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型：Float

## ◆ tpInt16

DataType rm::tpInt16 {UA_TYPES_INT16}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型：Int16

## ◆ tpInt32

DataType rm::tpInt32 {UA_TYPES_INT32}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型：Int32

示例
  samples/opcua/opcua_server.cpp.

## ◆ tpInt64

DataType rm::tpInt64 {UA_TYPES_INT64}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型：Int64

## ◆ tpSbyte

DataType rm::tpSbyte {UA_TYPES_SBYTE}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型：Sbyte

## ◆ tpString

DataType rm::tpString {UA_TYPES_STRING}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型：String

## ◆ tpUInt16

DataType rm::tpUInt16 {UA_TYPES_UINT16}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型：UInt16

## ◆ tpUInt32

DataType rm::tpUInt32 {UA_TYPES_UINT32}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型：UInt32

## ◆ tpUInt64

DataType rm::tpUInt64 {UA_TYPES_UINT64}
| constexpr

`#include <rmvl/opcua/utilities.hpp>`

数据类型：UInt64