Embedded Control Systems Design

Preface
This is a textbook at the level of university Master's or graduate students in Engineering (Mechatronics, Mechanics, Electrical/Electronics, Computer Science, Systems Engineering), that explains how to design motion control systems, that is, computer-controlled machines with important moving parts, such as robots, machine tools, cars, buses, airplanes, ships, satellites, telescopes, etc.

The emphasis of the book lies on the design of embedded systems, and much less on the technical details in the systems. (Such details are often covered already in the many Wikipedia articles about the systems' components.) In other words, the book focuses on the systems level thinking that the engineer should do when designing a new embedded application (or redesigning/improving already existing systems). In many places, the book provides a motivated list of things to think of, do's and don'ts and best practices in the design of a system from individual components. The book also tries to bring some structure and classification into the tremendously large variety of embedded systems and their design process: designing a new vending machine brings very different challenges than the design of an automated luggage handling system in a large airport, or than the development of a new generation of football playing robots.

Readers should learn from this book what design criteria (technical, economical, social, etc.) are relevant for specific embedded systems, and what trade-offs are appropriate in different categories of embedded systems. In addition, the book should help readers to estimate the complexity of the system they want to develop, and to identify where this complexity comes from in their specific application. Coping with system-level complexity is a major non-functional requirement behind all embedded systems design and development, since it is the key factor that defines how many resources (time, people, hardware, software,…) will be needed to bring the project to a successful end.

At the moment, this book focuses mainly on motion machines only, where the control is needed to make the machine move in a specified and safe way. So, its scope currently does not include other embedded control systems, such as process or temperature control, video and audio signal processing, telephony, etc. Future enhancements in these directions are certainly welcome, although motion control systems typically offer extra design challenges with respect to the mentioned consumer electronics kind of embedded systems—in that they have to cope with the real physical world and not just with the digital, man-made world—so their design aspects are typically a superset of what is found in consumer electronics.

Motion control systems involve software control components, but also computer-readable models to represent the physical world, sensors (partly hardware, partly software) to measure that physical world, actuators (partly hardware, partly software) to induce changes in the world, and planners (pure software) to precalculate which actions the control system should take in order to reach a desired state.

Embedded can mean many different things (see a later chapter for a list of meanings), but a common characteristic is that the system's complexity—including all its configuration and control components and activities—are not made visible to the user of the systems, but remain hidden behind a user friendly interface that gives only access to the (virtual) model of the embedded system.

This example of an embedded system is used to introduce the most generic concepts of an embedded system, and to motivate the relevance of the later chapters in this book.

Table of Contents
Design: Digital hardware: Software:
 * Design criteria
 * The design process
 * Categories of system complexity
 * A design example NEW
 * A design example OLD
 * Model-driven engineering
 * Process control vs system control
 * What if things go wrong?
 * Hostile Environment
 * Failure modes and prevention
 * Learning from failure
 * Processors
 * Hardware peripherals
 * Field busses
 * Operating systems
 * Real Time Operating systems
 * Software toolchain
 * Design Patterns
 * Coordination Modelling
 * Finite State Machines and Petri Nets
 * Asynchronous activities
 * The four fundamental "concerns" of system design

Applications:
 * Automotive
 * Aviation
 * Robotics
 * Team of RoboCup robots
 * DARPA Challenge
 * Home and Building Automation

Glossary

Licensing

Authors
The initial version of this Wikibook was created by Herman Bruyninckx, together with the students of the course Embedded Control Systems. René van de Molengraft, from the TU Eindhoven, provided valuable contributions during the second year of this course.

Acknowledgements
This Wikibook's layout was inspired by the excellent example of the Control Systems book.