Step 7 Rampenfunktion in SCL

one_deep_man

Level-1
Beiträge
5
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hi

ich bin auf der Suche nach einer Funktion in SCL, die eine Rampe darstellt, d.h. ich einen Istwert über einen bestimmten Zeit zum Sollwert führen kann.

Vorgabe: Geschwindigkeit
Sollwert: Position

Mit der vorgebenen Geschwindigkeit "V", will ich erreichen dass die Maschine bei der Position "X" im Stillstand kommt .

Habt einer schon Erfahrung oder gute Idee

Danke für eure hilfe.
 
Hallo,

wie man so schön sagt, führen viele Wege nach Rom.

Ich habe schon zwei Varianten verwendet um über eine Formel die das Steigungsverhalten beschreibt, den Sollwert über eine Rampe auf den Endsollwert zuführen.
1. Variante: Du erstellst eine Funktion mit entsprechenden Eingängen für die Parameter, die du für die Berechnung benötigst, und programmierst darin die Berechnung. Diese Funktion rufst du dann in einem Weckalarm OB auf ( So wird die Berechnung des folgenden Sollwerts immer nach einer definierten Zeit berechnet).
2. Variante: Wie oben beschrieben, nur rufst du die Funktion im z.B. OB1 auf und führst die Funktion nach einer Zeit aus, z.B. durch Timer, welche du auch als Multiinstanz in einem FB laufen lassen könntest (Dies soll zwar im ms-Bereich ungenauer sein, ist mir aber noch nicht aufgefallen). Vorteil ist, dass die Rampe einfach über die Timerlaufzeit veränderbar ist.

Gruß
 
Zuviel Werbung?
-> Hier kostenlos registrieren
...Vorteil ist, dass die Rampe einfach über die Timerlaufzeit veränderbar ist.
Das ist kein Vorteil, erstens musst Du die Geschwindigkeit in Zeit umrechnen, und außerdem ruckelt es um so mehr, je niedriger die Geschwindigkeit wird.
Eine Rampe für konstante Geschwindigkeit hat man in wenigen Zeilen SCL-Code hingeschrieben oder man nimmt was aus der OSCAT-Lib.

Gruß
Erich
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das ist kein Vorteil, erstens musst Du die Geschwindigkeit in Zeit umrechnen, und außerdem ruckelt es um so mehr, je niedriger die Geschwindigkeit wird.
Eine Rampe für konstante Geschwindigkeit hat man in wenigen Zeilen SCL-Code hingeschrieben oder man nimmt was aus der OSCAT-Lib.

Gruß
Erich

Wo ist da bitte der Unterschied zu meiner Ausführung und wo soll das ein Problem darstellen?
 
Man könnte auch die Sollgeschwindigkeit abhängig vom Abstand zur Zielposition berechnen, dann braucht man keine Zeit und keinen Timer. Die Steiheit der Bremsrampe dann mit einem Faktor beeinflussen. Etwa so:
Code:
Sollgeschwindigkeit := Limit(Min:=..., Max:=..., Value:=ABS(ZielPos-IstPos) * Faktor);

// IF ZielPos < IstPos THEN
//   Sollgeschwindigkeit := Sollgeschwindigkeit * -1;
// END_IF;

Harald
 
Hallo Harald,

ich denke die ideale Lösung wäre weder mit einem Timer noch die Zeit. Ich will ganz einfach abrampen und auf die Position X zum stehen kommen.
ich werde mir das Morgen ausprobieren.

Gruß
 
Hallo Onkel Dagobert,

die Regelstrecke kann ich leider nicht beschreiben.
Mein Ziel ist es, die Maschine auf eine bestimmte Position anzuhalten. also abrampen und auf die Position X zum Stillstand kommen.

Gruß
 
die Regelstrecke kann ich leider nicht beschreiben.
Gruß

Warum kannst du sie nicht beschreiben? Wie ist der mechanische Aufbau?

Je mehr Informationen man hier im Forum gibt, desto besser ist die Antwort, die man erhält.
Je nach Verhalten der Regelstrecke gibt es verschiedene Ansätze hierzu und damit keine allgemeingültige Universal-Lösung für jeden Fall.

mfg
Wolfgang
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn Du z.B. eine S7-1500 hast, dann könnte man das auch mit einem Technologieobjekt machen. Das kannst Du auf Simulation stellen und trotzdem eine Sollgeschwindigkeit, Ruck, Beschleunigung, Verzögerung und Sollpositionen vorgeben.
Das programmierst Du dann mit den PLCOpen- Bausteinen. Z.B. kannst Du mit MoveVelocity die Sollwertinterpolation starten und dann per MoveRelative ablösen. Die berechnete Sollgeschwindigkeit kannst Du dann deinen Antrieb übergeben.
 
Zurück
Oben