Keine Panik. Das ist doch längst angekommen.
Der "Fehler passiert beim Istwerverschieben!
Das ist mir nach wie vor nicht richtig klar.
Du versuchst also anscheinend Dein "MassBand" in einem gewissen Raster zu verschieben, aber leider passt das Raster nicht zum Geber, wie man aus dem folgenden Beispiel entnehmen kann.
Beispiel:
Die Verschiebung soll um einen Zahn passieren also z.B. 1/67 der Umrehung.
Die Geberauflösung ist 2048
Also um 30,567164179104477611940298507463 Inkremente
Da haben wir's doch:
2048 / 67 = 30,567164179104477611940298507463
Quotient aus GanzZahlen und Ergebnis als [L]REAL.
Was machst Du dann anschliessend noch mit der GleitKommaZahl?
Da geht was verloren... Ich mache da niemandem einen Vorwurf, das ist nun mal so!
Ja, da geht was verloren ... aber nur, wenn Du jetzt anfängst zu korriggieren und zurückliegende Positionierungen plattzumachen.
Deshalb der Ansatz die Absolute Position des Zahnrades zu bestimmen und dann den "Fehler" zu korriegieren.
Nicht korrigieren. Einfach nur runden. Und zwar jedesmals nach der Berechnung
2048 / 67 * AnzahlDerVerfahrenenStriche.
Die o.g. Anzahl der verfahrenen Schritte nicht korrigieren ("abschneiden"),sondern bei jeder Positionierung weiterführen
Einen kleinen Fehler kann ich verschmerzen, wenn ich ihn nur über mehrere Verschiebungen wieder korriegiert bekomme.
Du kannst sogar viele kleine Fehler verschmerzen. Nämlich, wenn Du alle Verschiebungen bzw. KorrekturVersuche nicht ausführst. Dann heben sich die Aufrundungen und Abrundungen (fast) auf.
In der Anzeige des aktuellen PositionsWertes subtrahierst Du noch die aufgelaufene Summe der "abgeschnittenen" Abschnitte.
Genauer kann ich das leider nicht angeben, weil ich - wie anfangs gesagt - immer noch nicht verstanden habe, was und wie Du da genau meinst korrigieren zu müssen.