Hallo Thomas,
danke für die vorgeschlagene Vorgehensweise !
Wenn ich deine Grafik aus Post #9 sehe, würde ich vermuten dass so was wie einen Extremwertregler benötigst.
Letztenendes, genau das.
Wenn du nur einmal tunen musst
Nein, es muss auch im laufenden Betrieb nachgefahren werden. Bzw., ein Komplettdurchlauf ist nicht wünschenswert.
Ich habe sowas noch nicht programmiert, aber ich habe meine Überlegungen wie ich das machen würde mal aufskizziert.
Die aktuelle Stellgröße y wird dazu immer um einen Wert delta-y erhöht und verringert. Die Änderung des Istwertes wird dann mit der Änderung der Stellgröße korreliert, hier einfach vorzeichenbehaftet multipliziert.
Wenn man aus diesem Wert über die Zeit das Integral bildet, ergibt sich wenn man sich auf dem Extremwert befindet der Wert 0 (optimal), wenn man sich auf der linken Seite befinden ein positiver und auf der rechten Seite ein negativer Wert.
Wenn ich Dich richtig verstehe: Du schlägst vor, den Vektor mit den Ableitungen der Istwerte zeilenweise mit dem dS (Änderung der Wegstrecke) und mit dem dt (Fahrzeit für dieses Wegstück) zu multiplizieren, und die Ergebnisse dann in einen Ergebniswertvektor zu schreiben ?? Kling nicht schlecht, ich würde bloß auf die Werte vorher einen gleitenden Mittelwert (Filter) sagen wir mal, über 3 anweden, um das "Zittern" loszuwerden. Können wir als Vorgehensweise festhalten.
Die Basisstellgröße y erhöht man nach einem Durchlauf um diesen Summenwert mal einen beliebigen Verstärkungsfaktor, und ergibt die neue Basisstellgröße für den nächsten Durchlauf. Dadurch 'fährt' man mit der Stellgröße sozusagen immer berghoch.
D.h., du schlägst vor, die Stellgröße variabel zu machen, um schneller zum Ziel zu gelangen ? Das klingt ja richtig gut. Versteh am frühen morgen noch nicht ganz, wie ich das auf meinen "Ergebnisvektor" praktisch anwenden kann. Dann müsste ich die
aktuelle Stellgröße y mit dem ΔۤI, Δۤt, ΔۤS und dem Verstärkungsfaktor δ multiplizieren und an den Motor weitergeben ? Und am Ende komme ich ganz automatisch dahin, wo mein Extremum liegt ? Weil die Stellgröße dadurch automatisch wachsen oder sinken würde, je nachdem, ob ich mich dem extremum nähere, oder entferne, und ihr Vorzeichen wechseln. Es ergäbe dann quasi eine intergrative Annäherung an die Minimumslage. Wenn das funktioniert, wäre das eine richtig gute Idee :wink: Jetzt müsste mir nur noch jemand beim Implementieren ein Wenig helfen...
P.S: Globale Extrema befinden sich wenn - dann nur am Rande, und müssen sicher ausgeschlossen werden. D.h. wenn der Motor durch den Regelvorgang einen Endschalter anfährt, wird einfach ein Fehler zurückgemeldet und das System zum Reset aufgefordert.
P.P.S: D.h., die Formel für die Berechnung des neuen Wertes für y müsste lauten: ΔۤI/dt * y (alt) * δ * Δۤt = y(neu) - richtig oder nicht ?