LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

Mixed versions of the DSC in a multi-workstation environment -- Can the Tag Engine and the Shared Variable Engine communicate successfully?

I am about to undertake upgrading a distributed lab automation system (8 workstations controlling numerous interconnected but semi-independent experiments, with extensive use of the DSC) from LabVIEW 7.11 to LabVIEW 2009.

 

I believe I have a good handle on  converting my tag database to the shared variable project mode.  The database is a mixture of tags connecting to another OPC server and LabVIEW memory tags.

 

My question is this -- as I begin this process, will the machines running the version 7.11 DSC be able to communicate with those running the LV2009 DSC?  I would hope so, since both are supposed to be compliant OPC client/server implementations, but I haven't seen this question addressed anywhere in the documentation.

 

If necessary, of course, I can take the entire system offline until all components are upgraded, but it would be far more reassuring to know it can be done one workstation at a time without going down completely.

 

 

 

 

The first phase before any conversion begins is to clean up the existing tag database, so one workstation has the master tag database, and all the others reference those as imported network tags.  I've learned from experience that using one machine as a gatekeeper gives me the most stable connections, especially with the non-LV OPC server for some of our hardware.  

If I then upgrade that machine to the latest DSC and convert the .scf to a shared variable project, will the 7.11 machines still be able to connect to those tags?

Kevin Roche
Advisory Engineer/Scientist
Spintronics and Magnetoelectronics group
IBM Research Almaden
0 Kudos
Message 1 of 4
(3,093 Views)

Hi Kevin,

 

Because LabVIEW 7.11 does not support shared variables, this will not be done easily. It will require you to use Datasockets, so your better option is to upgrade the whole system at once.

 

Hope this helps.

 

Flash

National Instruments
Applications Engineer
0 Kudos
Message 2 of 4
(3,064 Views)

Hi Flash -- thanks for the info, I was sort of afraid of that.

I've been reading over the upgrade literature and now find myself confused a bit.

First, a little more background:

I currently have about 950 tags total in my system. 800 of them are to communicate with some Opto22 devices ("brains") which do low-level control and interlock operations in my equipment. (one reason there are so many is the DSCEngine couldn't handle array variables except as individual items, and I'm transferring data from sets of temperature controllers, etc., that talk to the brains).

Then there are about 150 memory tags that the 6 different LabVIEW workstations use to share status and make requests of each other.

The brains have only limited timeslices set aside for their OPC communications task, so it is important that I only run one copy of the OptoOPC Server that talks to them. I have one LabVIEW workstation whose only job is to act as the gateway for the Opto brains.  I defined tags in the DSC on that machine, and then imported those as network tags on all the other machines in my network that might need data from the brains, thus ensuring that all the actual communications goes through the one instance of the server.

Along the way, I managed to mess up the definitions of several of my memory tags, and so I decided to follow the same model: they are defined as memory tags on the "gateway" workstation, and imported as network i/o tags on all the other workstations.

This all appears to be working in LV 7.11 with the DSC (I finished the consolidation yesterday)

 

How do I accomplish the equivalent with the Shared Variable Manager?

I have demonstrated on my laptop (which has a duplicate copy of the Opto software, just not usually connected to the active network) that my "master" scf file successfully converts to a .lvlib file.  Do I also have to create a client instance for the OptoOPC server, or does the conversion process do that for me?  

 

When I open my VIs in LV 2009 to convert/recompile them, will they see those converted variables? I understand this is accomplished through the project file, but haven't quite figured out how to link my old software to the project created with the converted .lvlib   (In other words, I have tag URL constants for the old DSC. How do I end up seeing those same things as available shared variable constants?)

 

 

Also, now that I have my master copy, how do I create the equivalent of the "network i/o" imported tags? Or is the process completely different?

 

You can understand that with 950 items in my database, I'm hoping there are ways that don't entail linking by hand every one of those converted tags.


Sorry to throw in so much detail, but so far the documentation is confusing me. If I were starting from scratch it wouldn't be so bad, but adding the conversion step in doesn't quite match anything I've read so far.


Regards,

Kevin Roche
Advisory Engineer/Scientist
Spintronics and Magnetoelectronics group
IBM Research Almaden
0 Kudos
Message 3 of 4
(3,037 Views)

Kevin R wrote:

Hi Flash -- thanks for the info, I was sort of afraid of that.

I've been reading over the upgrade literature and now find myself confused a bit.

First, a little more background:

I currently have about 950 tags total in my system. 800 of them are to communicate with some Opto22 devices ("brains") which do low-level control and interlock operations in my equipment. (one reason there are so many is the DSCEngine couldn't handle array variables except as individual items, and I'm transferring data from sets of temperature controllers, etc., that talk to the brains).

Then there are about 150 memory tags that the 6 different LabVIEW workstations use to share status and make requests of each other.

The brains have only limited timeslices set aside for their OPC communications task, so it is important that I only run one copy of the OptoOPC Server that talks to them. I have one LabVIEW workstation whose only job is to act as the gateway for the Opto brains.  I defined tags in the DSC on that machine, and then imported those as network tags on all the other machines in my network that might need data from the brains, thus ensuring that all the actual communications goes through the one instance of the server.

Along the way, I managed to mess up the definitions of several of my memory tags, and so I decided to follow the same model: they are defined as memory tags on the "gateway" workstation, and imported as network i/o tags on all the other workstations.

This all appears to be working in LV 7.11 with the DSC (I finished the consolidation yesterday)

 

How do I accomplish the equivalent with the Shared Variable Manager?

I have demonstrated on my laptop (which has a duplicate copy of the Opto software, just not usually connected to the active network) that my "master" scf file successfully converts to a .lvlib file.  Do I also have to create a client instance for the OptoOPC server, or does the conversion process do that for me?  

 

When I open my VIs in LV 2009 to convert/recompile them, will they see those converted variables? I understand this is accomplished through the project file, but haven't quite figured out how to link my old software to the project created with the converted .lvlib   (In other words, I have tag URL constants for the old DSC. How do I end up seeing those same things as available shared variable constants?)

 

 

Also, now that I have my master copy, how do I create the equivalent of the "network i/o" imported tags? Or is the process completely different?

 

You can understand that with 950 items in my database, I'm hoping there are ways that don't entail linking by hand every one of those converted tags.


Sorry to throw in so much detail, but so far the documentation is confusing me. If I were starting from scratch it wouldn't be so bad, but adding the conversion step in doesn't quite match anything I've read so far.


Regards,


Good to ask before you attempt that. Almost been there done that. I apprecitate the effort associated with the tag count.

 

I agree with Flash that the old version does not know about the old etc.

 

I'd start out by walking up through the early versions of LV 8 to ensure the code mutation is correct. The Tag read/writes get converted to
"Legacy" read/writes that wrap up datasocket read/writes. The utility in Max (?) with LV 8 converts the Tag DB to a LVLIB fine.

 

I can't comment on the opto-22 tag mapping.

 

Memory tags are a no-brainer.

 

Watch your privleges, they will kill you.

 

My machine are clones so they don't share a common machine serving to another.

 

There are many properties and method in the project to allow control deploying the shared variables (i.e. starting/stopping Tag engine).

 

The only problem I ran into involved tags maped to Lookout that used the "Off Hook" property and it does not sound like that will hit you.  

 

 

Mock-up,take notes, and post back to see if others have more ideas.

 

Ben

Retired Senior Automation Systems Architect with Data Science Automation LabVIEW Champion Knight of NI and Prepper LinkedIn Profile YouTube Channel
0 Kudos
Message 4 of 4
(3,030 Views)