Hallo Peter,
vielen Dank für deine Darstellung des Problems, aber ich stehe immer noch auf dem Schlauch...
Ich fasse mal das zusammen, was ich deiner Grafik bzw. deinem Post an Infos entnehmen konnte:
- Du hast zwei verschiedene Funktionen (Linear, Circle). Diese führen dir eine Bahninterpolation durch. D.h. du unterteilst die gesamte Wegstrecke in einzelne Stückchen, die Aufteilung ist so klein das maximal ein Schritt ausgeführt wird, oder auch keiner. Den enstehenden Fehler auf Grund der Schrittweite kannst du z.B durch den Bresenhamalgorithmus halbieren. Ergebnis dieser Funktion ist entweder Tabelle mit vordefinierten Fahrbefehlen oder eine Online-Berechnung. In deinem Fall füllst du die Verfahrtabelle (FiFo) online mit den berechneten Werten. Der Output dieser Funktionen ist für jeden ich nenne es mal Verfahrschritt ein Taktsignal für alle 3 Motoren und die jeweilige Richtungsinformation (z.B. 1, 0, 0, 1, 1, 1) (Motor 1 einen Schritt weiter, Motor 2 steht, Motor 3 steht, Motor 1 Richtung vor, Motor 2 Richtung vor, Motor 3 Richtung Vor).
- Aus deiner Verfahrtabelle (FiFo) liest du immer die letzte Position aus, schiebst alle anderen durch und füllst diese mit deinen online Brechnenden Werte auf
- In der Tabelle sind berechnete Sin2-Werte für die Beschleunigung sowie den Bremsvorgang interlegt. Diese verwendest du programmgesteuert. Am Anfang vermutlich parallel zu den Fifo-Nummer von 1-19 zum Beschleunigen, dann konstant mit der Position 19 und wenn kein neuer Wert mehr online aufgefüllt wird (Flag wird von Lin/Circ gesetzt) rückwärts von 19-1 zum Abbremsen.
Was mir noch nicht klar ist, was es mit der Wurzel über die Summe der angesteuerten Motore auf sich hat. Könntest du das bitte noch etwas näher ausführen.
Ansonsten hab ich das Prinzip sowei verstanden, kann mir auch gut vorstellen das das mit einer Linearbewegung funktioniert, aber bei Circ habe ich so meine Zweifel...Grund dafür sind die Richtungsänderungen der Achsen.
Bei einer Linearfahrt laufen alle Achsen in eine bestimmte Richtung, ich beschleunige am Startpunt und Bremse am Zielpunkt ab. Je nach Bahn könnte ein oder zwei Achsen nicht mit maximaler Geschwindigkeit laufen.
Wenn ich dieses Prinzip auf eine Kreisbahn übertrage, beschleunige ich auch am Anfang und bremse am Schluss ab. Aber hier habe ich zwischendurch Richtungswechsel der Achsen. Vor diesen Richtungswechsel müssen die Achsen abgebremst werden, um einen Schrittverlust zu vermeiden. Passiert dieses dann automatisch auf Grund der geringen Streckenänderungen?
Ich meine kann es sein das die Motoren durch eine Reihe von Nullimpulsen (alternative Motoren machen einen Schritt, der Motor mit Richtungswechsel macht keinen) wegen der geringen Streckenänderung automatisch abgebremst werden?
Gruß
Lesezeichen