I’m currently using a custom external OPC UA server written using the opcua-asyncio Python package. The general usage works just fine for connecting to this server using Ignition and adding OPC tags, however, I am unable to track history on tags updated by Ignition.
After digging for a little bit, I’ve figured out that this is because Ignition fails to properly update the timestamp value when writing to the OPC UA server. As soon as the tag is updated by Ignition the Timestamp property goes to ‘1600-12-31 7:00:00 PM’:
And, using the opcua-client-gui application I can see that the OPC UA server’s source timestamp attribute for this tag is set to None.
I know this is an Ignition problem because read-only tags written to from the OPC UA server itself work just fine:
And, I know this is specific to external OPC UA servers because using a simulator device on Ignition’s built-in OPC UA server works just fine:
So far I’ve attempted the following in-Ignition fixes to no avail:
-
Writing a QualifiedValue object instead of just the value to the tag.
-
Writing the value directly to the ‘value’ property and also writing the timestamp directly to the ‘Timestamp’ property at the same time.
I do have a workaround which involves adding two tags to the UDT, one OPC and the other derived, then just interfacing and storing history on the derived tag, but that is unideal. Any assistance on ways to fix this in Ignition (or on the OPC UA server somehow) would be appreciated. Thanks.



