Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[milo-dev] Error fetching data from Rockwell OPC UA Server using Eclipse Milo JAva Client

I have built a Java Application to fetch data from OPC UA Server. I have used Eclipse Milo UA Client SDK to build the client. I am facing a problem in OpcUaClient.readValues method. I am passing a list of NodeId created from Tags defined and if I traverse the DataValue array returned by readValues method, I get follwing error for some of the elements

DataValue{value=Variant{value=null}, status=StatusCode{name=Bad_NodeIdUnknown, value=0x80340000, quality=bad},

 

Sudo code looks like

List<NodeId> nodeIds = new ArrayList<NodeId>();

List<Parameter> parameters = device.getParameters();

for (int i = 0; i < parameters.size(); i++) {

    Parameter parameter = parameters.get(i);

                           

    nodeIds.add(new NodeId(device.getNsID(),  parameter.getTagName()));

                           

}

List<DataValue> values = client.readValues( 0.0, TimestampsToReturn.Both, nodeIds).get();

for (int i = 0; i < values .size(); i++) {

    DataValue dvalue = values.get(i);

    if( dvalue.getValue().getValue() != null) {

        Integer intValue =  (Integer) values.get(i).getValue().getValue();

                           

        logger.info("captured Value is  {}", value);

                                       

    }

    else

    {

       logger.error("Error fetching value for {} , {}", parameter.getName(),dvalue.toString());

    }

}

The error is flagged from else clause.

My application is running on a separate computer than the SCADA Server ( OPC UA). A peculiar behavior observed is , If I use ProSys Client to check value of failing tag, and if I re-run my application, data is fetched correctly. I am completely clueless about how ProSys client and my application is related. Is prosys client triggering something on the server side to load the tags in some cache... Any clues/pointers will help. Thanks in advance.

 


Back to the top