Geschwindigkeit und Beschleunigung

Beiträge
226
Reaktionspunkte
27
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen

Kleine Frage zur Servotechnik. (In diesem Falle ELAU)

Standard Motionbefehle sind ja entsprechend definiert, dass mann die Zielposition definiert (bzw. den Vorschub) die Sollgeschwindigkeit und die Beschleunigung.

Nun meine Applikation erfordert es, dass nicht Geschwindigkeit und Beschleunigung definiert werden, sondern die Zeit, in welcher die Position angefahren werden muss. Zudem sind Vorschub und Zeit variabel. Das heisst, dass die Aufgabe sein kann, dass der Antrieb in zwei Sekunden 54° Vorschub erreichen soll. Im nächsten Schritt soll er in 1.75 Sekunden 76° Vorschub erreichen. Da die Beschleunigung UND die Geschwindigkeit als Unbekannte aus dem Positionsoffset und der Zeitdauer berechnet werden müssen, kann keine übliche Formel verwendet werden.

Mann könnte jetzt einer von beiden Werten fest definieren, nur habe ich damit nicht über das gesamte Bewegungsspektrum ein optimales Verhalten.

Hat jemand eine Idee, wie mann diese Thematik angehen könnte??
Oder gibts sogar Bausteine (von X-Beliebigen Herstellern) die solche Funktionen errechnen können?

Bin für jeden Hinweis Dankbar


Grüsse Anis
 
Hallo,
du mußt in dem Fall dann halt Ziel-Position und Beschleunigung übergeben. Ggf. vielleicht auch eine maximale Geschwindigkeit.
Die jeweiligen Werte lassen sich ganz bequem durch Umstellen der zuständigen Formeln errechnen :

Geschwindigkeit = Strecke / Zeit
und
Beschleunigung = Strecke / Zeit ^2

Hierbei solltest du aber beachten, dass du die physikalischen Grenzen deines Antriebs bzw. der bewegten Hardware nicht überschreitest. Das kannst du m.E. aber ganz einfach über ein Bediengerät abfangen und eventuelle "Fehl-Eingaben" anmeckern ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Prinzipiell möchte ich ja aber eine Trapezpositionierung.

Indem dass ich eines der Beschleunigungsdreiecke falte und über das andere lege komme ich doch auf die Formel:

s= Vmax * (tges - tb) leider nur s und tges bekannt.

Wenn ich jetzt, um immer ein gleichmässiges Trapez zu erhalten, definiere, dass für Beschleunigungsaufgaben immer 20% der Zeit zur Verfügung stehen wäre ja auch tb aus der Formel bekannt. Nämlich 0.2 * tges.
Damit könnte ich die Formel nach Vmax umstellen und mit dv und dt entsprechende Beschleunigung rechnen. Ist doch ähnlich der Lösung von Larry oder?

Spricht da etwas dagegen?
 
... damit übergibst du definitiv dann auch die max. Geschwindigkeit- das sehe ich aber nicht als Problem.
Entscheidender ist, ob bei deiner Beschleunigungs-Annahme der regler in der Lage ist zu folgen - das solltest du auf jeden Fall wissen ...

Gruß
LL
 
Gut des stimmt. Wobe des könnt ich ja als Grenzwerte errechnen und eine Meldung ausgeben wenn die a_max überschritten wird. Da es sich um eine Versuchsanlage handelt, und im Labor von Fachleuten bedient wird, wäre es ja schon fast zumutbar, die Rampenzeit (im Beispiel 20%) variabel zu gestalten.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
s= Vmax * (tges - tb) leider nur s und tges bekannt.

Wenn ich jetzt, um immer ein gleichmässiges Trapez zu erhalten, definiere, dass für Beschleunigungsaufgaben immer 20% der Zeit zur Verfügung stehen wäre ja auch tb aus der Formel bekannt. Nämlich 0.2 * tges.
Damit könnte ich die Formel nach Vmax umstellen und mit dv und dt entsprechende Beschleunigung rechnen. Ist doch ähnlich der Lösung von Larry oder?

Spricht da etwas dagegen?

Je nach Weg und Zeitvorgabe kann es auch sein das die Achse kein Trapez sondern ein Dreieck fahren muß! Einfach 0.2 *tges anzunehmen wird wohl nicht für alle Fälle funktionieren.

Diese Ganze Positionierung über Zeitvorgabe wird oft unterschätzt!
Da hier aber zumindest keine ruckbegrenzte Beschleunigung mit berücksichtigt werden soll/muß ist das mathm. wohl noch recht einfach in Griff zu kriegen.

Richtig ekelhaft würde es unter zusätzlicher Berücksichtigung der ruckbergrenzten Bechleunigung werden, dann wäre dies ohne wirklich komplexe Alogrithmen nicht lösbar.
Nicht einfach mit ein paar Formeln - auch wenn es auf den ersten Blick simple ausschaut. Aber die Anforderung hast Du ja glücklicherweise nicht.
 
ich habe mich ende letzten jahres mit dem kram auseinandergesetzt, da müsste auch noch irgendwo ein beitrag rumgeistern - ich glaube bereich "programmierstrategieen"


also ich habe einen baustein geschrieben der mir nach den vorgaben der beschleunigung, verzögerung, strecke und geschwindigkeit das trapez, bei bedarf ein dreieck oder wenn die startgeschwindigkeit zu hoch ist sogar ein trapez und ein dreieck in die andere richtung (korrekturfahrt) berechnet.

ergebniss der ganzen rechnerei sind dann zeiten für die einzelnen phasen

phase-1 - beschleunigen (integriere a in v-soll)
phase-2 - konstantfahrt (v-soll unverändert)
phase-3 - verzögern (integriere -b in v-soll)

bei korrekturfahrten kommen die phasen 4-6 analog in die die andere richtung zum einsatz...

die phasen werden solange ausgeführt wie die zeit für sie berechnet wurde.

ich gehe mal davon aus das die MC bausteine von elau auch so arbeiten.

ich schiesse damit hydraulische und elektrische achsen (mit asm) bis auf ein paar zentel ins ziel. (läuft auf s7-300)

wäre es denn denkbar dass du für beschleunigung(a) und verzögerung(b) immer die selben (maximal mit der mechanik möglichen) werte nimmst?


die strecke die du fahren willst ist bekannt.
die zeit für die strecke auch.
die beschleunigung und die verzögerung auch.


die zeit für eine strecke bei v-max und den festen rampen auszurechnen ist kein problem.

wenn du jetzt v-max in einer schleife so lange verringerst bis die gerechnete zeit deiner vorgabe entspricht, dann hast kannst du diese v-max als v-soll verwenden.

ich gehe davon aus dass es einen eleganteren mathematischen weg als die schleife gibt, aber da komm ich grad auf die schnelle nicht drauf...
 
Will mal hoffen, dass ich mich nicht verrechnet habe:

Dann ist:

tb = (tGes/2) +/- Wurzel( (tGes/2)² - (SGes/a) )

tb = Beschleunigungszeit (und Verzögerungszeit)
tGes = Gesamtwunschzeit
sGes = Gesamstrecke
a = Beschleunigung

Durch Vorgabe von a und Weg und Zeit kann man die Zeit errechnen, in der beschleunigt wird.

Mit dieser Zeit und der Beschleunigung wird dann noch die Zielgeschwindigkeit errechnet (v=a*t)

Dann kann man der NC die Beschleunigung und Geschwindigkeit vorgeben und, so Gott will, wird die Zielposition in der Vorgabezeit erreicht.

Durch die quadratische Gleichung kommen zwei Lösungen raus, eine Lösung ist falsch.

Die Formel betrachtet nicht den Fall, bei dem kein trapezförmiger Geschwindigkeitsverlauf erreicht wird, sondern ein dreieckiger. Das

müsste man dann nochmal getrennt ausrechnen.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen

Aus den Beiträgen von Markus und Grubba entnehme ich, dass es kaum möglich ist ohne eine konstante Beschleunigung zu arbeiten. Ist zwar nicht gerade die schönste Variante. Aber wird wohl am ehesten zum Ziel führen. Ich habe allerdings immernoch so im Gefühl, dass ich aus der erforderlichen Strecke und der Zeit ein Sinnvolles Verhältnis rechnen könnte und so die Beschleunigung zumindest einigermassen Variabel gestalten könnte.
 
Code:
Ich habe allerdings immernoch so im Gefühl, dass ich aus der erforderlichen Strecke und der Zeit ein Sinnvolles Verhältnis rechnen könnte und so die Beschleunigung zumindest einigermassen Variabel gestalten könnte.

Willst du die Beschleunigung variabel während der Bewegung einstellen?

a) warum?
b) würde das die Elau denn überhaupt unterstützen?
 
Ne des meine ich nicht.

Ich habe nur unterschiedliche Anforderungen an Strecke und Zeit.
Und je nach Bewegungskommando möchte ich die Beschleunigung Variabel auf die Anforderungen berechnen.

Beschleunigung und Geschwindigkeit weis ich ja beides nicht. Und ich möchte beide Werte je nach erwartetem Vorschub und der dafür vorgesehenen Zeit optimal errechnen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Beschleunigung und Geschwindigkeit weis ich ja beides nicht. Und ich möchte beide Werte je nach erwartetem Vorschub und der dafür vorgesehenen Zeit optimal errechnen.

??

Hab ich Dir doch beschrieben. Der Gleichung gibst Du die Beschleunigung vor. Die kannst Du Dir auswählen. Die Geschwindigkeit, die dann nötig ist, um in der Zeit x im Ziel anzukommen, wird dann wie beschrieben ausgerechnet.
Die Beschleunigung und Geschwindigkeit übergibst Du der Elau und fertig ist.

Irgendwas musst Du vorgeben. Eine Gleichung, die beides ermittelt, gibt es so nicht, weil es ja unendlich viele Lösungen, bzw. Kombinationen aus Beschleunigung und Endgeschwindigkeit gibt, die die Gleichung (also erreichen der Position x in Zeit y) erfüllen.
Also wähle Dir eine angemessene Beschleunigung aus, den Rest errechnet die Gleichung, Elau sorgt für die Bewegung.

Wenns sein muss, kann ich die Gleichung noch so umstellen, das die Geschwindigkeit vorgegeben wird, und die Beschleunigung errechnet wird.
Wenn ich Dich immer noch nicht verstanden habe, sag Bescheid.
 
Zuletzt bearbeitet:
Doch wir verstehen uns schon, haben nur aneinader vorbei geredet:)

Was Du in Deinem letzten Beitrag schreibst, wollte ich im Beitrag #9 sagen.
Dass ich halt eine Beschleunigung vorgeben muss. Ich möchte diese aber nicht fest vorgeben, sondern je nach Strecke/Zeit-Angaben eine für die aktuelle Bewegung sinnvolle Beschleunigung errechne.

Sprich wenn ich in grosser Zeit eine kleine Strecke Fahren muss, reicht eine geringe Beschleunigung
Wenn ich aber in kurzer Zeit weit fahren soll, möchte ich die Beschleunigung höher ansetzen.

Das meinte ich mit variabler Beschleunigung. Und diese kann ich ja einfach aus einem Strecke/Zeit-Verhältnis bestimmen. Zumindest grob.

Jedenfalls Danke für die Hilfe.


liebe Grüsse
 
Sprich wenn ich in grosser Zeit eine kleine Strecke Fahren muss, reicht eine geringe Beschleunigung
Wenn ich aber in kurzer Zeit weit fahren soll, möchte ich die Beschleunigung höher ansetzen.

Das stimmt so nicht.

Musst Du z.B. eine kleine Strecke in grosser Zeit fahren (s.o.), kannst Du entweder stark und kurz beschleunigen oder langsam und länger beschleunigen. Das gleiche gilt auch für den anderen Fall.

Dass ich halt eine Beschleunigung vorgeben muss. Ich möchte diese aber nicht fest vorgeben, sondern je nach Strecke/Zeit-Angaben eine für die aktuelle Bewegung sinnvolle Beschleunigung errechne.

Ich weiss auch nicht, warum Du die Beschleunigung variabel gestalten musst. Ich würde bei einer Anlage eine Beschleunigung vorgeben, die für die Mechanik und Motoren ordentlich tragbar ist. Trotzdem würden die Achsen in-Time ankommen, vorausgesetzt, das keine zu hohen Geschwindigkeiten herauskommen.

Und wenn Du von "sinnvoll" sprichst, dann setz doch einfach eine "sinnvolle" Beschleunigung ein, der Rest wird doch automatische ermittelt.

Ich versteh manchmal meine Frau auch nicht, vielleicht gehts mir mit Dir genauso.....;-)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Sprich wenn ich in grosser Zeit eine kleine Strecke Fahren muss, reicht eine geringe Beschleunigung
Wenn ich aber in kurzer Zeit weit fahren soll, möchte ich die Beschleunigung höher ansetzen.

das verstehe ich nicht.
was spricht dagegen immer mit der gleichen beschleunigung/verzögerung zu fahren? halt so das es für jede fahrt schnell genug ist, aber so das es die hw bzw. mechanik mitmacht...

es reicht doch wenn nur deine geschwindigkeit kleiner oder größer wird.
du kannst deine vorgegebene zeit doch damit einhalten indem du je nach zeitvorgabe und strecke nur auf die errechenete geschwindigkeit beschleunigst...

darf man wissen was das werden soll?
vielleicht kann ich es mir dann besser vorstellen was du da vorhast...
 
Markus:
das verstehe ich nicht.
was spricht dagegen immer mit der gleichen beschleunigung/verzögerung zu fahren? halt so das es für jede fahrt schnell genug ist, aber so das es die hw bzw. mechanik mitmacht...

Grubba:
Ich weiss auch nicht, warum Du die Beschleunigung variabel gestalten musst. Ich würde bei einer Anlage eine Beschleunigung vorgeben, die für die Mechanik und Motoren ordentlich tragbar ist. Trotzdem würden die Achsen in-Time ankommen, vorausgesetzt, das keine zu hohen Geschwindigkeiten herauskommen.

Markus und ich verstehen uns.....:p
 
Zuviel Werbung?
-> Hier kostenlos registrieren
servus,
also ich würde bei so einer Aufgabe in eine solche richtung gehen (ist mit sicherheit noch nicht fehlerfrei, war nur mal so runtergetippt):

Wenn du eine Strecke gegeben hast, und die Zeit, in der du die strecke abfahren musst, würd ich halt hergehen und einen % Wert als Variable angegeben. Der % Wert (als Beispiel 25%) sagt dir: die ersten 25% der gegebene Zeit kannst du beschleunigen auf V_End (die Geschwindigkeit die notwendig ist um 50% der gegeben Zeit konstant zu fahren). und die restliche 25% der Zeit hast du zum verzögern.

geg:
s:=Strecke: 200mm
t:=Zeit für Strecke:4sec.
%:=%Wert:25%

dann:
V_end:=s/(t*2*%);
V_end:=200mm/(4sec*2*0,25) =100mm/s;
Acc:=V_end/(t*%);
Acc:=100mm/s/(4sec*0,25)=100mm/s²;
Dec:=V_end/(t*%);
Dec:=100mm/s/(4sec*0,25)=100mm/s²;

Müsste doch so in etwa funktionieren (den %Wert kann man ja dann auch noch in abhängigkeit zur gegebenen Strecke und Zeit bringen oder so).

(Vergiss bitte bei der Elau den Smooth-Faktor (falls du hier mit Servoantrieben fährst)nicht. Bei einem SmoothWert von 10 erhöht sich die benötigte Beschleunigungs-/Verzögerungszeit um 10%)
 
Hallo,

für mich wäre das ein Fall für den Multicam Baustein. Die Zeit bestimmt wie schnell die Leitachse laufen soll. Der Vorschub legt die Slavepunkte fest.

Gruß

M_o_t
 
@Markus & Grubba:
Ich verstehe eure Diskussion hier nicht so recht ...
Ein Fahrbefehl, so wie ich ihn kenne könnte z.B. heissen :
Fahren nach Position 1 mit Beschleunigung A und max. Geschwindigkeit Z
ein anderer Fahrbefehl könnte heissen :
Fahren nach Position 2 mit Beschleunigung B und max. Geschwindigkeit Y
usw.
So wie ich das verstanden habe ist es das, was Schnick&Schnack machen will ... und das geht so ...

Es gibt aber allerdings auch Servo-Regler denen man einen erweiterten Fahrbefehl übergeben kann, der dann eventuell bewirkt, dass ab Position 3 mit Beschleunigung C und max. Geschwindigkeit X gefahren wird.

Gruß
LL
 
Zurück
Oben