Real-Time Measurement and Control

Showing results for 
Search instead for 
Did you mean: 

Software Distribution



I'm trying to wrap my head around distributing software for CompactRIOs. I have a software application that acquires data using C-series modules and custom FPGA logic to process data. I have a few goals for distributing this application:

  1. I don't want customers to be required to have a LabVIEW development environment to install the software. The added step of having to ship the hardware first to me to setup the system is highly undesirable.
  2. Make the installation process as simple as possible. Ideally a single file that I can send them that they install through SSH or MAX
  3. I'd like to be able to support hardware configurations that I don't have the hardware for myself

The options I've considered:

  • RAD images - Fulfills #1 and #2, but not #3 since I can't take an image of a system I don't have. There's also a problem where these cRIO may be managed using SystemLink and re-imaging a system blows away their minion ID
  • Plain rtexe file - Fulfills #1 and #3, but not #2 since the customer won't be able to deploy chassis settings and shared variables. They also need to manually install NI software drivers through MAX (not a deal breaker though)
  • Package - Can create a package distribution that wraps the rtexe build. I haven't tested this, but this should fulfill #2 and #3. Packages have a nice dependency feature that allows you to setup dependencies on NI driver software (although this may only work when using SystemLink). Still have problem with chassis settings and shared variables needing to be deployed.

I like the idea of the package route. When customers have SystemLink they can just all the package to their repo and install. Without SystemLink they just need to ssh into the cRIO and install the package using OPKG (and maybe manually install driver dependencies). I'm getting hung up on deploying chassis settings and shared variables though. Is there a way to do this outside of LabVIEW? Maybe a Host VI that I can create that they run to set the cRIO up? Is there a better way to do all this that I'm not considering?



0 Kudos
Message 1 of 4

Here are my two cents regarding the open questions you post:


@mbremer wrote:

[...] Is there a way to do this outside of LabVIEW? Maybe a Host VI that I can create that they run to set the cRIO up? Is there a better way to do all this that I'm not considering?

I know you can deploy the network shared variables from the application itself, per Deploying Network Shared Variables from a Compiled Executable.


The targets settings might require more work than checking two boxes in the build specification. I am unsure of all the pieces that go into it (disclaimer: I always use the RAD Utility as-is), but it might be a good exercise to dig into the source code and see how it is handled there: Replication and Deployment (RAD) Utility with LabVIEW 2018


Hopefully you also get to try the packages and SystemLink option. Perhaps adding these server capabilities of remote monitoring and data analysis might also rise the customer value of your solution.


In any case, let us know your final decision. This is one of those cases where no matter the amount of tools available, there doesn't seem to be a direct answer. I am curious to see how it turns out.


All the best,

0 Kudos
Message 2 of 4



I don't think you can deploy shared variables from an RT application (see the last section of that article you linked). On top of that, I can't follow the steps in that last section either since I'm trying to deploy scanned variables which aren't tied to a library file that I can programmatically deploy from a host VI. Appears I'm stuck here.


I'll have to dig into the RAD utility, there must be files on the system that store the chassis configuration and the scanned variables. If I can find them maybe I can just add them to the package as well. The only problem with this is whether the files are hardware specific. Then we'll need to have a copy of the hardware in-house to create the distribution. Ideally they would be plain-text files that we could automate updating them.


Will keep looking.

0 Kudos
Message 3 of 4

Any chance you can replace the networked shared variables with SystemLink tags or messages assuming you are using them for monitoring?

0 Kudos
Message 4 of 4