Motor Control, Software, Hardware and Training

Software Design

1 Introduction

Kappa can design your software from start to end, or can also consult on your existing software. Software for embedded processors is essentially the media for Kappa Electronics to make Motor Control a tangible discipline. It allows us to practically implement estimators, control topologies, power electronics algorithms and graphical user interfaces.

2 Architecture

We at Kappa follow a modular approach when it comes to software architecture. Each main function block, for example, a PI controller, or a Clarke transform, is a module that can be instantiated multiple times.


3 Object Oriented

Using C, Kappa software follows an object oriented philosophy, which provides portability and re-entrance, but at the same time efficiently runs on embedded processors.

Object Oriented

Another benefit of object oriented programming approach in motor control is that more complex modules can be built using existing modules. For example, an FOC module can be built using existing submodules like Clarke and Park modules.

Object Oriented

4 Semiconductor Vendor Independent

We are not in the back pocket of any semiconductor company! We believe that our customers should not be captive to any particular architecture. Kappa will provide an unbiased proposal when it comes to selecting their motor control components. Our software is coded in such a way that source code can be compiled on any processor, whether it is an ARM®, or proprietary architecture, so the software will be completely portable. The use of a hardware abstraction layer (HAL) allows the source code to abstract the peripheral interface, focusing on the actual functionality of the system.

Semiconductor Vendor Independent

At Kappa, we are committed to look after our customers’ interests, and we will select the best microcontroller or analog component to perform the required task, and will let customers know of the options they have so they shop around for their preferred vendor.

Semiconductor Vendor Independent

5 Coding Guidelines

With the purpose of making the code readable and to have the same look and feel of our software, we follow open source coding guidelines. We also use portable types, to make sure all the code is as portable as it can be when building code for 16-bit, 32-bit or even 64-bit architectures.

Even though we have a suggested coding guideline, we at Kappa are not locked in with a particular format, and we are flexible to follow our customers’ coding styles.

Coding Guidelines

6 Documentation

We at Kappa use Doxygen for our software and module documentation, as it provides the features needed to create HTML and PDF outputs, with figures, equations, and also source code documentation, with hyperlinks, API lists, diagrams, etc. To learn more about Doxygen, visit: www.doxygen.org


7 Example

In order to illustrate an example of software developed by Kappa, refer to the following three documents:

7.1 Source File, File Name: pi.h

This source file shows an implementation of a proportional-integral (PI) controller, as well as some run time functions. These functions are implemented as inline functions to improve execution speed, as they would not cause function calls or branching.


7.2 Module Documentation, File Name: pi_manual.pdf

Full documentation of this module is generated by Doxygen, in PDF format, showing the implementation of the object, its functions, and also a theoretical background with equations. At the end of the module overview section, an example using a simulation environment, in this case Scilab, showing how the module can be tested and how users can become familiar by modifying parameters and inputs.

Module Documentation

7.3 Simulation, File Name: test_pi.xcos

Users can use an open source simulation environment like Scilab to get familiar with a particular module. The test_pi.xcos example shows how useful a simulation of a module can be, since it helps users exercise the module without the need of any hardware or any physical system. It also allows monitoring all intermediate signals as needed for debugging purposes.

Module Documentation