PID 컨트롤러의 필수 부분을 이해하지 못합니다


12

PID 컨트롤러의 필수 부분을 이해하지 못합니다. 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

처음에는 적분이 0으로 설정되어 있습니다. 그리고 루프에서 시간이 지남에 따라 오류를 통합합니다. 설정 값을 (긍정적으로) 변경하면 오류가 양수가되고 적분이 시간이 지남에 따라 값을 "처음부터" "수입"합니다. 그러나 내가 이해하지 못하는 것은 오류가 0으로 다시 안정화되면 적분 부분에 여전히 일부 값 (통합 오류가 있음)이 있고 컨트롤러의 출력 값에 기여하지만 오류가 0이 아니기 때문에 그렇지 않아야합니다. PID의 출력도 0이어야합니다.

누군가 저에게 그 점을 설명해 줄 수 있습니까?

답변:


16

적분 항의 주요 목적은 정상 상태 오류를 제거하는 것입니다. 정상적인 경우에는 작은 정상 상태 오류가 발생하며 적분은 주로이 오류를 제거하는 데 사용됩니다. 그러나 오류가 0에 도달하면 적분은 여전히 ​​양수이고 오버 슈트가 발생합니다. 그런 다음 오버 슈트 후 적분이 다시 내려갑니다. 이것은 적분 항의 부정적인 영향입니다. 따라서 항상 트레이드 오프가 존재하므로 PID 컨트롤러를 조정하여 오버 슈트가 가능한 한 작고 정상 상태 오류가 최소화되도록해야합니다. 여기에 미분 용어가 사용됩니다. 미분 용어는 시스템의 오버 슈트를 최소화하는 데 도움이됩니다.


8
정상 상태 오류의 좋은 예는 조인트의 마찰입니다. PD 컨트롤러가 목표 관절 각도에 가깝지만 마찰로 인해 도달 할 수는 없습니다. "I"라는 용어는 천천히 쌓여 결국에는 마찰을 극복하기에 충분한 입력을 생성합니다.

2
또 다른 예는 조향의 편향입니다. 조향 제어 장치에 약간의 편차가 있거나 트레드 스타일 로봇의 경우 컨트롤러가 동일한 값으로 설정하더라도 하나의 트레드가 다른 트레드보다 약간 느리게 회전합니다. 적절하게 설정된 적분 항이이를 정정합니다.
ViennaMike

8

자신의 팔에 PID 컨트롤러를 설정하여 커피 한 잔을 바로 앞에 놓을 수 있다고 상상해보십시오.

  • 비례 요소는 손 위치가 너무 높거나 너무 낮은 경우 팔의 힘을 제어합니다.
  • 미분 요소는 이미 얼마나 빨리 움직 였는지에 따라 그 강도를 조정하여 목표를 초과하지 않도록합니다.
  • 필수 요소는 중력의 영향을 보상합니다. 그것없이, 컵은 비례 력이 중력의 힘과 같은 곳에 놓여질 것입니다.

당신이 붙어있는 코드의 일부는 시스템이 어떻게 든 커피의 무게를 측정해야한다는 것이고, 그렇게하는 한 가지 방법은 시간이 지남에 따라 위치 오차를 축적하는 것입니다. 대부분의 PID 컨트롤러에는 적분 요소의 크기에 대한 합리적인 제한을 지정하기위한 추가 용어가 있습니다.


2
+1. "오류가 0이면 PID의 출력도 0이어야합니다." Ian이 설명했듯이 커피 컵이 완벽한 위치에 있고 오류가 0 인 경우에도 PID의 출력에는 컵을 제자리에 고정시키기 위해 약간의 힘이 필요합니다.
David Cary

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.