Ignition did not publish acknowledgement for opc subscription

For our application we have a opcua server written with asyncua . The ignition server is subscribing to a heart beat tag which updated by the asyncua server every second.

On the opcua side, I found that there is one subscription missing acknowledgement. The wireshark shows that subscriptionID 128 is missing acknowledgement.

However if I change the tag’s subscription mode from subscribed to polled and back to subscribed. The asyncua server started to receive proper acknowledgement. Below is the output from asyncua.

[asyncua.server.subscription_service][INFO] 2022-01-18 17:22:32,215: publish request with acks [SubscriptionAcknowledgement(SubscriptionId=128, SequenceNumber=859)]
[asyncua.server.subscription_service][INFO] 2022-01-18 17:22:32,215: publish request with acks [SubscriptionAcknowledgement(SubscriptionId=129, SequenceNumber=14647)]
[asyncua.server.subscription_service][INFO] 2022-01-18 17:22:33,220: publish request with acks [SubscriptionAcknowledgement(SubscriptionId=128, SequenceNumber=860)]
[asyncua.server.subscription_service][INFO] 2022-01-18 17:22:33,221: publish request with acks [SubscriptionAcknowledgement(SubscriptionId=129, SequenceNumber=14648)]
[asyncua.server.subscription_service][INFO] 2022-01-18 17:22:34,226: publish request with acks [SubscriptionAcknowledgement(SubscriptionId=128, SequenceNumber=861)]
[asyncua.server.subscription_service][INFO] 2022-01-18 17:22:34,227: publish request with acks [SubscriptionAcknowledgement(SubscriptionId=129, SequenceNumber=14649)]
[asyncua.server.subscription_service][INFO] 2022-01-18 17:22:35,232: publish request with acks [SubscriptionAcknowledgement(SubscriptionId=128, SequenceNumber=862)]
[asyncua.server.subscription_service][INFO] 2022-01-18 17:22:35,233: publish request with acks [SubscriptionAcknowledgement(SubscriptionId=129, SequenceNumber=14650)]
[asyncua.server.subscription_service][INFO] 2022-01-18 17:22:36,239: publish request with acks [SubscriptionAcknowledgement(SubscriptionId=128, SequenceNumber=863)]
[asyncua.server.subscription_service][INFO] 2022-01-18 17:22:36,240: publish request with acks [SubscriptionAcknowledgement(SubscriptionId=129, SequenceNumber=14651)]
[asyncua.server.subscription_service][INFO] 2022-01-18 17:22:37,243: publish request with acks [SubscriptionAcknowledgement(SubscriptionId=128, SequenceNumber=864)]
[asyncua.server.subscription_service][INFO] 2022-01-18 17:22:37,244: publish request with acks [SubscriptionAcknowledgement(SubscriptionId=129, SequenceNumber=14652)]
[asyncua.server.subscription_service][INFO] 2022-01-18 17:22:38,250: publish request with acks [SubscriptionAcknowledgement(SubscriptionId=128, SequenceNumber=865)]
[asyncua.server.subscription_service][INFO] 2022-01-18 17:22:38,252: publish request with acks [SubscriptionAcknowledgement(SubscriptionId=129, SequenceNumber=14653)]

Can I get some help on this issue. What could be the reason that ignition server has the tag updated but not sending acknowledgements.

What version of Ignition are you using and is Ignition acting as client or server? You referred to them both as server in your post.

Please upload the captures as well so I don’t have to look at screenshots.

Thanks Kevin, to answer your question, I am using ignition as a client for this case. The ignition we are using have version:8.0.9

It would not let me upload the attachment because I am a new user so I attached a google drive link.

I’m not sure I understand or see the issue you’re describing.

In the capture you provided all of the PublishResponse messages for SubscriptionId=128 are keep alives (empty notification data). There’s no reason to expect an acknowledge for these.

Thanks Kevin, but with the same configuration on the ignition after I change the tag’s subscription mode from subscribed to polled and back to subscribed. I have received request with acknowledgement and non empty notification data. I have attached another dump for you to compare. Do you know what could cause the difference here?

Sounds like your server stopped sending change notifications until you forced a new subscription to be made.

Thanks Kevin for your valuable feedback. I would ask another question in order to investigate issue on my server side. Is it possible to find the corresponding node (tag on ignition) given the subscription ID?

Not directly, it’s really the monitored item(s) in a subscription that correspond to a tag in Ignition. The subscriptions correspond to a Tag Group with tags belonging to that server in Ignition.

I think if you look at the client-side OPC diagnostics in the Ignition gateway you can see the subscriptions and tags belonging to those subscriptions, though. It looks like you only have 2 subscriptions and possibly only 1 tag in this one…

Another thing that may help is to do a long-running Wireshark capture into a rolling file buffer. You’ll have get your pre-filtering set up correctly so you don’t end up with another 500mb capture that has <100 packets of OPC traffic, though. I’d disable the connection, start the capture, then enable the connection and leave the capture going for hours/days/whatever it takes until the tag stops updating or whatever it is you notice.

1 Like

Thanks for explaining, I have setup a capture with circular buffer and hope to get more information.

At the same time I found we have two subscription tag groups. There should be more tags are subscribed since there are 400+ nodes under these tag groups. Are those tag groups correspond to the group with subscription id= 128 and group with subscription id=129?

Is there any way to get at this info from ignition 7.9.21? We have some subscriptions timing out and leaving subscriptionId values in the gateway logs. I wrote a webdev endpoint that gets the SRContext and the OPCManager but I haven't found a good way to look up the subscription by the Id in the logs yet...