Pergunta curta
Existe uma maneira comum de lidar com anomalias muito grandes (ordem de magnitude) dentro de uma região de controle uniforme?
Antecedentes
Estou trabalhando em um algoritmo de controle que aciona um motor em uma região de controle geralmente uniforme. Sem carregamento mínimo / mínimo, o controle PID funciona muito bem (resposta rápida, pouca ou nenhuma ultrapassagem). O problema que estou enfrentando é que geralmente haverá pelo menos um local de alta carga. A posição é determinada pelo usuário durante a instalação, portanto, não há uma maneira razoável de saber quando / onde esperar.
Quando ajusto o PID para lidar com o local de alta carga, ele causa grandes disparos excessivos nas áreas não carregadas (o que eu esperava totalmente). Embora seja bom ultrapassar a metade do percurso, não há paradas mecânicas no gabinete. A falta de batentes rígidos significa que qualquer ultrapassagem significativa pode / faz com que o braço de controle seja desconectado do motor (produzindo uma unidade morta).
Coisas que estou fazendo prototipagem
- PIDs aninhados (muito agressivos quando estão longe do alvo, conservadores quando estão próximos)
- Ganho fixo quando longe, PID quando fechado
- PID conservador (funciona sem carga) + um controle externo que procura o PID travar e aplicar energia adicional até que: o objetivo seja alcançado ou seja detectada uma taxa rápida de mudança (por exemplo, deixando a área de alta carga)
Limitações
- Curso completo definido
- Hardstops não podem ser adicionados (neste momento)
- O erro provavelmente nunca será zerado
- A carga alta pode ter sido obtida com um deslocamento inferior a 10% (o que significa que não há "partida inicial")