본문 바로가기

Software/MATLAB

PID 제어기 튜닝? MATLAB으로 간단히 하자 !!!

사실 PID제어기 설계법을 배워도 치밀한 계산에 의해 적용하기는 참 힘들때가 있습니다. MATLAB에서는 PID 제어기 블럭이 강력한 튜닝(Tunning)기능을 가지고 있는데요. 이것을 이용하면 제어기 튜닝이 정말 간편합니다.

위의 블럭을 Simulink에서 꾸며보죠. 분모의 근이 1,5라서 불안정한 시스템입니다. 실행해서 결과를 보면

이렇게 발산해버리시거든요^^

시뮬링크 라이브러리에 Continuous 폴더에 보시면 PID Controller가 있습니다. 이걸 가져다가

이렇게 붙여보도록 하죠.

그 PID 블럭을 더블클릭해서 보면, PID, PI, PD, P, D, I 제어기중 하나를 선택할 수 있는곳과 연속시간인지 이산시간인지 선택할 수 있도록 되어있습니다. 또한

PID Advanced탭에서는 출력 제한을 걸수 있도록 지원하며 Anti-windup까지 지원하고 있습니다.

Look under mask 기능으로 PID 블럭 내부를 보면, 위와 같이 전형적인 PID 제어기의 모습을 하고 있네요. Help에 등록되어있는 수식은

입니다.

오늘 할려고 하는 본론인 Tune... 버튼 보이시죠???

그럼 저런 창이 하나 뜹니다. 그 창 위쪽 오른편에 있는 Show Parameters 까지 누르면

현설정에 따른 PIDN 수치가 나타납니다. 아래 표시된 응답시간을 조절해서 응답형태를 눈으로 바로바로 확인하면서 게인을 맞춰볼 수 있습니다. 또 젤 위쪽에 Basic을 누르시면

확장메뉴를 지원하는데요. Bandwidth와 Phase Margin을 슬라이드바로 조절할 수도 있습니다.

혹은 위에 표시된 곳을 눌러서 Open-loop bode plot, 혹은 니콜스챠트를 눈으로 보면서 튜닝이 가능합니다.

적절한 곳에서 OK를 하시면, 저렇게 PID 게인을 입력하는 곳에 튜닝된 게인으로 업데이트되어있음을 확인할 수 있습니다.

뭐 당연하겠지만, 시뮬레이션 결과입니다.^^

반응형