17:27, EEST
August 11, 2015
I created a subscription to receive data regularly no matter it is changed or not. Is it possible that I can extend DataChangeFilter to let the data pass through even not changed?
If it is not possible to overwrite the filter, is there a way to know the subscription is still active or simply does not response since there is no data received on the client side?
BTW, I noticed that the value of some node is changed after each browse while the value of some other node is not changed after browse. I wonder which property of the node controls this behavior? I tried to find it in the OPCUA specs but no result.
Thank you for the help.
8:03, EEST
April 3, 2012
Do you mean by not changed:
1. That the value stays the same but timestamp changes
2. That both value and timestamp stays the same
In case of 1, you need to use a DataChangeFilter with trigger STATUS_VALUE_TIMESTAMP (i.e. DataChangeTrigger.StatusValueTimestamp), because the default behaviour without any filters is the STATUS_VALUE, i.e. no notifications if only the timestamp changes (see Part 4, Table 130 of the spec). In case of 2, there is no way to get notifications since nothing changes. Anyway extending the filter is meant for “specification level” extension, i.e. something both the client and the server should knowof.
There is a keepalive notification, which does not contain any notifications. This is sent whenever there has not been anything other to send for MaxKeepAliveCount of PublishIntervals. You can add a listener for these events, Subscription.addAliveListener. Also you might want to read spec Part 4: 5.13.1 on how the subscription model works.
For the BTW part, I need a bit more information. The only thing that should be a direct result of a browse is the increase in the Objects/Server/ServerDiagnostics/(uri of the session)/SessionDiagnostics/BrowseCount and that with diagnostics on.
– Bjarne
8:07, EEST
April 3, 2012
17:41, EEST
August 11, 2015
Thank you, Bjarne. You answered most of my questions.
The ‘not changed’ I referred is the second case you mentioned. It seems no way to get notifications if nothing is changed. As you said, maybe a normal read with a timer can be an alternative.
For the BTW part, I used UAExpert to connect to an Opcua server. There are some variable nodes, such as one with id “Demo.Dynamic.Scalar.Int32”. Each time I rebrowsed the node in UAExpert, its SourceTimestamp, ServerTimestamp and Value were changed. Actually all variables under “Demo.Dynamic” folder behaves the same. Not sure what makes them ‘dynamic’.
6:51, EEST
April 3, 2012
I would assume they are test nodes similar to ones we have in our SampleConsoleServer and Simulation Server, just a bit different. Seems the UaDemoServer (unified automation one) has similar nodes (not the exact same ids but behaves similary). It seems that once their values have been read once (e.g. by clicking the node in the tree view), it starts simulating values for that node, if you refresh the attribute view, you should see it changing even if you do not rebrowse (assuming the nodes are that much similar). Other than that, it is probably best to ask the server manufacturer.
Most Users Ever Online: 1919
Currently Online:
20 Guest(s)
Currently Browsing this Page:
1 Guest(s)
Top Posters:
Heikki Tahvanainen: 402
hbrackel: 144
rocket science: 88
pramanj: 86
Francesco Zambon: 83
Ibrahim: 78
Sabari: 62
kapsl: 57
gjevremovic: 49
Xavier: 43
Member Stats:
Guest Posters: 0
Members: 738
Moderators: 7
Admins: 1
Forum Stats:
Groups: 3
Forums: 15
Topics: 1524
Posts: 6451
Newest Members:
jonathonmcintyre, fannielima, kristiewinkle8, rust, christamcdowall, redaahern07571, nigelbdhmp, travistimmons, AnnelCib, dalenegettingerModerators: Jouni Aro: 1026, Pyry: 1, Petri: 0, Bjarne Boström: 1026, Jimmy Ni: 26, Matti Siponen: 346, Lusetti: 0
Administrators: admin: 1