I’m trying to connect Ignition 8.0.4RC1 to the TANI OPC-UA server and get an exception. The server runs on the same machine as the Ignition 8 gateway.
A remote 7.9 gateway is connected to the same server and works without problems.
Any ideas what might be causing this?
UaException: status=Bad_ContinuationPointInvalid, message=The continuation point provide is longer valid.
at com.inductiveautomation.ignition.gateway.opcua.client.connection.DataTypeTree$Companion.browse(DataTypeTree.kt:266)
at com.inductiveautomation.ignition.gateway.opcua.client.connection.DataTypeTree$Companion$browse$1.invokeSuspend(DataTypeTree.kt)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(Dispatched.kt:241)
at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:594)
at kotlinx.coroutines.scheduling.CoroutineScheduler.access$runSafely(CoroutineScheduler.kt:60)
at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:740)
here is the Wireshark capture. The connection to this server worked in 7.9 and 8.0.3. The problem emerged with version 8.0.4rc, the capture is from 8.0.4. opcua.zip (52.6 KB)
This looks like a bug in the server to me. It’s returning Bad_ContinuationPointInvalid in the BrowseResult of a response to a regular BrowseRequest, which doesn’t even make any sense.
I’ll have to look into what might have changed between 8.0.3 and 8.0.4-rc though.
A restart had no effect. The problem is reproduceable on two seperate systems.
I added another capture from a working Ignition 7.9 connection. When you look a the BrowseResponse with Request Id 173, the servers answer is the same. It looks like the client ignored this exception in versions prior 8.0.3rc. opcua_ok_7_9.zip (23.9 KB)
Yes, it looks like as part of a change related to browsing datatypes the StatusCode of the BrowseResult started being checked, where previously it was ignored. I can probably revert to the more lenient behavior in an upcoming 8.0.5 nightly.
Can you report this to the server vendor as well? This is definitely a bug in the server.
Ignition 7.9.12+ and 8.0.0+ will browse all the DataTypes to construct a tree, which it then uses to support aliased datatypes.
It’s become common in the servers embedded on PLCs to use alias datatypes, i.e. instead of using an OPC UA Int16 they make an alias type to INT or whatever the native equivalent is. Without building this tree it’s not possible for the Ignition client to resolve these aliases into their actual underlying type.
Older versions of Ignition could read tags with aliased datatypes but not write to them. They would also not get the correct tag type set when you dragged them into Ignition.