Pregunta corta
¿Hay una manera común de manejar anomalías muy grandes (orden de magnitud) dentro de una región de control por lo demás uniforme?
Fondo
Estoy trabajando en un algoritmo de control que impulsa un motor a través de una región de control generalmente uniforme. Sin carga / carga mínima, el control PID funciona muy bien (respuesta rápida, poco o ningún rebasamiento). El problema que estoy encontrando es que generalmente habrá al menos una ubicación de carga alta. La posición la determina el usuario durante la instalación, por lo que no hay una forma razonable para que sepa cuándo y dónde esperarla.
Cuando afino el PID para manejar la ubicación de carga alta, se producen grandes disparos en las áreas no cargadas (lo que esperaba completamente). Si bien está OK para sobrepasar la mitad del recorrido, no hay paradas mecánicas en el gabinete. La falta de topes significa que cualquier rebasamiento significativo puede hacer que el brazo de control se desconecte del motor (lo que produce una unidad muerta).
Things I'm Prototyping
- PID anidados (muy agresivos cuando están lejos del objetivo, conservadores cuando están cerca)
- Ganancia fija cuando está lejos, PID cuando está cerca
- PID conservador (funciona sin carga) + un control externo que busca que el PID se detenga y aplique energía adicional hasta que: se alcance el objetivo o se detecte una tasa de cambio rápida (es decir, que abandone el área de carga alta)
Limitaciones
- viajes completos definidos
- No se pueden agregar paradas duras (en este momento)
- Es probable que el error nunca se ajuste a cero
- La carga alta se podría haber obtenido con un viaje de menos del 10% (lo que significa que no hay "inicio de carrera")