You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I probably discovered a problem with status change detection of monitored items, if a deadband filter is applied.
Background Information / Reproduction Steps
While I was looking for a problem where my monitored items of a subscription kept the initial Status UA_STATUSCODE_BADWAITINGFORINITIALDATA, I looked at the detectValueChangeWithFilter function in ua_subscription_datachange.c. I couldn't verify with a running test, whether my code analysis is correct, but maybe the code owner can quickly confirm or reject this issue:
I think that in case of a monitored item with deadband filter type UA_DEADBANDTYPE_ABSOLUTE, a status change of the data value will not be reported, if the value remains stable. Evidence: in case of UA_DEADBANDTYPE_PERCENT a call to updateNeededForStatusCode is used to check for this, but in case of UA_DEADBANDTYPE_ABSOLUTE this call is missing. See
. Is it correct, that a status change is only detected for scalar values? The updateNeededForFilteredValue and updateNeededForFilteredPercentValue are handling arrays aswell, so this one should probably do so, too?
Checklist
Please provide the following information:
open62541 Version (release number or git tag): master
Other OPC UA SDKs used (client or server):
Operating system:
Logs (with UA_LOGLEVEL set as low as necessary) attached
Wireshark network dump attached
Self-contained code example attached
Critical issue
The text was updated successfully, but these errors were encountered:
Description
I probably discovered a problem with status change detection of monitored items, if a deadband filter is applied.
Background Information / Reproduction Steps
While I was looking for a problem where my monitored items of a subscription kept the initial Status
UA_STATUSCODE_BADWAITINGFORINITIALDATA
, I looked at thedetectValueChangeWithFilter
function inua_subscription_datachange.c
. I couldn't verify with a running test, whether my code analysis is correct, but maybe the code owner can quickly confirm or reject this issue:I think that in case of a monitored item with deadband filter type
UA_DEADBANDTYPE_ABSOLUTE
, a status change of the data value will not be reported, if the value remains stable. Evidence: in case ofUA_DEADBANDTYPE_PERCENT
a call toupdateNeededForStatusCode
is used to check for this, but in case ofUA_DEADBANDTYPE_ABSOLUTE
this call is missing. Seeopen62541/src/server/ua_subscription_datachange.c
Lines 195 to 197 in a9a9e2a
open62541/src/server/ua_subscription_datachange.c
Lines 209 to 213 in a9a9e2a
The second observation targets the
updateNeededForStatusCode
function atopen62541/src/server/ua_subscription_datachange.c
Lines 175 to 182 in a9a9e2a
updateNeededForFilteredValue
andupdateNeededForFilteredPercentValue
are handling arrays aswell, so this one should probably do so, too?Checklist
Please provide the following information:
UA_LOGLEVEL
set as low as necessary) attachedThe text was updated successfully, but these errors were encountered: