Professional OPC
Development Tools

logos

Online Forums

Technical support is provided through Support Forums below. Anybody can view them; you need to Register/Login to our site (see links in upper right corner) in order to Post questions. You do not have to be a licensed user of our product.

Please read Rules for forum posts before reporting your issue or asking a question. OPC Labs team is actively monitoring the forums, and replies as soon as possible. Various technical information can also be found in our Knowledge Base. For your convenience, we have also assembled a Frequently Asked Questions page.

Do not use the Contact page for technical issues.

How to call a method with complex type arguments

More
01 May 2020 14:22 #8449 by cadomanis
Thank you so much! I have downloaded, recompiled, and the methods seem to work as expected!

Please Log in or Create an account to join the conversation.

More
01 May 2020 07:02 #8447 by support
Hello,
We have fixed the problem - thank you for reporting it! The updated QuickOPC 2020.2 build is on our Web site.

Please download the current version from www.opclabs.com/products/quickopc/downloads and install it, verifying (on the 1st page of the setup wizard) that it reports itself as 5.58.184.1 or later, and then rebuild your project with the new assemblies and retest.

Does your license cover version 2020.2?

Best regards

Please Log in or Create an account to join the conversation.

More
29 Apr 2020 19:06 - 30 Apr 2020 08:02 #8436 by support
Yes, that's what I was trying to say. The Live Mapping currently "ends" at the level of an OPC UA node/attribute. So you, can map UA objects to C# objects, and UA variables (or properties) to C# properties (usually), with lots of flexibility. But the Live Mapping does not currently allow you extend the mapping into the values, if they are structured. It still works, but what gets mapped is the UAGenericData, and you create or access it in the same way as you would in normal procedural code.

Some servers expose the same information in two ways - an object object has variables, but at the same type, it is represented with a data type (structure) on its "root" node. The clients can then choose whether to access the variable individually, or the whole object as a structure. In case of many sub-variables, transferring the structure is more efficient. The structure value can also be read/written/subscribed to atomically - so you work with a consistent snapshot of variables at one point in time (which is sometimes required, but at other times it's not desired - such as when you want to modify just one variable and there are other actors that should be allowed to modify different variables in the same object concurrently). So, it all depends...

Best regards
Last edit: 30 Apr 2020 08:02 by support.

Please Log in or Create an account to join the conversation.

More
29 Apr 2020 18:17 #8435 by cadomanis
Thanks for that information as we are currently developing the objects on both sides, we can adjust accoridingly. For best use of Live Mapping, is there a preferred way of structuring the items in the OPC server, so that they can be mapped at a high level. I have been working through the provided examples. but the elements in the boiler example seem not to ever be of user defined types on the server side. The Beckhoff PLC seems to make any type of function into its own type on the Server. Does this mean live mappging at the object will not be possible?

Thanks

Please Log in or Create an account to join the conversation.

More
29 Apr 2020 17:17 #8433 by support
Hello,

regarding the server endpoint - that's perfect. Thank you In fact I have not expected it so quickly, please allow for some time - I need to schedule some uninterrupted time to work on this. I will edit your post to remove the precise address - I already have a copy.

Best regards

Please Log in or Create an account to join the conversation.

More
29 Apr 2020 17:12 #8432 by support
Regarding the Live Mapping: The UA Complex Data Types can be used with it, but the whole value will look like one UAGenericObject.
There is currently no mapping of UAGenericObject to custom C# types, or Live Mapping "into" the members of UAGenericObject/GenericData. These features are something that we definitely know about and considered, and I am quite happy you are interested in such advanced concepts - but the support for it is not yet available, sorry.

Please Log in or Create an account to join the conversation.

More
29 Apr 2020 16:59 - 29 Apr 2020 17:18 #8431 by cadomanis
You should be able to access the server with our various complex types at opc.tcp://67.{removed-for-security}:4840.

The method we were trying to call is at Objects/PLC1/OpcCommunication/OpcEffectLinear/OpcEffectLinear[1]/MoveAbsolute.

Let me know what other info you need.
Last edit: 29 Apr 2020 17:18 by support. Reason: removed parts of IP address
The following user(s) said Thank You: support

Please Log in or Create an account to join the conversation.

More
29 Apr 2020 14:01 #8428 by cadomanis
Thanks for the update. The server in question is a Beckhoff PC based PLC with OPC server extension. If this is a system you are familiar with, I am happy to send my configuration files to you. I can also work at getting my system accessible to you, though it may prove a little challenging working from home. If in the meantime, there are any tests or things I can try, I am happy to spend whatever time ins needed to get you more information. I have not yet posted, but what will go hand in hand with writing these complex structures will be Live Mapping some similar structures to classes in out c# code, so anything you can share as we move forward would be appreciated.

Please Log in or Create an account to join the conversation.

More
29 Apr 2020 06:29 #8423 by support
Thank you.

It is now clear that the ArgumentException you got is a QuickOPC bug. We will fix it. Which version are you using?
But, even after the fix, you will still receive the exception - it will be the "proper" (or "better") one: "The OPC UA server has returned a null result, but this operation requires a non-null value.". This exception has to do with various pieces of information about the complex data type we need to obtain from the server - but it is not clear where precisely it fails. Resolving it would be more difficult. Ideally we would like to be able to reproduce it on our side and work on it independently, to save you (and us) from many and many round-trips between you and us and improving the diagnostics etc. It should be said that this combination (methods calls + complex data types) only received limited testing, because few were available for testing.

Is this an embedded server, or PC based? If it is embedded, is there a PC version of it? Can we get access to it (and the configuration) somehow? Or, would it be possible that you expose the server endpoint on the Internet (with firewall open to just our IP address for testing) or over VPN?

Kind regards

Please Log in or Create an account to join the conversation.

More
28 Apr 2020 19:19 #8421 by cadomanis
Note when I ran that test, I had the TypeCode for the complex object in typeCodes set to empty. I re-ran the test with the TypeCode set to object, but I get the identical results.

Please Log in or Create an account to join the conversation.

Moderators: support
Time to create page: 0.073 seconds