Não entendo Parte integrante do controlador PID

12

Eu não entendo parte integrante do controlador PID. Vamos assumir esse pseudocódigo da Wikipedia:

previous_error = 0
integral = 0 
start:
  error = setpoint - measured_value
  integral = integral + error*dt
  derivative = (error - previous_error)/dt
  output = Kp*error + Ki*integral + Kd*derivative
  previous_error = error
  wait(dt)
  goto start

Integral é definido como zero no início. E então, no loop, ele integra o erro ao longo do tempo. Quando eu faço uma alteração (positiva) no ponto de ajuste, o erro se torna positivo e a integral "come" os valores ao longo do tempo (desde o início). Mas o que eu não entendo é que, quando o erro estabilizar de volta a zero, a parte integral ainda terá algum valor (erros integrados ao longo do tempo) e ainda contribuirá para o valor de saída do controlador, mas não deve, porque se o erro for zero, a saída do PID também deve ser zero, certo?

Alguém pode me explicar isso, por favor?

user561838
fonte

Respostas:

16

O principal objetivo do termo integral é eliminar o erro em estado estacionário. No caso normal, haverá um pequeno erro de estado estacionário e a integral é usada principalmente para eliminar esse erro. No entanto, é verdade que, quando o erro chegar a 0, a integral ainda será positiva e fará com que você ultrapasse. Depois de ultrapassar, a integral começará a cair novamente. Este é o efeito negativo do termo integral. Portanto, sempre há o compromisso e é necessário ajustar o controlador PID para garantir que o overshoot seja o menor possível e que o erro em estado estacionário seja minimizado. Aqui é onde o termo derivado entra em jogo. O termo derivado ajuda a minimizar a superação no sistema.

JuliusG
fonte
8
E um bom exemplo de erro em estado estacionário é o atrito em uma junta. Digamos que seu controlador PD se acomode perto do ângulo da junta alvo, mas não consegue chegar lá devido ao atrito. O termo "I" se acumulará lentamente e, eventualmente, gerará uma entrada grande o suficiente para superar o atrito.
Ben
2
Outro exemplo é o viés na direção. Se houver um leve viés no controle de direção, ou, para robôs no estilo da banda de rodagem, uma banda de rodagem é um pouco mais lenta que a outra, apesar do controlador configurá-las para o mesmo valor, haverá uma parcialidade. O termo integral, definido corretamente, corrige isso.
usar o seguinte comando
8

Imagine que você configurou um controlador PID em seu próprio braço, para poder segurar uma xícara de café bem na sua frente.

  • O elemento proporcional controlaria a força do seu braço em relação à posição da sua mão, sendo muito alta ou muito baixa.
  • O elemento derivativo ajustaria essa força com base na rapidez com que você já estava se movendo, para não ultrapassar seu alvo.
  • O elemento integral compensaria os efeitos da gravidade; sem ele, o copo descansaria onde a força proporcional era igual à força da gravidade.

Parece que a parte do código em que você está preso é que o sistema deve, de alguma forma, medir o peso do café, e uma maneira de fazer isso é acumular o erro de posição ao longo do tempo. A maioria dos controladores PID possui um termo adicional para especificar um limite razoável no tamanho que o elemento integral pode ter.

Ian
fonte
2
+1. "se o erro for zero, a saída do PID também deve ser zero, certo?" Como explica Ian, mesmo quando a xícara de café está na posição perfeita e o erro é zero, a saída do PID precisa ter alguma força ascendente para manter essa xícara na posição.
22612 David Cary