NI Labs Discussions

cancel
Showing results for 
Search instead for 
Did you mean: 

NI LabVIEW OPC UA APIs Discussion

Welcome to the NI Labs LabVIEW OPC-UA API project. This thread is intended to foster discussion about the project, so please post your questions, comments, suggestions and bug reports and I'll be happy to respond.

OPC UA is a platform-independent standard through which various kinds of systems and devices can communicate between OPC-UA Clients and Servers.  Unlike previous versions of the OPC standard, OPC-UA is platform independent and can be used on Windows, LabVIEW Real-Time targets, and PLCs. 


One of the goals of this release on NI Labs is to get a better idea of what features are in most demand, the usability of the API, and garner feedback from our users.


To download the API please go to NI LabVIEW OPC-UA APIs.


Mark B

Product Support Engineer - LabVIEW R&D

Mark
NI App Software R&D
Message 1 of 150
(72,216 Views)

Just download the API and installed.  Running the example server on my ETS box and connected up to Kepware's UA client driver just fine.  Great job on this API, I've been waiting for OPC UA in RT targets.  This fundamentally changes how HMIs and other devices (i.e. PLCs) can communicate with Labview Real-Time.

Message 2 of 150
(10,190 Views)

We've very pleased you're happy with the API.  If you find yourself with questions or possible bugs, please feel free to report them here.

Cheers,

Mark

Mark
NI App Software R&D
0 Kudos
Message 3 of 150
(10,190 Views)

After playing with the OPC UA server for a day, I'm come up with a short list of features that I feel are missing.

Variant read

The client API has variants available in the data change user event.  With that said, the API should support variants reads for individual items (both on the server and client) and let the application convert those variants.  As it stands right now, you are forced to correctly pick the polymorphic instance.  This seems like an extra step that is not needed.  Converting from variant to data can be done by the application.  This is especially evident on the server. The server already knows what data type was created for that item because you are forced to supply the data type in the add item function. 

Data change user events on the server

Right now the server code is poll based.  I would like to see the server had the ability to fire an event when the client writes data.  I guess one could place a client on the server to have events but this seems to be extra work for the developer.  I could see issues on large applications where you have too many localhost clients waiting for events.

More than 1 data change user event

From first glance at the client, it seem like there is only 1 data change event.  It would be nice to be able to create more user events without having to create another client.  This would allow for using other event structures to respond to data change events in other parts of your code.

0 Kudos
Message 4 of 150
(10,190 Views)

Thanks for the feedback.  It is highly appreciated!

Mark
NI App Software R&D
Message 5 of 150
(10,190 Views)

hi, where can I find the example?

0 Kudos
Message 6 of 150
(10,190 Views)

Example server and client implementation are located at ..\Program Files\National Instruments\LabVIEW 2011 (or 2010)\examples\comm\OPCUA\OPC UA API.

Jonah Paul
Marketing Manager, NI Software
0 Kudos
Message 7 of 150
(10,190 Views)

I was testing for interoperability of the following, included are my findings:

1) Browes NI OPC UA server node tree using Inductive Automations OPC UA server Anonymous connection with quick client

          For this test I cound never get an Anonymous connection established.  Tried various security policies with the same results.

2) Browes NI OPC UA server node tree using unified automation OPC UA client

          For this test I was able to connect using Anonymously but got a "BadNodeInvalid" from the client, only shows root node

3) Browes NI OPC UA server node tree using PROSYS OPC UA client

          For this test I was able to connect using Anonymously but got a "Unknown Extension Object" from the client, client then hits an exception and stops executing

0 Kudos
Message 8 of 150
(10,190 Views)

Thank you for the feedback. Both the variant read/write and data change event on server were in our proposal list. We were not sure if user really needed it. And the data change event on server may have performance issue. So we didn't develop them in this download.

We will think about these features.

Ryan Shi
National Instruments
0 Kudos
Message 9 of 150
(10,190 Views)

I'm trying the Inductive Automations OPC UA quick client. It's working.

These are what I did

1. Open the example server and run it.

2. Open Ignition cofiguration page.

3. Create a new server. The host is my computer ip. Port is the server port, defaut is 4841 in example. Security policy and message mode are all none.

4. Go to Quick Click. It's able to browse the server adress space with two nodes defined in the example. And it can read and write data.

Thank you for these feedback and bug report.

By the way, do you have a link for the PROSYS OPC UA client download?

Ryan Shi
National Instruments
0 Kudos
Message 10 of 150
(10,190 Views)