컨트롤러 게인 조정이 어려울 수 있습니다. 일반 전략이 올바른 솔루션으로 수렴되는 안정적인 시스템을 얻는 데 효과적입니까?
댓글
- 더 구체적인 질문을 대상으로하는 질문이 더 많을 것입니다. 유능한. 그렇지 않으면 튜닝에 대한 섹션이있는 PID 기사를 참조하십시오.
- I ‘ 조정 PID는 시스템의 특성에 따라 크게 달라지는 것을 항상 발견했습니다. 그래서 ‘ 자동 조정 시스템이 매우 유용합니다. 첫 번째 통과, 낮은 성능의 매개 변수 세트에는 적합하지만 최적과는 멀고 최적화되지 않은 일반 전략에서도 동일한 문제가 발생합니다. 주어진 시스템의 기계, 전기 및 제어 측면을위한 것입니다.
답변
소형, 저 토크 모터 용 기어링이 거의 또는 전혀없는 상태에서 좋은 기본 튜닝을 얻기 위해 사용할 수있는 한 가지 절차는 장애에 대한 응답을 조사하는 것입니다.
PID를 튜닝하려면 다음 단계를 사용하십시오.
- 모든 게인을 0으로 설정합니다.
- 외란에 대한 응답이 꾸준한 진동이 될 때까지 P 게인을 증가시킵니다.
- 진동이 사라질 때까지 D 게인을 증가시킵니다 (예 : 심각하게 감쇠 됨).
- D 게인을 높여도 진동이 멈추지 않을 때까지 2 단계와 3 단계를 반복합니다.
- P와 D를 마지막 안정된 값으로 설정합니다.
- 원하는 진동 수로 설정 값에 도달 할 때까지 I 게인을 증가시킵니다 (일반적으로 0이지만 오버 슈트의 몇 번의 진동을 신경 쓰지 않으면 더 빠른 응답을 얻을 수 있음).
사용하는 장애는 컨트롤러가 부착 된 메커니즘에 따라 다릅니다. 일반적으로 메커니즘을 설정 값에서 멀리 이동하고 놓아 주면 충분합니다. 진동이 점점 더 커지면이를 줄여야합니다. P 게인.
D 게인을 너무 높게 설정하면 시스템이 떨기 시작합니다 (P 게인 진동보다 더 높은 주파수에서 진동).이 경우 D 게인이 멈출 때까지 줄이십시오.
이 기술에 이름이있는 것 같습니다. 찾으면 여기에 입력하겠습니다.
댓글
- 다음과 같은 소리 Ziegler-Nichols : en.wikipedia.org/wiki/Ziegler%E2%80%93Nichols_method
- @ Throwback1986, 이것은 확실히 아님 P 게인 만 사용하는 Ziegler-Nichols I 및 D 게인은 진동하는 P 게인과 진동주기에서 그에 따라 계산됩니다.
- 특히 튜닝이 필요한 여러 관절이있는 로봇 팔 튜닝에 대한 추가 조언이 있습니까? 베이스에서 시작하여 엔드 이펙터까지 바깥쪽으로 작업합니까 아니면 그 반대 방향으로 작업합니까, 아니면 그 반대입니까?
- 학술 또는 산업 환경에서보다 정교한 제어 방법을 원할 것입니다. 취미를 위해; 중력은 감쇠 효과가 있으므로 중력이 모터에 가장 적게 영향을 미치는 각도에서 각 관절을 조정합니다. 예를 들어 팔이 똑바로 위로 향하도록하여 중력이 모터가 아닌 베어링에 작용합니다. 순서는 중요하지 않습니다. 제어에 피드 포워드 중력 보상 항을 추가하는 것이 아마도 원하는 성능을 얻을 수 없다면 ‘ 가장 쉬운 개선 일 것입니다 (직렬 암에 재귀 Newton-Euler 사용).
- pidtuner.com 도구는 몇 가지 알려진 단점이있는 Ziegler-Nichols 방법보다 더 나은 결과 를 제공했습니다. folk.ntnu.no/skoge/publications/2003/tuningPID/more/ …
답변
대학에서 배웠던 hauptmech의 답변과 유사한 실험 방법 :
- 모든 게인을 0으로 설정합니다.
- 시스템이 진동 할 때까지 K d 를 증가시킵니다.
- K d 를 2 ~ 4 배로 설정합니다.
- K p 를 의 약 1 %로 설정합니다. K d .
- 진동이 시작될 때까지 K p 를 증가시킵니다.
- 감소 K p 를 2-4로 설정합니다.
- K i 를 약 K p 의 1 %.
- 진동이 시작될 때까지 K i 를 높입니다.
- K i 를 2 ~ 4 배 줄입니다.
Ziegler-Nichols 방법 은 진동주기에 대한 정확한 숫자를 얻을 수 있으면 더 정확합니다. 일반적으로 “cla ssic PID “숫자가 주어 졌으므로 항상 최적은 아닙니다.
상승 시간, 오버 슈트, 안정화 시간, 정상 상태 오류 및 안정성에 대한 각 항의 효과에 대한 일반적인 규칙은 표 1을 참조하십시오. “PID 제어 시스템 분석 및 설계” (IEEE Control Systems Magazine의 Li, Ang, Chong)
댓글
- Kd 먼저? 저는 항상 Kp로 시작하는 것이 가장 좋다고 생각했습니다.
- ‘ 이전 강의 슬라이드가있는 경우 ‘ 그렇게하지 않는 것이 좋은 이유입니다. ‘ 듣고 싶습니다.
- 그 ‘는 내가 ” 바지의 좌석 ” 튜닝을 옹호하는 알고리즘입니다. 시스템을 모델링하거나 응답을 측정하지 않고도 ‘ 최대한 가깝게 접근 할 수 있습니다. (올바른 튜닝이 필요한 경우 모델링 및 / 또는 측정이 유일한 방법입니다.)
- Kd를 먼저 튜닝하는 것이 ‘ 나에게 이해가되지 않습니다. , 모든 PID에서와 같이 ‘ Kd의 부호는 음수입니다. ‘ 오류의 매우 큰 변화가 발생할 때 제어 신호를 줄이는 데 사용되어 본질적으로 시스템을 댐핑합니다. Kd 만 있으면 시스템이 반대 방향으로 이동하여 오류가 증가하고 문제가 복잡해집니다. Kd가 양수이면 올바른 방향으로 오류에 큰 변화가 발생할 때마다 ‘ 더 빠르게 변경하고 목표를 초과합니다.
- 실제로 D 게인을 먼저 조정하는 것이 의미가 있지만 ‘ ” 증가 ” D 게인은 절대 값 증가를 의미하며 ‘ 댐핑 만 증가시킵니다. D 게인의 가장 큰 문제는 고주파 노이즈를 증폭하고 ‘ P 게인없이 그 효과를 보는 것이 좋다는 것입니다. 따라서 ‘ 기본적으로 댐핑과 같은 동작을 중지하고 노이즈 및 지연된 오류 신호를 증폭하기 시작하는 이득을 찾는 것부터 시작합니다. 저는 ‘ 2 단계에서 식물이 진동하는지 확인하기 위해 식물을 찔러야한다고 가정합니다.
답변
Embedded.com이 내 기사를 다시 이동했지만 지금은 여기에 있습니다. 이것은 PID 루프를 작성하는 방법 (부동 소수점 이외의 다른 작업을 수행하는 방법을 독자에게 연습으로 남겨 둡니다)과 조정 방법을 모두 보여줍니다.
최선의 방법 은 귀하의 능력에 달려 있습니다. “경험있는 제어 시스템 전문가라고 가정 할 때 최상의 튜닝 을 얻는 방법은 일반적으로 플랜트의 응답을 측정하는 것입니다 (“플랜트 “==”당신이 제어하는 것 “). 그런 다음 측정을 수행 한 방법에 따라 식물의 모델을 추출하고 여기에 디자인하거나 측정에 직접 디자인합니다.
특정 어려운 식물의 경우 만족스럽지 않다는 것을 알게됩니다. 측정,이 경우 모델로만 가야합니다. 드물지만 작동하면 만족 스럽습니다.
Answer
Sebastian Thrun은 PID 튜닝을위한 간단한 알고리즘을 제시했습니다. “로봇 자동차 프로그래밍 방법”수업. “twiddle”이라고하며 그는 여기 에 설명합니다.
Twiddle은 로컬 최소값을 찾는 경향이 매우 높습니다. 괜찮지 만 상황에 대해 최적 이 아닌 세 개의 상수 세트가 나올 수 있습니다. PID 상수 조정 문제는 유틸리티를 최대화하기 위해 특정 매개 변수를 찾기위한보다 일반적인 검색 문제의 하위 집합입니다 ( 이 경우 PID 알고리즘의 오류를 최소화합니다.) 언덕 오르기, 시뮬레이션 된 어닐링, 유전자 알고리즘 등과 같은이 문제에 대한 다른 일반적인 솔루션을 살펴보면 더 많은 최적의 솔루션을 찾을 수 있습니다.
Answer
다른 두 답변과 달리 PID를 수동으로 조정하는 좋은 방법은 Kd를 무시하는 것입니다. 따라서 0에서 시작하여 목표에 도달 할 때까지 Kp를 높인 다음 Ki를 늘려 정상 상태 오류를 제거하십시오.
Kd는 잡음에 제대로 반응하지 않으므로 문제를 혼동 할 수 있습니다. 그런 다음 필터를 추가하기 시작합니다. 아날로그 입력에서 제어 속도를 늦추고 모든 작업을 더 어렵게 만드는 것 외에 어떤 일이 발생하는지 질문하십시오 …
나를 혼란스럽게하는 또 다른 점은 PID 방정식이 표준 형식 인 경우입니다. 또는 독립적 (위키 백과에서는 병렬) 형식으로. 기의 효과는 형태가 당신이 생각하는 것과 틀릴 때 역전되는 것처럼 보입니다. 두 유형 모두 자동화에 사용되며 때로는 둘 사이를 전환 할 수있는 옵션이 있습니다.
답변
시스템 모델링
물론 다른 답변에서 언급 한대로 실험적인 조정을 수행 할 수 있지만 제어하려는 모든 것에 대해 합리적인 동적 모델을 정의 할 수 있고 매개 변수를 식별 하면 오버 슈트 , 상승 시간 , 정착 시간 , 안정적 -state 오류 등.
매트랩에는 컨트롤러를 조정하여 이러한 기준의 조합을 최적화 할 수있는 도구도 있습니다.
컨트롤러 파악
PID 컨트롤러도 매우 유용합니다. 모든 실험 알고리즘은 어떻게 든 이런 종류의 지식을 기반으로합니다. 지침을 따를뿐만 아니라 직접 느낄 수 있다면 컨트롤러를 수동으로 조정하는 것이 더 쉬울 수 있습니다.
실제 문제
컨트롤러를 튜닝 할 때 다음 중 하나가 발생할 가능성이 있습니다. windup , 부적절한 샘플링 속도 , 포화
결론
결국, 모든 것은 실제로 무엇을 할 수 있는지에 달려 있습니다. 시스템이 어떻게 작동하는지, 어떤 종류의 실험을 할 수 있는지에 대한 지식을 얻을 수 있습니다. 가장 좋은 점은 PID 컨트롤러와 일반적인 제어 이론 인 IMO에 대해 실제로 더 많이 배우는 것입니다.하지만 저는 편견이 있습니다. 🙂
댓글
- I ‘ 사람들이 PID 튜닝을 위해 계속 휴리스틱 을 제안하는 이유를 이해하지 못합니다. 요즘에는 플랜트 식별 및 컨트롤러 설계를위한 많은 자동 도구가 제공되지만 ‘ 심층적 인 이론적 배경이 필요하지 않습니다. 그런 다음이 답변을 추천합니다.
답변
관심이있는 분들을 위해 제 경험을 조금 확장 해 보겠습니다. 문제는 접근하기 어려운 (때로는 유용하지 않은) 제어 이론이 많고 종종 부정확 한 시스템에 대한 가정을하는 경험 법칙이 있다는 것입니다.
안정성
먼저 제어 루프가 불안정 해지는 이유에 대해 이야기하겠습니다.이 논의에서는 선형 시스템을 가정하겠습니다. . 비공식적으로 이것은 제어 신호가 주어진 주파수에서 사인파 인 경우 관찰 된 출력이 동일한 주파수에 있고 제어 시스템의 진폭을 변경하면 출력이 동일한 비율로 응답 함을 의미합니다. 이 가정은 많은 실제 시스템에 대한 좋은 근사치이며 서로 다른 주파수를 개별적으로 살펴볼 수 있습니다.
제어 경로를 보면 설정 값, PID 컨트롤러, 시스템 (일명 “식물”), 그리고 센서. 센서의 고정 된 설정 값과 사인파를 상상해보십시오 (이는 센서의 실제 장애와 동일하며 피드백 됨). 불안정한 시스템에서 피드백은 시간이 증가함에 따라 진폭이 증가하도록 제어 루프가 오류를 감소시키는 것이 아니라 증폭시킵니다. 이것이 발생하는 이유는 지연 또는이 특정 주파수의 경우 입력과 출력 간의 위상 편이 때문입니다. 주어진 주파수에 대해 출력의 개방 루프 (즉 피드백 없음) 시프트 및 진폭을 볼 수 있으며 모든 것을 그래프에 그릴 때 Bode Plot과 같은 결과를 얻을 수 있습니다. . 이 개방형 루프 그래프에 오류가 계속 증폭되는 상황이 있으면 시스템이 불안정한 것입니다. 지연이 파장의 1/2 미만이거나 이득이 x1 미만이면 시스템이 안정 됩니다. 실제로 우리는 그 지점 (게인 마진 및 위상 마진)에서 약간의 마진을 원하므로 많은 수동 / 휴리스틱 방법에서 “백 오프”를 보게됩니다.
그 매뉴얼의 주요 문제 방법은 당신이 “맹인 비행을하고 있고 당신은 열악한 제어 시스템을 얻게 될 것”이라는 것입니다.
또한 의미 P, I, D는 당신의 센서가 측정하는 것과 관련이 있다는 것을 명심하십시오. 당신이 적용하는 통제. 집에서 만든 컨트롤러에서 흔히 발생하는 실수는 사람들이 “P를 실제로 적용하지 않는데도 적용하고있다”고 생각하는 것입니다. 모터 컨트롤러에는 토크 루프를 통해 실행되는 속도 루프에서 실행되는 위치 루프가있는 경우가 많습니다. (A 캐스케이드 )
네, 이것이 우리에게 어떻게 도움이됩니까?
첫 번째 요점은 “자신 만의 PID 컨트롤러를 구축하는 경우 개방 루프를 측정하는 방법도 구축해야한다는 것입니다. 응답. 컨트롤러에 대한 입력에서 주파수 스윕을 수행하고 피드백을 분리 한 상태에서 센서의 출력을 측정합니다. 그런 다음 개방형 루프 보드 플롯을 그리고 시스템이 안정적이고 거래가 가능한 이유를 확인 할 수 있습니다. 폐쇄 루프 응답을 측정하는 것도 유용하며 루프가 폐쇄 된 동안 설정 포인트의 주파수 스위프를 수행하여 모든 시스템에서이를 수행 할 수 있습니다. 이 두 가지 모두 “그다지 어렵지 않으며 많은 이론적 지식이 필요하지 않습니다”.
내부에서 무슨 일이 일어나고 있는지 전혀 이해하지 않고 단순히 컨트롤을 조정하는 경우에는 불가능합니다. 이러한 시스템에 대한 직관력을 구축하는 것은 그리 어렵지 않습니다. 예 : 비례 이득은 위상에 영향을 미치지 않지만 모든 주파수에서 개방 루프 이득을 증가시킵니다. 따라서 모든 수동 튜닝 방법에서 비례 게인을 증가시킬 때 수행하는 작업은 위상이 -180이되는 주파수를 찾는 것입니다. 다양한 컨트롤이 주파수 응답에 미치는 영향에 대해 자세히 알아 보려면 이 를 참조하세요.
최고의 폐쇄 루프 성능을 얻는 데는 컨트롤러 이득뿐만 아니라 시스템을 조정합니다. 당신이 원하는 것은 시스템을 가능한 “딱딱하게”만드는 것입니다. 이를 통해 제어 매개 변수를 늘리고 최상의 개방 및 폐쇄 루프 대역폭을 얻을 수 있습니다. 모터 제어 애플리케이션에서의 경험상 비례 이득은 대부분의 “작업”을 수행해야하는 것이고 적분기는 “휴식”입니다. 저는 D 항이 전혀 필요하지 않다고 생각합니다. 저역 통과 필터와 노치 필터를 사용하면 기계적 공명이있을 수 있지만 보드 플롯없이 설정하는 것이 매우 어려운 상황에서 많은 도움이됩니다 (관찰하는 진동 주파수 폐 루프 아래는 개 루프와 다를 수 있습니다.)
안전이 우려되는 경우 (매우 강력한 모터 또는 모터가 제어 할 수 없게되면 파괴 될 수있는 시스템) 시스템을 보호하기 위해 튜닝을 시작하기 전에 제한 (예 : 전류 제한, 최대 위치 오류) 그런 다음 매개 변수 범위에 대한 느낌을 얻어야합니다. 피드백이 회 전당 40 카운트 또는 회 전당 4000 카운트 인 경우 매개 변수 주어진 시스템에 대해 100의 요소가 될 것입니다. 내 접근 방식은 먼저 제어 능력이 좋지 않은 범위를 찾은 다음 거기에서 시작하여 P와 I로 시작하여 증가하는 것입니다. 백 오프는 이러한 안정성 마진을 만듭니다.
폐쇄 루프를 넘어서
폐쇄 루프 시스템에서 오류를 제거하려고합니다. 항상 성능이 다소 제한 될 것입니다. 원하는 것은 폐쇄 루프 컨트롤러가 보는 오류를 최소화하는 것이며이를 수행하는 한 가지 방법은 feed라는 기술을 사용하는 것입니다. 피드 포워드에서는 컨트롤러를 돌아 다니며 시스템에 직접 명령을 전달합니다. 예를 들어 가속 피드 포워드가 있습니다. “모터”의 토크 상수를 알고 있고 부하의 특정 가속도를 얻기 위해 필요한 전류의 양을 거의 알 수 있습니다. 명령 입력 가속도에 상수를 곱한 다음 컨트롤러의 구동 명령에 추가하면됩니다. 기본적으로 컨트롤러가없는 경우 시스템을 구동하는 데 필요한 작업을 수행하고 있으며 가까울수록 루프에서 제거해야하는 오류가 줄어들고 시스템 성능이 향상됩니다. 실제로 큰 차이를 만듭니다.
코멘트
- ” 모터 제어 애플리케이션에 대한 제 경험상 비례 게인은 대부분의 ” 작업 ” 및 통합자는 ” 나머지 “. ‘ D 용어가 전혀 필요하지 않다고 생각합니다. ” 동의합니다. 일반적인 모터 제어 애플리케이션의 경우 P는 주 작업을 수행하고 I는 장기 드리프트 / 오류를 보상합니다. 그러나 여기서 쿼드 콥터는 많은 외부 난류에 노출되므로 빠른 응답을 얻으려면 D 항이 중요합니다. I 용어의 경우 쿼드가 자율 탐색 모드가 아니면 는 그다지 중요하지 않습니다.
- @ dm76 : 내 경험의 대부분은 모터 제어에 관한 것이며 그 면책 조항을 작성합니다 😉 내 직감에 따르면 ‘는 여전히 쿼드 콥터 애플리케이션에서 저를위한 공간이며 P가 매우 높으면 모터 제어에서와 마찬가지로 외부 장애를 처리 할 수 있다고 생각합니다. 쿼드 콥터에 대해 명확한 설명을하기 위해 시스템을 자세히 살펴볼 필요가 있습니다.여기에서 제가 말하는 많은 내용이 적용되는 것 같습니다 (특히 주파수 영역에서 튜닝하고 시스템의 개방 루프 응답을 가짐).
- @ dm76 : 그리고 실제로 ” 경험의 법칙 ” PID 튜닝은 모터에서 매우 평범한 성능을 제공하고 쿼드 콥터에서도 동일한 성능을 제공합니다. 때로는 잘 배치 된 노치 필터가 크기 차이를 만들 수 있습니다 …
답변
Ziegler-Nichols 는 손쉬운 수동 방법입니다. 보다 강력한 방법도 존재합니다. 일반적으로 수학적 솔루션 (분석, 반복 최적화 등)에 의존합니다.
그 외에도 일부 자동화 기술에 대한 Google “자체 조정 PID”가 있습니다. 제가 가장 좋아하는 것은 신경망을 PID 튜닝에 적용하는 것입니다.
답변
정확한 PID 계수를 원하는 경우 :
- 통계 액추에이터 데이터 (예 : 입력 전압 수집 + 인코더 펄스 를 const로 자주 가져옵니다 (
0.01sec
)20secs
시간 (3
x2000
행렬) - 액추에이터의 전달 함수 (TF)를 가져옵니다 (MATLAB의 Ident 도구 상자 사용).
- 마지막으로
PIDTool 도구 상자를 열고 변환 함수를 업로드하십시오.
또는 빠르고 간단한 방식으로 :
Ziegler–Nichols 라는 더 빠른 접근 방식이 있습니다.