목차
◎전달함수 미분방정식 나타내기
1. 계루프
2. 폐루프
◎ 예제문제풀이
1. 계루프
2. 폐루프
◎ 예제문제풀이
본문내용
◎전달함수 미분방정식 나타내기
1. 계루프
단위스텝응답
분 자 : num=[1]
분 모 : den=[M B K]
단위스텝응답 : step(num,den)
ex)
den=[1kg 10N 20N/m]
num=[1]
step(num,den)
<수렴하는 그래프>
2. 폐루프
[cnum,cden]=cloop(num,den,-1) : -1은 부궤환
step(cnum,cden)
*1로 올려주는 보상기(제어기)
G(s)앞에 적분기(Capacitor) 달면 오차 줄여줌
numc=[1], denc=[1 0]
numg=[1], deng=[1 10 20]
C(s)*G(s)=numcg=conv(numc,numg)
dencg=conv(denc,deng)
ex)
>> numc=[1];
>> denc=[1 0];
>> numg=[1];
>> deng=[1 10 20];
>> numcg=conv(numc,numg);
>> dencg=conv(denc,deng);
>> [cnum,cden]=cloop(numcg,dencg,-1);
>> step(cnum,cden)
<1로 수렴>
◎ 예제문제풀이
>> den = [1 2 20];
>> num=[3];
>> step(num, den)
>> num=[3];
>> den=[1 3 5];
>> step(num,den,'--k')
>> hold on
>> num=[20];
>> den=[1 5 20];
>> step(num,den,':r')
>> num={[3] [1]};
>> den={[1 2 10] [1 5]};
>> step(num,den)
>> a=[0 1;-2 -5];
>> b=[0;2];
>> c=[0 1];
>> d=[0];
>> sys=ss(a,b,c,d);
>> tf(sys)
Transfer function:
2 s
-------------
s^2 + 5 s + 2
>> den=[1 5 2];
>> num=[2];
>> step(num,den)
>> den=[1 5 10];
>> num=[2];
>> t=[0:0.2:5];
>> step(num,den)
>> den=[1 1 3];
>> num=[1 1];
>> impulse(num,den,'ro')
>> den=[2 2 3];
>> num=[1 5];
>> t=[0:0.02:10];
>> impulse(num,den,t)
>> den={[1 2 10] [1 5];[1 2 25] [1 2 25]};
>> num={[3] [1];[1 3] [1]};
>> M=tf(num,den)
Transfer function from input 1 to output...
3
#1: --------------
s^2 + 2 s + 10
s + 3
#2: --------------
s^2 + 2 s + 25
Transfer function from input 2 to output...
1
#1: -----
s + 5
1
#2: --------------
s^2 + 2 s + 25
>> impulse(M)
>> a=[-0.5572 -0.7814;0.7814 0];
>> b=[1 -1;0 2];
>> c=[1.9691 6.4493];
>> d=[0];
>> sys=ss(a,b,c,d);
>> tf(sys)
Transfer function from input 1 to output:
1.969 s + 5.039
-----------------------
s^2 + 0.5572 s + 0.6106
Transfer function from input 2 to output:
10.93 s - 0.9297
-----------------------
s^2 + 0.5572 s + 0.6106
>> impulse(sys)
예제10) PID 제어하기
numc=[2 2 8];
denc=[1 0];
numg=[1 2];
deng=[1 3 4];
numcg=conv(numc,numg);
dencg=conv(denc,deng);
[cnum,cden]=cloop(numcg,dencg,-1);
step(cnum,cden)
예제11) 이고, 일 때 T(s)를 구하여라.
numc=[1];
denc=[1 1 0 0];
numg=[1 2 2 1];
deng=[1 0];
numcg=conv(numc,numg);
dencg=conv(denc,deng);
[cnum,cden]=cloop(numcg,dencg,-1);
printsys(cnum,cden);
step(cnum,cden)
num/den =
s^3 + 2 s^2 + 2 s + 1
-----------------------------
s^4 + 2 s^3 + 2 s^2 + 2 s + 1
예제12)이고, 전달함수 , 일 때 전달함수 T(s)를 구하여라.
numc=[1];
denc=[1 1 0 0];
numg=[1 2 2 1];
deng=[1 0];
numh=[1];
denh=[1 2];
numcg=conv(numc,numg);
dencg=conv(denc,deng);
[cnum,cden]=feedback(numcg,dencg,numh,denh,-1);
printsys(cnum,cden);
step(cnum,cden)
num/den =
s^4 + 4 s^3 + 6 s^2 + 5 s + 2
-------------------------------------
s^5 + 4 s^4 + 6 s^3 + 6 s^2 + 5 s + 2
1. 계루프
단위스텝응답
분 자 : num=[1]
분 모 : den=[M B K]
단위스텝응답 : step(num,den)
ex)
den=[1kg 10N 20N/m]
num=[1]
step(num,den)
<수렴하는 그래프>
2. 폐루프
[cnum,cden]=cloop(num,den,-1) : -1은 부궤환
step(cnum,cden)
*1로 올려주는 보상기(제어기)
G(s)앞에 적분기(Capacitor) 달면 오차 줄여줌
numc=[1], denc=[1 0]
numg=[1], deng=[1 10 20]
C(s)*G(s)=numcg=conv(numc,numg)
dencg=conv(denc,deng)
ex)
>> numc=[1];
>> denc=[1 0];
>> numg=[1];
>> deng=[1 10 20];
>> numcg=conv(numc,numg);
>> dencg=conv(denc,deng);
>> [cnum,cden]=cloop(numcg,dencg,-1);
>> step(cnum,cden)
<1로 수렴>
◎ 예제문제풀이
>> den = [1 2 20];
>> num=[3];
>> step(num, den)
>> num=[3];
>> den=[1 3 5];
>> step(num,den,'--k')
>> hold on
>> num=[20];
>> den=[1 5 20];
>> step(num,den,':r')
>> num={[3] [1]};
>> den={[1 2 10] [1 5]};
>> step(num,den)
>> a=[0 1;-2 -5];
>> b=[0;2];
>> c=[0 1];
>> d=[0];
>> sys=ss(a,b,c,d);
>> tf(sys)
Transfer function:
2 s
-------------
s^2 + 5 s + 2
>> den=[1 5 2];
>> num=[2];
>> step(num,den)
>> den=[1 5 10];
>> num=[2];
>> t=[0:0.2:5];
>> step(num,den)
>> den=[1 1 3];
>> num=[1 1];
>> impulse(num,den,'ro')
>> den=[2 2 3];
>> num=[1 5];
>> t=[0:0.02:10];
>> impulse(num,den,t)
>> den={[1 2 10] [1 5];[1 2 25] [1 2 25]};
>> num={[3] [1];[1 3] [1]};
>> M=tf(num,den)
Transfer function from input 1 to output...
3
#1: --------------
s^2 + 2 s + 10
s + 3
#2: --------------
s^2 + 2 s + 25
Transfer function from input 2 to output...
1
#1: -----
s + 5
1
#2: --------------
s^2 + 2 s + 25
>> impulse(M)
>> a=[-0.5572 -0.7814;0.7814 0];
>> b=[1 -1;0 2];
>> c=[1.9691 6.4493];
>> d=[0];
>> sys=ss(a,b,c,d);
>> tf(sys)
Transfer function from input 1 to output:
1.969 s + 5.039
-----------------------
s^2 + 0.5572 s + 0.6106
Transfer function from input 2 to output:
10.93 s - 0.9297
-----------------------
s^2 + 0.5572 s + 0.6106
>> impulse(sys)
예제10) PID 제어하기
numc=[2 2 8];
denc=[1 0];
numg=[1 2];
deng=[1 3 4];
numcg=conv(numc,numg);
dencg=conv(denc,deng);
[cnum,cden]=cloop(numcg,dencg,-1);
step(cnum,cden)
예제11) 이고, 일 때 T(s)를 구하여라.
numc=[1];
denc=[1 1 0 0];
numg=[1 2 2 1];
deng=[1 0];
numcg=conv(numc,numg);
dencg=conv(denc,deng);
[cnum,cden]=cloop(numcg,dencg,-1);
printsys(cnum,cden);
step(cnum,cden)
num/den =
s^3 + 2 s^2 + 2 s + 1
-----------------------------
s^4 + 2 s^3 + 2 s^2 + 2 s + 1
예제12)이고, 전달함수 , 일 때 전달함수 T(s)를 구하여라.
numc=[1];
denc=[1 1 0 0];
numg=[1 2 2 1];
deng=[1 0];
numh=[1];
denh=[1 2];
numcg=conv(numc,numg);
dencg=conv(denc,deng);
[cnum,cden]=feedback(numcg,dencg,numh,denh,-1);
printsys(cnum,cden);
step(cnum,cden)
num/den =
s^4 + 4 s^3 + 6 s^2 + 5 s + 2
-------------------------------------
s^5 + 4 s^4 + 6 s^3 + 6 s^2 + 5 s + 2