컨트롤러 게인 조정이 어려울 수 있습니다 . 올바른 솔루션으로 수렴되는 안정적인 시스템을 얻는 데 어떤 일반적인 전략이 효과적입니까?
컨트롤러 게인 조정이 어려울 수 있습니다 . 올바른 솔루션으로 수렴되는 안정적인 시스템을 얻는 데 어떤 일반적인 전략이 효과적입니까?
답변:
기어링이 거의 없거나 전혀없는 소형 저 토크 모터의 경우 좋은 기준선 튜닝을 얻는 데 사용할 수있는 절차 중 하나는 외란에 대한 반응을 조사하는 것입니다.
PID를 조정하려면 다음 단계를 사용하십시오.
사용하는 장애는 컨트롤러가 연결된 메커니즘에 따라 다릅니다. 일반적으로 설정 점에서 손으로 메커니즘을 옮기고 놓아도 충분합니다. 진동이 점점 커지면 P 게인을 줄여야합니다.
D 게인을 너무 높게 설정하면 시스템이 떨리기 시작합니다 (P 게인 진동보다 높은 주파수에서 진동). 이 경우 D 게인이 멈출 때까지 줄이십시오.
이 기술에는 이름이 있다고 생각합니다. 내가 찾으면 여기에 넣겠습니다.
내가 대학에서 가르쳤다는 hauptmech의 대답과 비슷한 실험 방법 :
지글러 - 니콜스 방법은 당신이 진동주기에 대한 정확한 수를 얻을 수 있다면 더 정확하다. 일반적으로 주어진 "클래식 PID"숫자를 사용하여 진동을 유발하므로 항상 최적의 것은 아닙니다.
상승 시간, 오버 슈트, 안정화 시간, 정상 상태 오류 및 안정성에 대한 각 용어의 영향에 대한 일반적인 규칙 은 IEEE 제어 시스템에서 Li, Ang 및 Chong 의 "PID 제어 시스템 분석 및 설계" 표 1을 참조하십시오. 잡지.
Embedded.com에서 기사를 다시 옮겼지만 지금 여기 있습니다. 여기에는 PID 루프를 작성하는 방법 (부동 소수점이 아닌 다른 방법으로 PID 루프를 수행하는 방법을 설명하는 방법)과 조정 방법이 모두 나와 있습니다.
가장 좋은 방법은 당신의 능력에 많이 의존한다. 숙련 된 제어 시스템 사용자 인 경우 최적의 튜닝 을 얻는 방법 은 플랜트의 응답 ( "식물"== "제어중인 것")을 측정하는 것입니다. 측정은 플랜트의 모델을 추출하여 설계하거나 측정에 직접 설계합니다.
어려운 특정 공장에서는 만족스러운 측정을 할 수 없다는 것을 알게 될 것입니다.이 경우 모델 만 사용하면됩니다. 그것들은 드물지만 일할 때 만족합니다.
Sebastian Thrun은 "로봇 자동차 프로그래밍 방법"클래스에서 PID 튜닝을위한 간단한 알고리즘을 제시했습니다. "트위들"이라고하며 여기에 설명되어 있습니다 .
트위들 (Twiddle)은 극소값을 찾는 경향이 있습니다. 즉 , 상황에 맞지 않지만 최적 의 3 가지 상수를 만들 수 있습니다. PID 상수 조정 문제는 유틸리티를 최대화하기 위해 특정 매개 변수를 찾는 일반적인 검색 문제의 하위 세트입니다 (이 경우 PID 알고리즘의 오류 최소화). 이 문제에 대한 다른 일반적인 솔루션 (예 : 언덕 등반, 시뮬레이션 어닐링, 유전자 알고리즘 등)을 통해보다 최적의 솔루션을 찾을 수 있습니다.
다른 두 가지 대답과 달리 PID를 조정하는 좋은 수동 방법은 Kd를 무시하는 것이라고 말합니다. 따라서 0에서 시작하여 목표에 도달 할 때까지 Kp를 늘리고 Ki를 증가시켜 정상 상태 오류를 제거하십시오.
Kd는 노이즈에 잘 반응하지 않아 문제를 혼동시킬 수 있습니다. 그러면 아날로그 입력에 필터를 추가하기 시작한 다음 제어 속도를 늦추는 것 외에 다른 것이 무엇인지 질문하고 모든 것을 해결하기가 더 어려워집니다.
나를 혼란스럽게하는 또 다른 것은 PID 방정식이 표준 형식이거나 독립 (wikipedia의 병렬) 형식인지 여부입니다. Ki의 효과는 형식이 생각한 것과 다른 방식 일 때 역으로 보입니다. 두 유형 모두 자동화에 사용되며 때로는 전환 옵션이 있습니다.
시스템 모델링
물론 다른 답변에서 언급 한 것처럼 실험 튜닝을 수행 할 수 있지만 제어하려는 모든 것에 대해 합리적인 동적 모델을 정의 하고 매개 변수 를 식별 할 수 있다면 잘 기반으로 컨트롤러를 설계 할 수 있어야합니다 오버 슈트 , 상승 시간 , 정착 시간 , 정상 상태 오류 등과 같은 정의 된 기준 .
MATLAB 에는 컨트롤러를 조정하여 이러한 기준의 조합에 맞게 최적화 할 수있는 툴 도 있어 사용하기가 더 좋습니다.
컨트롤러 알기
PID 컨트롤러의 각 파라미터가 무엇을하는지 배우는 것도 도움이됩니다. 모든 실험 알고리즘은 어떻게 든 이런 종류의 지식을 기반으로합니다. 지침을 따를뿐만 아니라 그 느낌을 스스로 얻을 수 있다면 컨트롤러를 수동으로 조정하는 것이 더 쉬울 수 있습니다.
실제 문제
컨트롤러를 튜닝 할 때 와인딩 , 부적절한 샘플링 속도 , 채도 등 이러한 것들 중 하나가 길을 잃을 가능성이 있습니다 .
결론
결국, 시스템 작동 방법 및 실험 종류에 대한 지식을 얻기 위해 실제로 시스템으로 무엇을 할 수 있는지에 달려 있습니다. 가장 좋은 점은 PID 컨트롤러와 제어 이론에 대해 더 많이 배우는 것입니다. 일반적으로 IMO이지만 편견이 있습니다. :)
관심이있는 사람들을 위해 내 경험에서 조금 확장하려고 노력할 것입니다. 문제는 우리가 다소 접근하기 어려운 (때로는 유용하지 않은) 많은 제어 이론을 가지고 있고 종종 부정확 한 시스템에 대한 가정 규칙을 가지고 있다고 생각합니다.
안정
제어 루프가 불안정 해지는 이유에 대해 먼저 이야기 해 봅시다. 이 토론에서는 선형 시스템을 가정하겠습니다. 비공식적으로 이것은 제어 신호가 주어진 주파수에서 사인파 인 경우 관측 된 출력이 동일한 주파수에 있고 제어 시스템의 진폭을 변경하면 출력이 동일한 비율로 응답한다는 것을 의미합니다. 이 가정은 많은 실제 시스템에 대한 근사치이며 서로 다른 주파수를 개별적으로 볼 수 있습니다.
제어 경로를 보면 설정 점, PID 컨트롤러, 시스템 (일명 "Plant") 및 센서가 있습니다. 센서에서 고정 설정 점과 사인파를 상상해보십시오 (이것은 센서의 실제 교란과 동일합니다). 불안정한 시스템에서 피드백은 시간이 증가함에 따라 진폭이 증가하도록 제어 루프가 오류를 감소시키는 대신 오류를 증폭시킵니다. 이것이 일어나는 이유는 지연 또는이 특정 주파수에 대해 입력과 출력 사이의 위상 편이 때문입니다. 주어진 주파수에서 출력의 개방 루프 (즉, 피드백 없음) 시프트 및 진폭을 볼 수 있으며 그래프에 모든 것을 그릴 때 Bode Plot 과 같은 것을 얻을 수 있습니다. 이 개방 루프 그래프에서 오류가 계속 증폭되는 상황이 발생하면 시스템이 불안정 해집니다. 지연이 파장의 1/2보다 작거나 게인이 x1보다 작 으면 시스템은 안정적 입니다. 실제로 우리는 그 시점에서 약간의 마진 (이득 마진과 위상 마진)을 원하기 때문에 많은 수동 / 휴리스틱 방법에서이 "후진"을 보게됩니다.
이러한 수동 방법의 주요 문제점은 맹인으로 비행하며 제어 시스템이 제대로 작동하지 않는다는 것입니다.
또한 P, I 및 D의 의미는 센서가 측정하는 것과 적용하는 제어와 관련이 있습니다. 가정용 컨트롤러의 일반적인 실수는 사람들이 실제로 그렇지 않을 때 P를 적용한다고 생각하는 것입니다. 모터 컨트롤러에는 종종 위치 루프가 있으며, 토크 루프에서 실행되는 속도 루프에서 실행됩니다. (A 캐스케이드 )
그래, 이것이 어떻게 우리에게 도움이 되나요?
첫 번째 요점은 자신의 PID 컨트롤러를 구축하는 경우 개방 루프 응답을 측정하는 방법도 빌드해야한다는 것입니다. 컨트롤러의 입력에서 주파수 스윕을 수행하고 피드백이 분리 된 상태에서 센서의 출력을 측정하십시오. 그런 다음 개방형 루프 보드 플롯을 그리고 시스템이 안정적인 이유를 보고 다양한 컨트롤과 균형을 맞출 수 있습니다. 폐쇄 루프 응답을 측정하는 것도 유용하며 루프가 닫힌 상태에서 설정 점의 주파수 스위프를 수행하여 모든 시스템에서이를 수행 할 수 있습니다. 둘 다 그렇게 어렵지는 않으며 많은 이론적 지식이 필요하지 않습니다.
후드 아래에서 무슨 일이 일어나고 있는지 이해하지 않고 단순히 컨트롤을 조정하는 경우 시스템을 최적화 할 수 없습니다. 이러한 시스템에 대한 직관을 구축하는 것은 그리 어렵지 않습니다. 예를 들어 비례 게인은 위상에 영향을 미치지 않지만 모든 주파수에서 개방 루프 게인을 증가시킵니다. 모든 수동 튜닝 방법에서 비례 게인을 증가시킬 때하고있는 일은 위상이 -180이되는 주파수를 찾는 것입니다. 다양한 컨트롤이 주파수 응답에 미치는 영향에 대한 자세한 내용을 보려면 이것을 참조하십시오 .
폐쇄 루프 성능을 극대화하려면 컨트롤러 게인뿐만 아니라 시스템을 조정해야합니다. 당신이 원하는 것은 시스템을 가능한 한 뻣뻣한 것으로 만드는 것입니다. 이를 통해 제어 파라미터를 증가시키고 최상의 개방 및 폐쇄 루프 대역폭을 얻을 수 있습니다. 모터 제어 어플리케이션에서의 경험에서 비례 이득은 대부분의 "작업"과 적분기의 "휴식"을 수행해야하는 것입니다. 나는 당신이 D 용어가 전혀 필요하지 않다고 생각합니다. 저역 통과 필터와 노치 필터를 사용하면 기계적 공진이있을 수 있지만 보드 플롯없이 설정하는 것이 매우 어려운 상황에서 많은 도움이됩니다 (폐쇄 루프에서 관찰하는 발진 주파수는 개방 루프와 다를 수 있음).
안전이 우려되는 경우 (매우 강력한 모터 또는 모터가 제어 할 수없는 시스템으로 인해 파괴 될 수있는 시스템) 시스템을 보호하기 위해 튜닝을 시작하기 전에 약간의 제한을 설정해야합니다 (예 : 전류 제한, 최대 위치 오류). 그런 다음 매개 변수 범위에 대한 느낌을 얻어야합니다. 피드백에 회 전당 40 카운트 또는 회 전당 4000 카운트가있는 경우 매개 변수는 주어진 시스템에 대해 100 배가됩니다. 내 접근 방식은 먼저 제어력이 좋지 않은 범위를 찾은 다음 P부터 시작하여 그다음부터 올라갑니다. (나는 다시 장님입니다.) 백 오프하면이 안정성 마진이 생성됩니다.
폐쇄 루프 너머
닫힌 루프는 시스템에서 오류를 제거하려고 시도합니다. 항상 다소 제한된 성능을 갖습니다. 당신이하고 싶은 일은 폐쇄 루프 컨트롤러가 보는 오류를 최소화하는 것입니다. 그 방법 중 하나는 피드 포워드 라는 기술을 사용하는 것 입니다. 피드 포워드에서는 컨트롤러를 둘러보고 시스템에 직접 명령을 내립니다. 그 예로 가속 피드 포워드가 있습니다. 모터의 토크 상수를 알고 있고 부하를 알고 있다면 부하의 특정 가속을 얻기 위해 얼마나 많은 전류를 구동해야하는지 알 수 있습니다. 명령 입력 가속을 상수에 곱하여 컨트롤러의 드라이브 명령에 추가하면됩니다. 기본적으로 컨트롤러가없는 경우 시스템을 구동하는 데 필요한 작업을 수행하고 있으며 루프에 걸리는 오류가 적을수록 시스템 성능이 향상됩니다. 실제로는 큰 차이가 있습니다.
Ziegler-Nichols 는 쉬운 수동 방법입니다. 보다 강력한 방법도 존재합니다. 일반적으로 수학적 솔루션 (분석, 반복 최적화 등)에 의존합니다.
그 외에도 일부 자동화 기술에 대한 Google "자체 조정 PID". 내가 가장 좋아하는 것은 신경망을 PID 튜닝에 적용하는 것입니다.
0.01sec
을위한) 시간 20secs
A와 3
X의 2000
행렬)Ziegler–Nichols 라는 더 빠른 접근 방식이 있습니다 .