Trying to better understand NodeSet XML Information Models and UaVariable tags with no Value #1282
Closed
williamtnguyen
started this conversation in
General
Replies: 1 comment
-
I don't think this has anything to do with information models - forget about those for now. If the Variable Node exists it must have a Value attribute, the Value attribute is mandatory. It can be null, but should not yield a You can do two things to help start troubleshooting:
|
Beta Was this translation helpful? Give feedback.
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Hello,
I'm currently working on a project that serves multiple customers with different PLCs using different OPCUA versions. I'm still a bit naive in my OPCUA knowledge, so am trying to articulate a question based on my current understanding. I am trying to keep the scope of question to Milo/my project rather than making it a broad OPCUA discussion, nonetheless any help here would be much appreciated.
One customer is running into this StatusCode when our project's code is attempting to use Milo to
createMonitoredItems()
on several source nodes:StatusCode{name=Bad_AttributeIdInvalid, value=0x80350000, quality=bad}
.Is my understanding correct here: this is what is returned by the server, and Milo is simply passing through this value and denoting the node as
!statusCode.isGood
.In general, we are only subscribing to/creating monitored items for Variable Nodes, which should have
Value
attribute based on documentation/different sources online I've read. When sent sample XML nodeset from this customer, I found that there were UaVariable nodes with no associated nested Value tags. I've also found that this is true for other XML nodesets I've found online.Initially, I assumed this would be a miss on customer end during setup of their NodeSet/Server with UaVariables having no Value tags. However, it seems that UaVariable nodes in XML nodesets without Value tags is normal/allowed: https://github.com/OPCFoundation/UA-Nodeset/blob/latest/LaserSystems/LaserSystem-Example.NodeSet2.xml#L1142-L1162. I can't seem to find information explaining explicitly this online, is this truly allowed/what happens in this case? Or does an OPCUA client not really care, and just returns the value the server is providing.
Modified snippet from other nodeset:
What I also want to understand is if there is anything in my project code I can do to filter out these nodes prior to calling
createMonitoredItems()
and seeing the bad StatusCode. We browse the AddressSpace using Milo, do some intermediary storage, and eventually attempt to create monitored items on Variable nodes from the browse. The createMonitoredItems call points ReadValueId's AttributeId toValue
, so the StatusCode makes sense for these nodes. Is there a Milo functionality where we can filter out these nodes somewhere in the flow I just described, prior to attempting monitored items creation? Like can we connect to node, see if Value attribute exists and filter on that?Beta Was this translation helpful? Give feedback.
All reactions