这是一个例子。
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"通过设置浏览名称?。
因为西门子OPC服务器可以通过设置浏览名称来读取每个元素。
它的浏览名称可以像AxisNameList [u1,1]一样设置为读取数组{1},而它的配置只浏览一个节点,如" AxisNameList"节点
如果我发布此路径" AxisNameList",它将通过请求数组[0]数据。
如果我发布此路径" AxisNameList [u1,1]",它将按请求数组[1]数据。
如果我想实现此功能,如何修改我的OPC UA服务器?
答案 0 :(得分:0)
OPC UA规范第4部分
5.10.2阅读服务 Read Service的参数定义如下
nodesToRead []的类型是ReadValueId, 其定义如下
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;
};