Kurze Frage
Gibt es eine übliche Methode, um mit sehr großen Anomalien (Größenordnung) in einem ansonsten einheitlichen Kontrollbereich umzugehen?
Hintergrund
Ich arbeite an einem Steueralgorithmus, der einen Motor über einen allgemein einheitlichen Steuerbereich antreibt. Ohne / mit minimaler Belastung funktioniert die PID-Regelung hervorragend (schnelle Reaktion, wenig bis kein Überschwingen). Das Problem, auf das ich stoße, ist, dass es normalerweise mindestens einen Ort mit hoher Last gibt. Die Position wird vom Benutzer während der Installation festgelegt, daher gibt es für mich keine vernünftige Möglichkeit zu wissen, wann / wo sie zu erwarten ist.
Wenn ich die PID so einstelle, dass sie den Ort mit hoher Last bewältigt, führt dies zu großen Überschüssen auf den nicht belasteten Bereichen (was ich voll und ganz erwartet habe). Während es in Ordnung ist , während des Federwegs zu überschießen, gibt es keine mechanischen harten Anschläge am Gehäuse. Das Fehlen von Hardstops bedeutet, dass ein signifikantes Überschwingen dazu führen kann / muss, dass der Querlenker vom Motor getrennt wird (was zu einer toten Einheit führt).
Dinge, die ich prototypisiere
- Verschachtelte PIDs (sehr aggressiv, wenn sie weit vom Ziel entfernt sind, konservativ, wenn sie in der Nähe sind)
- Feste Verstärkung in der Ferne, PID in der Nähe
- Konservative PID (arbeitet ohne Last) + eine externe Steuerung, die darauf achtet, dass die PID blockiert und zusätzliche Energie anlegt, bis entweder: das Ziel erreicht ist oder eine schnelle Änderungsrate erkannt wird (dh der Bereich mit hoher Last verlassen wird)
Einschränkungen
- Volle Reise definiert
- Hardstops können nicht hinzugefügt werden (zu diesem Zeitpunkt)
- Der Fehler wird wahrscheinlich niemals auf Null gesetzt
- Die hohe Last könnte von einer Fahrt von weniger als 10% erhalten worden sein (was bedeutet, dass kein "Laufstart" vorliegt).