Forum: Mikrocontroller und Digitale Elektronik CNC Servo-Ansteuerung für Kreisbewegung: Algorithmus


von Patrick B. (p51d)


Lesenswert?

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

von Thorsten O. (Firma: mechapro GmbH) (ostermann) Benutzerseite


Lesenswert?

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

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

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.

von michael_ (Gast)


Lesenswert?

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.

von Michael B. (laberkopp)


Lesenswert?

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.

von michael_ (Gast)


Lesenswert?

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.

von Pieter (Gast)


Angehängte Dateien:

Lesenswert?

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

von Patrick B. (p51d)


Lesenswert?

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.

von Tany (Gast)


Lesenswert?

Pieter schrieb:
> das selber zu berechnen ist nicht so das Problem

Hi Pieter,
magst du die Code hier posten?

von Tany (Gast)


Lesenswert?

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

schaue da mal rein...
https://github.com/grbl/grbl

von Walter T. (nicolas)


Lesenswert?

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.

: Bearbeitet durch User
von (Gast)


Lesenswert?

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.

von (Gast)


Lesenswert?

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.

von Egon D. (Gast)


Lesenswert?

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.

von Egon D. (Gast)


Lesenswert?

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.

von michael_ (Gast)


Lesenswert?

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.

von Christopher J. (christopher_j23)


Lesenswert?

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?

von Ben B. (Firma: Funkenflug Industries) (stromkraft)


Lesenswert?

Ich glaube er kennt keine dicken CNC-Maschinen,
sondern nur Schrittmotoren.

von michael_ (Gast)


Lesenswert?

Er hat doch eine Servo-Maschine!
Lese doch alles.

von Clemens S. (zoggl)


Lesenswert?

Patrick B. schrieb:
> Servo-Achsen und SPS (B&R) sind vorhanden.

Schau dir mal die kurvensteuerung und elektronische Getriebe an. Setze 
eine virtuelle achse auf und kopple die beiden servos dann mit einer sin 
und cosin Kurve drauf.

Die benötigten kurvenstücke kannst du, bei bedarf auch on the fly 
berechnen lassen


Sg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.