我正在尝试使用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命令运行时没有错误,但值永远不会更改。有人能帮帮我吗?
发布于 2013-12-11 18:25:02
您正在将"0“定义为IndexRange (WriteValue的第三个参数)。我相信,你有一个标量变量,所以你应该只使用null。
此外,您还需要检查响应以实际查看它是否成功。
E:写参数必须与变量节点的DataType匹配。
https://stackoverflow.com/questions/20516028
复制相似问题