CNC Servo-Ansteuerung für Kreisbewegung: Algorithmus

OP #5985520
Hallo zusammen

Meine Studienzeit liegt schon etwas zurück, daher verzeiht mir die 
Frage.
Wie werden die Servoantriebe bei G02 und G03 angesteuert? Über „normale“ 
Sinus und Cosinus-Berechnung bekommt man ja die Koordinaten. Nur 
beschleunigen da die Achsen immer und bremsen wieder. Das Ganze ruckelt 
dann und ist für die Mechanik sicher auch nicht ideal.

Der Bresenham-Algorithmus bringt bei Stepper-Steuerungen sicher viel, 
aber bei einer richtigen SPS kann man ja mit realen Achseneinheiten 
(schnell) rechnen.

Werden für eine konstante Bahngeschwindigkeit die Achsbeschleunigungen 
(welche Max-Geschwindigkeit wird denn so angegeben?) oder mit 
berechneten Geschwindigkeiten und gleichen Beschleunigungen gearbeitet?

Ich weiss, dass fast jede Motion-Bibliothek mit CNC-Lizenzen das 
beinhaltet, aber eventuell geht das ja „einfach“ selber zu coden.

Besten Dank für die Nachhilfe.
Gruss
Patrick
(Firma: mechapro GmbH) Persönliche Seite
Die Geschwindigkeit, Beschleunigung und Ruck sind ja Ableitungen der 
Position. Entsprechendes gilt für Sin, Cos, -Sin und -Cos.

Wenn einmal die Bahngeschwindigkeit erreicht ist, kann diese im Prinzip 
beibehalten werden, was dann zu sin/cos-förmigen Geschwindigkeits- und 
Beschleunigungsprofilen an den Achsen führt.

Aber vorsicht: Je kleiner der Radius der Bewegung, desto höher fallen 
die Geschwindigkeiten und Beschleunigungen der Achsen aus, wenn die 
gleiche Bahngeschwindigkeit fefahren werden soll. Irgendwann erreicht 
man dann die gewünschte Bahngeschwindigkeit nicht mehr.

Mit freundlichen Grüßen
Thorsten Ostermann
(Firma: Funkenflug Industries)
Also wenn Du mit professionellen CNC-Maschinen Kurven fährst, machen die 
das mit so hoher Auflösung, daß Du die einzelnen Schritte nicht in der 
Mechanik spürst.

Es ist auch nicht ganz so einfach, nur die reine Kurve zu fahren. Da 
kommen noch Werkzeugkorrekturen (z.B. Radius der Schneidplatte) hinzu 
und man fährt auch mit einer Kurve an das Werkstück heran und wieder 
heraus.
Gast
Was hast du für ein praktisches Problem?

Einiges passt nicht zusammen.
Servo, Schrittmotoren, "richtige SPS" ???

Ob Servos oder Schrittmotoren, die Steuerung macht das schon.
Und mach dir mal keine Sorgen um die Mechanik.

Patrick B. schrieb:
> Ich weiss, dass fast jede Motion-Bibliothek mit CNC-Lizenzen das
> beinhaltet, aber eventuell geht das ja „einfach“ selber zu coden.

Nicht umsonst kosten die Geld.
Du willst also den Post-Prozessor selber machen.
Schwierig, dazu muß man aber die Maschine und das, was es werden soll, 
wissen.
Patrick B. schrieb:
> aber eventuell geht das ja „einfach“ selber zu coden.

Gut ?

Nein.

Ein guter Algorithmus macht einen echten Kreis statt angenähertes 
Vieleck mit Geradenstückchen und kann auch innerhalb des Kreises bremsen 
und beschleunigen, wobei die effektive Fräser-Geschwindigkeit nicht bei 
45 Grad um 1.4 x schneller sein wird als bei 0 und 90 Grad.

Diesen guten Algorithmus findet man selten, noch seltener on-the-fly 
berechnet.
Gast
Michael B. schrieb:
> wobei die effektive Fräser-Geschwindigkeit nicht bei
> 45 Grad um 1.4 x schneller sein wird als bei 0 und 90 Grad.

Es gibt auch noch Wasserstrahl, Laser, sonstnochwas...

Michael B. schrieb:
> Ein guter Algorithmus macht einen echten Kreis statt angenähertes
> Vieleck mit Geradenstückchen und kann auch innerhalb des Kreises bremsen

Ohne nachzusehen sind das aus meiner Erinnerung so G30 f.f.???
Also richtiges Kreisbogenfahren.
Gast
moin,

das selber zu berechnen ist nicht so das Problem.
Anbei eine Demo dazu.
Der MC der CNC ( STM32F405 ) rechnet mit dem selben Programm, ist also 
die Anzeige im Demo "falsch", wird auch die Fräse "falsch" arbeiten.
Falsch bedeutet hier, es fehlen Koordinaten oder Übergänge zwischen 2 
Abschnitten.

Hinweis:
G41,G42 festlegung Radiuskorrektur
G4x kann eingestellt werden

VG
Pieter
Angehängte Dateien:
OP
michael_ schrieb:
> Was hast du für ein praktisches Problem?

2 Achsen sollen so angefahren werden, dass ein Kreis entsteht (wie bei 
den CNC Fräser).

> Einiges passt nicht zusammen.
> Servo, Schrittmotoren, "richtige SPS" ???

Wieso?
Servo-Achsen und SPS (B&R) sind vorhanden. Viele Hobby-Projekte in 
diesem Bereich setzten halt Schrittmotoren ein, weshalb die auffindbaren 
Algorithmen und Berechnungen dafür gedacht sind.

> Ob Servos oder Schrittmotoren, die Steuerung macht das schon.

Ja eben. Aber Position, Geschwindigkeit und Beschleunigung müssen 
vorgegeben werden. Und um diese Werte geht es mir.

Michael B. schrieb:
> Diesen guten Algorithmus findet man selten, noch seltener on-the-fly
> berechnet.

Ok, dann werde ich mir die Motion-Bibliotheken und Lizenzkosten mal 
anschauen.
Michael B. schrieb:
> Diesen guten Algorithmus findet man selten, noch seltener on-the-fly
> berechnet

Das läßt sich eigentlich recht problemlos auf einem kleinen 8-Bitter mit 
ordentlicher Auflösung berechnen. Ohne Division oder trigonometrische 
Funktionen. Der Algorithmus dazu heißt "digital differential Analyzer". 
Taugt für lineare und Kreisinterpolation.

Tatsächlich sind die I- und J-Parameter der Kreisinterpolation im G-Code 
exakt so gestrickt, daß sie ohne Umrechnung als Eingang für den 
Algorithmus taugen.
Gast
Michael B. schrieb:
> Ein guter Algorithmus macht einen echten Kreis statt angenähertes
> Vieleck mit Geradenstückchen und kann auch innerhalb des Kreises bremsen
> und beschleunigen, wobei die effektive Fräser-Geschwindigkeit nicht bei
> 45 Grad um 1.4 x schneller sein wird als bei 0 und 90 Grad.

Jede reale Maschine die digital geregelt wird diskretisiert das in (mehr 
oder weniger) Geradenstücken, auch wenn diese nur jeweils nur eine 
Millisekunde (mal aktueller Geschwindigkeit) lang sind. Es kommt also 
immer ein Vieleck heraus.
Gast
Patrick B. schrieb:
> Servo-Achsen und SPS (B&R) sind vorhanden. Viele Hobby-Projekte in
> diesem Bereich setzten halt Schrittmotoren ein, weshalb die auffindbaren
> Algorithmen und Berechnungen dafür gedacht sind.
>
>> Ob Servos oder Schrittmotoren, die Steuerung macht das schon.
>
> Ja eben. Aber Position, Geschwindigkeit und Beschleunigung müssen
> vorgegeben werden. Und um diese Werte geht es mir.

www.linuxcnc.org
www.machinekit.org

Die Bewegungsplaner dort drin sind nicht mehr ganz trivial, wenn man mit 
einem debugger umgehen kann und C versteht ist das alles aber zu 
verfolgen.

Kann man als Anregung nehmen oder bei passender 
Kommunikationsmöglichkeit mit den Servoachsen auch als direkt als 
Steuerung.
Gast
rµ schrieb:

> Jede reale Maschine die digital geregelt wird
> diskretisiert das in (mehr oder weniger)
> Geradenstücken, [...]

Das ist aber kein Naturgesetz.

Würde man eine Kaskade analoger Integratoren verwenden,
würde die Maschine eine stetige Polynom-Interpolation
in der analogen Hardware machen.
Zusätzliche Fehler durch die analogen Komponenten müsste
man durch entsprechende Regelkreise vermeiden.
Gast
Patrick B. schrieb:

>> Ob Servos oder Schrittmotoren, die Steuerung
>> macht das schon.
>
> Ja eben. Aber Position, Geschwindigkeit und
> Beschleunigung müssen vorgegeben werden. Und
> um diese Werte geht es mir.

Sind sie doch auch: Durch die Werkstückkontur, die
gewählten Schnittwerte und die Leistungsgrenzen
der Maschine.
Gast
Patrick B. schrieb:
>> Einiges passt nicht zusammen.
>> Servo, Schrittmotoren, "richtige SPS" ???
>
> Wieso?
> Servo-Achsen und SPS (B&R) sind vorhanden. Viele Hobby-Projekte in
> diesem Bereich setzten halt Schrittmotoren ein, weshalb die auffindbaren
> Algorithmen und Berechnungen dafür gedacht sind.

Gut zu wissen.
Ist da eine Steuerung dran und mit was wurde die bisher gefüttert.

Vielleicht ist alles ganz einfach.
Egon D. schrieb:
> rµ schrieb:
>> Jede reale Maschine die digital geregelt wird diskretisiert das in (mehr
>> oder weniger) Geradenstücken, [...]
>
> Das ist aber kein Naturgesetz.
> Würde man eine Kaskade analoger Integratoren verwenden, würde die
> Maschine eine stetige Polynom-Interpolation in der analogen Hardware
> machen. Zusätzliche Fehler durch die analogen Komponenten müsste man
> durch entsprechende Regelkreise vermeiden.

Diese Aussage schlage ich direkt für den Oxymoron-Award vor ;)

Patrick B. schrieb:
> Wie werden die Servoantriebe bei G02 und G03 angesteuert? Über „normale“
> Sinus und Cosinus-Berechnung bekommt man ja die Koordinaten. Nur
> beschleunigen da die Achsen immer und bremsen wieder. Das Ganze ruckelt
> dann und ist für die Mechanik sicher auch nicht ideal.

Wenn irgendetwas ruckelt ist was faul. Was soll denn ruckeln? Mit 
"Servoantrieb" meinst du die dickeren Synchronmotoren wie sie 
typischerweise in CNC-Maschinen verbaut sind?

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 7 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.