# FU anhand Inkremente runterfahren



## Waelder (1 Juli 2008)

Hallo Kollegen,

ich möchte einen FU (Bandantrieb) anhand von incrementen runterfahren, sprich eine position annähernd mit null anfahren. 
Ursprünglich war dass so, dass der FU zwar irgendwann den befehl bekommt "Halten" er rampt selbst aus, aber überfährt oder unterfährt gelegentlich und muss von der Positionierung ev abrupt angehalten werden. Mein Gedanke ist nun ab einer bestimmten position mit hilfe von einer Rampe via inkrementalgeber dass ding runterzufahren.
Die position und die umrechnerei mit den incrementen bekomm ich schon auf die reihe aber die Rampe.....da langt mein hirnschmalz wohl grad nicht.
Hat da wer ein tipp ?

Hardware : 315CPU, ET200S 1 COUNT 24V/100 kHzC, MM420

Danke schon vom Wälder

Anhang meine gedachte Rampe


----------



## MSB (1 Juli 2008)

Vorschlag:
Frequenz = ABS(Sollposition - Istposition) * Faktor

Mfg
Manuel


----------



## volker (1 Juli 2008)

das wird so nicht ganz klappen.
der motor wird sich ab einer gewissen frequenz nicht mehr bewegen. abhängig von z.b. reibungsverlusten. ich denke nicht, dass du die immer 100% gleich halten kannst.
vorschlag:
ab einer gewissen position vor der sollpos lässt du den umrichter langsam fahren aber immer noch so schnell das er sich sicher bewegt.
an der sollpos (evtl auch schon kurz davor, wegen nachlauf) stoppst du den umrichter ohne rampe


----------



## Grubba (1 Juli 2008)

Würde an Deiner Stelle das ganze nicht von Hand machen, sondern das per PID Regler machen. Die Zielposition ist Dein Sollwert, die Istposition Dein Istwert und Deine Reglerbegrenzung so einstellen, das Deine Maximalfrequenz nicht überschritten wird.

So wird z.B. eine Positionsabweichung durch evtl. Herausdrücken der Achse im Stillstand automatisch ausgeglichen, ohne das Du auch nur eine Programmzeile ändern musst.


----------



## Larry Laffer (1 Juli 2008)

Bei einfachen Positionier-Aufgaben habe ich mit etwas ähnlichem, wie der Vorschlag von Volker sehr gute Erfahrungen gemacht. Du kommst nicht zu 100% ins Ziel, aber doch schon sehr nahe dran.

Gruß
LL


----------



## tonga (1 Juli 2008)

Könntest du kurz erklären was da effektiv mechanisch abläuft?


----------



## JoopB (1 Juli 2008)

Ich macht das mit dir folgende code

```
L     #RestafstandRemweg          //DINT
      DTR   
      L     #TotaleRemweg               //DINT
      DTR   
      /R    
      SQRT  
      L     #MaxSnelheid                //INT
      ITD   
      DTR   
      *R    
      RND   
      T     #Snelheid                   //INT
```
 
Hiermit bekomt du eine liniare beschleunigung. 
Wehn Sie das ohne die SQRT mach brems die regler in anfang viel zu snel mit dass risico dass du ein fehler bekomst wegen zu hoge schiessenkreisspannung.

Joop


----------



## tonga (1 Juli 2008)

Ich wollte wissen was mechanisch passiert , was bewegst du von wo nach wo , grosse Lasten oder nicht , kannst du mal kurz beschreiben was den Anlagenteil ausmacht bzw. was er bezwecken soll und wo deine Problematik anlagenbezogen liegt?

@JoopB meinte Dich nicht , sorry...


----------



## Waelder (1 Juli 2008)

*Mechanik der Anlage*

@tonga

Also :

Förderband zum Transport von Material unterschiedlicher Länge, das Material muss immer mittig auf dem Förderband liegen, da der Nachfolgeprozess das Material relativ mittig (+-5mm) benötigt.

Förderrichtung >>>>>>>>>>>>>>>>>>>>>>>>>>>>

LS          
| . . . . [_____]  <---Material
. (´´´´´´´´´´´´´´´´) <---BAND
                . . . . . . .|
. . . Mittelposition

(die pünktchen haben nichts zu sagen die brauch ich hier als füller weil lerrzeichen ist nicht)

So ich hoffe den Prozess ein wenig  aufgezeichnet zu haben. Das Material hat von  ca 5kg bis ~45kg. Der Motor ist 0,37 und hat ein Getriebe mit Schnecke. Also nix gravierendes mechanisches.

@Volker
  an diese Idee habe ich auch schon gedacht es scheint mir auch sinnvoll.

@MSB
wenn ich noch einen kleinen offset dazurechne dann würgts den FU 
u.U. nicht ab.

@JoopB
diese Formel sieht interessant aus diese werde ich auf jeden Fall testen.

Werds morgen früh mal austesten.


----------



## kiestumpe (2 Juli 2008)

MSB schrieb:


> Vorschlag:
> Frequenz = ABS(Sollposition - Istposition) * Faktor
> 
> Mfg
> Manuel


Die ABS-Funktion muss raus. Sonst schiesst dein Positionnierer u.U. übers Ziel hinaus und kehr niemehr zurück. 

Wie lange darf den die Positionierung dauern?


----------



## HMI-Muckel (2 Juli 2008)

JoobP hat Recht,
diese Formel oder ähnlich in abgewandelter Form wird bei uns auch standardmässig für Positionieraufgaben verwendet. Die Formel ist von der Formel V = sqrt(2 * a * deltaS) abgewandelt und dient der Linearisierung sodas mit konstanter Verzögerung gebremst werden kann.
Es wird dadurch auch vermieden, dass die Verstärkung am Anfang zu gross und am Ende der Positionierung zu klein ist.


----------



## tonga (2 Juli 2008)

> ab einer gewissen position vor der sollpos lässt du den umrichter langsam fahren aber immer noch so schnell das er sich sicher bewegt.
> an der sollpos (evtl auch schon kurz davor, wegen nachlauf) stoppst du den umrichter ohne rampe



da du unterschiedliche Massen fährst würde ich zusätzlich nen kleinen DB basteln in dem verschiedene Parameter materialabhängig hinterlegt werden können , sei es rampen, geschwindigkeiten , wegeinheiten ,nen faktor oder wie auch immer...

Gruss tonga...


----------



## Markus (2 Juli 2008)

HMI-Muckel schrieb:


> JoobP hat Recht,
> diese Formel oder ähnlich in abgewandelter Form wird bei uns auch standardmässig für Positionieraufgaben verwendet. Die Formel ist von der Formel V = sqrt(2 * a * deltaS) abgewandelt und dient der Linearisierung sodas mit konstanter Verzögerung gebremst werden kann.
> Es wird dadurch auch vermieden, dass die Verstärkung am Anfang zu gross und am Ende der Positionierung zu klein ist.


 

kannst du mir das mal etwas genauer erklären?
was ist "a" - die Strecke der Bremsrampe?


also ich mach das normalerweise so:
- Verfahrweg der Achse 1000mm
- Bremsrampe 80mm

Bis 920mm fährt die Achse mit V-Max
ab dann vird der Sollwert veringert.

Dazu wird der restweg in % umgerechnet (80mm = 100%) für die Geschwindgkeit gilt das selbe (V-Max = 100%)

nun wird die Geschwingkeit von 100% auf 0% veringert, abhängig davon wie sich die Position veringert.

bevor der Sollwert auf den FU gegeben wird, kommt noch eine Grenzwert überwachung. zum einen wird der Sollwert auf >Maximaldrehzahl und vor allem auf einen minimalwert überwacht. angenommen 5% würde 20U/min ensprechen, und der untere grenzwert ist 20U/min, dann würde die geschwidigkeit nicht mehr langsamer als 20U/min, auch wenn der positionierer was anderes sagt.
Gerade Asynchronmotoren brauchen eine Minimalfrequenz um überhaupt gefahren werden zu können...


----------



## JoopB (2 Juli 2008)

Die bremsweg ist 80mm bij anfang bremse haben wir 100% geschwindgkeit
wehn wir nog 40mm fahren mochte must der geschwidgkeid ((40/80)^-2)*100%=70,71%   bij 20mm restweg ist das ((20/80)^-2)*100%=50% ,bei 10mm =35% , bei 1mm =11%  bei 0.5 mm =7,9%
Mit diese formule bekomme Sie eine liniare ramp. 
Wenn Sie die formule Bremsweg/restweg*100% geschwindkeid gebraucht bekomst du eine rampe welche in anfang schnell nach unten geht und an ende gans vlak ist. (Mit grosse geschwindkheid wurd eine grosse weg/sec abgelegd und mit kleine eine  kleine weg/sec)


----------



## Markus (2 Juli 2008)

ok, ich habe da mal ein kleines profisorium in excel gemacht.


----------



## Markus (2 Juli 2008)

Ich habe eben überlegt, es wäre doch sinnvolle dem ganzen noch eine art "d-anteil" zu überlagern.

ist der bremsweg zb. 100mm, aber die diferenz zur neuen sollposition ist nur 20mm, dann ist der sollwert vom regler ggf. zu wenig um am motor (asynchron ohne vektorregelung) das notwendige anfahrdrehmoment aufzubauen.

deshlab würde ich den sollwert bei einer neuen sollposition erstmal auf 100% schalten, diesen aber relativ schnell (zb 100ms) über die selbe rampe wieder abbauen.


----------



## HMI-Muckel (4 Juli 2008)

@Markus,
"a" ist die Verzögerung bzw. Beschleunigung.
die Formel lässt sich wie folgt herleiten.
1. V = a * t => t = V/a
2. S = 1/2 * a * t^2
=> S = 1/2 * V^2/a
=> V^2 = 2 * a * S
-------------------
Bei konstantem a was einem konstantem Bremsmoment der Maschiene bzw konstamtem Bremsstrom entsprechen würde wird die Geschwindigkeit in Abhängikeit von der Zeit linear ensprechend einer Geraden Abgebaut und zu Null geführt.


----------



## Larry Laffer (5 Juli 2008)

Vielleicht ist es noch nicht so richtig aufgefallen ...

In der Aufgabenstellung ist nicht von einem Servo-Motor die Rede, der unabhängig von der Drehzahl immer ein relativ konstantes Drehmoment liefert sondern von einem Drehstrom-Asynchron-Motor. Ein solcher Motor hat bei niedriger Drehzahl ein kleines Moment und bei hoher Drehzahl ein großes Moment (mal ganz einfach gesprochen).

Somit läßt sich aus meiner Sicht die Sache mit dem Restweg-abhängigen Sollwert hier nur bedingt machen. Es wundert mich ein bißchen, dass das außer von Volker (Beitrag #3) und Markus sonst von Niemanden erkannt worden ist ...

Guß
LL


----------



## Markus (5 Juli 2008)

Larry Laffer schrieb:


> Vielleicht ist es noch nicht so richtig aufgefallen ...
> 
> In der Aufgabenstellung ist nicht von einem Servo-Motor die Rede, der unabhängig von der Drehzahl immer ein relativ konstantes Drehmoment liefert sondern von einem Drehstrom-Asynchron-Motor. Ein solcher Motor hat bei niedriger Drehzahl ein kleines Moment und bei hoher Drehzahl ein großes Moment (mal ganz einfach gesprochen).
> 
> ...


 
naja bremsen übern ein gerade von 100- 0 geht sicher nicht.
ggf. wenn der minimalwert (zb 20) abgefangen wird - siehe einen beitrag von mir weiter vorne.

aber im prinzip wird das ja durch diese formel recht gut gelöst.
der bremswer ist keine gerade mehr sondern exponentiell, der geschwindigkeitssolwert wird gegen ende ja nur noch sehr schwach abgebaut.

in der excel die ich gebastelt (ja sie ist wirklich nicht schön  ) sieht man das ganz gut. von dem her sollte das mit einem asynchronmotor schon gehen.


aber ich sehe ein problem beim anfahren wenn die distanz eben nur sehr klen ist und die geschwindigkeit somit sehr klein ist. ich vermute aber das man das mit dem oben beschriebenen "d-anteil" auch in den griff bekommt.


----------



## HMI-Muckel (5 Juli 2008)

Larry Laffer schrieb:


> Vielleicht ist es noch nicht so richtig aufgefallen ...
> 
> In der Aufgabenstellung ist nicht von einem Servo-Motor die Rede, der unabhängig von der Drehzahl immer ein relativ konstantes Drehmoment liefert sondern von einem Drehstrom-Asynchron-Motor. Ein solcher Motor hat bei niedriger Drehzahl ein kleines Moment und bei hoher Drehzahl ein großes Moment (mal ganz einfach gesprochen).
> 
> ...


 
Die Aussage über den Drehstom Asynchonmotor stimmt so nicht wenn er über einen FU betrieben wird.

Die Formel erfüllt exakt die Forderung, die im Thread-Start angehängten Grafik, skizziert wurde. Dabei handelt es sich um eine Positionierung. Im Walzwerksbereich, aus dem ich komme verwendet man sowas um ein Coil, das durchaus mehrere 1000m lang sein kann cm-genau und reproduzierbar am Stichende stillzusetzen (Stillsetzautomatik).

Beste Grüsse
Martin


----------



## Markus (5 Juli 2008)

HMI-Muckel schrieb:


> Die Aussage über den Drehstom Asynchonmotor stimmt so nicht wenn er über einen FU betrieben wird.
> 
> Die Formel erfüllt exakt die Forderung, die im Thread-Start angehängten Grafik, skizziert wurde. Dabei handelt es sich um eine Positionierung. Im Walzwerksbereich, aus dem ich komme verwendet man sowas um ein Coil, das durchaus mehrere 1000m lang sein kann cm-genau und reproduzierbar am Stichende stillzusetzen (Stillsetzautomatik).
> 
> ...


 
sind das bei euch dann auch normale asynchronmotoren?
wer bekommt die gebersignale? die sps oder der fu?
wer regelt? die sps?
und die werden einfach mit eienr u/f kennlinie gefahren?

also ich kenne das auch so, und es ist durchaus möglich eine achse mit asynchronmotor mm genau zu positionieren (kenne ich aber nur wenn der fu die regelung übernimmt)

was haltet ihr denn jetzt von der theorie mit dem "d-anteil"?
ich hatte das so noch nicht realisiert, aber interessieren würde mich das schon...

ist das falsch gedacht oder unnötig?


----------



## HMI-Muckel (5 Juli 2008)

Es handelt sich dabei um Async Motoren die eben für FU geeignet sind. Die Tachosignale werden vom Antrieb (Simovert Masterdrive) selbst eingelesen und eine echte Drehzahlregelung gefahren. (u/f Kennline ist in meinen Augen nur ein Notbetrieb jedenfalls für unsere Anwendungsfälle).
Über den D-Anteil muss ich nochmal nachdenken (war bei uns mit der Formel jedenfalls noch nicht notwendig)

Beste Grüsse


----------



## Markus (5 Juli 2008)

HMI-Muckel schrieb:


> Es handelt sich dabei um Async Motoren die eben für FU geeignet sind. Die Tachosignale werden vom Antrieb (Simovert Masterdrive) selbst eingelesen und eine echte Drehzahlregelung gefahren. (u/f Kennline ist in meinen Augen nur ein Notbetrieb jedenfalls für unsere Anwendungsfälle).


 
soweit ich das hier verstanden habe, reden wir hier von einer sps-seitigen positionierung die abhängig von dem von ihr eingelesenen geberwert einen drehzhalsollwert für den fu ausgibt.

in deinem fall regelt aber den fu!
vermutlich bekommt er auch direkt den positionssollwert von der sps...
wenn du mit masterdrives und geberrüchführung arbeitest, dann kannd er fu den motor auch ganz anders bestromen im gegensatz zu einer normalen u/f kennlinie...

was du hast ist ein asynchronservo, da brauste dir auch über meinen "d-anteil" keine gedanekn machen...


----------



## JoopB (5 Juli 2008)

Nach dass endsiel fahren nach ich uber weg (mit formule (restweg/bremsweg)^-2 *max geschingkheid) und die rampe hoch uber zeit. Und wehn das mit hydraulische prop ventiele ist gebrauchen wir auch nog eine minimale geschwindkheid welche wir ohne rampe ansteuren .
Mit Hydr motoren gebrauchen wir zusatlich noch eine einfache PID regeler wehn dieser motoren mit eine kleine geschwindigkeid drehen musten und sie musten aus stilstand anfange zu fahren, den ist es moglich dass der in anfang mit 80% von die max ansteuring in gang kommen und darnach zuruck geregeld muste wurde bis 15% om mit eine kleine gang zu fahren. In dieser falle mach ich die regeling in z.b. OB35 mit ein takt von 20ms. hierbei must auch aus die geber der geschwindigkeid ausgegeben oder aus gerechned wurde.


----------



## Grubba (6 Juli 2008)

Ich bin ja immer dafür zu haben, sich für unterschiedliche Aufgaben eigene Lösungsstrategieen zu überlegen. Aber wenn es für ein Problem schon fertige Lösungen gibt werde ich das Rad nicht neu erfinden. 

Viele Anbieter benutzen in ihren Reglern einen ganz gewöhnlichen PID bzw. PI Regler. Das machen die im Bergbau mit 1MW Motoren genau so wie mit einem kleinen dezentralen Servo mit eingebautem Umrichter. 

Ich finde es durchaus interessant, hier unterschiedliche Lösungsansätze zu lesen, aber warum wollt ihr gerade in diesem Fall von dem am meisten verwendetem Algo abweichen? Der SFB 41 erfüllt doch alle Bedingungen, programmieren, bzw. parametrieren muss ich doch nur noch die P-I-D Anteile. (Wenn ich den D-Anteil überhaupt benötige).

Kaum Probleme mehr mit Toleranzen der Mechanik, keine Gedanken über den Momentenverlauf des Motors. 

Der Vorschlag V=Wurzel (2*a*s) funktioniert doch nur bei Einhaltung aller Parameter optimal.

Im Falle der einmaligen Berechnung des Bremspunktes und Bremsbeginn an diesem Punkt ergibt sich doch folgendes:

Die Zykluszeit verhindert mir einen exakten, bzw. reproduzierbaren Beginn des Bremsvorganges, je höher die Geschwindigkeit des Motors desto höher dieser Einfluss.
Die Rampe muss perfekt linear sein, ansonsten gibts Fehler.

Im Falle der zyklischen Aktualisierung von v in Abhängigkeit von s habe ich im Prinzip einen P-Regler mit V= PFaktor * (Wurzel s), der eine bleibende Regelabweichung hat, was bei P-Regler ja prinzipbedingt ist. 
Um diese Abweichung gegen 0 zu fahren, müsste ich zusätzlich noch einen I-Anteil einbauen. 

Womit ich dann einen eigenen PI-Regler programmieren müsste. Aber dafür gibts ja schon den SFB41.
Der bietet mir dann in Verbindung mit dem Online-Meßwertschreiber zusätzlich die Möglichkeit, die Auswirkungen meiner Parameter grafisch vorgesetzt zu bekommen.

Würde mich aber mal freuen, wenn der Waelder abschliessend mal posten würde, wofür er sich letztendlich entschieden hat und welche Erfahrungen er bis dahin so gemacht hat.:-D


----------



## HMI-Muckel (6 Juli 2008)

@Markus
FU regelt die Drehzahl der Maschine, SPS berechnet anhand der Formel die Solldrehzahl und gibt sie dem Fu vor.

Übrigens ich würde für eine Positionierung wie sie hier vorliegt, die zu einem Zeitpunt x gestartet wird und zu den der Zielsollwert festliegt, keinen D-Anteil vorsehen, vielmehr einen Zusatzsollwert zum losbrechen für kleine Positionierwege. Allerdings für eine Lageregelung, die kontinuierlich regelt und wo ich es mit sich ändernden Störgrösse bzw Sollwerten zu tun habe ist ein D-Anteil sinnvoll.

Beste Grüsse
Martin


----------



## HMI-Muckel (6 Juli 2008)

Grubba schrieb:


> Ich bin ja immer dafür zu haben, sich für unterschiedliche Aufgaben eigene Lösungsstrategieen zu überlegen. Aber wenn es für ein Problem schon fertige Lösungen gibt werde ich das Rad nicht neu erfinden.
> 
> Viele Anbieter benutzen in ihren Reglern einen ganz gewöhnlichen PID bzw. PI Regler. Das machen die im Bergbau mit 1MW Motoren genau so wie mit einem kleinen dezentralen Servo mit eingebautem Umrichter.
> 
> ...


 
@Grubba
der fehlende I-Anteil wird duch die integrierende Strecke ausgeglichen, ist also nicht unbedingt notwendig, ausserdem handelt es sich hier nicht um eine Positionsregelung oder Lageregelung sondern um eine Positionierung, die bei erreichen des Zielwertes beendet ist. Der Brenseinsatzpunkt braucht nicht berechnet zu werden, bei grosse Restwegen ist die berechnete Geschwindigkeit >100% und wird damit begrenzt, abhängig von "a" wird ab einem bestimmten Restweg der Berechnete V Sollwert kleiner und bremst die Anlage mit konst. Verzögerung auf 0 herunter (ganz einfach). Übrigens funtioniert das auch bei grossen Antrieben wie bei meinen Anwendungsfällen (Leistung ~5MW) und unterschiedlichster Belastung reproduzierbar gut.
Zudem kommt noch, das diese Art der Positionierung in weiten grenzen unabhängig von äquidistanten Zykluszeiten ist d.h. auch für OB1 geeignet.


----------



## Grubba (6 Juli 2008)

@HMI-Muckel



> der fehlende I-Anteil wird duch die integrierende Strecke ausgeglichen


 
Was meinst Du damit?

Wenn ich Euren Algorithmus richtig gelesen habe

v= Wurzel(2*a*s) 

ist das nichts anderes als ein P-Regler ohne I und D Anteil - der wird niemals auf 0 positionieren können.

Aber wenn ichs falsch verstanden habe, schreibs doch bitte nochmal auf.


----------



## HMI-Muckel (6 Juli 2008)

Grubba schrieb:


> @HMI-Muckel
> 
> 
> 
> ...


 der Antrieb fährt solange V<>0 ist (schliesslich befindet sich unterlagert eine Drehzehlregelung mit P-I Regler, die gefällist der V-Sollwert einhalten soll), und damit ändert sich der Restweg, nur das hier durch die Wurzel eine Linearisierung stattfindet und das asymptotische Verhalten wie es mit normalen P-Regler erreicht wird entfällt, vielmehr schneidet die V in Abhängikeit von der Zeit die Zeitachse unter einem Winkel <>0. Durch die Formel wird eine elegante Verstärkungsadaption erreicht man könnte z.B. dem Antrieb im Idealfall von 100% auf 0% nahe der Stromgrenze (=> konst.Verzögerung)herunterfahren und trotzdem eine Zielbremsung durchführen. Dadurch wird eine gewisse Zeitoptimierung zudem noch erreich. Andere Konzepte, müssten dies durch Adaption der P-I-D Parameter erreichen.
Ich sage nicht, dass ein P-I-D Regler das nicht kann, ist halt nicht so einfach zu Parametrieren. Hier braucht man nur "a" einstellen und sich damit an die Stromgrenze des Motors herantasten)
(der Restweg S enspricht der Fläche unter der Kurve (intergral) V=f(t) siehe Threadstart Skizze)

Beste Grüsse
Martin


----------



## Grubba (6 Juli 2008)

@ HMI-Muckel


> der Antrieb fährt solange V<>0 ist (schliesslich befindet sich unterlagert eine Drehzehlregelung mit P-I Regler, die gefällist der V-Sollwert einhalten soll)....


 
Was als Regelung untergelagert ist, ist in diesem Fall irrelevant. Die Geschwindigkeit wird bei Dir durch die bereits mehrfach erwähnte Formel errechnet. Und das ist und bleibt ein P-Regler. Also bekommst Du eine bleibende Abweichung. (Wie groß diese ist sei mal dahingestellt !)

Dein Restweg wird immer kleiner. Dadurch auch Deine Geschwindigkeit. Und so weiter. Irgendwann konvergiert Deine Geschwindigkeit gegen 0. Das ist halt so beim P-Regler.
Wie Du schon schreibst: Die untergelagerte Drehzahlregelung hält den V-Sollwert. Und der kommt von Dir.


----------



## kermit (6 Juli 2008)

also, ich mach das schon seit Jahren: Positionieren und Mitfahren mit
v=wurzel(2as).
(mit FU und Asynchronmotor, wahlweise Absolut- oder Inkrementalgeber, auch einfachen Pulsrädern...)

Probleme: für eine einfache Vorrücken-Fahrt ohne Richtungsumkehr überfährt der Antrieb immer etwas. Mit Richtungsumkehr neigt das Ding zum Schwingen, da muss man s um einen Toleranzwert vermindern.

Ohne die Eigenschaft der Regelstrecke zu berücksichtigen, die sich durch wurzel(2as) ausdrückt, geht jeder Regelversuch mit PID in die Hose.


----------



## HMI-Muckel (7 Juli 2008)

@Kermit
:s12: seh ich auch so.

@Grubba
Die unterlagerte Drehzahlregelung ist Teil des Regelkreise und somit sehrwohl relevant, sie hält meinen Geschwindigkeitssollwert ein. Die Integration der Geschwindigkeit ist der gefahrene Weg -> Integrierende Strecke.


----------



## Grubba (7 Juli 2008)

> Die unterlagerte Drehzahlregelung ist Teil des Regelkreise und somit sehrwohl relevant, sie hält meinen Geschwindigkeitssollwert ein.


 
Das mag ja sein, ist doch aber nur die Geschwindigkeitsregelung.
Angenommen, Dein FU hat den perfekten Regler und schafft es, innerhalb unendlich kurzer Zeit Deinen Motor auf Deine Sollgeschwindigkeit zu bringen. Dann wäre Deine Istgeschwindigkeit imer Deiner Sollgeschwindigkeit. Diese Sollgeschwindigkeit gibst Du über eure Wurzel(2as) Geschichte vor. V ist also eine Funktion nur von s. Ein P-Regler ist das zwar nicht mehr gerade, aber fast. Und die regeln die Abweichung nun mal nicht auf 0 aus. Es mag ja sein, das die Toleranz, die damit erreicht wird ausreicht.


----------



## HMI-Muckel (7 Juli 2008)

Grubba schrieb:


> Das mag ja sein, ist doch aber nur die Geschwindigkeitsregelung.
> Angenommen, Dein FU hat den perfekten Regler und schafft es, innerhalb unendlich kurzer Zeit Deinen Motor auf Deine Sollgeschwindigkeit zu bringen. Dann wäre Deine Istgeschwindigkeit imer Deiner Sollgeschwindigkeit. Diese Sollgeschwindigkeit gibst Du über eure Wurzel(2as) Geschichte vor. V ist also eine Funktion nur von s. Ein P-Regler ist das zwar nicht mehr gerade, aber fast. Und die regeln die Abweichung nun mal nicht auf 0 aus. Es mag ja sein, das die Toleranz, die damit erreicht wird ausreicht.


 
Frage:
Was würde dein P-I-D- Regler in dem Falle ausgeben, und wie würde der Motor darauf reagieren?


----------



## Grubba (7 Juli 2008)

Auf den D-Anteil würde ich erstmal verzichten.

Angenommen, ich würde Euren Regler nachbauen. Also könnte ich theoretisch den P-Faktor variabel verändern. Dann hätte ich an dieser Stelle euren Regler nachgebaut.
Dann mal probelaufen lassen und sehen, was sich so einstellt.

Dann würde ich den I-Anteil einschalten und einen kleinen Wert vorgeben. An der Stelle, wo der reine P-Regler kurz vor dem Ziel stehen bliebe, sorgt der Integralanteil für eine steigende Geschwindigkeitsvorgabe, je länger er den Sollwert nicht einhält. (Dieser Übergang ist natürlich stufenlos) Somit sorgt der I-Anteil für eine komplette Ausgleichung der Regelabweichung.

Das das System nicht anfängt zu schwingen, ist natürlich Sache der Einstellungen. Bei langsamen Systemen (wie diesem hier) kann ich wahrscheinlich keine supersteile Rampe fahren.

Kann nur aus meinen Erfahrungen sagen, das ich so bisher noch alles auf Position gefahren bekommen habe, was hier so notwendig war.

Und garantiert werde ich Euren Algo auch mal ausprobieren und vergleichen. Habe gerade noch einen Laserscanner auf dem Schreibtisch stehen, der einem Bauteil hinterherfahren muß. Mit PID gehts schon, mal sehen, was bei mir dann mit Wurzel(s) rauskommt.....


----------



## kiestumpe (7 Juli 2008)

kermit schrieb:


> also, ich mach das schon seit Jahren: Positionieren und Mitfahren mit
> v=wurzel(2as).
> (mit FU und Asynchronmotor, wahlweise Absolut- oder Inkrementalgeber, auch einfachen Pulsrädern...)
> 
> ...



Hab ich die so richtig verstanden :
Hast du ne Fallunterscheidung für s < 0 in deinem Programm berücksichtigt?
Mit Toleranz ziehst du v bei  ABS(s) < Toleranz auf 0?

Das ist zwar imho ne Regelung, aber eine nichtlineare (wegen er Wurzelfunktion), was mir aber für den Fall sehr geeignet und praktisch scheint.

just my 2 cents


----------



## kermit (7 Juli 2008)

richtig ...

da man aus einer negativen Zahl keine Wurzel gezogen bekommt, bleibt das Vorzeichen aussen vor:
v = Vorzeichen(s) * Wurzel(2 * a * ABS(s))

Ja, das mit der Toleranz sieht dann grob dargestellt etwa so aus:
if ABS(s)<Toleranz then s=0 else s=SIGN(s)*(ABS(s)-Toleranz)
in Wirklichkeit hab ich da aber zusätzlich eine mehrstufige Toleranz, die mir dann den Beschleunigungsfaktor a auch noch beeinflusst ...

ansonsten ... ja mit Freigabe der negativen Bewegungsrichtung ergibt sich tatsächlich eine Lageregelung ... sprich s ergibt sich aus der Differenz zwischen Solllage und Istlage ...

nun könnte man (was ich bisher nicht gemacht habe) bei großem Toleranzwert oder starkem Antriebsschlupf die verbleibende Regelabweichung aufintegrieren und damit die Sollposition auf einen Offsetwert verstimmen, der der Regelabweichung entspricht. In der Praxis hab das noch nie gebraucht, da ich nie CNC-Genauigkeit brauchte. Im Gegenteil, da ich i.d.R auf bewegliche Objekte in der Art der Fliegenden Säge aufsynchronisiere, wäre der I-Regler zu träge, um da noch eine Verbesserung erbringen zu können. 

übrigens: solch hilfreiche Dinge wie z.B. Schlupfkompensation beim Umrichter schalte ich ab - es stört regelmäßig (zumindest bei mir), wenn der Umrichter verspätet versucht, den aufgetretenen Schlupf aufzuholen.

Die Rampe des Umrichters rechne ich in der SPS, der Umrichter ist auf Minimalrampe parametriert und bekommt den Sollwert über DP 12MBAUD. Die SPS läuft typischerweise 3ms, der Prozess läuft etwa 1m/s und die Fliegende Säge macht drei Schnitte pro Sekunde mit einer Lagegenauigkeit von etwa +-2mm.


----------



## Markus (9 Juli 2008)

ich dachte ich häts begrifen, aber jetzt...

1.


JoopB schrieb:


> Die bremsweg ist 80mm bij anfang bremse haben wir 100% geschwindgkeit
> wehn wir nog 40mm fahren mochte must der geschwidgkeid ((40/80)^-2)*100%=70,71% bij 20mm restweg ist das ((20/80)^-2)*100%=50% ,bei 10mm =35% , bei 1mm =11% bei 0.5 mm =7,9%
> Mit diese formule bekomme Sie eine liniare ramp.
> Wenn Sie die formule Bremsweg/restweg*100% geschwindkeid gebraucht bekomst du eine rampe welche in anfang schnell nach unten geht und an ende gans vlak ist. (Mit grosse geschwindkheid wurd eine grosse weg/sec abgelegd und mit kleine eine kleine weg/sec)


 

das ist doch was völlig anderes als V =wurzel(2as) ???

und wie kommst du auf die ergebnisse?

((40/80)^-2)*100%=70,71%

((0,5)^-2)*100%=70,71%

(0,5^-2)*100%=70,71%

4*100%=*400%*


hier wird mit dem verhältniss von restweg zu bremsweg gerechnet, aber alle anderen reden von diesem dubiosen "a"

das fress ich noch nicht ganz, was erreicht ihr damit?
also angenommen "a" ist eine konstante, dann hat es doch keinen einfluss auf den verlauf der bremsrampe?

wenn "a" variabel behandelt wird, WIE?
bzw. in welchem zusammenhang?




HMI-Muckel schrieb:


> @Markus,
> "a" ist die Verzögerung bzw. Beschleunigung.
> die Formel lässt sich wie folgt herleiten.
> 1. V = a * t => t = V/a
> ...


 

was mir bei der formel auch noch nicht einleuchtet ist die skallierung des sollwertes, wie wird vmax definiert?

ach hätte ich doch in mathe besser aufgepasst...


----------



## HMI-Muckel (9 Juli 2008)

Hi,

ich rechne mit physikalischen Einheiten sprich [V]=[m/s], [a]=[m/s^2], und =[m].

JoopB rechnet in % von Vmax (= max Anlagengeschindigkeit oder Antriebsgeschwindigkeit) V/Vmax = SQRT(2*a*S)/SQRT(2*a*Smax)
=> v[%] = SQRT(S/Smax)
wobei S der Restweg ist und Smax der Bremsweg ist von Vmax auf 0.


----------



## Markus (9 Juli 2008)

HMI-Muckel schrieb:


> Hi,
> 
> ich rechne mit physikalischen Einheiten sprich [V]=[m/s], [a]=[m/s^2], und =[m].




das habe ich schon begriffen, aber dein V wird ja quasi endlos erhöht beim einer längeren verfahrstrecke .

fängst du das irgendwo anders wieder ab und begrenzt es auf die geschwindigkeit die der antrieb maximal kann?

was machst du mit "a" bleibt das konstant, oder ist das variabel? wenn ja, in welchem zusammenhang?





> JoopB rechnet in % von Vmax (= max Anlagengeschindigkeit oder Antriebsgeschwindigkeit) V/Vmax = SQRT(2*a*S)/SQRT(2*a*Smax)
> => *v[%] = SQRT(S/Smax)*
> wobei S der Restweg ist und Smax der Bremsweg ist von Vmax auf 0.


 
hmm hier habe ich doch das selbe problem?
ich muss Vout im anschluss auf Vmax begrenzen, oder?


Was mache ich hier falsch?



> das ist doch was völlig anderes als V =wurzel(2as) ???
> 
> und wie kommst du auf die ergebnisse?
> 
> ...


----------



## kiestumpe (9 Juli 2008)

Hallo Markus,

er rechnet 
V = SQRT(S/Smax) = (s/smax) ^(1/2)

und nicht

V = (s/smax)^(-2) = smax² / s²

Gruss

Frank


----------



## Markus (9 Juli 2008)

kiestumpe schrieb:


> Hallo Markus,
> 
> er rechnet
> V = SQRT(S/Smax) = (s/smax) ^(1/2)
> ...


 

dann soll er das auch so schreiben!


----------



## HMI-Muckel (9 Juli 2008)

hi,

V wird im Anschluss auf Vmax begrenzt. Ich mach es meist so, dass ich Leitsollwert habe, der durch einen Begrenzungsbaustein durch V begenzt bzw "abgeschnürt" wird. Mein Leitsollwert wird ebenfalls durch Vmax begrenzt und in der Regel vom Steuermann eingestellt.

Gruss
Martin


----------



## Markus (9 Juli 2008)

aja ok, also wenn ihr mir das jetzt nicht erklärt hättet, dann hätte ich es vielleicht begriffen... 

ne quatsch, danke euch!

also es gibt im prinzip zwei varianten:

1.
V = SQRT(S/Smax)

Das hier begreife ich, die exponentielle Bremsung setzt ein sobald der Restweg "S" kleiner wird als der Bremsweg "Smax"

"V" ist in dem Fall ein Faktor den ich mit meiner Maximalgeschwindigkeit (entweder physikalische Einheit oder 100%) multipliziere.

Das Produkt aus V * Vmax muss ich dann noch auf Vmax begrenzen weil "V" > 1 wird wenn der "S" > "Smax" ist.


habe ich das so richtig begriffen?




2.
v = SQRT(2as)

Das habe ich immer noch nicht gerafft, ich muss in diesem fall vor der Berechnung prüfen ob "s" bereits kleiner als mein gewüsnchter bremsweg ist, und erst dann kann ich ab diesem Moment die geschwindigkeit nach der Formel berechnen.

Und erneut die frg nach "a", kann ich mit einem Variablen "a" irgendwas sinnvolles bezwecken?



also die Funktion der Formel an sich habe ich schon begriffen, aber speziell die praktische Umsetzung der zeiten Variante leuchtet mir nicht ein...


----------



## Grubba (9 Juli 2008)

> Und erneut die frg nach "a", kann ich mit einem Variablen "a" irgendwas sinnvolles bezwecken?


 
Anstatt

v = SQRT(2as)

kannst Du ja auch schreiben:

V = Sqrt(2a) * Sqrt(s), wobei nur s eigentlich variabel ist.

Dein Sqrt(2a) ist dann nur noch ein konstanter Faktor, der in die Steigung Deiner Bremskurve eingeht.


----------



## Markus (9 Juli 2008)

das ist schon klar, aber gibt es eine praktische anwendung für ein variables "a"


----------



## Grubba (9 Juli 2008)

Für den Fall, das Du eine irgendartig geformte Bremsrampe fahren möchtest, kannst Du a z.B. in Abhängkeit des Weges verändern. Also z.B. erst langsam, dann stärker bremsen. Evtl. zu gebrauchen, wenn Du z.B. Flüssigkeiten bewegen musst. Dann erst langsam bis zur maximalen Beschleunigung beschleunigen, dann gegen Ende die Verzögerung langsam senken.
So als ob Du ein volles Glas Bier durch die Kneipe schiebst


----------



## HMI-Muckel (9 Juli 2008)

Markus schrieb:


> das ist schon klar, aber gibt es eine praktische anwendung für ein variables "a"


 
"a" sollte auch eigentlich eine Konstante sein (sollte jedenfalls nicht verkleinert werden ohne den Restweg zu betrachten)
"a" kann aus Smax berechnet werden, wenn dir Smax besser liegt 
a = Vmax^2/(2 * Smax).
Bei der Änderung von Smax sollte Smax nicht vergrössert werden ohne vorher den Restweg zu betrachten.


----------



## kermit (9 Juli 2008)

a  (Beschleunigung - sei sie positiv oder negativ, wenn negativ - dann eben Verzögerung) ist ja bekanntlich die zweite Ableitung der Position (Newtonsche Mechanik).

bei mir ist a insofern variabel, dass ich a im Zielbereich zurücknehme, um im Zielbereich einer Positionierung die Schwingneigung durch Prozessreaktionszeiten zu mindern (ja, da gab es einen regelungstechnischen Begriff - Totzeit o.ä.). Das geht Hand in Hand mit dem bereits beschriebenen Toleranzbereich ...

a ist bei mir auch variabel, um höhere oder niedrigererer Taktzahlen zu erzeugen. Aber für die jeweilige Produktion dann konstant.

Ja, da war noch das Thema Ruck, das noch nicht so recht bei seinem Namen genannt wurde: die dritte Ableitung ...

Wenn man also will, dass das Hefeweizen nicht über den Glasrand tritt, so lässt man die Beschleunigung (Verzögerung) nicht schlagartig einsetzen, sondern lässt diese eben durch Ruck begrenzt einsetzen. Das bedeutet zwar nicht, dass das Hefe überhaupt nicht schwappt, aber man vermindert das Schwappen und vermeidet, dass sich das Beschleunigungsschwappen und Verzögerungsschwappen bei ungünstigem Zusammentreffen auch noch aufsummiert (aufschaukelt). (Die fertige Lösung dafür habe ich nicht - ich hatte mal vor etwa 2-3 Jahren das angedacht und festgestellt, dass dafür drei Begrenzungsfunktionen zu beachten sind: s[max], v[max] und a[max]. Leider hat das Tagesgeschäft und fehlende Praxisanwendung das Projekt abgewürgt). Zum Thema Ruck gibt es ja bei der Servotechnik und auch bei Asynchronmotor-FU entsprechende Lösungen, wo man als Rampe dann nicht "linear" sondern entsprechend irgend was s-förmiges wählen kann. Soweit ich bisher sehen konnte, haben nur wenige Antriebsspezialisten das Kunststück geschafft, auf ein sich bewegenden Zielpunkt ruckbegrenzt zu positionieren. Standard scheint mir zu sein, das ruckbegrenzte Bewegungsprofil von Istposition auf das Ziel zu berechnen und während der Ausführung der Positionierung eine sich verandernde Zielposition zu ignorieren.



> eine sich verandernde Zielposition zu ignorieren


Beispiel?
Der Wirt schiebt das Bierglas zum Gast. Aber der Gast verändert seinen Standort, also muss der Wirt nochmals etwas nachschieben oder noch frühzeitiger das Glas bremsen ...


----------



## HMI-Muckel (10 Juli 2008)

@Kermit
da geht es dir wie mir ich hatte schon häufiger Ansätze gehabt diese "s"- Bremskruve zu implementieren (s weil sie wie ein "s" geformt ist). Die ist natürlich die edelste Form der Positionierung, ob das jedoch für eine hoch dynamische continuierliche Regelung geeignet ist weiss ich nicht, ausserdem erfüllt das nicht die eingangs zkizzierte Bremskurve.
Das Problem bei der einfachen Formel ist halt, dass die Ableitung dV/ds bei s = 0 nicht definiert ist (geht gegen unendlich würde man sagen), das heist auch das die Verstärkung gegen unendlich geht. Man muss die Positionierung bei erreichter Positioniergenauigkeit beenden. Ich denke das Problem bei der s-Kruve ist nicht die Ruckbegrenzung sonder die Begrenzung von a auf a[max] dadurch kann man die Bremskruve nur abschnittsweise berechnen (ruck > 0, ruck < 0 und a = konst).


----------



## Waelder (10 Juli 2008)

An alle schonmal ein dickes 

*DANKE 
*so jetzt aber zu meinem vorläufigen ergebnis. Ich hab als erstes mal die geschickte mit der umschaltung von schnell auf langsam gemacht. So wie von volker in post 3 beschrieben. Mit genauigkeit von +-1cm. Nochmals Danke volker.

Am Montag bin ich vorort und werde die Geschichte noch mit der formel 
 V = SQRT(S/Smax)* V Max

.............--------|    
V = _  .../   ...S.......      x V Max
........\/.. ------
..............Smax


testen. Ich werd die obere drehzahl begrenzen falls ´n rechenfehler passiert und wenns den FU bei annähernd null würgt werd ich ihm ein kleinen kriechgang spendieren. Bei Zieleinfahrt wird er eh gestoppt ob er nun mit voll oder nur kriechend fährt.

Der eine oder andere hat meine gerade rote Lineare kurve angesprochen. Sie ist nicht Bedingung ein krummes halbes S geht auch eben die wurzelgeschichte im excel sieht das förmelchen vernünftig aus als kurve. Wenn der FU halt übers ziel rausgeht dann macht das förmelchen halt wieder ne spiegelverkehrte Rampe wie vorab runter zu. da aber Bei Zieleinfahrt wird er der FU gestoppt ob er nun will oder nicht

Hoffentlich hab ich mich bei der Formel nicht vertan ;-)


----------



## Waelder (18 Juli 2008)

*Ergebnis*

So nachdem ich die Anlage Testen konnte habe ich folgende Ergebnisse :

1.
Die Umschaltung schnell/langsam (wurde als erstes getestet) geht mit einer abweichung von +- 1cm das liegt aber am FU.

2.  die erfreuliche endgültige Lösung
Die Rampenfunktion wie von euch beschrieben Funktioniert wunderbar. Der FU fährt an mit 24m/min schaltet ab 200mm vor Ziel die Rampe scharf fährt runter und kriecht dann mit ~0,5m/min (ca 0,5s lang) ins Ziel. Die Positionierung ist immer innerhalb +-3mm das langt für meinen Fall dicke. Die Rampenfunktion des FU ist auf 0,1s begrenzt

Kleiner Wehrmutstropfen. Der Incrementalgeber hat relativ wennig Impulse (400) da hab ich gegenüber der längsten bis kürzesten Positionierung ne abweichung von ca 2%. Mit dieser Korrektur von 2% passt aber die Positionierung genau.

So bei wem ich mich bedanken muss werd ich grad noch durchlesen.

:s18:

Der Wälder


----------



## Merten1982 (21 April 2010)

der Thread ist zwar recht alt, hat mir aber bei meinem Lageregelunfsproblem geholfen. Zumindest weiß ich jetzt wie ich es machen muss.

Wo in den v=sqrt(2*a*s) gehört den der "Kv" Faktor von dem man ständig liest, wenn es um Lageregler geht?


----------

