Hello,
I am using the Ignition maker edition to connect to an OPC DA server tunnelled through Matrikon OPC Tunneller. The connection is established just fine, and things generally work aside from two small issues:
If I add tags through the tag browser, by expanding the tree until I get to to where I want and then dragging it to the right side, the tag is added fine and will read with no issues.
If I then duplicate it, and change a single character in the OPC path (EG, CT001 to CT002) every single tag value I have will go to bad. I know the paths are correct, it's literally the same as I would get when I add it manually through the browser (as opposed to just duplicating and changing the OPC item path property). The only way to get the system to normalize after this is to delete all added tags through the tag browser, then restart both the tunneller service and Ignition service.
If I import tags via json or xml, the same thing happens. Seems like the only way to add tags into the project is to browse through them one by one. I have about 140 to configure, and possibly more in the future - this will take forever.
Another issue is that when browsing certain folders, I get the following error: "com.inductiveautomation.ignition.client.gateway_interface.GatewayException: Read timed out"
So there are tags that I cannot browse to because of a timeout, or add manually through their path because that destroys all the tags in the project.
I'm really hoping someone has faced this before and has some sort of insight, as I am lost in what else to try. I've played with the timeouts, the Matrikon tunneller logs reveal nothing. Here is an example of what I would see in the Ignition Gateway logs for the failed browse and when the tags all go bust:
Datatypetree error:
Browsing failed: BrowseDescription(nodeId=NodeId{ns=0, id=24}, browseDirection=Forward, referenceTypeId=NodeId{ns=0, id=45}, includeSubtypes=false, nodeClassMask=64, resultMask=63)
org.eclipse.milo.opcua.stack.core.UaException: requestId=256 timed out after 60000ms
at org.eclipse.milo.opcua.stack.client.transport.AbstractTransport.lambda$scheduleRequestTimeout$7(AbstractTransport.java:137)
at io.netty.util.HashedWheelTimer$HashedWheelTimeout.run(HashedWheelTimer.java:713)
at io.netty.util.concurrent.ImmediateExecutor.execute(ImmediateExecutor.java:34)
at io.netty.util.HashedWheelTimer$HashedWheelTimeout.expire(HashedWheelTimer.java:701)
at io.netty.util.HashedWheelTimer$HashedWheelBucket.expireTimeouts(HashedWheelTimer.java:788)
at io.netty.util.HashedWheelTimer$Worker.run(HashedWheelTimer.java:501)
at java.base/java.lang.Thread.run(Unknown Source)
For when the OPC totally breaks:
java.lang.Exception: session inactive: id=NodeId{ns=4, id=481771174} name=ignition[Ignition-CUBILLOS-HIS]_Experion PKS SA RDM_1731323338680
at com.inductiveautomation.ignition.gateway.opcua.client.connection.OpcUaConnection$MiloSessionActivityListener.onSessionInactive(OpcUaConnection.kt:499)
at org.eclipse.milo.opcua.sdk.client.session.SessionFsmFactory.lambda$null$39(SessionFsmFactory.java:611)
at java.base/java.util.concurrent.CopyOnWriteArrayList.forEach(Unknown Source)
at org.eclipse.milo.opcua.sdk.client.session.SessionFsmFactory.lambda$configureActiveState$40(SessionFsmFactory.java:611)
at com.digitalpetri.strictmachine.dsl.ActionBuilder$PredicatedTransitionAction.execute(ActionBuilder.java:119)
at com.digitalpetri.strictmachine.StrictMachine$PollAndEvaluate.lambda$run$0(StrictMachine.java:242)
at java.base/java.util.ArrayList.forEach(Unknown Source)
at com.digitalpetri.strictmachine.StrictMachine$PollAndEvaluate.run(StrictMachine.java:227)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)