280 likes | 691 Views
제어설계기법 실습 #10. Time Response of Digital Control System. 실험실습 #10 안내서. 실험실습 번호 : #10 실험실습 일시 : 2011. . . 담당교수 : 담당조교 : , . 목적 : Digital Control System 의 시간영역에서의 해석법 에대하여 익힘 제목 : Time Response of Digital Control System 실습에 필요한 기초지식 : 슬라이드 유인물 참조
E N D
제어설계기법 실습 #10 Time Response of Digital Control System
실험실습 #10 안내서 • 실험실습 번호 : #10 • 실험실습 일시: 2011. . . • 담당교수 : • 담당조교 : , 목적 : Digital Control System의시간영역에서의 해석법에대하여익힘 제목 : Time Response of Digital Control System 실습에 필요한 기초지식 : 슬라이드 유인물 참조 실습절차 : 슬라이드 유인물 참조
Matlab제어공학 실습 • 다음과 같은 전달함수를 갖는 이산 시간 시스템을 생각해 보자. • 시간응답을 구하는 방법은 여러 가지가 있다. 1) 직접 전달함수를 state-space 모델로 바꿔서 A,B,C,D, 파라미터를 이용하여 for 문을작성하는 방법 2) dimpulse 혹은 dstep 명령어를 이용하여 시간 응답을 구하는 방법 3) MATLAB에서 제공하는 simulink 를 이용하여 가상의 시스템을 만들고, 샘플링 주기를 넣어 시뮬레이션으로 구하는 방법
방법 (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으로 표현된다.
방법 (1) : state-space 모델 이용 • dtf2ss를 사용하여 아래와같은 이산 방정식을 얻을 수 있다. • MATLABProgram [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보다 큰 값을 가지므로 불안정시스템이기 때문이다.
방법 (2) : ‘dstep’ 명령어를이용 • 시간 응답을 구하는 두 번째 방법으로는 ‘dstep’ 명령어를 이용하는 방법이다. num=[0 1 3]; den=[1 3 2]; Y=dstep(num,den,100);
방법 (3) : Simulink를 이용 • 주어진 전달함수를 dtf2ss를 이용하여 아래와 같은 state-equation을구했다고 하면, • MATLAB에서 제공하는 Simulink 프로그램을 이용하여 상태공간 방정식에 따라 가상의 시뮬레이션 환경을 만든다. • 만드는 방법(함수 이용)은 다소 차이가 있으며, 다음 페이지에서 보여주는 것은 한 예이다.
방법 (3) : Simulink를 이용 • Simulink 파일 작성 예 • 주의할 점은 To Wokspace 부분에서 Array 형태로 지정해야 한다. • 또는 state-space equation을 이용해서 아래와 같이 작성해도 된다.
실습:Time Response for Discrete System • 실습 # 1: 아래와 같은 상태 공간 방정식에 대해 앞페이지에서 소개한 방법 (1) 을 이용하여, 범위의 출력 y(k)를구하고, plot 하시오. • 실습 # 2: 앞 페이지에서 소개한 방법 (2)를 이용하여, 범위의 출력 y(k)를구하고, plot 하시오.
실습:Time Response for Discrete System • 실습 # 3: 앞 페이지에서 소개한 방법 (3) Simulink를 이용하여, 범위의 출력 y(k)를구하고, plot 하시오.(Simulink 파일은 전달함수혹은 상태공간 방정식 중 어느 하나를 사용해도 무방함.)
실습:Open-Loop Continuous-Time System • 다음과 같은 전달함수를 갖는 연속 시간 시스템을 생각해 보자. • 실습 # 1: MATLAB Command 중에서 tf2ss를 사용하여, state-equation 으로 표현해보시오.
실습:Open-Loop Continuous-Time System • 실습 # 1에서 구한, 상태방정식을 이용하여 Simulink 파일을 작성한다. Simulink 프로그램은 시뮬레이션에 필요한 system construction & analysis 의 기능을 갖고있다. MATLAB 프로그램에서 simulink를 타이핑한 후, 실행하면 된다.
실습:Open-Loop Continuous-Time System • 실습 # 2: 실습 # 1에서 구한 상태공간 방정식을 이용하여 simulink 파일을 작성하시오. • 실습 # 3: 실습 # 2에서 구한 simulink 파일을 이용하여, 입력이 unit-step function (u(t)=1, t≥0)일 때, 출력 y(t)를구하시오.
실습:Open-Loop Discrete-Time System • 연속 시간 시스템을 이산 시간 시스템으로 바꾸는 방법은 아래와 같다. • 실습 # 4: 윗 식을 이용하여 이산 시간 상태 방정식을 구하고, 해를 MATLAB command, ‘c2d’, ‘d2c’를이용하여 확인하시오.
실습: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파일을 작성하시오.
실습:Open-Loop Discrete-Time System • 실습 # 6: 실습 # 5에서 작성한 simulink 파일을 이용하여, 입력이 unit-step function (u(k)=1, k≥0)일 때, 출력 y(k)를구하시오. 또한실습 # 3의 결과와 비교하고, 차이를 설명하시오.
실습: Closed-Loop Continuous-Time System • 이번 실습에서는 폐회로 구조를 갖는 연속/이산 시간 시스템 해석에 대해 알아본다. • Feedback 구조를갖는 아래와 같은 Closed-loop 디지털제어 시스템을 생각한다.
실습: Closed-Loop Continuous-Time System • 이 시스템은 다시 아래의 그림과 같이 구현될 수 있다. 즉 A/D Converter는 T 초의 샘플링 주기를 갖는 스위치로, Digital Controller는 D(z), D/A Converter는 Z.O.H. 로 각각 바뀔 수 있다. • 이 때 전달 함수를 구하면 아래와 같다.
실습: Closed-Loop Continuous-Time System • 실습 # 1: 전달 함수가 이 됨을 증명하시오. • 다음과 같은 plant에 대해 G(z)를 구해보면, 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);
실습: Closed-Loop Continuous-Time System • 따라서, G(z)에 관한 식은 아래와 같이 구해질 것이다. • 다음으로 디지털 필터에 관한 식 D(z)를 아래와 같이 가정하자. • 실습 # 2: 앞페이지에서 구한 전달함수 식을 따라 Closed-loop에대한 전달함수를 구하시오.
실습: Closed-Loop Continuous-Time System • 실습 # 3: 실습 # 2의 결과를 이용하여, 입력이 unit-step function일때 출력을 구하시오. (hint: MatlabCommand, ‘dstep’ 이용)
실습: Closed-Loop System Analysis • 이번 실습에서는 MATLAB Command, ‘feedback’을이용하여 보다 간단하게 폐회로 시스템에 대해 여러 시간 응답을 구하는 방법에 대해 알아본다. • Feedback 구조를갖는 아래와 같은 Closed-loop 디지털제어 시스템을 생각한다.
실습: Closed-Loop System Analysis • 이 시스템은 다시 아래의 그림과 같이 구현될 수 있다. 즉 A/D Converter는 T 초의 샘플링 주기를 갖는 스위치로, Digital Controller는 D(z), D/A Converter는 Z.O.H. 로 각각 바뀔 수 있다. • 이 때 전달 함수를 구하면 아래와 같다.
실습: Closed-Loop System Analysis • 먼저 plant를 아래와 같이 주어졌다고 가정하면, T=1; numC=[0 0 1]; denC=[1 1 0]; sysC=tf(numC,denC); 와같이 Continuous-time system에대해 system 구현이가능하다. • 다음으로 를샘플링 주기, T를 이용하여 discrete-time system, 으로 바꾼다. sysG=c2d(sysC,T);
실습: Closed-Loop System Analysis • MATLAB 명령어, tfdata를이용하여앞에서 구한 sysG를 다시 전달함수 (numG, denG)로 분해한다. 즉, [numG,denG,T]=tfdata(sysG); • 실습 # 1: 설계실습 #5 에서 ss2tf를 이용하여 구한 결과(numG,denG)과 비교하여보시오. 만약, 결과가 다르다면 그 이유를 설명하시오. • Closed-loop에대한 시스템 해석은 MATLAB 명령어 feedback을이용하여 보다 쉽게 해석할 수 있다.
실습: Closed-Loop System Analysis • 예를 들어 feedback gain을 H(s)=1로 가정하고, 디지털 필터에 관한 식을 로 가정하자. 즉, 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은 closed-loop를 의미한다.
실습: Closed-Loop System Analysis • 실습 # 2: sysCL을 tfdata를 이용하여 전체 전달함수로 다시 분해한 후, 전달함수 식 으로 구한 결과와 비교하시오. • 실습 # 3: 입력이 impulse-function일때, impulse response를 구하시오. (Hint: Matlab command, ‘impulse’를이용할 것.)