0

我尝试编写 String 和 LocalizedText (服务器中使用的两种主要数据类型),我没有收到错误,但是当我在调用后一秒钟再次读取节点时,没有任何改变(而且我没有看到使用 OPC 检查器时的新值)我的 writeOpcValue 函数非常简单,并且基于 milo 提供的函数:

/*Writes a String to the nodeId given as parameter*/
public void writeOpcValue(OpcUaClient client, NodeId nodeId, String value, boolean logValue)
{        
    //client.writeValue(nodeId, DataValue.valueOnly(new Variant(value)));
    VariableNode node = client.getAddressSpace().createVariableNode(nodeId);
    node.writeValue(DataValue.valueOnly(new Variant(value)));
    if (logValue)
        logger.info("Wrote {} to nodeId {}", value, nodeId);
}

第一行被注释掉,因为我尝试了两种方式,但没有任何改变。当我将此功能与我自己的示例服务器一起使用时,它工作得非常好,但在“真实”服务器上却没有。我做错了什么还是应该在服务器端做些什么?需要注意的是,我无法访问服务器的代码或命名空间,实际上它甚至不是用 Java 编写的,到目前为止还没有造成任何问题。也许这些节点是只读的?在那种情况下,我希望在某处看到异常或错误。

提前感谢您的帮助

4

1 回答 1

1

您至少应该检查writeValue调用返回的 StatusCode 是否告诉您任何有用的信息,而不是忽略它。

于 2019-01-28T18:28:18.513 回答