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:
The options I've considered:
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?
Here are my two cents regarding the open questions you post:
[...] 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,
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.
Any chance you can replace the networked shared variables with SystemLink tags or messages assuming you are using them for monitoring?