0

我正在尝试使用 OPC Foundation 的 OPC UA java 堆栈连接到远程环境。读取值工作正常,因为我正在使用以下代码:

NodeId nodeId= NodeId.get(IdType.String, 2, "TYPES!M!MULTIPLYER!MU_79.MULTIPLYER_BIAS");
ReadResponse res = mySessionChannel.Read(null, 500.0, TimestampsToReturn.Source, new ReadValueId(nodeId, Attributes.Value, null, null));

现在我正在尝试使用 write 命令来设置这个(输入)变量,如下所示:

NodeId nodeId = NodeId.get(IdType.String, 2, "TYPES!M!MULTIPLYER!MU_79.MULTIPLYER_BIAS");
DataValue dataValue = new DataValue(new Variant(999));
WriteValue writeValue[] = new WriteValue[1];
writeValue[0] = new WriteValue(nodeId, Attributes.Value, "0", dataValue);

RequestHeader requestHeader = new RequestHeader(nodeId, null, null, null, null, null, null);
WriteRequest writeRequest = new WriteRequest(requestHeader, writeValue);
WriteResponse response = mySessionChannel.Write(writeRequest);

写命令运行没有错误,但值永远不会改变。有人可以帮帮我吗?

4

1 回答 1

0

您将“0”定义为 IndexRange(WriteValue 的第三个参数)。我相信,你有一个标量变量,所以你应该只使用 null 来代替。

您还需要检查响应以实际查看它是否成功。

E:write参数必须与Variable节点的DataType匹配。

于 2013-12-11T10:25:01.723 回答