Simulation von Hardware und Mechanik
Software ohne Hardware entwickeln?
In der embedded Entwicklung tritt das Dilemma häufig auf. Die Software-Entwicklung muss starten, aber:
- es ist noch keine Zielhardware vorhanden
- die zu steuernde "Maschine" ist auch noch nicht bereit
- die Benutzerschnittstelle ist unklar, viele Partien sind involviert: Marketing, Management, Software, Hardware, Mechanik, Industrial Design
Hardware und Mechanik aus dem PC: Simulation
Anstatt auf die reale Welt zu warten und dabei viel Zeit zu verlieren, lässt sich die Elektronik und Mechanik auf einem PC simulieren.
Wie geht das? Solcept hat ein Framework, basierend auf .NET/ C#/ managed C++ entwickelt. Es dient dazu, die der Applikation zugrunde liegenden Betriebsysteme, Treiber, Hardware (bis zum Register der Mikrocontroller) und die Physik der zu steuernden Maschine zu simulieren.
Die Simulation erfolgt so genau wie nötig und so einfach wie möglich. Das heisst, dass z.B. physikalische Vorgänge, welche sich auf einen Reglerentwurf stark auswirken genau modelliert werden. Andere Elemente, z.B. Ventile werden nur digital (Durchgang/ kein Durchgang) simuliert.
Resultate
- Integration von Software und Hardware wird in einem Tag durchgeführt (die Treiber wurden vorher auf Evalauations-Boards implementiert und getestet)
- Einfacheres Testen führen zu besserer Testabdeckung und besserer Softwarequalität (z.B. da Fehler einfach injiziert werden können, die Zeit in der Simulation kann verlangsamt und beschleunigt werden kann)
- Der Kunde bekommt „genau die Bedienschnittstelle die wir haben wollten“ (die PC-Simulation des Systems kann von allen Beteiligen früh beurteilt werden, was einen iterative/ agile Entwicklungsstil ermöglicht)
- Der Industrial Designer sieht das Zusammenspiel des mechanischen Teils (z.B. Tasten) der Bedienschnittstelle mit dem Software-Teil schon sehr früh im Projekt
Vorteile
Für die Entwicklung entsteht Anfang an ein besseres Verständnis für die zu steuernde Maschine, beziehungsweise deren Physikt. Für die Implementation und das Debugging lassen sich die PC-Entwicklungsumgebungen verwenden, welche immer noch mehr Möglichkeiten bieten als die meisten embedded Werkzeuge. Ein gut programmierter Simulator erlaubt die Extraktion von Logs, Call-Chains und stellt andere Funktionen wie veränderbare Ausführungsgeschwindigkeit bis zum kompletten Anhalten zu jedem Zeitpunkt zur Verfügung. Zusammen mit der vollständigen Reproduzierbarkeit, welche die reale Welt selten bietet, lässt sich sehr effizient embedded Software entwickeln.
Im Test lassen sich sehr einfach Fehlerbedingungen generieren, welche an einer realen Maschine schwierig oder gar nicht (z.B. wegen zu grosser Gefährlichkeit) erzeugt werden können. Auch lassen sich automatische Tests ohne Modifikation (z.B. Testzugriffs-Ports, Benutzer-Simulation durch Roboter) des Zielsystems durchführen, da es per Definition nicht Teil des Test ist .
Der vermeintlich grosse Nachteil ist natürlich der erhöhte Aufwand. Gemäss unserer Erfahrung zahlt er ich aber über die Projektdauer mehrfach.

