Recommendation on UDTs to Transaction Groups

I’m looking for a configuration recommendation.

I have a UDT definition that effectively represents a row in a SQL table for some telemetry. The udt has a ‘trigger/enabled’ bool, two identifiers, and a value tag.

Since I want the UDTs to trigger for recording at different times, is there a more efficient way to record the data for each UDT than a separate transaction group for each one? (Which could in theory be thousands?)
Some UDTs will need to record on a continuous scan frequency while that UDTs trigger bit is enabled and others may only record by value change (while triggered).

One thought I had was to use block transaction groups and configure each udt as a ‘row’ in the block then record the data at some fixed frequency and let the database side figure out which rows have enabled = true (or enabled and value changed). The management of adding all the udt items to the block definition, and ensuring all the ‘row’ tags are properly lined up in the block is fairly clunky though… I suppose I could script modify and load XML.

I wouldn't use transaction groups at all. Tag change event scripts for the triggers, and a single timer event that would read and process all the enabled UDTs in one bulk operation.

1 Like

Hi Phil, Thanks for the speedy reply! So, I map all the pertinent UDTs into a single tag read script per timer? Any concern if (hypothetically) there are a few thousand enabled at any given time and scanning at say 500ms? Also, is the best ignition pathway to ingest that to the db since it wouldn’t be utilizing the sql bridge constructs just a system.db.runPrep?

You probably want to not create tags for all of the process values, but use system.opc.readValues() to only create PLC traffic on demand. Thousands of values at a time is not a problem from Ignition, but might be for your PLC.