Currently, the values of string tags are stored in full for each event, which is a waste of space for string tags that have the same values appearing frequently. To save space, a digital tag can be used instead. However, to create this tag's digital state set, we must know ahead of time all possible strings that the tag may store, and this may not be possible or feasible.
My suggestion is to introduce dynamic digital state sets. That is, tags using dynamic digital state sets would receive strings from the data source. If the string is not already part of the dynamic digital state set, then it is added. Then, just like a regular digital tag, the tag stores only the number that references the string in the digital state set and not the whole string, but its values display as strings in programs like PI Vision. To save even more space, different tags that are expected to receive many of the same strings should be allowed to share the same dynamic digital state set.
Could just have a single list of all the unique strings and index into that. Completely separate and unrelated to digital sets.