PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anregungen zu State-Machine


Flyinglosi
2017-05-23, 14:36:03
Hi Leute,

ich möchte/muss aktuell einer Mitarbeiterin ein wenig unter die Arme greifen und wollte fragen ob mir jemand ein paar erste Tipps Quellen zu folgendem Thema empfehlen kann:

Es wird eine Steuerung auf einem µController auf Basis von FreeRTOS implementiert. Dies beinhaltet unter anderem die Implementierung einer State-Machine (welche den Steueralgorithmus in verschiedene Modes teilt). Wie man so etwas grundsätzlich umsetzt (switch; case; break; :freak:) ist mir auch als Laie klar, allerdings weiß ich, dass Profis auch hier meist ein wenig mehr Aufwand betreiben, um entsprechend saubere Ergebnisse zu erzielen.

Könnt ihr passende Projekte (oder auf Tutorials/Dokumentationen) empfehlen, wie man so etwas sinnvoll in C in einem Echtzeitbetriebssystem wie FreeRTOS sinnvoll aufbaut?

Danke im Vorhinein für eure Anregungen

mfg

Stephan

Marscel
2017-05-24, 00:18:20
Ich hab leider gerade kein offenes, übersichtliches Beispiel zur Hand, aber Erinnerungen von vor einigen Jahren:

* logische States konsequent mit enums symbolisieren
* Wenn man dazu genötigt wird, irgendwelche Bit-En/decodings damit einhergehend vorzunehmen: nie konstante Sachen inline formulieren, sondern inenum-Werten, Makros oder statics gesondert. Wenig ist nerviger als auswuchernden Bit-Operations-Abuse einzufangen.
* keinen State im switch-default behandeln, da eine Fehlerbehandlung oder Panic hin
* Wenn du einen Unit-Test davon anfertigen musst, jubele dem SM-Code ein Struct mit Funktionspointern für alle möglichen Transitionsaktionen und Input-Supply unter, im Testmode ist das dann der eine Satz, für den Chip der andere.
* Fragen über den Ausführungsloop klar machen: Sleep, Polling, Interrupts.

Überlegungen zu Code-Aspekten bei erhöhter Gamma-Strahlen-Exposition bei Bedarf ;)

Ectoplasma
2017-05-24, 07:45:43
Schau doch einfach mal hier bei Codeproject (https://www.codeproject.com/Articles/1087619/State-Machine-Design-in-Cplusplus) vorbei. Vielleicht findes du dort ja ein paar Anregungen.

Flyinglosi
2017-05-26, 16:44:01
Danke für eure Tipps, war für den Beginn recht hilfreich!!!