On a project started a few years ago, we had a need for an embedded system with the following requirements:
- Needs to be programmable in LabVIEW (the only language I programmed at the time)
- Small footprint industrial system to be fitted into a control cabinet.
- Support a number of I/O devices connected through digital interfaces (USB, RS-485, Ethernet)
At the time, the only simple option was the NI Industrial Controllers. These were industrial PCs that were primarily targeted at vision inspection systems, so had a large number of digital interfaces.
As time has moved on, so has NI's focus, and it was recently announced that the last of these are going end of life.
To be honest, we weren't using these to their potential anyway, and it had been on the cards for a while to review the options for moving to a more appropriate target. Now we have that reason!
Side Note: You may find this article because you are in a similar bind, but you are using more ethernet ports, LabVIEW FPGA or Real-time features. This is much more difficult to migrate off - I'm sorry.
Options
So given that, what are the options? The big constraint is LabVIEW, so we have to lean into that or evade that, which provides two major options.
CompactRIO or other NI Controller
The NI option would be to move to a compactRIO. The controller aspects are very similar to what we are using already, and the code would directly run on the system.
There are a few downsides to this approach:
- The form factor is larger and would require the cabinet layout to change.
- While we could bring some of the IO on board, the fidelity we require isn't very high. This makes C Series modules an expensive option. Meanwhile, the basic controllers have limited communication ports (ethernet etc.).
- The cost is relatively high compared to other options. This is because we get a lot of capabilities we won't use, such as the FPGA.
The strengths:
- The code will just work(TM) with a project reconfiguration. This reduces the risk and complexity of the project.
- We have room for much more flexibility on the IO. The project is still under development and we get requests for different IO modules. A modular platform like cRIO makes it easier to accommodate different system changes without introducing new technologies and devices.
If you need more Ethernet or USB ports, then that forces you to PXI, but that won't work in many industrial settings due to the size and environmental constraints.
Off the Shelf Industrial Controller
We could move to a Linux-based system from another provider.
The strengths:
-
Can match the existing form factor quite closely. Less work to accommodate the change in hardware.
-
We can significantly reduce the cost compared to the NI hardware as we can choose from a larger range of products and pick a capability closer to what we need.
The weaknesses:
-
Running LabVIEW on these systems is more difficult. It is possible but involves compiling LabVIEW on Linux and wrapping it in a launcher application.
-
We lose the real-time capabilities of LabVIEW. This is not critical in this application but could be in other cases.
-
The alternative is rewriting the application, which is costly and causes significant project delays. While we may migrate in this direction over time, a full rewrite is out of the question.
What will we do?
Ha! you weren't hoping for a clear answer, were you?
In this case, we don't have a specific time pressure as we already have hardware purchased for the next system, so I will discuss this with the customer as we progress.
I suspect going to another industrial controller will make the most sense for a few reasons, but we shall have to go deeper into the options to make a final decision.