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

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

class  rm::ClientView
 OPC UA 客户端视图 更多...
 
class  rm::Client
 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::Publisher< Tpid >
 OPC UA 发布者 更多...
 
class  rm::Publisher< TransportID::UDP_UADP >
 使用 UDP 协议以及 UADP 序列化方式的 Publisher 特化 更多...
 
class  rm::ServerView
 OPC UA 服务器视图 更多...
 
class  rm::Server
 OPC UA 服务器 更多...
 
struct  rm::FieldMetaData
 数据集字段元数据 更多...
 
class  rm::Subscriber< Tpid >
 OPC UA 订阅者 更多...
 
class  rm::Subscriber< TransportID::UDP_UADP >
 使用 UDP 协议以及 UADP 序列化方式的订阅者特化 更多...
 
struct  rm::NodeId
 OPC UA 节点 ID 更多...
 
class  rm::DataType
 OPC UA 数据类型 更多...
 
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::DataChangeNotificationCallback = std::function<void(ClientView, const Variable &)>
 数据变更通知回调函数
 
using rm::EventNotificationCallback = std::function<void(ClientView, const std::vector<Variable> &)>
 
using rm::MethodCallback = std::function<std::vector<Variable>(ServerView, const NodeId &, const std::vector<Variable> &)>
 OPC UA 方法回调函数
 
using rm::ValueCallbackBeforeRead = std::function<void(ServerView, const NodeId &, const Variable &)>
 值回调函数,Read 可调用对象定义
 
using rm::ValueCallbackAfterWrite = std::function<void(ServerView, const NodeId &, const Variable &)>
 值回调函数,Write 可调用对象定义
 
using rm::DataSourceRead = std::function<Variable(ServerView, const NodeId &)>
 数据源回调函数,Read 函数指针定义
 
using rm::DataSourceWrite = std::function<void(ServerView, const NodeId &, const Variable &)>
 数据源回调函数,Write 函数指针定义
 
using rm::ServerUserConfig = UA_StatusCode (*)(UA_Server *)
 服务器配置函数指针,由 nodeset_compiler 生成
 
using rm::FindNodeInServer = ::std::tuple<UA_Server *, ::std::string_view, uint16_t>
 目标节点信息(服务端指针、浏览名、命名空间索引)
 
using rm::FindNodeInClient = ::std::tuple<UA_Client *, ::std::string_view, uint16_t>
 目标节点信息(客户端指针、浏览名、命名空间索引)
 

枚举

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

函数

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)
 对象节点:Server 节点 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
 
NodeId rm::operator| (NodeId origin, rm::FindNodeInServer &&fnis)
 服务端路径搜索
 
NodeId rm::operator| (NodeId origin, rm::FindNodeInClient &&fnic)
 客户端路径搜索
 

变量

constexpr UA_Byte rm::typeflag_ns0 []
 DataType 到对应 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:111
std::string browse_name
浏览名称 BrowseName
定义 variable.hpp:123

创建变量,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:36
std::string browse_name
浏览名称 BrowseName
定义 variable.hpp:48

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

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

类型定义说明

◆ DataChangeNotificationCallback

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

#include <rmvl/opcua/client.hpp>

数据变更通知回调函数

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

◆ DataSourceRead

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

#include <rmvl/opcua/server.hpp>

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

参数
[in]server_viewOPC UA 服务器视图,指代当前服务器
[in]nodeid待读取的变量节点的 NodeId
返回
向服务器提供的待读取的变量

◆ DataSourceWrite

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

#include <rmvl/opcua/server.hpp>

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

参数
[in]server_viewOPC UA 服务器视图,指代当前服务器
[in]nodeid待写入的变量节点的 NodeId
[in]value从服务器接收到的变量,一般用于写入外部数据

◆ EventNotificationCallback

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

◆ FindNodeInClient

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

#include <rmvl/opcua/utilities.hpp>

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

◆ FindNodeInServer

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

#include <rmvl/opcua/utilities.hpp>

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

◆ MethodCallback

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

#include <rmvl/opcua/method.hpp>

OPC UA 方法回调函数

参数
[in]server_view服务器视图,指代当前服务器
[in]obj_id方法节点所在对象的 NodeId
[in]args输入参数列表
返回
输出参数列表

◆ ServerUserConfig

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

#include <rmvl/opcua/server.hpp>

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

◆ ValueCallbackAfterWrite

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

#include <rmvl/opcua/server.hpp>

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

参数
[in]server_viewOPC UA 服务器视图,指代当前服务器
[in]nodeid待写入的变量节点的 NodeId
[in]data服务器写入的变量

◆ ValueCallbackBeforeRead

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

#include <rmvl/opcua/server.hpp>

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

参数
[in]server_viewOPC UA 服务器视图,指代当前服务器
[in]node_id待读取的变量节点的 NodeId
[in]value服务器读取到的变量

枚举类型说明

◆ AccessLevel

enum rm::AccessLevel : uint8_t

#include <rmvl/opcua/variable.hpp>

枚举值
VARIABLE_READ 

读权限

VARIABLE_WRITE 

写权限

◆ 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 消息映射的组合,此协议用于 基于代理 的消息传递

函数说明

◆ 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

示例
samples/opcua/opcua_client.cpp.

◆ 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>

对象节点:Server 节点 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

◆ 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

变量说明

◆ 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}

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

  • 例如:typeflag_ns0[UA_TYPES_INT16]UA_NS0ID_INT16