Unknown OPC tags

Tag show up as Unknown on OPC-UA when connected to WinCC
Logs show the following:

(upload://khujCEHWMtaS0c7Uh18O4QLHNDk.png)

The detailed stacktrace on that ‘Error decoding UaResponseMessage’ may be helpful.

java.lang.NegativeArraySizeException: null

at java.lang.reflect.Array.newInstance(Unknown Source)

at org.eclipse.milo.opcua.stack.core.serialization.OpcUaBinaryStreamDecoder.readArray(OpcUaBinaryStreamDecoder.java:671)

at org.eclipse.milo.opcua.stack.core.types.structured.PublishResponse$Codec.decode(PublishResponse.java:118)

at org.eclipse.milo.opcua.stack.core.types.structured.PublishResponse$Codec.decode(PublishResponse.java:103)

at org.eclipse.milo.opcua.stack.core.serialization.codecs.BuiltinDataTypeCodec.decode(BuiltinDataTypeCodec.java:25)

at org.eclipse.milo.opcua.stack.core.serialization.codecs.BuiltinDataTypeCodec.decode(BuiltinDataTypeCodec.java:21)

at org.eclipse.milo.opcua.stack.core.serialization.codecs.GenericDataTypeCodec$GenericBinaryDataTypeCodec.decode(GenericDataTypeCodec.java:49)

at org.eclipse.milo.opcua.stack.core.serialization.OpcUaBinaryStreamDecoder.readMessage(OpcUaBinaryStreamDecoder.java:774)

at org.eclipse.milo.opcua.stack.client.handlers.UaTcpClientMessageHandler$5.onMessageDecoded(UaTcpClientMessageHandler.java:665)

at org.eclipse.milo.opcua.stack.core.channel.ChunkDecoder$AbstractDecoder.decode(ChunkDecoder.java:199)

at org.eclipse.milo.opcua.stack.core.channel.ChunkDecoder.decode(ChunkDecoder.java:83)

at org.eclipse.milo.opcua.stack.core.channel.ChunkDecoder.decodeSymmetric(ChunkDecoder.java:71)

at org.eclipse.milo.opcua.stack.client.handlers.UaTcpClientMessageHandler.lambda$onSecureMessage$10(UaTcpClientMessageHandler.java:629)

at org.eclipse.milo.opcua.stack.core.channel.SerializationQueue.lambda$decode$1(SerializationQueue.java:64)

at org.eclipse.milo.opcua.stack.core.util.ExecutionQueue$PollAndExecute.run(ExecutionQueue.java:107)

at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

at java.util.concurrent.FutureTask.run(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

Here it is: thanks

What version of Ignition (and the OPC-UA module) is this?

Ignition 7.9.11 and OPC-UA is 4.9.11

We might need a Wireshark capture done while this error occurs.

Either this server is returning a negative value that isn’t -1 to indicate a null array or something else has gone very wrong in the decoding and the wrong bytes are being decoded.

It also wouldn’t hurt to upgrade to 7.9.13 and see if that helps anything.

I created a new scan class with OPC Data mode to Read only instead of subscription. The tags are finally to good quality!

This is only a workaround for what seems to be a real issue. If you’re interested in getting to the bottom of this go ahead and follow the previous advice about upgrading and possibly a Wireshark capture.

I upgraded to 7.9.13 - my OPC connection is now faulted.

used: SecurityPolicy: None, MessageSecurity: None: max per node is set to 100

Previously on 7.9.12 the connection wasn’t faulted with this setting. .

Got - UaException: status=Bad_NonceInvalid, message=nonce must be at least 32 bytes
at org.eclipse.milo.opcua.stack.core.util.NonceUtil.validateNonce(NonceUtil.java:176)
at org.eclipse.milo.opcua.stack.core.util.NonceUtil.validateNonce(NonceUtil.java:162)
at org.eclipse.milo.opcua.sdk.client.session.SessionFsmFactory.activateSession(SessionFsmFactory.java:878)
at org.eclipse.milo.opcua.sdk.client.session.SessionFsmFactory.lambda$configureActivatingState$17(SessionFsmFactory.java:345)
at com.digitalpetri.strictmachine.dsl.ActionBuilder$PredicatedTransitionAction.execute(ActionBuilder.java:76)
at com.digitalpetri.strictmachine.StrictMachine$PollAndEvaluate.lambda$run$0(StrictMachine.java:207)
at java.util.ArrayList.forEach(Unknown Source)
at com.digitalpetri.strictmachine.StrictMachine$PollAndEvaluate.run(StrictMachine.java:198)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

7.9.13 (b2019120915)
Oracle Corporation 1.8.0_231

her’es a wireshark capture

This is a known issue with some servers described here: Upgrade 7.9.12 -> 7.9.13 : Opc Connection faulted

If you can switch the connection to use security it should work again, otherwise a downgrade or upgrade to 7.9.14 when it is eventually released will be needed.