Hi all,
Just can't get my head around one thing!
I am using Kepware to log a group of tags -more than 1000 tags- apparently, Kepware’s DataLogger logs the entire group when any tag in that group changes. However, what I need is logging only those tags that have been changed not the entire group!
I've done some research and ended up with enabling OPC UA in my project and using a Python code to log only the tags are changed!
I was wondering if there is any other way except changing configuration of the project which I prefer to put it in bottom of my list!
Any help much appreciated!
Solved! Go to Solution.
Hi @FV_13259496 ,
You’re right — the DataLogger in Kepware logs the entire group when any tag in that group updates. It doesn’t have a built-in “log only changed tags” mode. However, there are a few practical ways to achieve what you’re after without major project restructuring:
Use the Advanced Tags Plug-In (Change Detection Method)
Create an Advanced Tag for each source tag that calculates whether the value has changed (using a compare or delta expression).
Use that Advanced Tag as the trigger for logging, rather than the entire group.
This way, the DataLogger only records when the specific tag’s value changes.
Leverage OPC UA Subscription Behaviour
If you’re already using OPC UA (as you mentioned with Python), you can subscribe with the “Reporting” mode.
OPC UA clients, such as Python’s opcua library, can automatically filter and receive updates only when a tag’s value or status changes.
This keeps your log volume low and prevents the need for reconfiguring groups in Kepware.
If Using ThingWorx or MQTT
Both support change-based event handling. You can push only updated tags from Kepware’s IoT Gateway using store-and-forward logic or scripting at the edge.
If you prefer to stay entirely within Kepware, the Advanced Tags with DataLogger trigger is the cleanest option — no external logic is required.
Thanks,
Hi @FV_13259496 ,
You’re right — the DataLogger in Kepware logs the entire group when any tag in that group updates. It doesn’t have a built-in “log only changed tags” mode. However, there are a few practical ways to achieve what you’re after without major project restructuring:
Use the Advanced Tags Plug-In (Change Detection Method)
Create an Advanced Tag for each source tag that calculates whether the value has changed (using a compare or delta expression).
Use that Advanced Tag as the trigger for logging, rather than the entire group.
This way, the DataLogger only records when the specific tag’s value changes.
Leverage OPC UA Subscription Behaviour
If you’re already using OPC UA (as you mentioned with Python), you can subscribe with the “Reporting” mode.
OPC UA clients, such as Python’s opcua library, can automatically filter and receive updates only when a tag’s value or status changes.
This keeps your log volume low and prevents the need for reconfiguring groups in Kepware.
If Using ThingWorx or MQTT
Both support change-based event handling. You can push only updated tags from Kepware’s IoT Gateway using store-and-forward logic or scripting at the edge.
If you prefer to stay entirely within Kepware, the Advanced Tags with DataLogger trigger is the cleanest option — no external logic is required.
Thanks,
Many thanks Shashi for your reply!
Just a quick one on your first option, I am dealing with more than 1000 tags that I want to log only changes from the whole the group. Am I going to need defining Advanced tag for every single tag that I need to log?
Thanks again!
Hi @FV_13259496 ,
Good question — yes, if you use the Advanced Tags method, each tag that needs independent change detection would require its own Advanced Tag. However, you don’t necessarily have to configure all 1000 manually.
You can bulk-generate Advanced Tags by exporting your tag list to CSV, creating the compare expressions (for example, "IF(Tag1 <> LastValue(Tag1), Tag1, LastValue(Tag1)))", and re-importing them into Kepware. This approach scales much better for large tag sets.
If performance or setup effort becomes a concern, then using OPC UA’s “Reporting” mode or external filtering (like your Python setup) is more efficient for high tag volumes.
Thanks,
Hi Shashi!
Thank you for you clarification. - Much appreciated!
very silly question! From my understanding in advanced tags I read tags from Kepware then I use these advanced tags to update my logging, now the question is do I have to use database to write those tags or I can write it directly to a CSV file?
Thanks again!
