VeriStand

cancel
Showing results for 
Search instead for 
Did you mean: 

Disable Target in SDF w/ Operator License

I have a system that is trying to implement a mix-and-match style setup of RT targets.  I.e. The end user can choose to have one, two or three of the targets running.  So, I would like to make it such that I create a single system definition with all three targets defined and then simply disable the ones that are not available/needed (since all enabled targets must be online during deployment).  I would like to avoid having to build all permutations of the three systems (which in itself will be very difficult to ensure that each target is exactly the same in each of the many system definitions).

 

The end user will only have an operator license and I would be doing all this configuration in a LabVIEW application (so using the .NET API is probably required).  I see that the Target class has method "DisableTarget" but does that require a development license?

 

Any thoughts on how this can be achieved without having to generate all permutations of system definitions?

 

Version:  LabVIEW/VeriStand 2013 SP1

 

 

0 Kudos
Message 1 of 6
(3,254 Views)

Hi NathanJD,

 

It sounds like you will need to build the System Definition file dynamically then deploy it.  If you are using Labview you can have it build the sys def using the .Net APIs included with Labview/VeriStand.  Basically the Sys Def is just an XML file.  The links take you to a project that does a lot of the work for you.  This will take some time, but I think it will do what you want.  You will have to dig into the .NET API that VeriStand uses, but the links have a good framework to pull from.

 

https://github.com/NIVeriStandAdd-Ons/Simple-System-Definition-API

https://forums.ni.com/t5/NI-VeriStand-Add-Ons-Documents/VeriStand-Simple-System-Definition-API/ta-p/...

 

Good luck,

Josh

Message 2 of 6
(3,213 Views)

I figured that that is one way to do it but was hoping for a way to do it at run-time (which won't have a developers license which is required to edit system definitions).  So, I guess it's down to dynamically creating all the system definitions at compile time (during the LabVIEW application build process).

0 Kudos
Message 3 of 6
(3,203 Views)

you can also just deploy a sysdef, that has N targets in it, to N or less targets. The veristand execution api's deploy method has a filter input so certain targets aren't deployed. 

Stephen B
Message 4 of 6
(3,198 Views)

Stephen, that would be quite helpful.  However, that option does not exist in the version that I'm using (I'm using 2013 SP1; I found the functionality in the 2015 SP1 API reference but was unable to find any 2016 or 2017 API reference online so I'll have to assume it's in those too).  I think I might be able to reproduce this functionality with another mechanism until we upgrade to a version with this functionality (I still need to test this workaround so I'm hoping it works).

 

The other thing that I'm also needing is being able to change the IP of targets.  In my opinion, the target's IP should be able to change at run-time since it's not really a "need to know at development time" type of setting.

0 Kudos
Message 5 of 6
(3,185 Views)

Totally agree on the IP thing. Its really annoying to have to put it into the sysdef.

 

To work around these issues I made a "VeriStand Deployment Utility" that my company uses. Its a simple GUI that loads a sysdef, lists the targets defined in the sysdef, allows you to select which ones to deploy and set the IP/dnsName for those targets. It uses the execution API's deployment filter to only deploy to the selected targets and the sysdef API for setting the target IP/dnsNames. 

 

Yes I am using 2015 SP1.

Stephen B
0 Kudos
Message 6 of 6
(3,182 Views)