Intro
At ICC, we announced that, in the 8.1.34 release, a new tool to identify what resource in Ignition is utilizing different tags would be released; a feature we call the Tag Reference Tracker. The code for this long awaited feature has been merged and will be available in the nightly build starting the morning of 10/26/2023. The original request for this feature was created a little over 9 years ago and there were multiple variations of what people were looking for this feature to be. We had many starts and stops along the way trying to find a solution that resolves the underlying problems mentioned in that feature request, we hope that what we delivered meets your expectations.How it works
The Tag Reference Tracker functionality consists of the following:-
A SQLite database per tag provider that keeps track of the following:
- A Tag Path
- A Unique Location that is accessing a specific tag path
- The timestamp it was last accessed by the resource
- How it was accessed: We track Subscriptions, Reads, Writes and Configuration changes
- The number of times the resource has accessed the tag in that manner
There can be many rows per tag path depending on the usage throughout your Ignition projects, but there should only be 1 row per type of interaction with the tag where the count is updated for each use. These databases are created in the
${IGNITION_HOME}/data/diagnostics/tags/
directory. -
New Tag Diagnostics dialog in the Designer
- Tag diagnostics has been moved out of the Tag Editor, and can be accessed via the
View Tag Diagnostics
option in the right-click context menu on a tag: - New
Active Subscriptions
tab: A new tab that will show you what resources have an active subscription to the tag you are viewing Diagnostics for. Double clicking on an entry will take you to the resource subscribed to the tag.: - New
Reference Log
tab: This will show historical interactions with the tag including non-subscription interactions. For example, should something like a Perspective View or a Transaction group read a value or write to a tag as part of its workflow, the reference will be reported here if the Tag Reference Tracker store is enabled for the provider. Double clicking on an entry will take you to the resource noted as performing an action on the tag.
- Tag diagnostics has been moved out of the Tag Editor, and can be accessed via the
A couple things to note:
- New Gateways and newly created realtime providers will have the SQLite storage options enabled by default.
- On upgrade the option to store to the SQLite database is disabled. Depending on the type of provider in use, it can be enabled in the following areas:
- Realtime providers (any provider listed on the
Config > Tags > Realtime
screen on the Gateway): Config > Tags > Realtime > {Provider} edit > Advanced > Enable Tag Reference Tracker Store - Non Realtime providers (System provider, 3rd Parties): Config > Gateway Settings > Enable Tag Reference Tracker Store. This is a global setting that enables storage for all 3rd Party Managed Tag Providers.
- Realtime providers (any provider listed on the
- SQLite entries are created on the Gateway the resources are accessing a tag from:
- If a provider is being used remotely, you will see that the remote provider is using the tag but you would need to look at the
Reference Log
in a Designer on the remote provider to get any details about the resources using the tag. - In a Gateway setup where redundancy is in play, each gateway will have a unique SQLite database and the entries are not consolidated. As the backup cannot be accessed via a Designer, the only way to get information from a backup is directly interacting with the db.
- If a provider is being used remotely, you will see that the remote provider is using the tag but you would need to look at the
Performance Considerations
-
CPU Usage: On our Performance test runs of 10 Gateways setup with 100,000 tags in a remote provider configuration, we saw ~3% increase in CPU usage.
-
Disk Space: The SQLite DBs that are created are not tiny. For a 1 million tag provider, the size the SQLite database was ~750MB. We encourage you to turn on Providers one at a time and monitor how it affects your disk space. The tag diagnostics information is not included in any Ignition backups.
-
In our testing we have found that we can handle ~125k writes/sec to the SQLite DB. This is a non-blocking action and Ignition should be able to recover if there are a flurry of changes above the threshold, but sustained levels of activity above the threshold should be avoided.
Limitations
-
Scripting: When you are running a Jython script within Ignition, it is a compiled version of the script. Because of this, we will only be able to provide a reference to what called the script, not the script itself.
-
Vision and Designer references: Because our swing clients offload a lot of work from the gateway, they make remote procedure calls that request data but don't give any context for how it is used. While we will note if a Designer or Vision Client made a reference to a tag, we cannot provide insight into what Vision/Designer resource made the interaction.
-
Perspective Embedded views: We will be able to provide information on the embedded view that directly made the change, but we don't have a way to show information on the calling view that might have passed parameters in.
As always, we appreciate any feedback you may have.
Thanks,
Garth