OPC UA 通过具有路径的节点读取字符串 [] 数据类型
OPC UA Read string[] data type by nodes with path
这是一个例子。
Node Path = "Tool/Manager/Name"
Node data Type = "string"
数据为 "Jone"
当我使用nodesToRead.Add(new NodeId(path, 6));
是工作!
但是,如果我将节点数据更改为 string[]{"Jone","Peter","Himari"}
当我使用nodesToRead.Add(new NodeId(path, 6))
时,它return一个System.string[]
。我需要使用一些方法来获取 string[0] 数据。
如何仅通过节点路径读取 "Jone" 而无需执行某些方法来获取 "Jone"?
这是用Softing(软件)读取我的服务器。它读取一个数组类型。 {AA,NN,CC}
我想知道如何通过设置浏览名称来读取每个元素?
示例:仅通过设置浏览名称读取 "AA"?
enter image description here
因为Siemens OPC Server 可以通过设置Browse Name 读取每个元素。
它的Browse Name可以像AxisNameList[u1,1]这样设置读取数组{1},它的Configuration像"AxisNameList" Node.
只浏览一个节点
如果我发布此路径 "AxisNameList",它将通过请求数组 [0] 数据。
如果我发布此路径 "AxisNameList[u1,1]",它将通过请求数组 [1] 数据。
如果我想实现这个功能,我该如何修改我的OPC UA服务器?
OPC UA 规范第 4 部分
5.10.2 读取服务
读取服务的参数定义如下
Read Service Parameters
nodesToRead[]的类型是ReadValueId,
定义如下
ReadValueId DataType
indexRange是你需要的参数。
因此,OPC UA 支持读取数组的单个元素。
但是不知道你们的SDK支持不支持
这里是我用的sdk中readparameters的数据类型
struct ReadParameters
{
double MaxAge;
OpcUa::TimestampsToReturn TimestampsToReturn;
std::vector<OpcUa::ReadValueId> AttributesToRead;
ReadParameters();
};
struct ReadValueId
{
OpcUa::NodeId NodeId;
OpcUa::AttributeId AttributeId;
std::string IndexRange;
OpcUa::QualifiedName DataEncoding;
};
这是一个例子。
Node Path = "Tool/Manager/Name"
Node data Type = "string"
数据为 "Jone"
当我使用nodesToRead.Add(new NodeId(path, 6));
是工作!
但是,如果我将节点数据更改为 string[]{"Jone","Peter","Himari"}
当我使用nodesToRead.Add(new NodeId(path, 6))
时,它return一个System.string[]
。我需要使用一些方法来获取 string[0] 数据。
如何仅通过节点路径读取 "Jone" 而无需执行某些方法来获取 "Jone"?
这是用Softing(软件)读取我的服务器。它读取一个数组类型。 {AA,NN,CC}
我想知道如何通过设置浏览名称来读取每个元素?
示例:仅通过设置浏览名称读取 "AA"?
enter image description here
因为Siemens OPC Server 可以通过设置Browse Name 读取每个元素。
它的Browse Name可以像AxisNameList[u1,1]这样设置读取数组{1},它的Configuration像"AxisNameList" Node.
只浏览一个节点如果我发布此路径 "AxisNameList",它将通过请求数组 [0] 数据。
如果我发布此路径 "AxisNameList[u1,1]",它将通过请求数组 [1] 数据。
如果我想实现这个功能,我该如何修改我的OPC UA服务器?
OPC UA 规范第 4 部分
5.10.2 读取服务 读取服务的参数定义如下
Read Service Parameters
nodesToRead[]的类型是ReadValueId, 定义如下
ReadValueId DataType
indexRange是你需要的参数。
因此,OPC UA 支持读取数组的单个元素。 但是不知道你们的SDK支持不支持
这里是我用的sdk中readparameters的数据类型
struct ReadParameters
{
double MaxAge;
OpcUa::TimestampsToReturn TimestampsToReturn;
std::vector<OpcUa::ReadValueId> AttributesToRead;
ReadParameters();
};
struct ReadValueId
{
OpcUa::NodeId NodeId;
OpcUa::AttributeId AttributeId;
std::string IndexRange;
OpcUa::QualifiedName DataEncoding;
};