NI Labs Discussions

cancel
Showing results for 
Search instead for 
Did you mean: 

NI LabVIEW OPC UA APIs Discussion

JimMacD,

Thanks for your interest in OPC UA.  An IO Server supporting OPC UA is on the list of possible things that NI could do in a future release, but it is not currently in development.  For planning purposes, it would be helpful if you could provide some additional insight behind your request.  From your perspective, what advantages do you see in the IO Server approach compared to the VIs provided here?  Is there functionality missing in the VIs you would expect in the IO Server?  Any thoughts you provide are appreciated.

0 Kudos
Message 91 of 150
(5,215 Views)

Kyle,

Thanks for the quick response.

I have not used the OPC UA API yet, just started looking into it. I think the advantages of an I/O server approach is that all the details are done in the background, which allows the developer to focus on making the application, not worrying about correctly setting up the communications protocol.

I use the Modbus IO server a-lot. What I appreciate about it is that I can set a few parameters, and create some Shared Variables to interact with that IO server, and I'm done. LabVIEW set's up the rest in the background, and I can then focus on what I need to do with the application. It is very easy that way. This also seems to be the way NI's OPC server is setup on Window's, where you are creating Tags to bind to diffrent equipment. The OPC Server is going in the background and handles all the details.

Thanks

-Jim

--------------------------------------------------------------------------------------------------

--CLD--
LV 6.1 to 2015 SP1
0 Kudos
Message 92 of 150
(5,215 Views)

Hello,

I started a project using OPC UA in LV 2012. The server in the realtime environment works fine. I have a problem with the test client in windows 7. If I register with the "Add Monitored Nodes VI" a tag that is Byte Array, after the event is reveived, Labview crashes with the following error:LV error.png

There are limists on the type of registered tags? If it is a bug, how can I send a feedback to you?

Thanks in advance.

Sandro

0 Kudos
Message 93 of 150
(5,215 Views)

Hi Tonch,

Can you repost this on the DSC support forums?  I want to make sure an NI Application Engineer is assigned your post.  LabVIEW crashes are something we take very seriously and we'll will want to debug further. 

Thanks,

Mark

Mark
NI App Software R&D
0 Kudos
Message 94 of 150
(5,215 Views)

Hello,

I found the error in my code: mismatch of Byte Array in client and ByteString in server. Anyway there is the problem of robustness, if you are interested.

0 Kudos
Message 95 of 150
(5,215 Views)

Ok, I do. Thanks.

0 Kudos
Message 96 of 150
(5,215 Views)

Hello,

I need to know how can I address a dynamic tag in OPC UA client. I've tried every way I could imagine with no success. Seems the API only access browseble tags.

Error message:

"LabVIEW:  (Hex 0xFFFA8EBB) The node path refers to a node that does not exist in the server address space."

Example of Siemens S7 syntax tried:

C40.CLP_140A_04.DB16,Real0

ns=2;s=C40.CLP_140A_04.DB16,Real0

C40.CLP_140A_04."DB16,Real0"

"C40.CLP_140A_04.DB16,Real0"

PS.: I can browse C40.CLP_140A_04. I can read this addess throught OPC DA without issues.

Modbus also failed:

c100.RT_137A_9101.30000

I'm using Kepware v5. The issue is the same in Labview 2011 and 2012.

0 Kudos
Message 97 of 150
(5,215 Views)

I don't know what's the dynamic tag. You must specify the node path to address a node for read/write.

0 Kudos
Message 98 of 150
(5,215 Views)

Cheng,

A dynamic tag is a kind of direct addressing of a PLC memory. In Siemens and Schneider I don't need to have a browseble "tag", I have some rules to address a PLC memory for example.

This is part of the Kepware Siemens Ethernet help file. Using this syntax I can access the PLC memory. I think UA API is filtering the node paths that doesn't match the browsed tags. The problem is that Kepware answers to node paths that are not browseble. If I'm write the correction to this problem is simple but I cannot do it because the API is closed.

Standard S7-300/400/1200 Item Syntax

Address Syntax

Input, Output, Peripheral, Flag Memory Types

<memory type><S7 data type><address>

<memory type><S7 data type><address><.bit>

<memory type><S7 data type><address><.string length>*

<memory type><S7 data type><address><[row][>col]>

Timer and Counter Memory Types

<memory type><address>

DB Memory Type

DB<num>,<S7 data type><address>

DB<num>,<S7 data type><address><.bit>

DB<num>,<S7 data type><address><.string length>*

DB<num>,<S7 data type><address><[row][col]>

0 Kudos
Message 99 of 150
(5,215 Views)

Hi Felipe,

Now the UA APIs don't accept a path with the S7 syntax. The path must be the browseable tag. If you can convert the S7 address into a browseable path, the UA APIs should work.

I think the S7 syntax is some sort of filter rule to get all the tags which meet the filter in the address space. But the UA Server's address space is not classified by the memory type/data type. One way I can find is that get all the tags of the UA Server by browse, then use the filter rule of the S7 syntax to get the tag meeting the filter.

0 Kudos
Message 100 of 150
(5,215 Views)