Je ne comprends pas la partie intégrante du contrôleur PID. Supposons ce pseudocode de 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 est mis à zéro au début. Et puis dans la boucle, il intègre l'erreur au fil du temps. Lorsque je modifie (positivement) le point de consigne, l'erreur deviendra positive et l'intégrale "mangera" les valeurs au fil du temps (depuis le début). Mais ce que je ne comprends pas, c'est que lorsque l'erreur se stabilise à zéro, la partie intégrale aura toujours une certaine valeur (erreurs intégrées dans le temps) et contribuera toujours à la valeur de sortie du contrôleur, mais cela ne devrait pas, car si l'erreur est nulle, la sortie du PID devrait également être nulle, non?
Quelqu'un peut-il m'expliquer cela s'il vous plaît?
Imaginez que vous installiez un contrôleur PID sur votre propre bras, afin de pouvoir tenir une tasse de café directement devant vous.
On dirait que la partie du code sur laquelle vous êtes coincé est que le système doit en quelque sorte mesurer le poids du café, et une façon de le faire est d'accumuler l'erreur de position au fil du temps. La plupart des contrôleurs PID ont un terme supplémentaire pour spécifier une limite raisonnable sur la taille de l'élément intégral.
la source
Voici une vidéo qui donne une compréhension "intuitive" des boucles PID. Il a une explication du terme intégral, ainsi que des termes proportionnels et dérivés.
https://www.youtube.com/watch?v=l03SioQ9ySg
Il y a une vidéo de suivi qui explique les mathématiques et montre comment dériver le code de la formule générale.
https://www.youtube.com/watch?v=sDd4VOpOnnA
la source