Avatar

Please consider registering
guest

sp_LogInOut Log In sp_Registration Register

Register | Lost password?
Advanced Search

— Forum Scope —




— Match —





— Forum Options —





Minimum search word length is 3 characters - maximum search word length is 84 characters

sp_Feed Topic RSS sp_TopicIcon
Input and output arguments of methods not found
September 30, 2020
12:29, EEST
Avatar
gregp
New Member
Members
Forum Posts: 2
Member Since:
September 28, 2020
sp_UserOfflineSmall Offline

Hello,

I am trying to call methods of the sample server given by the OPC Foundation from the Prosys client. When the method has no arguments, it works fine, but I cannot call methods with arguments.
Indeed, it seems that even though the input and output arguments properties are found by the client, they are not taken into account in the method dialog box.

I tried to call the exact same method on the prosys server and on some sample servers provided by the OPC Foundation, it works fine on the prosys server, but not on the sample servers. here are some images explaining the issue :

Call Opc Ua method

Here is the link of the servers that I started : https://github.com/OPCFoundation/UA-.NETStandard-Samples.

Thanks,
Grégoire Pichereau

September 30, 2020
14:16, EEST
Avatar
Bjarne Boström
Moderator
Moderators
Forum Posts: 1026
Member Since:
April 3, 2012
sp_UserOfflineSmall Offline

Hi,

Very much thanks for posting this.

The reason why this happens has nothing to do with a Method call, but this also fails as a consequence. The actual underlying problem is actually somewhat nasty interop problem sort of. The NodeSet XML for the standard model incorrectly defines the AccessRestrictionType as a subtype of UInt32, when it should be of UInt16, that is used in the specification text. Thanks to your post we are now aware of this.

Our SDKs functionality derives directly from the NodeSet’s data is certain areas, thus our SDK is expecting an UInt32 value, and it will fail to read the node object properly if it receives anything else. This is assuming the node actually defines a proper value for the Attribute. It was added in OPC UA 1.04, our server side (and not many others as well) support that yet, thus no error (and if we are communicating with ourself SDK-wise, it would have been the incorrect UInt32 in our impl anyway).

The Foundation sample seems to be a server (the first that I have seen, though in general no wonder as they do test the stuff they specify) that gives a value, thus us failing to read the nodes, which define the parameters needed to make the method call.

Seems the Foundation is aware of this (for few days): https://apps.opcfoundation.org/mantis/view.php?id=6025 (requires credentials). So preferably this will be fixed once the NodeSet is updated. Before that we can try to make a workaround (at least reading-wise, due to the deriving from the NodeSet writing would be an issue, unless we decide to modify the nodeset ourself, but that might have other issues and complexities depending on how many places the type is used).

It should be noted that the incorrect subtype definition is probably seen in every server DataType-hierarchy, but it then depends if the server is actually using that to derive the functionality. In this case, the sample does send the data properly as UInt16 on the wire/binary.

September 30, 2020
17:29, EEST
Avatar
gregp
New Member
Members
Forum Posts: 2
Member Since:
September 28, 2020
sp_UserOfflineSmall Offline

Thanks for your fast answer and your hard work (I have no idea how you could find the underlying problem in so little time). I have a workaround that does not use the arguments, so I do not need the functionnality right away, but in the future it would be very nice if it works.

Have a nice day,
Grégoire Pichereau

October 1, 2020
15:36, EEST
Avatar
Bjarne Boström
Moderator
Moderators
Forum Posts: 1026
Member Since:
April 3, 2012
sp_UserOfflineSmall Offline

We do now have a beta version of the Browser, which workarounds the issue, send mail to uabrowser-support@prosysopc.com to obtain if needed.

The workarounds also exists now in our latest SDK (beta) build (that is what the app uses). Though, it should be noted, that for the time being the workround does convert UInt16 values to UInt32. This is technically incorrect, as the UInt16 is the proper type, but until it is fixed by the OPC Foundation on the nodeset level, it had to go that way (we’ll flip the conversion logic once that happens; now if UInt32 is received it will log on WARN level, but we’ll use it as-is for the time being).

Forum Timezone: Europe/Helsinki

Most Users Ever Online: 1919

Currently Online:
33 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: 734

Moderators: 7

Admins: 1

Forum Stats:

Groups: 3

Forums: 15

Topics: 1523

Posts: 6449

Newest Members:

christamcdowall, redaahern07571, nigelbdhmp, travistimmons, AnnelCib, dalenegettinger, howardkennerley, Thomassnism, biancacraft16, edgardo3518

Moderators: Jouni Aro: 1026, Pyry: 1, Petri: 0, Bjarne Boström: 1026, Jimmy Ni: 26, Matti Siponen: 346, Lusetti: 0

Administrators: admin: 1