Additional NI Software Idea Exchange

Showing results for 
Search instead for 
Did you mean: 

Allow simulation/emulation of cRIO hardware for compiling (remote deployment)

Status: New

Posted this in Data Acquisition Ideas as well, but it seems like it would be implemented with something like MAX, so...


When dealing with various remotely deployed cRIO hardware configurations, it may be impossible to keep a sample configuration of every type of system we ever sell.  Unfortunately, if upgrades or revisions are made to the base code in our system, remotely deploying to our customers becomes impossible unless we have their exact configuration on-hand for the programmers to compile.  Remote connection to the hardware for this type of operation is also not typically possible.


To be able to simulate or emulate a full cRIO system (processor & hardware modules), then compile the RT code for deployment on that system as if it is physically connected to our development system would be ideal.  This would allow images to be created, which can be sent to customers for local deployment at their facility.  Dramatic decrease in "hardware library" requirements on the development end, reduction in "on-site upgrade" service trip costs to the customers.  Plus, easier for OEMs like me to justify the move away from PLC types of hardware and towards cRIO, once you take away some of the potentially nightmarish continued support and update issues involved with basing systems on cRIO platforms.


Indeed with NI-MAX you can simulate a full system like a cDAQ Chassis including the C-modules inserted.

Sadly there is no option to simulate a cRIO chassis. At least I haven't found any.


In the project manager you have the option to simulate the FPGA part on a cRIO, that enables you to test FPGA VI's on your PC before compiling them to the cRIO.

Nonetheless this option helps you only, if you have a real chassis connected to your PC.

Is there any way to simulate the full cRIO chassis with all Modules?

I would really appreciate any help to do so!

Active Participant

At first, I thought you were talking about software (e.g. driver versions).. I agree with your request, and included some thoughts on how you would need to go about it in its current state.


Saving MAX reports for each system in its shipping state gives you a interactive (and parsable) snap-shot of hardware and software configuration of the target.  These are simple to create and don't take too much space... but they do require some more effort.  Without simulation capabilities, you would still be blind to whether any recompiled/fixed code will actually work.


As far as I can see/think, to be 100% sure your updated code would run/work as intended (functional testing), you would need not only the actual cRIO hardware, but also, in the case of control equipment, the actual or simulated process inputs as well.  Simulated hardware wouldn't be sufficient in that case..  And even if you don't need the hardware to do full functional testing, I agree that it would be nice to be able to create a 'deployment image' that you can provide (with e.g. NI RAD) for ease of customer update of the target.


One way you might currently 'fake' this is, as long as you have access to a cRIO (without the modules): 

1) update the drivers etc. of the cRIO controller.

2) update your code, compile and deploy it. (It wont' run correctly because you are missing the hardware, so set the switch on the cRIO to 'no app')

3) use NI RAD to create an image of the controller.


This should allow you to create (but not test) new images for hardware that you don't have (complete) sets of.

If you don't have a cRIO, things get more tricky.. Since the images are just (nested) zip files, you could keep base images on hand, copy the base image, replace/add the RTexe parts and send out.. Not sure how you would go about updating the ni-rt folder/drivers of the base image though, but with a bunch of manual effort, it should be possible to dig out those files from the dev computer and manually update these as well (don't forget to update the ni-rt.ini file as well!)... seems like a nightmare though.


This makes me realize just how lucky I am in my job, we deploy dozens of cRIO's globally, but they are all configured the same way so code validation and code update issues are a lot simpler to deal with.  I therefore have an R&D setup that I use when I need to test, validate and create updated images.



CLD LabVIEW 7.1 to 2016

Seems you're looking for configuration management, CI and HIL. 

See: git, jenkins, labgrid.


Linux Embedded / Kernel Hacker / BSP / Driver development / Systems engineering