RMVL  1.2.1
Robotic Manipulation and Vision Library
载入中...
搜索中...
未找到
基于 open62541 的 OPC UA 二次开发库

本模块基于 open62541 开发 更多...

class  rm::Client
 OPC UA 客户端 更多...
 
class  rm::EventType
 OPC UA 事件类型 更多...
 
class  rm::Event
 OPC UA 事件 更多...
 
struct  rm::Argument
 OPC UA 方法参数 更多...
 
struct  rm::Method
 OPC UA 方法 更多...
 
class  rm::ObjectType
 OPC UA 对象类型 更多...
 
class  rm::Object
 OPC UA 对象 更多...
 
struct  rm::PublishedDataSet
 待发布的数据集 (PDS) 更多...
 
class  rm::Publisher< Tpid >
 OPC UA 发布者 更多...
 
class  rm::Publisher< TransportID::UDP_UADP >
 使用 UDP 协议以及 UADP 序列化方式的 Publisher 特化 更多...
 
class  rm::Server
 OPC UA 服务器 更多...
 
struct  rm::FieldMetaData
 数据集字段元数据 更多...
 
class  rm::Subscriber< Tpid >
 OPC UA 订阅者 更多...
 
class  rm::Subscriber< TransportID::UDP_UADP >
 使用 UDP 协议以及 UADP 序列化方式的订阅者特化 更多...
 
struct  rm::UserConfig
 用户信息 更多...
 
class  rm::VariableType
 OPC UA 变量类型 更多...
 
class  rm::Variable
 OPC UA 变量 更多...
 
class  rm::View
 OPC UA 视图 更多...
 

宏定义

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

类型定义

using rm::ValueCallBackBeforeRead
 值回调函数,Read 函数指针定义
 
using rm::ValueCallBackAfterWrite
 值回调函数,Write 函数指针定义
 
using rm::DataSourceRead
 数据源回调函数,Read 函数指针定义
 
using rm::DataSourceWrite
 数据源回调函数,Write 函数指针定义
 
using rm::ServerUserConfig = UA_StatusCode (*)(UA_Server *)
 服务器配置函数指针,由 nodeset_compiler 生成
 
using rm::UA_TypeFlag = UA_UInt32
 类型标志位,可通过 typeflag.at(xxx) 进行获取
 
using rm::FindNodeInServer = ::std::tuple<UA_Server *, ::std::string>
 目标节点信息(服务端指针、浏览名)
 
using rm::FindNodeInClient = ::std::tuple<UA_Client *, ::std::string>
 目标节点信息(客户端指针、浏览名)
 

枚举

enum class  rm::TransportID : uint8_t { rm::TransportID::UDP_UADP = 1U , rm::TransportID::MQTT_UADP = 2U , rm::TransportID::MQTT_JSON = 3U }
 传输协议 更多...
 

函数

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

变量

const std::unordered_map< std::type_index, UA_TypeFlagrm::typeflag
 获取形如 UA_TYPES_<xxx> 的类型标志位
 
constexpr UA_NodeId rm::nodeBoolean {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_BOOLEAN}
 数据类型节点:Boolean 节点 ID
 
constexpr UA_NodeId rm::nodeSbyte {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_SBYTE}
 数据类型节点:Sbyte 节点 ID
 
constexpr UA_NodeId rm::nodeByte {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_BYTE}
 数据类型节点:Byte 节点 ID
 
constexpr UA_NodeId rm::nodeInt16 {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_INT16}
 数据类型节点:Int16 节点 ID
 
constexpr UA_NodeId rm::nodeUint16 {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_UINT16}
 数据类型节点:Uint16 节点 ID
 
constexpr UA_NodeId rm::nodeInt32 {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_INT32}
 数据类型节点:Int32 节点 ID
 
constexpr UA_NodeId rm::nodeUint32 {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_UINT32}
 数据类型节点:Uint32 节点 ID
 
constexpr UA_NodeId rm::nodeInt64 {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_INT64}
 数据类型节点:Int64 节点 ID
 
constexpr UA_NodeId rm::nodeUint64 {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_UINT64}
 数据类型节点:Uint64 节点 ID
 
constexpr UA_NodeId rm::nodeFloat {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_FLOAT}
 数据类型节点:Float 节点 ID
 
constexpr UA_NodeId rm::nodeDouble {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_DOUBLE}
 数据类型节点:Double 节点 ID
 
constexpr UA_NodeId rm::nodeString {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_STRING}
 数据类型节点:String 节点 ID
 
constexpr UA_NodeId rm::nodeDatetime {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_DATETIME}
 数据类型节点:Datetime 节点 ID
 
constexpr UA_NodeId rm::nodeObjectsFolder {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_OBJECTSFOLDER}
 对象节点:ObjectsFolder 节点 ID
 
constexpr UA_NodeId rm::nodeTypesFolder {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_TYPESFOLDER}
 对象节点:TypesFolder 节点 ID
 
constexpr UA_NodeId rm::nodeViewsFolder {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_VIEWSFOLDER}
 对象节点:ViewsFolder 节点 ID
 
constexpr UA_NodeId rm::nodeObjectTypesFolder {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_OBJECTTYPESFOLDER}
 对象节点:ObjectTypesFolder 节点 ID
 
constexpr UA_NodeId rm::nodeVariableTypesFolder {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_VARIABLETYPESFOLDER}
 对象节点:VariableTypesFolder 节点 ID
 
constexpr UA_NodeId rm::nodeServer {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_SERVER}
 对象节点:Server 节点 ID
 
constexpr UA_NodeId rm::nodeFolderType {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_FOLDERTYPE}
 对象类型节点:FolderType 节点 ID
 
constexpr UA_NodeId rm::nodeBaseObjectType {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_BASEOBJECTTYPE}
 对象类型节点:BaseObjectType 节点 ID
 
constexpr UA_NodeId rm::nodeBaseEventType {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_BASEEVENTTYPE}
 对象类型节点:BaseEventType 节点 ID
 
constexpr UA_NodeId rm::nodeBaseDataVariableType {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_BASEDATAVARIABLETYPE}
 变量类型节点:BaseDataVariableType 节点 ID
 
constexpr UA_NodeId rm::nodePropertyType {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_PROPERTYTYPE}
 变量类型节点:PropertyType 节点 ID
 
constexpr UA_NodeId rm::nodeOrganizes {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_ORGANIZES}
 引用类型节点:Organizes 节点 ID
 
constexpr UA_NodeId rm::nodeHasTypeDefinition {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_HASTYPEDEFINITION}
 引用类型节点:HasTypeDefinition 节点 ID
 
constexpr UA_NodeId rm::nodeHasComponent {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_HASCOMPONENT}
 引用类型节点:HasComponent 节点 ID
 
constexpr UA_NodeId rm::nodeHasProperty {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_HASPROPERTY}
 引用类型节点:HasProperty 节点 ID
 
constexpr UA_NodeId rm::nodeHasSubtype {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_HASSUBTYPE}
 引用类型节点:HasSubtype 节点 ID
 
constexpr UA_NodeId rm::nodeHasModellingRule {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_HASMODELLINGRULE}
 引用类型节点:HasModellingRule 节点 ID
 
constexpr UA_Byte rm::typeflag_ns0 []
 UA_TypeFlag 到对应 NS0 下的类型名的映射
 

详细描述

本模块基于 open62541 开发

宏定义说明

◆ uaCreateVariable

#define uaCreateVariable ( val,
... )

#include <rmvl/opcua/variable.hpp>

值:
rm::Variable val(__VA_ARGS__); \
val.browse_name = val.display_name = val.description = #val
OPC UA 变量
定义 variable.hpp:121

创建变量,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
OPC UA 变量类型
定义 variable.hpp:31

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

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

类型定义说明

◆ DataSourceRead

#include <rmvl/opcua/server.hpp>

初始值:
UA_StatusCode (*)(UA_Server *, const UA_NodeId *, void *, const UA_NodeId *, void *,
UA_Boolean, const UA_NumericRange *, UA_DataValue *)

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

◆ DataSourceWrite

#include <rmvl/opcua/server.hpp>

初始值:
UA_StatusCode (*)(UA_Server *, const UA_NodeId *, void *, const UA_NodeId *, void *,
const UA_NumericRange *, const UA_DataValue *)

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

◆ FindNodeInClient

using rm::FindNodeInClient = ::std::tuple<UA_Client *, ::std::string>

#include <rmvl/opcua/utilities.hpp>

目标节点信息(客户端指针、浏览名)

◆ FindNodeInServer

using rm::FindNodeInServer = ::std::tuple<UA_Server *, ::std::string>

#include <rmvl/opcua/utilities.hpp>

目标节点信息(服务端指针、浏览名)

◆ ServerUserConfig

using rm::ServerUserConfig = UA_StatusCode (*)(UA_Server *)

#include <rmvl/opcua/server.hpp>

服务器配置函数指针,由 nodeset_compiler 生成

◆ UA_TypeFlag

using rm::UA_TypeFlag = UA_UInt32

#include <rmvl/opcua/utilities.hpp>

类型标志位,可通过 typeflag.at(xxx) 进行获取

◆ ValueCallBackAfterWrite

#include <rmvl/opcua/server.hpp>

初始值:
void (*)(UA_Server *, const UA_NodeId *, void *, const UA_NodeId *, void *,
const UA_NumericRange *, const UA_DataValue *)

值回调函数,Write 函数指针定义

◆ ValueCallBackBeforeRead

#include <rmvl/opcua/server.hpp>

初始值:
void (*)(UA_Server *, const UA_NodeId *, void *, const UA_NodeId *, void *,
const UA_NumericRange *, const UA_DataValue *)

值回调函数,Read 函数指针定义

枚举类型说明

◆ TransportID

enum class rm::TransportID : uint8_t
strong

#include <rmvl/opcua/utilities.hpp>

传输协议

枚举值
UDP_UADP 

使用 UDP 传输协议映射和 UADP 消息映射的组合,此协议用于 无代理 的消息传递

MQTT_UADP 

使用 MQTT 传输协议映射和 UADP 消息映射的组合,此协议用于 基于代理 的消息传递

MQTT_JSON 

使用 MQTT 传输协议映射和 JSON 消息映射的组合,此协议用于 基于代理 的消息传递

函数说明

◆ operator|() [1/2]

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

#include <rmvl/opcua/utilities.hpp>

客户端路径搜索

参数
[in]origin起始 NodeId
[in]fnic目标节点信息(客户端指针、命名空间、浏览名)
返回
目标 NodeId

◆ operator|() [2/2]

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

#include <rmvl/opcua/utilities.hpp>

服务端路径搜索

参数
[in]origin起始 NodeId
[in]fnis目标节点信息(服务端指针、命名空间、浏览名)
返回
目标 NodeId

变量说明

◆ nodeBaseDataVariableType

UA_NodeId rm::nodeBaseDataVariableType {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_BASEDATAVARIABLETYPE}
constexpr

#include <rmvl/opcua/utilities.hpp>

变量类型节点:BaseDataVariableType 节点 ID

◆ nodeBaseEventType

UA_NodeId rm::nodeBaseEventType {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_BASEEVENTTYPE}
constexpr

#include <rmvl/opcua/utilities.hpp>

对象类型节点:BaseEventType 节点 ID

◆ nodeBaseObjectType

UA_NodeId rm::nodeBaseObjectType {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_BASEOBJECTTYPE}
constexpr

#include <rmvl/opcua/utilities.hpp>

对象类型节点:BaseObjectType 节点 ID

◆ nodeBoolean

UA_NodeId rm::nodeBoolean {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_BOOLEAN}
constexpr

#include <rmvl/opcua/utilities.hpp>

数据类型节点:Boolean 节点 ID

◆ nodeByte

UA_NodeId rm::nodeByte {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_BYTE}
constexpr

#include <rmvl/opcua/utilities.hpp>

数据类型节点:Byte 节点 ID

◆ nodeDatetime

UA_NodeId rm::nodeDatetime {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_DATETIME}
constexpr

#include <rmvl/opcua/utilities.hpp>

数据类型节点:Datetime 节点 ID

◆ nodeDouble

UA_NodeId rm::nodeDouble {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_DOUBLE}
constexpr

#include <rmvl/opcua/utilities.hpp>

数据类型节点:Double 节点 ID

◆ nodeFloat

UA_NodeId rm::nodeFloat {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_FLOAT}
constexpr

#include <rmvl/opcua/utilities.hpp>

数据类型节点:Float 节点 ID

◆ nodeFolderType

UA_NodeId rm::nodeFolderType {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_FOLDERTYPE}
constexpr

#include <rmvl/opcua/utilities.hpp>

对象类型节点:FolderType 节点 ID

◆ nodeHasComponent

UA_NodeId rm::nodeHasComponent {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_HASCOMPONENT}
constexpr

#include <rmvl/opcua/utilities.hpp>

引用类型节点:HasComponent 节点 ID

◆ nodeHasModellingRule

UA_NodeId rm::nodeHasModellingRule {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_HASMODELLINGRULE}
constexpr

#include <rmvl/opcua/utilities.hpp>

引用类型节点:HasModellingRule 节点 ID

◆ nodeHasProperty

UA_NodeId rm::nodeHasProperty {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_HASPROPERTY}
constexpr

#include <rmvl/opcua/utilities.hpp>

引用类型节点:HasProperty 节点 ID

◆ nodeHasSubtype

UA_NodeId rm::nodeHasSubtype {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_HASSUBTYPE}
constexpr

#include <rmvl/opcua/utilities.hpp>

引用类型节点:HasSubtype 节点 ID

◆ nodeHasTypeDefinition

UA_NodeId rm::nodeHasTypeDefinition {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_HASTYPEDEFINITION}
constexpr

#include <rmvl/opcua/utilities.hpp>

引用类型节点:HasTypeDefinition 节点 ID

◆ nodeInt16

UA_NodeId rm::nodeInt16 {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_INT16}
constexpr

#include <rmvl/opcua/utilities.hpp>

数据类型节点:Int16 节点 ID

◆ nodeInt32

UA_NodeId rm::nodeInt32 {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_INT32}
constexpr

#include <rmvl/opcua/utilities.hpp>

数据类型节点:Int32 节点 ID

◆ nodeInt64

UA_NodeId rm::nodeInt64 {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_INT64}
constexpr

#include <rmvl/opcua/utilities.hpp>

数据类型节点:Int64 节点 ID

◆ nodeObjectsFolder

UA_NodeId rm::nodeObjectsFolder {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_OBJECTSFOLDER}
constexpr

#include <rmvl/opcua/utilities.hpp>

对象节点:ObjectsFolder 节点 ID

示例
samples/opcua/opcua_client.cpp.

◆ nodeObjectTypesFolder

UA_NodeId rm::nodeObjectTypesFolder {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_OBJECTTYPESFOLDER}
constexpr

#include <rmvl/opcua/utilities.hpp>

对象节点:ObjectTypesFolder 节点 ID

◆ nodeOrganizes

UA_NodeId rm::nodeOrganizes {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_ORGANIZES}
constexpr

#include <rmvl/opcua/utilities.hpp>

引用类型节点:Organizes 节点 ID

◆ nodePropertyType

UA_NodeId rm::nodePropertyType {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_PROPERTYTYPE}
constexpr

#include <rmvl/opcua/utilities.hpp>

变量类型节点:PropertyType 节点 ID

◆ nodeSbyte

UA_NodeId rm::nodeSbyte {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_SBYTE}
constexpr

#include <rmvl/opcua/utilities.hpp>

数据类型节点:Sbyte 节点 ID

◆ nodeServer

UA_NodeId rm::nodeServer {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_SERVER}
constexpr

#include <rmvl/opcua/utilities.hpp>

对象节点:Server 节点 ID

◆ nodeString

UA_NodeId rm::nodeString {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_STRING}
constexpr

#include <rmvl/opcua/utilities.hpp>

数据类型节点:String 节点 ID

◆ nodeTypesFolder

UA_NodeId rm::nodeTypesFolder {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_TYPESFOLDER}
constexpr

#include <rmvl/opcua/utilities.hpp>

对象节点:TypesFolder 节点 ID

◆ nodeUint16

UA_NodeId rm::nodeUint16 {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_UINT16}
constexpr

#include <rmvl/opcua/utilities.hpp>

数据类型节点:Uint16 节点 ID

◆ nodeUint32

UA_NodeId rm::nodeUint32 {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_UINT32}
constexpr

#include <rmvl/opcua/utilities.hpp>

数据类型节点:Uint32 节点 ID

◆ nodeUint64

UA_NodeId rm::nodeUint64 {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_UINT64}
constexpr

#include <rmvl/opcua/utilities.hpp>

数据类型节点:Uint64 节点 ID

◆ nodeVariableTypesFolder

UA_NodeId rm::nodeVariableTypesFolder {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_VARIABLETYPESFOLDER}
constexpr

#include <rmvl/opcua/utilities.hpp>

对象节点:VariableTypesFolder 节点 ID

◆ nodeViewsFolder

UA_NodeId rm::nodeViewsFolder {0, UA_NODEIDTYPE_NUMERIC, UA_NS0ID_VIEWSFOLDER}
constexpr

#include <rmvl/opcua/utilities.hpp>

对象节点:ViewsFolder 节点 ID

◆ typeflag

const std::unordered_map<std::type_index, UA_TypeFlag> rm::typeflag
inline

#include <rmvl/opcua/utilities.hpp>

初始值:
=
{{::std::type_index(typeid(bool)), UA_TYPES_BOOLEAN},
{::std::type_index(typeid(int8_t)), UA_TYPES_SBYTE},
{::std::type_index(typeid(uint8_t)), UA_TYPES_BYTE},
{::std::type_index(typeid(UA_Int16)), UA_TYPES_INT16},
{::std::type_index(typeid(UA_UInt16)), UA_TYPES_UINT16},
{::std::type_index(typeid(UA_Int32)), UA_TYPES_INT32},
{::std::type_index(typeid(UA_UInt32)), UA_TYPES_UINT32},
{::std::type_index(typeid(UA_Int64)), UA_TYPES_INT64},
{::std::type_index(typeid(UA_UInt64)), UA_TYPES_UINT64},
{::std::type_index(typeid(UA_Float)), UA_TYPES_FLOAT},
{::std::type_index(typeid(UA_Double)), UA_TYPES_DOUBLE},
{::std::type_index(typeid(const char *)), UA_TYPES_STRING}}

获取形如 UA_TYPES_<xxx> 的类型标志位

◆ typeflag_ns0

UA_Byte rm::typeflag_ns0[]
constexpr

#include <rmvl/opcua/utilities.hpp>

初始值:
= {UA_NS0ID_BOOLEAN, UA_NS0ID_SBYTE, UA_NS0ID_BYTE,
UA_NS0ID_INT16, UA_NS0ID_UINT16, UA_NS0ID_INT32,
UA_NS0ID_UINT32, UA_NS0ID_INT64, UA_NS0ID_UINT64,
UA_NS0ID_FLOAT, UA_NS0ID_DOUBLE, UA_NS0ID_STRING}

UA_TypeFlag 到对应 NS0 下的类型名的映射

  • 例如:typeflag_ns0[UA_TYPES_INT16]UA_NS0ID_INT16