본문 바로가기
Embedded SW/Control Theory

Pole이란 무엇이고, 1차 전달함수에서 Pole에 위치에 따른 응답특성은?

by 방구석 임베디드 2022. 9. 26.
반응형

안녕하세요.

이전시간에 피드백 제어기 설계에 대해서 원론적인 이야기를 하였습니다.

그리고 피드백 제어기 중 하나인

P Controller를 설계하였는데

그 과정에서 하나의 전달함수를 만드는 수식을 증명하였습니다.

그때 Pole(극점)이 왼쪽으로 이동하여

응답속도를 개선할수 있음을 이야기 하였습니다.

오늘은 극점의 이동이 응답속도에 어떠한 영향을 미치는지 알아보고

응답속도를 맞추어 P Contoller를 한번 설계해 보는 시간을 가지도록 하겠습니다.

 

참고로 이글은 연재되고 있는글로,

아래 글을 쭉 읽고 오시면 좋을 것 같습니다.

1) 제어란 무엇인가?

https://embeddedchallenge.tistory.com/475

2) 매트랩이란? 매트랩 학생용 다운로드 및 라이센스 받는 방법

https://embeddedchallenge.tistory.com/477

3) 매트랩 기초 연습 (행렬 연산, 데이터 나누기, 그래프 그리기)

https://embeddedchallenge.tistory.com/478

4) 지수함수, 모터 모델링, 전달함수, 시간함수 정리

https://embeddedchallenge.tistory.com/479

5) DC모터 모델링, 매트랩 전달함수 생성 후 그래프 확인

https://embeddedchallenge.tistory.com/480

6) Simulink를 이용한 전달함수 시뮬레이션 수행 방법 정리

https://embeddedchallenge.tistory.com/481

 

7) DAQ? Data Acquisition? DC모터 전달함수의 K와 Tau 값을 계산, 확인하는 방법 정리
https://embeddedchallenge.tistory.com/482

 

8) Feedback Controller 설계 방법 정리 (ex DC모터 제어, P Controller)
https://embeddedchallenge.tistory.com/484

 

그러면 글을 계속 이어나가도록 하겠습니다.

아래는 DC모터의 전달함수입니다.

그리고 -1/Tau는 Pole을 의미하고

Pole은 전달함수의 분모가 0이되는 s값을 찾은 것입니다.

Tau*s = -1

s = -1/Tau

여기에 P Controller를 추가하였고

하나의 전달함수를 만들었습니다.

만들어진 전달함수는 아래와 같이 생겼고

이것의 극점을 찾으면

Tau*s = -(KpK+1)

s - -(KpK+1)/Tau 가 되는 것을 확인 할 수 있습니다.

한번 예를 들어 보도록 하겠습니다.

G(s) DC모터 전달함수가 2개가 있다고 가정해 보도록 하겠습니다.

1/(s+1) 

1/(s+1/2)

 

 

그리고 U(s) = 1/s 이기 때문에 아래와 같은 그림이 그려지게 됩니다.

이것을 시간단위 함수로 변경해 보도록 하겠습니다.

먼저 극점이 

s = -1 인 경우와 s=-1/2 인경우 

시간단위 함수로 어떻게 나타나고 있는지 알아 보겠습니다.

1) s = -1 인경우

y = 1-e^(-t)

2) s = -1/2인 경우

y = 1-e^(-t/2)

이것을 예전에 그림을 그린적이 있는데 

확실히 exp 함수의 지수값의 절대값이 클수록 더 빨리 응답이 되는 것을 확인 할 수 있습니다.

보이시나요? 극점은 결국

exp의 기울기값을 나타내고 있다는 것을 볼 수 있습니다.

따라서 y = 1-e^(-t) 가 빨강색 그래프로 

더 기울기가 가파르다는 것을 알 수 있습니다.

결국 극점(pole)을 왼쪽으로 위치하도록 전달함수를 변화시킨다는 것은

시스템의 응답속도를 빠르게 설계한다는 의미로 해셕 할 수 있습니다.

 

정리하면

1/(s+1)
1/(s+1/2)
이때 pole은 -1, -1/2 인것을 볼 수 있습니다.
결국 Pole의 위치는 지수함수의 기울기를 나타내고 있음
Pole이 왼쪽으로 더 이동한다는 것은 지수함수의 기울기가 더 높아진다는 것을 의미!

그리고 하나만 더 알면 좋을 것 같습니다.

만일 Pole이 오른쪽 좌표로 이동하면 어떻게 될까요?

오른쪽으로 +1에 있다고 가정한다면 어떻게 응답을 하게 될까요?

보이시나요?

모터가 저렇게 동작한다는 것은

급발진을 한다는 것입니다.

발산하는 것이지요 ㅎㅎ

이것을 시간함수로 나타내면 어떻게 그려지게 될까요?

시간함수는 아래와 같이 만들어지게 됩니다.

y1 = 1+e^(t) 이 됩니다

이건 한번 증명을 해보세요 ㅎㅎ

clear;
close all;
clc;

%% Variable
t = 0.01 : 0.01 : 10;

%% Function
y1 = 1+exp(t);

%% Plot
fig1 = plot(t,y1);
hold on;
grid on;
set(fig1, 'color', 'r', 'linewidth', 1);

그림은 아래와 같습니다.

 

다시 돌아와서, P Contoller를 통해

응답성을 개선해 보도록 하겠습니다.

 

예전에 저는 rising time을 0.2 정도로 개선을 하고 싶다고 이야기 하였습니다.

따라서 

따라서 우리는 제어기를 설계할때, 

 따라서 pole = -2.2/rising_time

이라는 수식을 만들 수 있습니다.

-11*0.8687 = -44.3222*Kp -1

그러면 Kp는 대략적으로 0.2 정도의 값이 나오는 것을 볼 수 있습니다.

다시 설명을 드리면

Kp gain이 0.2로 설계를 할때

Rising Time이 0.2로 설계 될 수 있다는 것을 의미합니다.

그럼 한번 살펴 볼까요?

아래 그림에서 P Controller를 이용하고

Kp가 0.2였을때

응답속도가 개선이 되는 것을 볼 수 있습니다.

Rising Time이 0.2초내요!!

드디어 개선을 하였습니다.

 

그런데 보이시나요?

지금 이 제어기는 Steady State Error가 발생하고 있습니다.

다시 말해서 목표값을 수렴해 가지 못하는 문제가 발생하고 있습니다.

응답속도는 개선했지만

목표값 수렴은 실패 했네요.

이때 우리는 어떻게 해야 할까요?

다음 글에는

위의 P Controller를 어떻게 시뮬레이션 했는지

그리고 어떻게 Steady State Error를 개선해야 하는지에 대해서 글을 써보도록 하겠습니다.

반응형

댓글