Transcript Document

제어설계기법 실습 #10
Time Response of Digital
Control System
-1-
제어공학기초
설계실습
실험실습 #10 안내서




실험실습 번호 : #10
실험실습 일시 : 2011.
담당교수 :
담당조교 :
,
.
.
1. 목적 : Digital Control System의 시간영역에서의 해
석법에대하여 익힘
2. 제목 : Time Response of Digital Control System
3. 실습에 필요한 기초지식 : 슬라이드 유인물 참조
4. 실습절차 : 슬라이드 유인물 참조
-2-
제어공학기초
설계실습
Matlab 제어공학 실습
다음과 같은 전달함수를 갖는 이산 시간 시스템을 생각해
보자.
( z  3)
G (z) 
( z  1)( z  2)
시간 응답을 구하는 방법은 여러 가지가 있다.
1) 직접 전달함수를 state-space 모델로 바꿔서 A,B,C,D,
파라미터를 이용하여 for 문을 작성하는 방법
2) dimpulse 혹은 dstep 명령어를 이용하여 시간 응답을
구하는 방법
3) MATLAB에서 제공하는 simulink 를 이용하여 가상의
시스템을 만들고, 샘플링 주기를 넣어 시뮬레이션으로
구하는 방법
-3-
제어공학기초
설계실습
방법 (1) : state-space 모델 이용
앞 페이지에서 제시한 전달함수에 대해
num=[0 1 3];
den=[1 3 2];
[A,B,C,D]=dtf2ss(num,den);
을 사용하여, state-space로 바꾼다.
MATLAB 버전에 따라 다소 차이가 있지만, 리턴된 A
matrix는 Controllable Canonical form으로 표현된다.
-4-
제어공학기초
설계실습
방법 (1) : state-space 모델 이용
dtf2ss를 사용하여 아래와 같은 이산 방정식을 얻을 수
있다.
3  2 
1 
x ( k  1)  
 1
 x(k )    u (k )
0 
0 
y ( k )  [1 3] x ( k )
MATLAB Program
[A,B,C,D]=dtf2ss(num,den);
xo=[0; 0];
u=1;
% 입력이 step-input 이라고 가정함.
for k = 1:50,
x(:,k)=A*xo+ B*u;
y (k)= C*xo;
xo=x(:,k);
end;
 앞의 결과를 plot 해보면, 발산함을 알 수 있는데, 이것은 A 행렬의
eigenvalue가 1보다 큰 값을 가지므로 불안정시스템이기 때문이다.
-5-
제어공학기초
설계실습
방법 (2) : ‘dstep’ 명령어를 이용
시간 응답을 구하는 두 번째 방법으로는 ‘dstep’ 명령어를
이용하는 방법이다.
num=[0 1 3];
den=[1 3 2];
Y=dstep(num,den,100);
-6-
제어공학기초
설계실습
방법 (3) : Simulink를 이용
주어진 전달함수를 dtf2ss를 이용하여 아래와 같은 stateequation을 구했다고 하면,
3
x ( k  1)  
 1
2 
 x(k ) 
0 
1 
  u (k )
0 
y ( k )  [1 3] x ( k )
MATLAB에서 제공하는 Simulink 프로그램을 이용하여
상태공간 방정식에 따라 가상의 시뮬레이션 환경을
만든다.
만드는 방법(함수 이용)은 다소 차이가 있으며, 다음
페이지에서 보여주는 것은 한 예이다.
-7-
제어공학기초
설계실습
방법 (3) : Simulink를 이용
Simulink 파일 작성 예
주의할 점은 To Wokspace 부분에서 Array 형태로
지정해야 한다.
또는 state-space equation을 이용해서 아래와 같이
작성해도 된다.
-8-
제어공학기초
설계실습
실습:Time Response for Discrete System
실습 # 1:
아래와 같은 상태 공간 방정식에 대해
1 0

x ( k  1)  
 x(k ) 
0
0
.5


2
  u (k )
1 
y ( k )  [1 2 ] x ( k )
x (0 )  1
2
T
w ith u ( k )  1 fo r all k
앞 페이지에서 소개한 방법 (1) 을 이용하여,
출력 y(k)를 구하고, plot 하시오.
0  k  50
실습 # 2:
앞 페이지에서 소개한 방법 (2)를 이용하여, 0  k
출력 y(k)를 구하고, plot 하시오.
-9-
범위의
 50 범위의
제어공학기초
설계실습
실습:Time Response for Discrete System
실습 # 3:
앞 페이지에서 소개한 방법 (3) Simulink를 이용하여,
0  k  50 범위의 출력 y(k)를 구하고, plot 하시오.
(Simulink 파일은 전달함수 혹은 상태공간 방정식 중 어느
하나를 사용해도 무방함.)
- 10 -
제어공학기초
설계실습
실습:Open-Loop Continuous-Time System
다음과 같은 전달함수를 갖는 연속 시간 시스템을 생각해
보자.
10
G p (s) 
s ( s  1)
 실습 # 1:
MATLAB Command 중에서 tf2ss를 사용하여, stateequation 으로 표현해보시오.
- 11 -
제어공학기초
설계실습
실습:Open-Loop Continuous-Time System
실습 # 1에서 구한, 상태방정식을 이용하여 Simulink
파일을 작성한다. Simulink 프로그램은 시뮬레이션에
필요한 system construction & analysis 의 기능을
갖고있다. MATLAB 프로그램에서 simulink를 타이핑한
후, 실행하면 된다.
- 12 -
제어공학기초
설계실습
실습:Open-Loop Continuous-Time System
 실습 # 2:
실습 # 1에서 구한 상태공간 방정식을 이용하여 simulink
파일을 작성하시오.
 실습 # 3:
실습 # 2에서 구한 simulink 파일을 이용하여, 입력이
unit-step function (u(t)=1, t≥0)일 때, 출력 y(t)를
구하시오.
- 13 -
제어공학기초
설계실습
실습:Open-Loop Discrete-Time System
연속 시간 시스템을 이산 시간 시스템으로 바꾸는 방법은
아래와 같다.

c
(t )  L
Ad  
Bd  [ 
c
1
{ [ s I  Ac ]
1
}
(T )
T
0

c
(T   ) d  ] B c
Cd  Cc ,
Dd  Dc
 실습 # 4:
윗 식을 이용하여 이산 시간 상태 방정식을 구하고, 해를
MATLAB command, ‘c2d’, ‘d2c’를 이용하여
확인하시오.
- 14 -
제어공학기초
설계실습
실습:Open-Loop Discrete-Time System
실습 #4에 대한 힌트:
(1) sys=tf(num,den);
sys_d=c2d(sys,0.1), 또는
(2) sys=ss(A,B,C,D);
sys_d=c2d(sys,0.1), 또는
(3) [Ad,Bd]=c2d(A,B,0.1)
이때 C, D matrix는 변함이 없다. 따라서
[nd,dd]=ss2tf(Ad,Bd,C,D) 로 변환해도 된다.
 실습 # 5:
실습 # 4에서 구한 이산 시간 상태 공간 방정식을
이용하여 Simulink파일을 작성하시오.
- 15 -
제어공학기초
설계실습
실습:Open-Loop Discrete-Time System
 실습 # 6:
실습 # 5에서 작성한 simulink 파일을 이용하여, 입력이
unit-step function (u(k)=1, k≥0)일 때, 출력 y(k)를
구하시오. 또한 실습 # 3의 결과와 비교하고, 차이를
설명하시오.
- 16 -
제어공학기초
설계실습
실습: Closed-Loop Continuous-Time System
이번 실습에서는 폐회로 구조를 갖는 연속/이산 시간
시스템 해석에 대해 알아본다.
Feedback 구조를 갖는 아래와 같은 Closed-loop 디지털
제어 시스템을 생각한다.
- 17 -
제어공학기초
설계실습
실습: Closed-Loop Continuous-Time System
이 시스템은 다시 아래의 그림과 같이 구현될 수 있다. 즉
A/D Converter는 T 초의 샘플링 주기를 갖는 스위치로,
Digital Controller는 D(z), D/A Converter는 Z.O.H. 로
각각 바뀔 수 있다.
이 때 전달 함수를 구하면 아래와 같다.
C (z)
R(z)
- 18 -

D ( z )G ( z )
1  D ( z )G H ( z )
제어공학기초
설계실습
실습: Closed-Loop Continuous-Time System
 실습 # 1:
전달 함수가
C (z)

R(z)
D ( z )G ( z )
1  D ( z )G H ( z )
이 됨을 증명하시오.
다음과 같은 plant에 대해 G(z)를 구해보면,
G p (s) 
10
s ( s  1)
with T=0.1 sec.
num=[0 0 10];
den=[1 1 0];
[A,B,C,D]=tf2ss(num,den);
[DA,DB]=c2d(A,B,0.1);
[numG,denG]=ss2tf(DA,DB,C,D);
- 19 -
제어공학기초
설계실습
실습: Closed-Loop Continuous-Time System
따라서, G(z)에 관한 식은 아래와 같이 구해질 것이다.
G (z) 
0.0484 z  0.0468
z  1.9050 z  0.9050
2
다음으로 디지털 필터에 관한 식 D(z)를 아래와 같이
가정하자.
D(z) 
0.9 z  0.8
z  0.9
 실습 # 2:
앞 페이지에서 구한 전달함수 식을 따라 Closed-loop에
대한 전달함수를 구하시오.
C (z)
R(z)
- 20 -

D ( z )G ( z )
1  D ( z )G ( z )
제어공학기초
설계실습
실습: Closed-Loop Continuous-Time System
 실습 # 3:
실습 # 2의 결과를 이용하여, 입력이 unit-step
function일 때 출력을 구하시오.
(hint: Matlab Command, ‘dstep’ 이용)
- 21 -
제어공학기초
설계실습
실습: Closed-Loop System Analysis
이번 실습에서는 MATLAB Command, ‘feedback’을
이용하여 보다 간단하게 폐회로 시스템에 대해 여러 시간
응답을 구하는 방법에 대해 알아본다.
Feedback 구조를 갖는 아래와 같은 Closed-loop 디지털
제어 시스템을 생각한다.
- 22 -
제어공학기초
설계실습
실습: Closed-Loop System Analysis
이 시스템은 다시 아래의 그림과 같이 구현될 수 있다. 즉
A/D Converter는 T 초의 샘플링 주기를 갖는 스위치로,
Digital Controller는 D(z), D/A Converter는 Z.O.H. 로
각각 바뀔 수 있다.
이 때 전달 함수를 구하면 아래와 같다.
C (z)
R(z)
- 23 -

D ( z )G ( z )
1  D ( z )G H ( z )
제어공학기초
설계실습
실습: Closed-Loop System Analysis
먼저 plant를 아래와 같이 주어졌다고 가정하면,
G p (s) 
10
s ( s  1)
T=1;
numC=[0 0 1]; denC=[1 1 0];
sysC=tf(numC,denC);
와 같이 Continuous-time system에 대해 system 구현이 가능하다.
 다음으로 G p ( s ) 를 샘플링 주기, T를 이용하여 discrete-time system,
G ( z ) 으로 바꾼다.
sysG=c2d(sysC,T);
- 24 -
제어공학기초
설계실습
실습: Closed-Loop System Analysis
MATLAB 명령어, tfdata를 이용하여 앞에서 구한 sysG를
다시 전달함수 (numG, denG)로 분해한다. 즉,
[numG,denG,T]=tfdata(sysG);
 실습 # 1:
설계실습 #5 에서 ss2tf를 이용하여 구한
결과(numG,denG)과 비교하여 보시오. 만약, 결과가
다르다면 그 이유를 설명하시오.
Closed-loop에 대한 시스템 해석은 MATLAB 명령어
feedback을 이용하여 보다 쉽게 해석할 수 있다.
- 25 -
제어공학기초
설계실습
실습: Closed-Loop System Analysis
예를 들어 feedback gain을 H(s)=1로 가정하고, 디지털
필터에 관한 식을
D(z) 
0.9 z  0.8
z  0.9
로 가정하자. 즉,
numD=[0.9 -0.8]; denD=[1 -0.9];
numG=[0.0484 0.0468]; denG=[1 -1.9050 0.9050];
sys1=tf(numD,denD) * tf(numG,denG);
sysCL=feedback(sys1,1);
dstep(sysCL);
여기서 sys1은 D(z)*G(z)를 의미하며, sysCL은 closedloop를 의미한다.
- 26 -
제어공학기초
설계실습
실습: Closed-Loop System Analysis
 실습 # 2:
sysCL을 tfdata를 이용하여 전체 전달함수로 다시 분해한
후, 전달함수 식
C (z)
R(z)

D ( z )G ( z )
1  D ( z )G ( z )
으로 구한 결과와 비교하시오.
 실습 # 3:
입력이 impulse-function일 때, impulse response를
구하시오. (Hint: Matlab command, ‘impulse’를 이용할
것.)
- 27 -
제어공학기초
설계실습