안녕하세요.
이전시간에 피드백 제어기 설계에 대해서 원론적인 이야기를 하였습니다.
그리고 피드백 제어기 중 하나인
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를 개선해야 하는지에 대해서 글을 써보도록 하겠습니다.
'Embedded SW > Control Theory' 카테고리의 다른 글
PI 제어기 설계 (PI Controller DC Motor Design) (0) | 2022.10.01 |
---|---|
P controller 정상오차 분석 정리 (DC모터 P 제어기 Steady State Error 분석) (0) | 2022.10.01 |
Feedback Controller 설계 방법 정리 (ex DC모터 제어, P Controller) (0) | 2022.09.26 |
DC모터 모델링 관련 매트랩 코드 정리 및 DC모터 Simulink 시뮬레이션 결과 비교 (0) | 2022.09.24 |
DAQ? Data Acquisition? DC모터 전달함수의 K와 Tau 값을 계산, 확인하는 방법 정리 (0) | 2022.09.24 |
댓글