Figure 1 – Single Core Motor Controller processor allocation based on task demands.
As can be seen in Figure 1, all these critical tasks are serviced by a single core, each of these tasks although can have different priorities, but at the end of the day, the real-time execution of all these tasks together is the key to efficiently control a Motor, it’s clear that the latency in each of these tasks will propagate to all the other units, and the higher the priority of a task, the more will be the delay effect on the whole control.
Based on Figure 1 above, the most two critical tasks for controlling a Motor are:
1. Analogue Measurements
2. Controllers ( Torque, Speed, Position)
And the duty of a high performance Motor controller is to guarantee the real-time execution of these tasks with fixed sampling rate and without latency.
Another point to consider is, In a single core processor, as mentioned before, there are various tasks priorities, and each of these tasks can exert an interrupt upon their compilation, and each interrupt to be serviced will eventually needs to halt other tasks and gets serviced by the main CPU because again the only processing unit is a single core, and it can only service a single operation at a given time.
The drawback of such a method is clearly the more complicated your tasks get, the more processing power they will require, and this simply means the CPU will run out of resources to address all the computations in time, and the result is dramatic performance drop in control of the motor itself, since the main two tasks mentioned above will not be serviced on-time followed by badly sampled analogue measurements and finally wrong input and outputs from the controllers which can potentially result in total failure of controller specially for sensitive systems.
The solution to this problem is simple, dividing the processing load between 2 cores instead of one, and making sure each core executes the tasks in real-time with highest possible performance as can be seen in Figure 2 below:
Figure 2- Dual Core Motor Controller task assignments with parallel processing architecture.
As can be seen in Figure 2, which is the actual processing architecture in SOLO Motor Controllers, the critical tasks of Analogue Measurements and Controllers are placed totally in a separate core un-affected by the tasks executing in the first core, resulting to have extremely higher bandwidth available for each of the tasks specially the main two critical tasks as mentioned before. It is worth mentioning that, each of these two cores are exchanging data with each other, but in an ideal design the goal will be to reduce this phenomenon as much as possible and keep the two cores as independent as possible which will finally result in higher performances. Now it’s the time to look over some big leaps going from single core processing to multi-core processing shown in table below:
As can be seen in the table above, the performance enhancement for major tasks is significant and it is worth mentioning that all the reported values are obtained by SOLO UNO motor controller while operating in Single Core mode and then transmitted to Dual Core mode, one first thing that comes to mind after such a comparison is how this performance enhancements really affect the Motor controller and if it has any effect on the Hardware and power electronics used in the system or not, and below we will elaborate two major improvements.
Higher Quality Torque control
The torque or in better words current controller, is the closet controller to an Electrical motor in any Nested Torque, Speed and Position controller type of architectures like Field Oriented Control ( FOC), and the goal of such controller is to control the current injected into the motor resulting in Motion, As in most electrical Motors the electrical dynamics which is controlled by current controller is much faster than mechanical dynamics that is controlled by Speed or Position-Speed controllers, so the current controller by nature needs to run way faster or in technical terms with much higher bandwidth. Now the faster the Current Controller can execute, the better will be the quality and shape of the current injected into the motor due to the fact that the current controller has faster observation over variation in current feedback so it can react faster and more efficiently. To understand this phenomenon, you can imagine a switching pattern with fixed frequency like what shown in Figure 3 below which is the output of the current controller in single-core and dual-core cases. The Mosfets or IGBTs that are contributing in controlling the current inside the Motor will turn ON and OFF once the patter goes from to 0 to 1 and vice versa, to simplify the switching pattern we took an arbitrary switching frequency of 40kHz and we have divided this pattern into 5 main sections, each time the current controller computes a proper output is also shown with RED ‘x’ mark.
Figure 3- Current Controller Bandwidth effect on switching patterns.
The very first thing that comes into sight, is the difference between the number of times that between each sections, the current controller computes an output in Dual-Core case versus Single-Core case, and this higher rate of controller output calculation in Dual-Core mode will result in much higher accuracy in reference tracking as it provides the most updated and accurate Duty cycle for each section, while in Single-core architecture, every two sections we have one time execution of current controller and subsequently it provides less accurate outputs, it’s also interesting to note that in Single-Core case, there is always 1 or more sections that doesn’t have a explicitly computed output and they just follow the last computed value for current controller in the next section as well, as can be seen in section 1 and 2 or 3 and 4 above. Another point is the harmony and less radical duty cycle variation offered while the current bandwidth is higher as in case of Dual-Core mode versus Single-Core mode, so the switching patterns are distributed more evenly and this has lost of advantages including less switching losses due to having less control effort and much more accurate duty cycles which will avoid introduction of unwanted rise and falls in current inside the motor and also the Mosfets or IGBTs, resulting in higher dissipation and stress over the components in case of Single-Core design that will eventually offer less performance over cost.
Better Separation of Digital and Analogue processings
In Any modern motor controller, there will be two main sections of Analogue and Digital processings, such that Analogue processings are devoted to tasks like measurement of currents or voltages with deterministic sample time, while the Digital processings are mostly dealing with sending and receiving commands and data from external environment and mostly done in asynchronous mode, now if the architecture of the controller is based on a single core processor or CPU, at any given time there is a chance to have conflict or race between Analogue and Digital part over resource allocation, of course one might say we solve the issue with assigning priority for each task, but this is not going to be the final solution to this issue because the task that has higher priority will eventually impose delay over tasks with less priority up to a point that it can significantly reduce the responsiveness of low priority tasks. For example in a modern Motor controller, normally the output switching frequency, is synchronised with sampling of the Analogue voltages and currents and the sampling of analogue signals has normally the highest priority in real-time and high performance applications, now by increasing the switching frequency, the demand for sampling of analogue signals will increase, and subsequently the CPU will engage more with this high priority task and it will have less time to service other tasks, on the other hand, any time the single core CPU decides to service the Digital processes like UART, CAN or EtherCAT communications, it has to halt the execution of the analogue measurements and control and as a result the quality and performance of Motor control will drop significantly, however in case of Multi-core processors, these two tasks are much more independent and the Motor controlling will be minimally affected by data transmission.
In this article the goal was to show how in practice the Multi-Core processing prevailed at any level to Single-Core processing in Motor controlling, all over this article the factor of Performance/Price for the processor should be taken into account meaning that for a single core processor that costs relatively 30% cheaper than a Dual-Core processor, has up to 8 times less performance in critical tasks like fast current controlling which can make the choice of Dual-Core versus Single-Core processors finally reasonable and economical.
Nothing is better than awareness when someone wants to solve a problem! It might be very costly to become aware of the main issues, and the more you know, the better you can dig down to the roots and causes of problems and eventually solve them. That's the purpose of...
One might be well aware of the encoders, their operation and how to count their pulses for various purposes like position or speed control in different types of applications, and here we are not going to talk about that, instead we are going to talk about the problems...
Brushed motors Brushed motors were introduced in the 19th century with the invention of solid-state electronics technology. Brushed motors were the first equipment to produce mechanical energy with the help of electrical energy. A DC power was required to operate a...