【问题标题】:Write a value with OPC UA Java (OPC Foundation)使用 OPC UA Java (OPC Foundation) 写入值
【发布时间】:2013-12-11 10:00:45
【问题描述】:

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

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

【问题讨论】:

    标签: java simulation opc scada opc-ua


    【解决方案1】:

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

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

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

    【讨论】:

    • 我把它改成了null,值没变,响应是:WriteResponse (id=1474131049) ResponseHeader=ResponseHeader (id=676105376) ServiceDiagnostics=DiagnosticInfo (id=967078155)localizedText=null locale= null innerDiagnosticInfo=null symbolicId=null innerStatusCode=null additionalInfo=null stringTable=null stringArray=class java.lang.String[0] namespaceUri=null StringTable=class java.lang.String[0]
    • RequestHandle=UnsignedInteger (id=1526310589) value=1 Timestamp=DateTime (id=1925333515) value=130393207472672000 AdditionalHeader=null ServiceResult=StatusCode (id=2163771) value=0 DiagnosticInfos=class org.opcfoundation .ua.builtintypes.DiagnosticInfo[0] Results=class org.opcfoundation.ua.builtintypes.StatusCode[1] [0]=StatusCode (id=2006760845) value=-2139881472
    • 最好将 StatusCodes 打印为字符串:它会告诉您实际代码,例如response.getResults()[0]
    • 这对我来说确实更有意义:Bad_TypeMismatch (0x80740000) “为属性提供的值与属性值的类型不同。”现在看看我该如何解决这个问题。
    • 您需要找到您正在写入的节点的 DataType 并提供相应的值。 UA不允许服务器自动转换数据类型。
    猜你喜欢
    • 1970-01-01
    • 2017-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 2023-02-09
    • 1970-01-01
    相关资源
    最近更新 更多