'REFERENCE_NOT_FOUND' in UDT Instance on first execution

Hello,

i encountered a problem when using DataType’s with a driven ScanClass. On first execution of the ScanClass, Instance tags fail with ‘REFERENCE_NOT_FOUND’. Subsequent triggers work as expected.
If Tags are ‘chained’ in the DataType using expressions, there is an additional ScanClass execution necessary to get the second tag working.
Here are some screenshots of a simple project to reproduce the issue, i can also post a backup, if this is helpful.
The tags in the DataType use a driven ScanClass, driven by any change of tag ‘Trigger’.
Ignition version is 7.5.2.

I hope there is an easy solution for this, i need to log data reliable starting from the first trigger.

Thank’s for your help.








Hi,

I’ll have to look into this- as long as everything is in the same scan class, they references should execute each other. The reference_not_found quality is the default quality for a reference, until it successfully executes, leading me to believe that for some reason the parent expression thinks the reference is in a different scan class or something, and thus doesn’t execute it. The scan class finally executes it, so the value is available on the next cycle.

I’ll try to mock it up today and see.

Regards,

I just realized the this has nothing to do with UDTs. It happens in fact to any expression item, also to such used in a Transaction Group. In complex expression it causes a ‘Type Conversion Error’ instead of ‘Reference Not Found’.

I have been trying to replicate this issue with little success. Any chance you could upload a gateway backup to this thread?

Here is the backup. I had some problems uploading the file, so used 7Zip to split it in two parts. Remove the .zip ending to unpack (Borad does not accept files with .001 / .002).

The backup is from 7.5.2, running on a VM under Windows XP. I can reproduce the problem on a second installation and also on the licensed production system (There it blocks the ‘Does the server handle restarts without dataloss’ check).
My system language is de_DE.

Let me know if i can do anything else to help.
Ignition-backup-20120918-2128.zip.002.zip (4.29 MB)
Ignition-backup-20120918-2128.zip.001.zip (5 MB)

A little additional info: I set the ScanClass to LogLevel ‘All’ and got some warnings. I’m not sure what happend on ‘Sun Aug 17 08:12:55’…

INFO   | jvm 1    | 2012/09/18 22:38:10 | WARN  [ScanClass[Triggered]          ] [22:38:10,142]: Received a lease expiration that was older than the previous, will not apply - Sun Aug 17 08:12:55 CET 292278994 (9223372036854775807)
INFO   | jvm 1    | 2012/09/18 22:38:14 | WARN  [ScanClass[Triggered]          ] [22:38:14,718]: Received a lease expiration that was older than the previous, will not apply - Sun Aug 17 08:12:55 CET 292278994 (9223372036854775807)
INFO   | jvm 1    | 2012/09/18 22:38:14 | WARN  [ScanClass[Triggered]          ] [22:38:14,728]: Received a lease expiration that was older than the previous, will not apply - Sun Aug 17 08:12:55 CET 292278994 (9223372036854775807)
INFO   | jvm 1    | 2012/09/18 22:38:14 | WARN  [ScanClass[Triggered]          ] [22:38:14,728]: Received a lease expiration that was older than the previous, will not apply - Sun Aug 17 08:12:55 CET 292278994 (9223372036854775807)
INFO   | jvm 1    | 2012/09/18 22:38:14 | WARN  [ScanClass[Triggered]          ] [22:38:14,728]: Received a lease expiration that was older than the previous, will not apply - Sun Aug 17 08:12:55 CET 292278994 (9223372036854775807)
INFO   | jvm 1    | 2012/09/18 22:38:21 | DEBUG [ScanClass[Triggered]          ] [22:38:21,107]: Scan class 'Triggered' executing.
INFO   | jvm 1    | 2012/09/18 22:38:21 | TRACE [ScanClass[Triggered]          ] [22:38:21,107]: Setting the current rate to 1000. Existing rate is 1000. If equal, no changes will be made
INFO   | jvm 1    | 2012/09/18 22:38:21 | WARN  [ScanClass[Triggered]          ] [22:38:21,107]: Received a lease expiration that was older than the previous, will not apply - Sun Aug 17 08:12:55 CET 292278994 (9223372036854775807)
INFO   | jvm 1    | 2012/09/18 22:38:21 | WARN  [ScanClass[Triggered]          ] [22:38:21,107]: Received a lease expiration that was older than the previous, will not apply - Sun Aug 17 08:12:55 CET 292278994 (9223372036854775807)
INFO   | jvm 1    | 2012/09/18 22:38:25 | DEBUG [ScanClass[Triggered]          ] [22:38:24,993]: Scan class 'Triggered' executing.
INFO   | jvm 1    | 2012/09/18 22:38:25 | TRACE [ScanClass[Triggered]          ] [22:38:24,993]: Setting the current rate to 1000. Existing rate is 1000. If equal, no changes will be made
INFO   | jvm 1    | 2012/09/18 22:38:28 | DEBUG [ScanClass[Triggered]          ] [22:38:28,798]: Scan class 'Triggered' executing.
INFO   | jvm 1    | 2012/09/18 22:38:28 | TRACE [ScanClass[Triggered]          ] [22:38:28,808]: Setting the current rate to 1000. Existing rate is 1000. If equal, no changes will be made
INFO   | jvm 1    | 2012/09/18 22:38:33 | DEBUG [ScanClass[Triggered]          ] [22:38:33,345]: Scan class 'Triggered' executing.
INFO   | jvm 1    | 2012/09/18 22:38:33 | TRACE [ScanClass[Triggered]          ] [22:38:33,345]: Setting the current rate to 1000. Existing rate is 1000. If equal, no changes will be made

Hi,

Thanks for the backup, we were able to quickly replicate it and track it down. Basically, it goes like this: references were subscribed on first execution of a tag. Depending on how quickly the subscription update was received, and the order of the tag execution, it sometimes might be lined up for the first exec, otherwise it would come through on the next one.

We’ve fixed it so that the tag reference is always in place (assuming the tag exists) for the first execution, and that the order of the execution doesn’t matter, because if they’re in the same scan class, the referencing tag will first cause the referenced tag to execute.

This will be available in the first 7.5.4 beta.

Regards,

Thank you, that’s good news.

I just checked 7.5.4 beta 1. Good news is that SQLTags are ok now, but it still happens for triggered expression items in a transaction group, if the expression references an SQLTag.
Let me now if you need another demo project to reproduce this, i will try to put something together then.

If you could get a project together, that would be great. It’s definitely the quickest way for us to see what is wrong.