OPC UA按路径节点读取string []数据类型

时间:2017-03-29 08:54:02

标签: java c# client opc opc-ua

这是一个例子。

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))时,它会返回System.string[]。我需要使用一些方法来获取string [0]数据。

我如何阅读" Jone"仅通过节点路径而不做一些方法来获得" Jone"?

这是使用Softing(软件)来读取我的服务器。它读取数组类型。 {AA,NN,CC}

我想知道如何通过设置浏览名称来阅读每个元素?

示例:仅读取" AA"通过设置浏览名称?。

enter image description here

因为西门子OPC服务器可以通过设置浏览名称来读取每个元素。

它的浏览名称可以像AxisNameList [u1,1]一样设置为读取数组{1},而它的配置只浏览一个节点,如" AxisNameList"节点

如果我发布此路径" AxisNameList",它将通过请求数组[0]数据。

如果我发布此路径" AxisNameList [u1,1]",它将按请求数组[1]数据。

如果我想实现此功能,如何修改我的OPC UA服务器?

1 个答案:

答案 0 :(得分:0)

OPC UA规范第4部分

5.10.2阅读服务 Read Service的参数定义如下

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