Breve domanda
Esiste un modo comune per gestire anomalie molto grandi (ordine di grandezza) all'interno di una regione di controllo altrimenti uniforme?
Sfondo
Sto lavorando ad un algoritmo di controllo che guida un motore attraverso una regione di controllo generalmente uniforme. Con il carico minimo / minimo il controllo PID funziona alla grande (risposta rapida, superamento minimo o nullo). Il problema in cui mi imbatto è che di solito ci sarà almeno una posizione di carico elevato. La posizione viene determinata dall'utente durante l'installazione, quindi non ho modo ragionevole di sapere quando / dove aspettarmi.
Quando eseguo l'ottimizzazione del PID per gestire la posizione di carico elevato, si verificano grandi tiri eccessivi sulle aree non caricate (cosa che mi aspettavo completamente). Mentre è OK per viaggiare overshoot metà, non ci sono fermi meccanici duri sulla custodia. La mancanza di hardstop significa che qualsiasi significativo superamento può / fa causare la disconnessione del braccio di controllo dal motore (dando luogo a un'unità morta).
Cose che sto prototipando
- PID nidificati (molto aggressivi quando lontani dal bersaglio, conservativi quando vicini)
- Guadagno fisso quando lontano, PID quando vicino
- PID conservativo (funziona senza carico) + un controllo esterno che cerca il PID per arrestarsi e applicare energia aggiuntiva fino a quando: l'obiettivo viene raggiunto o viene rilevato un rapido tasso di cambiamento (ovvero lasciando l'area di carico elevato)
limitazioni
- Viaggio completo definito
- Gli hard disk non possono essere aggiunti (in questo momento)
- L'errore probabilmente non azzererà mai
- Il carico elevato avrebbe potuto essere ottenuto da una corsa inferiore al 10% (il che significa che nessun "avvio in marcia")