Das wäre dann das lästige Skalierungsproblem. Ich würde das so (zu) lösen (versuchen), dass die Skalierung der Eingangswerte als erste Tätigkeit stattfindet und zwar auf ein Format, das sinnfällig ist und dem Rechenprozess angepasst. Bei einer 8-Bit Variablen für die Fahrgeschwindigkeit könnte man z.B. +127 für die Maximalgeschwindigkeit vorwärts, 0 für Stillstand, -128 für Maximalgeschwindigkeit rückwärts nehmen. Es sind aber beliebige andere Formate auch denkbar. Den gesamten Rechenprozess würde man in den sinnfälligen Formaten abwickeln und ganz am Schluß das Endergebnis (mittels Addition mit 250 und eventueller Multiplikation mit einer Konstanten) auf den vom Motortreiber nötigen Wert wandeln.
Den Vorteil sehe ich darin, dass man bei der Rechnerei den Prozessor gut ausnutzen kann und dass die Zwischenergebnisse auch leicht interpretierbar sind. Wenn Du in einer höheren Sprache als Assembler programmierst, sind Dir wahrscheinlich schon viele Überlegungen abgenommen, trotzdem halte ich es auch dort sinnvoll, wenn die Geschindigkeit Null auch dem Zahlenwert Null entspricht (sowohl beim Eingang des Messwerts, als auch bei der Führungsgröße, als auch bei allen beteiligten Berechnungen bis zur Steuergröße). So etwas macht wenig Mühe, ist aber eine großartige Hilfe, die Übersicht zu behalten, besonders wenn der Regelalgorithmus später komplizierter wird als man vorher denkt.
Lesezeichen