The latest firmware for Cognex In-Sight cameras (5.80) includes an on-sensor OPC server. I configured the OPC server in Ignition (8.06 I believe) and had it working. I’ve since upgraded to the latest 8.08 nightly and now I get an error in Ignition when it tries to connect. The full error is below. In searching the forums, I see where someone had received this same error when upgrading between 7.9.12 and 7.9.13. The resolution there was to enable security (signing). I’ve tried all combinations of the signing settings, but the connection is always refused. I am going to try downgrading back to 8.06 this morning, but I figured I submit this ahead of time. Any help would be appreciated.
Error text:
"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.lambda$activateSession$50(SessionFsmFactory.java:904)
at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture.postComplete(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture.complete(Unknown Source)
at org.eclipse.milo.opcua.stack.client.UaStackClient.lambda$deliverResponse$5(UaStackClient.java:254)
at org.eclipse.milo.opcua.stack.core.util.ExecutionQueue$Task.run(ExecutionQueue.java:119)
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)
Are you sure you’re seeing this same error message when enabling security and not something else? There’s a couple more steps to setting up a connection with security because generally both sides need to then mark the certificates as trusted.
It’s a very rudimentary server, being part of the camera’s firmware. There are no options I’ve found yet to enable or configure security on the OPC server side; I have reached out to Cognex as well to see if there’s anything I can do from that side. The error in Ignition does change to an unable to connect error (invalid endpoint, I think) when enabling security. As an additional note, when I have security disabled, I do see the connection as an actively connected in the camera (they have a status page).
One final FYI: I tried downgrading to 8.0.7 with the same result of not being able to connect. I then downgraded to 8.0.6 and I am able to connect to the camera’s OPC server again.
Cognex has confirmed that they have not implemented security in this first go-around of the on-sensor OPC server. While it is on their future feature list, there is no timetable for implementation.
Probably need to stay on 8.0.6 until I’m able to get the relaxed nonce validations mentioned in the other post into a nightly release, hopefully next week sometime.