Application of Auto-Coding for Rapid and Efficient Motor

2014-01-0305
Published 04/01/2014
Copyright © 2014 SAE International
doi:10.4271/2014-01-0305
saepcelec.saejournals.org
Application of Auto-Coding for Rapid and Efficient
Motor Control Development
James Walters, Cahya Harianto, Edward Kelly, and Tanto Sugiarto
Delphi Automotive
ABSTRACT
In hybrid and electric vehicles, the control of the electric motor is a critical component of vehicle functions such as motoring,
generating, engine-starting and braking. The efficient and accurate control of motor torque is performed by the motor
controller. It is a complex system incorporating sensor sampling, data processing, controls, diagnostics, and 3-phase Pulse
Width Modulation (PWM) generation which are executed in sub-100 uSec periods. Due to the fast execution rates, care must
be taken in the software coding phase to ensure the algorithms will not exceed the target processor's throughput capability.
Production motor control development often still follows the path of customer requirements, component requirements,
simulation, hand-code, and verification test due to the concern for processor throughput. In the case of vehicle system
controls, typically executed no faster than 5-10 mSec periods, auto-coding tools are used for algorithm development as well
as testing. The advantages of auto-coding to greatly speed the development process by linking the tools for simulation,
code generation and testing early in the development process as well as to more easily investigate performance issues late
in the process are well known. It is not uncommon, however, to lose coding efficiency with this approach. While the loss of
efficiency may be tolerable for slow periods, it is not acceptable at faster periods used in motor controls as it will preclude
the algorithms from executing or drive unnecessarily expensive solutions.
This paper will present an auto-coding process applied to motor controls, including full implementation on a production
permanent magnet motor drive. Best practices for implementing requirements into models that generate efficient code will be
highlighted. An overview of the issues associated with model-based documentation will also be covered. The use of test
vectors at the component, model and hardware-in-the-loop (HIL) level will be presented to show the benefits derived from
using a formalized process and the natural linkage to a SPICE® compliant process. A timing study performed during
dynamometer testing detailing the differences between the original hand-code and the model-based code will be presented.
CITATION: Walters, J., Harianto, C., Kelly, E., and Sugiarto, T., "Application of Auto-Coding for Rapid and Efficient Motor
Control Development," SAE Int. J. Passeng. Cars – Electron. Electr. Syst. 7(2):2014, doi:10.4271/2014-01-0305.
INTRODUCTION
A general product development cycle contains several basic
steps including: the formation of customer requirements,
analysis of requirements to form the high level system design,
development of software and hardware requirements, software
and hardware design and ultimately verification testing at both
the component and system level [1]. Automotive manufacturers
often require their suppliers to follow a software development
process such as the Automotive Software Process Improvement
and Capability Determination (SPICE®) process [2]. The
Automotive SPICE® process, shown in Figure 1, summarizes
these steps.
Figure 1. Automotive SPICE® Process
Walters et al / SAE Int. J. Passeng. Cars – Electron. Electr. Syst. / Volume 7, Issue 2 (August 2014)
In these steps, there are numerous simulations performed to
verify the system goals will be met by the design. From the
capturing of requirements to the creation of software, it is
desired to directly use the simulations that have been performed
so as not to repeat the effort and potentially introduce errors. In
addition, it is desired that the simulation model accurately
reflects the implementation as it will greatly aid in any
subsequent problem resolution.
The Automotive SPICE® Process recognizes that engineering
development will need to incorporate the contributions from a
variety of engineers including systems, function developers,
software, and test engineers. What is needed is a tool and
methodology that can directly support the translation of the
system and component designs, often simulated early in the
process, efficiently and accurately into an implementation that
can be verified and released quickly. Auto-coding is a tool that
facilitates development by translating simulations, performed in
the System Design step, into the final software implementation
[3]. It has also been used in the last decade to implement many
functions in the vehicle [4] - [6].
evaluated not only for accuracy to requirements, but also for
efficient code generation. The benefits of this approach are
substantial as the simulation tools can now be used to verify
compliance to system requirements and thus allow porting
concepts from simulation directly onto hardware. There are also
other inherent benefits as the already tested concepts are now
easily transferable between different projects and production
hardware can now be utilized as a development platform.
Motor Control Background
In a hybrid vehicle, the motor controller is responsible for the
efficient and accurate production of torque. This torque may be
used to perform a variety of tasks including motoring, generating,
speed regulation, and/or dc voltage regulation, depending upon
the application. An overview of an electric machine drive system
is shown in Figure 2. The input to the system is a command that
is typically obtained from a Hybrid Control Module (HCM) via
communication lines and the outputs are 3-phase voltages
applied to the machine. Typical components of the motor drive
system include: the battery, motor controller, sensors for current,
temperature and position, inverter and motor.
Although auto-coding offers considerable advantages for
development, many of the implemented designs have been for
relatively slow loop control tasks (5-10 mSec or greater period).
Ironically, complicated time-critical components which are
mostly likely to be simulated are not as commonly auto-coded,
thus losing a potential resource saving opportunity. This is due
to the concerns that the auto-coding process may have
additional overhead in algorithm execution causing throughput
issues in the application.
It should be noted that there are Rapid Controls Prototyping
(RCP) tools that allow for quick transitions from a model-based
/ simulation environment to concept testing [7]. RCP does
eliminate the need for the manual hand-coding step when
transitioning from the simulation model to the implementation,
which requires additional effort and is prone to errors; however,
this process involves extra hardware. The RCP approach,
which can be extremely useful for concept testing, is inherently
different though since the goal is concept development and
evaluation rather than efficient code generation in a production
environment.
This paper focuses on the development of an Automotive
SPICE® compliant process using auto-coding techniques for the
torque control of a permanent magnet synchronous machine
(PMSM). By appropriately defining a process and associated
design environment, it will be shown how to directly go from
simulation to implementation for a complicated system involving
many contributors and to naturally perform both system and
software tests in an automated fashion. The process to actually
implement a design in this fashion is non-trivial and necessitates
a requirements focused approach with the implementation being
Figure 2. PMSM Drive System
As shown in Figure 3, the main components in the inverter are
the 3-phase bridge which receives 6 gate signals from the
motor controller and the DC bulk capacitor. The three legs of
the inverter are connected to the electric machine. For many
applications in hybrid and electric vehicles, the PMSM has
emerged as the preferred motor technology, though induction
motors are commonly used as well [8, 9].
Figure 3. 3-Phase Bridge
Walters et al / SAE Int. J. Passeng. Cars – Electron. Electr. Syst. / Volume 7, Issue 2 (August 2014)
Figure 4. Torque Control Overview
From a vehicle driveline perspective, torque response is needed
within a 30-50 mSec range in order to satisfy performance
requirements for cranking, torque assist, generating, and
braking. In order to create torque that is impervious to voltage or
speed disturbances, it is necessary to control currents in the
machine at a much faster rate, however. Vector control
techniques are commonly employed to perform this task [10]. For
a variety of reasons including motor time constants, the
maximum fundamental frequency in the machine (1000-1400 Hz)
and limiting DC capacitor voltage ripple, it is necessary to run
current control loop rates of approximately 100 uSec. The
sampling of the inputs, current and position, calculation of current
commands, control of current, and the associated transformation
pairs for vector control as well as the center-based PWM
generation must all be performed at this rate of 100 uSec.
The regulation process can be described in Figure 4. Therein,
the commands to / from the controller are denoted with the
starred quantities (e.g., Te* / ωr* denote the commanded torque
/ speed).
In addition to the motor control functions, the protection of the
inverter has to be considered. The diagnostic protection needs
to respond quickly to critical fault conditions (e.g., shorted
devices, loss of current control, etc.) and will require
functionality in the 100 uSec loop. Finally, sufficient throughput
must be available to ensure that slower loops (1, 5 and 10
mSec) have adequate time to execute.
As can be observed, the torque control of an electric machine
is inherently a challenging process. Not only does the control
process require fast data sampling, the execution of the current
control to generate the torque on the machine requires fast and
precise timing. Although auto-coding the PMSM control
algorithm can provide great benefits (e.g., faster and more
efficient development process and quick transitions from
simulation to final product implementation), care must be taken
in this approach so that the resulting code is efficient and does
not consume excessive throughput on the microprocessor.
AUTO-CODING TOOL SELECTION
Conceptually, a simulation model represents the programming
language and an auto-coder is effectively the compiler. The
goal is to select a toolset that enables the transfer of the
‘coding’ responsibility from the software engineer to the actual
function developers. This step is fundamentally important as
the function developers possess the domain knowledge that
allows for a direct implementation to the requirements.
Furthermore, it is also important that the toolset satisfies the
initial goal of performing the pertinent simulations used to
design the system. It is also necessary for the toolset to quickly
and accurately generate code that executes efficiently. Finally,
it is desired, as part of the SPICE® process that the toolset
allows for seamless verification testing of the implementation.
Testing should be performed at each stage, from software
integration test continuing through the complete system test. It
is desired that test vectors, known inputs with expected
outputs, are used to verify each major block as well as the
overall motor control strategy shown in Figure 4.
While there are a variety of options, the MATLAB® toolset was
chosen for this work. First, the system and motor control teams
are already familiar with this tool from their design simulation
work. Next, the toolset can be used from one end of the
development process to the other as the model can be
conceived, simulated, auto-coded and verified all within this
environment.
AUTO-CODING PROCESS FOR PMSM
CONTROL
Per the SPICE® process, product development starts from the
point of the high level requirements being captured continuing
to system requirements analysis which should contain a high
level simulation phase intended to define the system. In
SPICE®, there are also many steps involved with the selection
of tools and methods that should occur, which fall outside of
the intent of this paper. Focusing instead on the development
of requirements, reviews are held to ensure that the proposed
system design will meet the overall requirements and to
establish traceability.
Walters et al / SAE Int. J. Passeng. Cars – Electron. Electr. Syst. / Volume 7, Issue 2 (August 2014)
Figure 5. High Level Motor Control Architecture
In the specific example of the motor control component, there will
be requirements for control modes such as torque, speed, DC
voltage and fault reactions, performance requirements related to
torque response rate, torque accuracy, torque, voltage, and
current ripple, as well as requirements for overall efficiency. In
order to design a solution to meet these requirements, numerous
control level simulations will be performed to derive software
requirements.
Implementation
The simulations used to form the requirements are now the
basis for the implementation created by the motor control
function developers. An output of the design phase should be
an architecture that captures the functionality shown in Figure
4 and converts it into specific modules. The architecture should
clearly define each module’s inputs and outputs, when it is
executed, and its requirements. Figure 5 provides a high level
overview of the motor control architecture with the major
modules shown. For each module, there will be models
developed to meet the associated requirements.
Once the component architecture has been defined, the focus
now shifts to creating a code-efficient model that meets each
module's requirements and is easy to understand and share
among a team. Simulation tools offer a wide array of options
for implementing algorithms. High-level models, state diagrams
or even near C-code implementations can be formed with each
offering advantages. In order to maintain ‘read-ability’ among
the team as well as to foster a common approach, a style guide
was created. The guide includes not only the recommended
approach for model development but also the standard that will
be used in peer reviews. Furthermore, the guide also includes
example implementations to ensure that the developed models
will generate efficient code. It is a living document meant to
show the best practices of implementation.
In order to highlight the impact of model implementation and
the need for a consistent guide, a few examples will be
presented. In the first example, a portion of the Space Vector
Modulation (SVM) from module 2.8 in Figure 5 is shown. In this
module, an on-time related to the voltage to be applied to the
motor is calculated based upon inputs from the current
regulator's voltage commands and the motor's angle. The
important aspect is that a selector switch is being used to
choose among different cases. Figure 6a shows a common
high level model approach for the implementation where
redundant blocks are avoided to minimize ‘clutter’. The
associated C-code is shown in Figure 6b. In the highlighted
code, it can be seen that all calculations are being performed
regardless of whether they are needed thus minimizing the
benefit of the selector switch.
Figure 6a. Inefficient Model
Walters et al / SAE Int. J. Passeng. Cars – Electron. Electr. Syst. / Volume 7, Issue 2 (August 2014)
The next example is related to the use of embedded functions.
Embedded functions are often convenient when performing
many complicated mathematical operations. In this example,
an index for an array is calculated using single precision math.
After the index is determined, it is necessary to convert it to an
unsigned 32-bit integer to find the value in the associated
array. When used in an embedded function, the basic
typecasting command uint32(.) was discovered to generate
additional lines of code as shown in Figure 8. As can be seen,
there is additional rounding logic being performed as opposed
to the basic truncation that is expected.
Figure 6b. Inefficient Code
A superior solution can be formed by recognizing how the
auto-coding tool compiles. The model can be reformed as is
shown in Figure 7a. The result of more efficient C-code
generated from the model is shown in Figure 7b. The code
shows that the intent of the selector switch is now being
followed with only the needed calculation being performed on
each loop. Though the model is now slightly more ‘cluttered’
due to the redundancy, the resulting code performs identically
and will execute more quickly. As can be seen, code that
functions exactly the same can execute differently.
Figure 8. Inefficient Typecasting in Embedded MATLAB® and the
Resulting Generated C-Code
By implementing the typecasting via a custom C-code function
SingleToInteger32(.) that can be called from inside embedded
MATLAB®, the limit and rounding checks can be eliminated as
shown in Figure 9. Also therein, the custom C-code function
has been implemented as a #define for maximum efficiency to
avoid the overhead associated with a function call. Thus the
resulting generated C-code is just the typecasting as was
intended in the original embedded MATLAB® code.
Figure 7a. Efficient Model
Figure 9. Efficient Typecasting in Embedded MATLAB®, Resulting
Generated C-Code and Implementation
A final example of improving code efficiency is in the area of
math functions. Performing calculations using custom functions
can often be more computationally efficient than using the
readily available MATLAB® commands or Simulink functions.
Assuming that memory is available, using a lookup table to
perform trigonometric calculations such as sine or cosine is
much more efficient than using MATLAB®'s sin(.) or cos(.)
function. These functions use an algorithm to determine the
result. While using lookup tables to replace math functions is
not new, the savings can be overlooked by function developers
who are not intimately familiar with software implementation
issues.
Figure 7b. Efficient Code
Walters et al / SAE Int. J. Passeng. Cars – Electron. Electr. Syst. / Volume 7, Issue 2 (August 2014)
In addition to how the model is implemented, the auto-coding
toolset should have features that can assist the development
process and optimize the generated code. As a basic rule, the
toolset should be setup to check the model for errors and
issues by setting diagnostics warnings to quickly identify
problems. Furthermore, the coder should have settings that
can be used to impact the generated code. Optimization for
RAM, ROM or execution efficiency can be selected. As the
primary concern for this work was code execution efficiency, a
higher priority was placed on this objective. It is worth noting
that for these specific models and tool version that the
generated code was relatively insensitive to the objectives that
were set.
Although the examples shown are intentionally basic, they
highlight how by maintaining a recommended implementation
guideline in conjunction with peer reviews from the software
engineers, the toolset can be used to best effect. The basic
step of reviewing the generated code will uncover numerous
areas where improvements can be made to the execution
efficiency. Over time the auto-coding tools have significantly
improved the quality/efficiency of the generated code, but there
is still a need to maintain a knowledge base of best practices
for efficient code. As new modules are created and as new
releases of a tool become available, the best way to implement
concepts will evolve.
Relative to the SPICE® process, the normal peer review to
ensure that requirements are met is also a natural place to
review the implementation for efficiency. The software
engineers are now responsible to carefully track and document
preferred approaches. Their role has also transitioned from the
code implementation to ensuring the auto-coding environment
is set up properly, defining best practices for implementation,
ensuring efficient code implementation, providing expertise in
peer reviews and assisting in the debug of implementation
issues. The motor control engineer has now transitioned from
writing a requirements document and verifying successful
implementation through test to more directly owning the
implementation. While this role does require additional
responsibility to ensure that the selected modeling tool is used
correctly, it minimizes potential misunderstandings of motor
control and software engineers as well as leverages the
existing simulation expertise.
As the model now becomes the implementation, it is important
that each model is easily understandable and consistent with the
models defined in the other modules of Figure 5. It is also
imperative that the overall scope of the full motor control is
clearly visible and easy to understand. With complicated
systems, it is easy to lose visibility of the overall implementation.
As often the highest view of the model will only show function
calls to the various modules, it is necessary to still create a
document that provides additional details on how the
implementation is intended to work.
The architecture, shown in Figure 5, helps to clearly define the
modules and how they relate. Each module will also have an
implementation model associated with it. It was found that
rather than attempting to provide documentation in the model
that an additional document was needed to provide overall
system context as well as module specific implementation
information. This document provides the high level overview of
how the implementation works which may not be easy to
understand from the requirements, architecture or from the
simulation models. It also can be formed in a consistent
fashion for different models to ensure the needed information is
readily accessible and serves as a user's guide on how to
calibrate the associated model. Care, of course, must be taken
to ensure consistency with the implementation, but the overall
benefit of allowing an easy to understand implementation was
found to be worth the additional effort.
Verification
Per SPICE®, it is also necessary to show that the model fully
meets the requirements. This is achieved by creating sets of
test vectors which manipulate the model inputs in the
simulation environment to ensure that the desired outputs
occur per the requirements. Testing of inputs for unexpected
cases should also be performed. As the tool is automated, a
report can be generated at the end of each model modification
to ensure the requirements are still met. Furthermore, the
toolset also offers coverage checks to verify that all appropriate
paths were tested. In addition to this step, a review is held with
the system / software team to verify the requirements were met
and the code efficiently generated. This last step is an
important addition to ensure the implementation is acceptable
and can be naturally added to the normal SPICE® reviews.
While this verification testing was performed in the simulation
environment, it is often necessary to repeat the test on the
production hardware to verify that the final compiled version
executes correctly. The same test vector can often be used in
this phase though additional tools may be required.
Figure 10 shows an example test vector used to verify the
performance of the Torque Mode module (1.3) of Figure 5. This
module is responsible for dynamically determining the proper
d- and q-axis currents commands to the machine to achieve
the commanded torque accounting for speed, temperature,
magnetic saturation and battery voltage constraints. For the
purpose of this example, the motor speed, temperature and
battery voltage are treated as constant inputs to the model,
although they are not shown as part of the input test vector. In
this test vector, the torque commands are being sent from a
variety of inputs including instrumentation to ensure that only
the correct command source is being followed and that the
proper current commands are being calculated for the
simulated voltage, speed and temperature conditions. The
torque command source is determined by ‘Cmd Source’ where
0 denotes Ignore Input, 1 denotes CAN Input and 2 denotes
Instrumentation Input. Note that the torque commands are also
issued during times when they were to be ignored to ensure
proper performance.
Walters et al / SAE Int. J. Passeng. Cars – Electron. Electr. Syst. / Volume 7, Issue 2 (August 2014)
After each module shown in Figure 5 has been tested with its
associated test vector and reports generated, the complete
motor controller can be tested in simulation. Appropriate
models for the electric machine, inverter, and sensors are
required but they should be readily available from earlier
design work. Using a test vector derived from the Torque Mode
test vector of Figure 10, the response of the full control system
was tested. Based on the accuracy of the model, the torque
control and current regulation can be evaluated against
performance targets to determine if the requirements have
been met. Herein, the first 10 Sec of the commanded input test
vector is applied to the full motor control model in simulation as
shown in Figure 12.
Figure 10. Input Test Vector Commands
The results, shown in Figure 11, indicate that the desired
current commands are correctly calculated consistent with the
expected output. This module has numerous calculations being
performed to dynamically modify the current commands based
upon constraints. In this case, high level models/simulations
are used to develop the Desired output and the actual
implementation model for the module is used to form the
Measured output. These signals are used to verify that the
overall requirements were met.
Figure 12. Input Test Vector to the Complete Motor Control
The results of applying this input are shown in Figure 13. It can
be confirmed that the Measured output values are still
consistent with the Desired values from the requirements. For
cases where exact results may not be easy to predict, such as
when using a motor model, it is important to verify that the
overall performance of the test vector meets expectation rather
than each exact time step meeting a specific numeric result.
Figure 13. Expected Output Current Commands from the Complete
Motor Control (Desired and Measured)
Figure 11. Expected Output Current Commands (Desired and
Measured)
Walters et al / SAE Int. J. Passeng. Cars – Electron. Electr. Syst. / Volume 7, Issue 2 (August 2014)
DYNAMOMETER TESTING
The concepts developed in this paper were applied to an
existing project using an Allison® H3000 Transmission Hybrid
System intended for the medium duty commercial truck market.
In this system, a permanent magnet motor is integrated into a
transmission using a sandwich configuration. An overview of
the system is shown in Figure 15. For this project, Delphi® was
responsible for the motor controls, inverter, DC/DC converter
and energy storage system.
Figure 13. (cont.) Expected Output Current Commands from the
Complete Motor Control (Desired and Measured)
The complete simulation model also offers the capability to
verify the intermediate signals for the various modules. These
signals should be included in the test vector to ensure that the
various modules are functioning as intended. In Figure 14a, the
resulting A-phase upper device on-time that will create the
PWM signal applied to the A-phase of the inverter is shown.
This signal is magnified in the Figure 14b.
Figure 15. Allison® Transmission H3000 Hybrid Drive
The system was tested on a dynamometer in order to evaluate
the performance of the production hand-code versus the
model-generated code. The dynamometer setup including the
motor, Allison Transmission inverter, and dynamometer is
shown in Figure 16.
Figure 14a. A-Phase PWM Signal
Figure 16. Dynamometer Test Setup with Allison® Transmission
Inverter
The following table summarizes the performance in torque
control mode of the hand-coded and model-generated code. In
this case, a defined operating point was used so that the two
code sets could be directly compared. The execution times for
key modules of Figure 5 as well as the total time for the 100
uSec task are shown in Table 1. The excess time that is not
consumed by the 100 uSec task is required to allow slower
loops to have sufficient time to execute.
Figure 14b. A-Phase PWM Signal - Magnified
Walters et al / SAE Int. J. Passeng. Cars – Electron. Electr. Syst. / Volume 7, Issue 2 (August 2014)
Table 1. Throughput Comparison between Model-Generated Code and
Hand-Code
From Table 1, it can be observed that the overall modelgenerated code is within 1.5 uSec of the hand-code which
represents a 2.4% penalty. It should also be noted that the
hand-code used as a baseline comparison has been
developed over many projects and has been optimized by the
software team. In general, there is a small but measurable
increase in the required time for the model-generated code.
The benefits of directly using simulation models through the
development process, allowing the domain experts to control
the implementation, and more easily automating the verification
testing are well worth the small penalty.
While the final results are comparable, it did not occur without
the concerted focus of the team. Particularly, the review
process and the new motor control and software team roles
helped to identify and correct numerous instances of model
implementations that led to sub-optimal code. While there was
an initial investment to determine how to best use the autocoding toolset, each subsequent development activity is
expected to be less effort intensive.
SUMMARY/CONCLUSIONS
As the control of the electric machine is one of the more
challenging tasks in a hybrid or electric vehicle due to its fast
execution rates and complex requirements, numerous
simulations are used in the development cycle to appropriately
design the algorithms. Historically, the implementation of the
algorithms into software followed a simulation, requirements
development, hand-coding, and verification process due to
concerns with code throughput. This process is inherently
inefficient and has the potential to introduce errors as the
simulations used to form the requirements are not directly used
in the forming of the software as well as the software
implementation is not directly created by the motor control
engineer.
Auto-coding from simulation models is a natural tool that can be
used to address the process issues though care must be taken
to ensure that an easily understandable and modifiable model
that executes efficiently is developed. By allowing the domain
experts to implement the models a potential source for errors
can be removed. In addition, by transitioning the software
engineers' responsibility to establishing the simulation/modeling
environment, defining the modeling standards for efficient code,
providing input in peer reviews and resolving detailed
implementation issues, complicated control tasks can be coded
with efficiency approaching optimized hand code.
As an Automotive SPICE® development process is already the
norm, when the various reviews should occur for developing
requirements, defining implementations and documenting
verification is already defined. The addition of steps in the
existing reviews to ensure models compliance to requirements
as well as proper model formation is simple and found to be
extremely useful for ensuring that efficient code is generated.
The verification of the model using automated test vectors also
naturally supports a SPICE® process and serves to allow quick
verification that subsequent changes did not impact satisfying
requirements.
The process defined in this paper was applied to an existing
project as the algorithms were ported to the new simulation
environment. The maintaining of the best practices in a style
guide was found not only to improve code efficiency but also to
ensure that models had a common feel which greatly aids
readability, debugging and troubleshooting. Ultimately, the
performance and throughput results were shown to be
sufficiently close to hand-code to justify use on future projects.
REFERENCES
1. Automotive SIG, “Automotive SPICE Process Assessment Model”,
The Procurement Forum, Aug. 21, 2005.
2. Grießer, M., Schreiner, F., and Stölzl, S., “Applying Functional
Safety Management and SPICE for Automotive Functions,” SAE
Technical Paper 2008-01-0109, 2008, doi:10.4271/2008-01-0109.
3. Ueda, K., Uematsu Y., and Baloh, M., “Converting Legacy
Embedded Control Software to Executable Specifications”,
MathWorks' International Automotive Conference, 2006. Retrieved
from: http://www.emmeskay.com/presentation-files/publications/06Ueda-Toyota.pdf
4. Yang, J., Krishnan, S., Bauman, J., and Beydoun, A.,
“Implementation of Auto-Code Generation in Legacy Code for Body
Control Software Applications,” SAE Technical Paper 2008-010749, 2008, doi:10.4271/2008-01-0749.
5. Yan, K. and Trush, C., “Transmission Control Design Approach
Using Simulation, Rapid Prototyping, and Auto Code Generation,”
SAE Technical Paper 2008-01-0536, 2008, doi:10.4271/2008-010536.
6. Hsu, M., El-Jaroudi, M., and Bender, E., “Accelerated Life Cycle
Development for Electronic Throttle Control Software using ModelBased/Auto-Code Technology,” SAE Technical Paper 2004-010276, 2004, doi:10.4271/2004-01-0276.
7. Patil, K. and Muli M., “Model-Based Development of Motor Drive
Controller for Hybrid Electric Vehicles”, E-Drive: The Magazine
of Electric Motor & Drive Technology, Jun. 26, 2013. Retrieved
from: http://www.e-driveonline.com/main/articles/model-baseddevelopment-of-motor-drive-controller-for-hybrid-electricvehicles/
8. Su, G.J., McKeever, J., and Samons, K., “Design of a PM
Brushless Motor Drive for Hybrid Electrical Vehicle Application”,
PCIM 2000, Oct. 1 - 5, 2000, pp. 1-6.
9. Fu, T.J., Xie, W.F., “Torque Control of Induction Motors for Hybrid
Electric Vehicles”, American Control Conference 2006, Jun. 14 16, 2006, pp. 5911-5916.
Walters et al / SAE Int. J. Passeng. Cars – Electron. Electr. Syst. / Volume 7, Issue 2 (August 2014)
10.Krause, P.C., Wasynczuk, O., Sudhoff, S.D (2002). Analysis of
Electric Machinery and Drive Systems. Piscataway, NJ: IEEE
Press.
11. Brogan, W. L. (1991). Modern Control Theory - 3rd Edition. Upper
Saddle River, NJ: Prentice-Hall, Inc.
12.Press, W. H., Vetterling, W. T., Teukolsky, S.A., and Flannery, B. P.
(2002). Numerical Recipes in C: The Art of Scientific Computing
- 2nd Edition. New York, NY: Press Syndicate of the University of
Cambridge.
CONTACT INFORMATION
James Walters
Jim.Walters@delphi.com
Cahya Harianto
Cahya.Harianto@delphi.com
Edward J. Kelly
Edward.J.Kelly@delphi.com
Tanto Sugiarto
Tanto.Sugiarto@delphi.com
DEFINITIONS/ABBREVIATIONS
CAN - Controller Area network
ECM - Engine Control Module
HCM - Hybrid Control Module
HIL - Hardware in the Loop
PMSM - Permanent Magnet Synchronous Machine
PWM - Pulse Width Modulation
RCP - Rapid Controls Prototyping
SPICE - Software Process Improvement and Capability
Determination
SVM - Space Vector Modulation
All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by any means, electronic, mechanical,
photocopying, recording, or otherwise, without the prior written permission of SAE International.
Positions and opinions advanced in this paper are those of the author(s) and not necessarily those of SAE International. The author is solely responsible for the content of the
paper.