I just downloaded the updated version of the deployment utility (rtadu_1008). Any chance of resaving it for LabVIEW 8.6. Not everyone gets the new version of LabVIEW immediately.
The published RT Application Deployment Utility does depend on some new features in LabVIEW 2009, so I can't save it back to a previous version directly.
I have previously posted a beta version of the utility in LV 8.6 on NI Developer Community which is based on the RT System Replication Tools VIs available for LabVIEW 8.6. I plan on updating this 8.6 version of the utility soon, but it will be a bit different from the published code in the DevZone article.
As an integrator who has deployed CRIO systems in the field, my major issue is updating individual systems, not replicating a large number. For instance, I have a customer who is currently running an app that was in Labview 8.5, and I would like the ability to update his NI-RIO version on his controller along with getting the RT on the CRIO up to 8.6 as part of an overall app upgrade. Having the ability to put a module in my host application to provide that level of individual updates (rather than a full image) would be great.
Also, I don't necessarily have identical CRIO hardware (some will be 9012's, other 9014's, etc) so I would have to create an image for every controller variant that I have in the field.
If you plan on upgrading NI-RIO and the RT version on the controller, you will also need to update the deployed application as it is version specific. You may also need to update other drivers to newer versions depending on the specific software you are using. I suspect that you will likely need to update a majority of the files on your system in this scenario. You can of course integrate this process into the host application using the RT Target System Replication Tools.
Trying to successfully implement modular updates of a deployed application without user interaction (like MAX) and without knowing which software is already deployed on a particular target becomes very difficult due to all of the dependencies between different drivers and versions. Your host application would need to include all of the possible drivers that may be required which in effect would be the same as deploying the complete target image.
re. different cRIO controllers: Currently the RTTSR tools do verify the specific model code, so yes, you do need separate images for a cRIO- 9012 and 9014.
If you know exactly which files you want to update on the cRIO controller you can manually update files on an RT controller using the low level FTP VIs included in the RTTSR and then reboot the controller to run the updated version of the application, LV or drivers.
FYI, I am developing a seperate solution in LV 2009 for a field deployment tool targetted at updating individual RT systems in a scenario as you describe (integrator sending updates to deployed systems), but it will still be based around an application image. You may be able to turn off the model code verification which would allow you to deploy the same image to different types of controllers. Note that the FPGA code (bitstream or ScanEngine) is always chassis specific and must match the FPGA or chassis used in a system.
I have a problem which is probably just caused by my lack of experience in this product line. This is my first project using the cRIO.
I am using a cRIO-9073 target to develop a circuit board test system. I have completed the work on my development PC, which has a Vista OS. I am using Labview 2009, and of course have the RT module. Everything works fine on my development PC. My goal was then to move this application to another PC (running Windows 7) and send the new PC and the cRIO hardware to my customer. I built the app and installer and it all installed fine, though I admit I may not have included everything on the installer that I needed to. I also installed the complete DaqMAX CD onto the new PC. The new PC does not have Labview or the RT module on it.
My problem is that the new PC does not detect the cRIO target. I am running direct connection from the PC ethernet port to the cRIO, using the exact same cable that I was using on my development PC. I am going in to the MAX program and attempting to detect the cRIO under Configuration>>Remote Systems, but the PC does not find the cRIO.
I have checked and the new PC is in the same subnet as the cRIO. I even tried connecting the new PC to my development PC to verify the network is working, and it found my development PC right away.
I don't know what special software I may need to add to my installer build to get the cRIO to be recognized by the PC, or if there is something else I need to install directly on the new PC.
Also, as a related question, I anticipate needing to make additions/updates to my test app after I send the PC and hardware to the customer. What additional files should I install on the new PC now, so that I can email updated .exe's or installers to the customer later, for them to install?
Any help or advice on what I need to do would be appreciated.
I am glad to help with this question. The short answer is that the behavior that you are seeing is expected, and the solution will depend on how your customer is using the cRIO system. The reason that the target does not show up in MAX on the customer's system is that the LabVIEW Real-Time Module is not installed.
If the customer is going to use the cRIO with a dedicated application (you just have one RT program running all of the time), then I would recommend building a startup executable in LabVIEW from your real-time code and downloading it to your cRIO. Many customers also create an executable LabVIEW program to run on a host computer to interact with the real-time target via IP address. All of this can be done without the system showing up in MAX on the customer's computer.
If the customer needs to switch cRIO applications from time to time, they could also interact with the cRIO via FTP to change the startup executable.
In the case that neither method above will work for what you would like to do, I would appreciate learning more about your application and we can continue to explore other options from there. I am sure that we can work together to find a solution that will work for you; have a great day!
Product Manager, LabVIEW Real-Time
Thanks for responding to my question. This application is one that will be used to do production testing on various circuit board assemblies. I have written separate projects for each board, so the customer will be needing to run several different executables for the same cRIO system. I built the programs into .exe files, which I installed into the new PC. (My intention is that the host PC will control the program, such as selecting different test options and responding to various yes/no questions during program execution, using the ethernet connection). These are the .exe files that I tried to run on the PC. But, after the .exe launches, I get error messages saying
"""Error -1073807343 occurred at Property Node (arg 1) in VISA Configure Serial Port (Instr).vi->ESCO Serial 115200 Write and Read NO CLOSE.vi->START ATE.vi->ANALOG FRONT PANEL 0_01.viPossible reason(s): VISA: (Hex 0xBFFF0011) Insufficient location information or the device or resource is not present in the system.
The serial ....vi that the error message refers to is using the serial port of the cRIO to communicate to the board being tested. So, the bottom line is that I need the PC to communicate to the cRIO via the ethernet connection during program executation. I don't see how this can happen if the PC doesn't even know the cRIO is connected.
Thanks for any help you can provide.
Thank you for taking the time to explain what the goal of your application is; this helps a lot. I would recommend the following:
Create a LabVIEW Real-Time application (for the cRIO) that uses TCP/IP or Shared Variables to receive a command from a host machine. The LabVIEW Real-Time application can then call one of several subVIs depending on which board will be tested. After each board test runs, you could save the data to disk or send it back to the host PC via TCP/IP or using Shared Variables.
With regards to the error that you mentioned, it probably signals that NI-VISA is not installed on your customer's computer (you likely want to include this with your installer) The host program is having trouble finding the serial port resource to communicate with. Does your executable work correctly on your development machine?
It makes sense that you want to use the Ethernet connection on the cRIO to communicate with a host PC during execution. Keep in mind that just because there isn't a way to see the cRIO in MAX on your customer's system doesn't mean that it isn't present on the network. MAX just doesn't have the right files installed to detect the target (those files come with the LabVIEW Real-Time Module). The simplest way to make sure that the cRIO is up on the network is to send it a ping command via TCP/IP. You could also build your program so that you send a test string from a host PC and then return a string indicating that the cRIO is communicating properly.
Please let me know if you have any additional questions, and I am glad to help.
Product Manager, LabVIEW Real-Time
Thank you very much for your time in answering my questions. I understand perfectly what you are recommending that I do. However, being somewhat of a novice with Labview I do not know all of the details of how to do all of the things you recommend, such as "Create a LabVIEW Real-Time application (for the cRIO) that uses TCP/IP ". Can you please recommend some of the papers or other info that I am sure exists on the very extensive and impressive NI website to help guide me through some of these activities?
Incidentally, yes, my application works great on my development PC, I just hope I can get it to work as well on the customers' PC.
Thanks again for your help.
I would recommend that you take a look at the CompactRIO Developer's Guide located here: (http://www.ni.com/compactriodevguide/).
In addition, feel free to post specific questions about individual parts of your application on the LabVIEW Real-Time forum (http://forums.ni.com/ni/search?submitted=true&type
Simplified CompactRIO Development Cycle
The CompactRIO development cycle often goes as follows (I am assuming for now that you are not doing FPGA programming):
- Create a LabVIEW Project and write a LabVIEW VI to run on the CompactRIO. You can see a front panel on your development computer that helps with inputting test cases and outputting debug strings. Keep in mind this front panel is typically not used when you finally deploy your system or send it to a customer.
- Once your CompactRIO program is working, create another user interface VI in your LabVIEW Project that will run on your PC. This VI will send data to your CompactRIO and receive data back. It will contain any buttons / inputs that a user should interact with as well as display graphs, etc.
- When these two VIs work together correctly, then compile both of them (build executables). You can download the CompactRIO executable and set it to run every time the CompactRIO is powered up (this makes for a robust system). In addition, you can package the PC executable into an installer and then send it to customers.
Another Option: Remote Front Panels
- If you do not have time time to develop separate VIs for the CompactRIO and PC user interface and just want a quick solution, you can use the built-in web server in LabVIEW to allow your customer to access the CompactRIO via a web page (without running any LabVIEW application on their PC). This web user interface is called a LabVIEW Remote Panel. If you do not need to save data to disk on the host PC, and you are ok with a bit less responsiveness, using remote panels could be a good option.
LabVIEW Real-Time Training
If you will be developing several CompactRIO applications and would like to spend minimal time getting started, I would highly recommend the LabVIEW Real-Time training course (http://www.ni.com/training/). The LabVIEW FPGA course can also be useful for applications where you really want to take full advantage of the CompactRIO hardware.
Please let me know if you have any more questions, and have a great day!
Product Manager, LabVIEW Real-Time