Skip to main content

Hi everyone,

I’m facing a challenge with our current setup and would appreciate some guidance from the community.

We have an OPC-UA server running on a Siemens IPC Linux machine, which serves the variable values of a Siemens PLC. This OPC-UA server is queried by an OPC-UA client inside a Docker package (Cognite OPCUA Extractor) that sends the data to Cognite Data Fusion (CDF). The data points are then stored in their respective time series within CDF.

The issue is that, during periods when the physical quantity doesn’t change (e.g., motor current at zero during weekends), no new data points are sent to CDF. As a result, when the motor starts again, and the current shoots up quickly (for example, up to 2 Amps in 40 ms), this rapid change is not properly reflected in the time series. Because we only scan every 100 ms with the PLC, and since no data was logged during the weekend, it appears in CDF as though the current gradually increased from 0 to 2 Amps over the entire weekend. This is causing inaccuracies in our time series display in Charts as well as the customer portal, making it seem like a slow, linear increase instead of the sharp jump we know occurred. Also, if the current drops to zero for a short while, we don’t see the drop unless we are zoomed in to the maximum (because of aggregates being used in the display). The instinctive solution that I have is to have a datapoint sent regardless of change every x minutes. 

We’re not planning on increasing our data acquisition frequency. However, I’d like to configure the system so that data is reported to CDF at regular intervals, say every 5 minutes, even when there is no change in value. This would ensure that we get a more accurate reflection of the data behavior, especially when there are no changes for a long time.

Does anyone know if it’s possible to configure the Cognite OPCUA Extractor to report at fixed intervals regardless of changes? Does anyone do this in the OPC-UA server instead? 

Any advice or recommendations based on similar experiences would be greatly appreciated!

Thanks in advance!

From my limited experience, it's possible on the client side - in a separate 'thread' you can store the nodes that had their values changed within a time window and read and extract values from all the other ones using 'reading' instead of 'subscription'. In other words, every 5 minutes you extract the values from nodes that did not change since the last extraction. Mind you, this is not a Charts issue but an extractor issue.


@Maciej Marciniak Thanks, yes, I understand it isn’t a Charts issue. I’ll look into reading vs subscription on the OPCUA sever


Reply