LabVIEWForum.de - Lineare Geschwindigkeitskurve

LabVIEWForum.de

Normale Version: Lineare Geschwindigkeitskurve
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,

ich versuche gerade eine lineare Geschwindigkeitskurve zu erstellen, wobei folgendes gilt:
0 s - 2,5 s --> 165 km/h
ab 2,5 s - 23 s --> linear abfallend auf 85 km/h

[attachment=23799]

Wie kann ich dies realisieren? Bin mit meinem versuch nicht zufrieden. Kann ich das irgendwie vereinfachen?

Lv09_img2
[attachment=23800]
[attachment=23801]
Hi,

mal so ins blaue geschossen: Nur die abfallende Steigung als Funktion in Abhängigkeit der Zeit definieren und hinterher einen "In Range and Coerce"-Block mit dem Maximalwert für die ersten (und vielleicht letzten) Sekunden definieren. Müsste das BD auf einen Formelknoten, ein Ein- und ein Ausgabeelement, den Block und zwei Konstanten reduzieren...

ch
Für solche Aufgaben ist die Rampenfunktion sehr nützlich:
[attachment=23813]
lv2009 [attachment=23814]
Hi!

Ich habe gerade kein LV hier zur Verfügung, aber einen Fehler konnte ich direkt feststellen: Du wirst niemals in 20,5 Sekunden von 165 auf 85 km/h reduzieren, da du einen Rechenfehler machst...
Ich hab jetzt mal die Einheiten weggelassen, da die für die Steigung unerheblich sind.
dy = 165 - 85 = 80
dx = 23 - 2,5 = 20,5
Steigung m = dy/dx = 80 / 20,5 = 3,9

Da du mit Millisekunden rechnest, änderst du die Skalierung an x.

-> m = 80 / 20500 = 0,0039

Die Formel einer Gerade lautet ja bekanntlich: y(x) = m*x + C

Daher ist C = y(x)-m*x = 165 - 0,0039 * 2500 = 155,2439

Also lautet deine Formel: y(x) = 0,0039 * x + 155,2439 {für x >= 2500 ms}

Nachdem du m und C zur Laufzeit berechnest, solltest du lediglich diese Werte und dein x_start = 2500ms an die While-Schleife übergeben und entsprechend die Punkte der Geraden berechnen.

Als Zähler für x kannst du dann das i der Schleife nehmen und mit x_start addieren. Du kannst über die manipulation vom i auch somit deine Auflösung der Geraden (Anzahl Stützpunkte) verändern, aber das findest du bei bedarf schon alleine heraus.... Tongue

Ich hoffe, auch ohne LV geholfen zu haben.

Edit: Man kann es natürlich auch einfach machen, wie von Lucki vorgeschlagen. Allerdings finde ich, man sollte sowas mindestens einmal "zu Fuß" gemacht haben, damit man auch verstanden hat, was da im Hintergrund abläuft.
' schrieb:Ich habe gerade kein LV hier zur Verfügung, aber einen Fehler konnte ich direkt feststellen: Du wirst niemals in 20,5 Sekunden von 165 auf 85 km/h reduzieren, da du einen Rechenfehler machst...
Habe das jetzt nicht nachgeprüft, der Fehler war mir nicht aufgefallen. Bei dem von mir vorgeschlagenen VI, welches sich an dem von skywalker anlehnt, war lediglich ein ganz kleiner Fehler drin: Statt z.B. 20.5sec war die Laufzeit nur 20.3sec. Korrektur, indem die Samplezahl um 2 erhöht wird. (Eine Sample wird für das 2.5sec Warten verbraucht, und außerdem hat man bei n Samples nur n-1 Wartezeiten)
Zitat:Edit: Man kann es natürlich auch einfach machen, wie von Lucki vorgeschlagen. Allerdings finde ich, man sollte sowas mindestens einmal "zu Fuß" gemacht haben, damit man auch verstanden hat, was da im Hintergrund abläuft.
Das ist zwar richtig, nur läuft die Argumentation ins Leere: skywalker hatte es ja "zu Fuß" gemacht, und seine Anfrage war nicht, wie es geht, sondern wie es einfacher geht. Ich konnte also gar keine andere Antwort geben.

Lv09_img2[attachment=23827]
Referenz-URLs