제가 풀려는 문제는 위에 PID 컨트롤러의 타우(T) 값에 따른 근궤적을 보고

이에 대한 시스템의 반응을 확인하는 문제입니다.

 

그래서 위의 식의 전달함수는 (PIDG*시스템의G) / 1+(PIDG*시스템의G)

가 되잖아요.

 

여기서 분자는 시스템의 안정성에 영향을 안주니,

분모만 판단을 해야 되서

 

1+(PIDG*시스템의G)

만 추려내서,



 

위의 식이 나왔습니다.

그리고 근궤적의 경우는 1+KP=0 의 방식으로 나타내야 하기 때문에

T K로 두었습니다.

 

그리고 매트랩으로 들어가 이를 적었습니다.

 

clear; clc;

hold off

num1 = [0.01 0.41 5.1 0]; den1 = [5]

sys = tf(num1,den1)

 

pzmap(sys)

rlocus(sys)

 

전달함수의 분자로서 아까 구해준 P의 함수에 대한 계수를 넣고 전달함수의 근궤적을 그려보았습니다.

 

이렇게 근궤적은 멀쩡히 잘 나오는데요.

 

 

여기서 이득이 0.25, K 0.25일때는 오버슈트가 0이 나온다고 해서,

이에 대한 시스템의 반응을 보고 싶어서,

clear; clc;

K=0.25 % 근이 실수축에 위치할 때

num1 = [0.3*K 5*K 5]; den1 = [K 0];

num2 = [1]; den2 = [0.01 0.11 0.1];

 

sys_pid = tf(num1,den1);

sys_car = tf(num2, den2);

 

closed_loop = feedback(sys_pid*sys_car,1)

t=[0:0.01:2];

y=step(closed_loop,t);

plot(t,y);

ylabel('response');xlabel('time step');

grid

 

위와 같이 시스템에 맞게 매트랩 코드를 짜주고,

이득 0.25, 즉 오버슈트가 나타나지 않을 때의 게인을 넣어주고,

이에 대한 반응을 지켜봤는데,

오버슈트가 나오네요.....

word-spacing:0px">  word-spacing:0px">매트랩 코드를 몇번을 봤는데 틀린것도 없는데 이렇게 나오니 너무 당황스럽더라구요 ㅜㅜㅠㅠㅠ. word-spacing:0px">  word-spacing:0px">제가 이해한 시스템제어 개념이 잘못된 것인지 하고 되게 자책감들고... word-spacing:0px">  word-spacing:0px">혹시 아시는 분 있으면 설명해주실 수 있을까요? word-spacing:0px">ㅠㅠㅠㅠ부탁드립니다...