使用OPC UA Java(OPC Foundation)编写值

时间:2013-12-11 10:00:45

标签: java simulation opc scada opc-ua

我正在尝试使用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);

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

1 个答案:

答案 0 :(得分:0)

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

您还需要检查响应以确定是否成功。

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