我正在尝试使用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命令运行时没有错误,但值永远不会改变。 有人可以帮助我吗?
答案 0 :(得分:0)
您将“0”定义为IndexRange(WriteValue的第3个参数)。我相信,你有一个标量变量,所以你应该只使用null。
您还需要检查响应以确定是否成功。
E:write参数必须与Variable节点的DataType匹配。