Embedded Software: Alles hat ein Ende – Timeouts

Jürgen Welzenbach

09/09/2025

In vorangegangenen Blogbeiträgen habe ich zwei wesentliche Komponenten einer einfachen und universell einsetzbaren Software-Architektur vorgestellt: Events mit Dispatcher, Listeners und Datapool. Damit lassen sich bereits sehr viele einfache Use-Cases einfach umsetzen.

Aber einfach ist es ja nur in den seltensten Fällen. Bei der Kommunikation mit Remote-Systemen (z.B. mit einer zweiten MCU, mit der via UART kommuniziert wird) muss zur Sicherheit immer wieder auf Timeouts reagiert werden. Das heißt, man muss jedes Mal einen Timer „aufziehen" und in der Timer-Callback-Funktion (die aufgerufen wird, wenn der Timer abläuft) entsprechend reagieren. Ach ja, wenn die gewünschte Aktion erfolgreich war, darf man nicht vergessen, den Timer auch noch zu canceln.

Das bedeutet ziemlich viel Code mit der obendrein nötigen Fehlerbehandlung nebst erforderlichen Unittests. Und sind wir mal ehrlich: Welcher Softwareentwickler hat da wirklich Bock d'rauf? Ich bin dafür ehrlich gesagt viel zu faul! Nur: Wie könnte eine minimal arbeitsaufwändige Lösung aussehen?

Geplante Verspätung

Das Lösungswort lautet „Delayed Events". Die dafür nötigen Zutaten sind:

  1. Ein Delayed Event, das als Payload das Event mitbekommt, das zu einem späteren Zeitpunkt gescheduled werden soll, nebst der Timeout-Zeit.
  2. Ein Delayed-Event-Scheduler: Er bekommt alle Delayed-Events und fügt sie in der Reihenfolge der Ablaufzeit in seine interne Queue. Ein Thread wartet lediglich so lange, bis das Timeout des nächsten Delayed-Event abläuft.
  3. Der Deleyed-Event-Scheduler gibt das Payload-Event nach Ablauf der Timeout-Zeit an den „normalen" Scheduler weiter.
  4. Der Delayed-Event-Scheduler bekommt eine „cancel“-Funktion, die entsprechende Timeout-Events aus der Queue entfernt.

Nun haben wir alle wichtigen Komponenten beisammen, um selbst komplexe, zeitabhängige Abläufe zu modellieren.

Jetzt fragen sich wohlmöglich einige: „Wie bitteschön, modellieren?“ Nun, um dieses Thema geht es im Folge-Blogbeitrag, wo es um die Modellierung und Generierung von Statemachines geht.

Ausblick

Aber hier ist schon mal (in stark vereinfachter Form) eine Statemachine zur Steuerung einer Defi-MCU über eine Statemachine, die in der Host-MCU läuft. Das Schöne an dieser Methode ist, dass die Timeout-Behandlung zusammen mit dem „good path“ visualisiert ist.

Das Pattern ist dabei immer dasselbe: Zusammen mit der Entry-Action wird ein Event mit entsprechendem Delay „aufgezogen" und in der Entry-Action wird es gecancelt. Dabei ist es egal, ob der Stateübergang aufgrund des Delayed-Events erfolgt oder durch ein anderes Event. In diesem Beispiel führen alle Timeout-Events vom Root-State zum State DefiTimeoutOccured. Bei Bedarf könnte selbstverständlich auf die einzelnen Timeouts individuell reagiert werden.

Brauchen Sie Unterstützung beim Design einer Software-Architektur oder bei der Entwicklung von Embedded Software? Dann wenden Sie sich gerne an uns. Unsere erfahrenen MEDtech Ingenieurinnen und Ingenieure helfen ihnen gerne dabei ihr Medizinprodukt zu entwickeln oder offene Fragen zu klären.


Geschrieben von Jürgen Welzenbach

Jürgen hat nach seinem Elektrotechnikstudium in Erlangen seine Diplomarbeit in Kooperation mit einem Hersteller von ophthalmologischen Geräten und der Universitätsaugenklinik durchgeführt.

In zwei Erlanger Unternehmen fand er zur Embedded Software und hat vor allem HMIs für Baumaschinen und Laboranalysegeräte entwickelt.


Weitere Beiträge

  • 25/09/2025
  • Allgemein, Elektrodermale Aktivität, Hardware, Produktion

Darf ich vorstellen? Das ist EDA – unsere Eule für elektrodermale AktivitätDas ist EDA, unsere kleine Eule mit einem besonderen Talent. EDA kann elektrodermale Aktivität (kurz: EDA) messen – ...

Weiterlesen
  • 19/03/2025
  • Allgemein, Unternehmen, Veranstaltungen

Wir freuen uns, euch zu einem exklusiven VDI-Event des Netzwerk Systems Engineering einzuladen, das bei uns im Büro stattfindet!Am Freitag, den 28. März 2025, wird sich alles um die ...

Weiterlesen
  • 13/03/2025
  • Allgemein, Unternehmen

MEDtech Ingenieur verstärkt sein Führungsteam: Seit März 2025 übernimmt Daniel Saffer die Rolle des Chief Technical Officers (CTO). Mit seiner langjährigen Erfahrung in der Entwicklung sicherheitskritischer Embedded-Softwarelösungen für die ...

Weiterlesen
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.

Strictly Necessary Cookies

Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.