客户端无法写入外部服务器的节点

时间:2019-01-28 16:01:13

标签: opc-ua milo

我尝试同时写入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编写的,到目前为止,这还没有引起任何问题。 也许那些节点是只读的?在那种情况下,我希望在某处会看到异常或错误。

在此先感谢您的帮助

1 个答案:

答案 0 :(得分:1)

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