Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[milo-dev] DataChangeFilter for MonitoredItem to receive a callback even if the value does not change

Hello all,

I have been using milo for a few years in a handful of projects and I must say I am amazed at how well it works and how stable it runs. Great work! 

Currently we are in a situation where we have a monitored item on a node to which a string is written by the PLC, and we want to receive a callback for this write, even when the same value is written to the DB by the PLC than the one that was already there.

For a Mitsubishi Melsec IQ-R PLC we have been able to get this working using a DataChangeFilter like this:

DataChangeFilter filter = new DataChangeFilter(DataChangeTrigger.StatusValueTimestamp, UInteger.valueOf(DeadbandType.None.getValue()), null);
ExtensionObject eoFilter = ExtensionObject.encode(client.getSerializationContext(), filter);
return new MonitoringParameters(
                uaSubscription.nextClientHandle(),
                (double) monitoredNodeSettings.getSamplingIntervalInMillis(),
                eoFilter,
                uint(monitoredNodeSettings.getQueueSize()),
                true
);

But this does not seem to work with a Siemens S7-1500. We receive callbacks when the values change, but if the same value is written no callback is generated for the monitored item.

Did anyone here ever try to do something similar?
Any idea on why this method would fail on an S7?

Kind regards,

Guy Mahieu

Back to the top