Implementing a reconfigurable machine controller using FPGAs
High performance machines often require specialized control algorithms and advanced synchronization with sensors and vision systems. These requirements can be difficult or impossible to achieve with fixed function motion controllers and drives, and turning to custom design often isn't feasible.
A fully reconfigurable motion control architecture based on the combination of an FPGA, real-time processor, and modular I/O can be used to implement specialized high performance systems more effectively than traditional approaches.
Motion Control: Traditional vs. Reconfigurable
Fixed function controllers and drives ship with firmware that implements behavior that cannot be modified by the end user. These controllers and drives could be optimized for a specific purpose such as driving a CNC endmill spindle, or designed with the intent to be as generic as possible to cover a wide variety of applications within or even across industries.
As long as you operate within the designed use case, these fixed function controllers and drives are usually the most effective choice for implementing an application because you can take advantage of all the design work and feature definition that went into that product, such as advanced filtering, auto-tuning, test panels, diagnostic tools, and a host of other features baked into the firmware.
The problem with fixed function controllers arises when you, as a machine builder, need to step outside the capabilities defined by the motion controller and drive firmware. Unfortunately you may end up in a situation where you are able to complete 95% of your application with a traditional controller or drive, but that last 5% forces you to abandon the entire design and search for a new solution. These scenarios become more common as machines become more specialized and increasingly sophisticated.
The alternative solution machine builders often turn to is custom design. With a custom built motion controller or drive, a machine builder can define exactly the behavior they want to see out of the system. However, custom design is costly, time-consuming, and has its own set of limitations.
Custom solutions can be challenging to build and manufacture requiring a full team of engineers with a specific set of skills. They also include the burden of creating revisions for life-cycle management due to bugs or part availability. Perhaps the most important limitation is that, because of their specific design, the custom solution is likely not a good fit for new features or for the next project.
The result is a continuous cycle of custom design that can be difficult to break, and this is a problem, especially for smaller companies that need to be as agile and lean as possible in their operation. Alternatively, the design and manufacturing can be outsourced to a third-party company, but this approach is expensive and can expose any specialized IP.
So how do you combine the full feature sets and performance of fixed function devices with the ability to customize them as needed for specified applications?
You need a persistent framework that can be developed along the lines of a fixed function device with lots of testing, iterative feature improvements, and the like, but that also is modular such that components of the system can be completely defined by the user to meet very specific and demanding application needs.
The progression of computing technology and reconfigurable embedded design tools (specifically FPGA technology) makes this combination of fixed functionality and custom design benefits possible. The combination of a programmable real-time processor, programmable FPGA, and modular I/O packaged into an off-the-shelf system adds much of the needed flexibility for building control and measurement systems. A diagram of this architecture is shown in Figure 1.
Taking this concept to software is also important. The ability to reconfigure a standard framework; customizing where necessary but still utilizing the rest, is very useful for machine builders. In this software architecture, motion tasks are disaggregated so that largely you can choose where to run a particular task to meet the needs of the application.
Furthermore, each task or block is open, that is, you can modify the functionality down to a low level. Finally, machine control software packages should be constructed to be modular, such that specific tasks could be modified and customized without largely impacting other blocks in the system. This modular approach is to a large extent hardware agnostic, meaning that you can mix and match components to come up with the HW system that meets your needs in terms of axis count, processing power, integration with other I/O subsystems, and level of customizability.
Let’s take a closer look at some of the technologies needed by today’s high performance machine builders that are not well met by fixed function controllers and drives.