MATLAB Motion & Power Control Laboratory System Dynamics 2012 Spring
INTRODUCTION 개요 Clever Moler 가 Fortran으로작성 Mathworks ( www.mathworks.com ) 에서 Release MATLAB은 Matrix Laboratory의약어 여러분야의 Toolbox( 일종의 Library) 를제공 MATLAB R. 13인 6.5 Version 기준으로설명 이용범위 수학과관련된계산 알고리즘개발 상황모델링과데이터분석 여러가지학문적그래픽표현 GUI를통한응용프로그램개발
화면의구성
M-File Editor/Debugger Macro file ( *.m ) Script Function
유용한명령들 help 특정명령에대한설명 Lookfor 검색어에관련된함수들과간략한설명 demo MATLAB 에서제공하는사용가능한데모를실행 who/whos 작업공간에대한정보
help/ who / whos
lookfor
데이터저장 save, load 기본적으로 *.mat 로저장
Expression Variable 해당이름을가지는 1 by 1 matrix 대소문자구분 수식의결과는자동적으로 ans라는변수에저장 Ex : num_student=25, A = 1, a = 2 Number IEEE floating point standard (long) 16개의유효숫자와함께 10-308 에서 10 +308 범위를가짐 i 혹은 j를통한허수표현 inf : 1/0과같은무한대 NaN : Not-a-Number, 무의미한수 ex) 0/0, inf-inf
Format Format 화면에표시되는자리수, 형식결정 화면상에표시되는수치형식만을결정! 가능한 format short short e short g long long e long g bank rat hex
Matrix 조작 입력 공백이나콤마 (,) 로원소구분 세미콜론 (;) 으로행구분 괄호를이용하여행렬표시 Transpose ( ) 붙임 Ex) A diag() main diagonal 을얻음 Ex) diag(a)
Matrix basic
첨자 ( Subscript ) () 와, 로표시, 첨자는 1 부터시작 Ex) A(2,1) : A 의 2 행 1 열의원소 : operator 시작 : 끝 Ex) 1:4 1 2 3 4 시작 : 증분 : 긑 Ex) 5:-2:1 5 3 1 행또는열전체 Ex) A(2,:) A의 2행 Ex) A(:,1) A의 1열 size, length 행렬의크기를보여줌
첨자가 1 부터시작하는데주의
Matrix 의확장 기존행렬이없던곳은 0 으로채워짐 빈행렬은 [] 로나타냄 Partitioned matrix 의형태도가능
행, 열의제거
Matrix 의연산 산술연산자 (. 산술연산자 ) : element to element 연산 관계연산자 논리연산자
산술연산자 Operator 기능 + 덧셈 - 뺄셈 * 곱셈 / 나눗셈 (A/B > A*B -1 ) \ 왼쪽나눗셈 (A\B > A -1 *B) ^ 거듭제곱 Complex conjugate transpose ( ) 계산순서
연산우선순위 우선순위연산 Matlab 의수식 1 괄호 ( ) 2 지수 & 3 곱하기, 나누기 *, / 4 더하기, 빼기 +, -
일반적인 matrix 곱셈 각 element 간의곱셈
x*inv(y) inv(x)*y
관계, 논리연산자 Operator 기능 < 작다 <= 작거나같다 > 크다 >= 크거나같다 == 같다 ~= 같지않다 Operator 기능 & and or ~ not
a=[1 2 3 4 5 6 7 8 9] b=[9 8 7 6 5 4 3 2 1]
Matrix 함수 eye 단위행렬 ex) eye(3) ones 1 로채워진행렬 ex) ones(3), ones(1,2) zeros 0 으로채워진행렬 ex) zeros(3), zeros(1,2) rand(randn) Uniform (Normal) random 값행렬 ex) rand(3), randn(2,4) det determinat ex) det(a) inv 역행렬 ex) inv(a) triu, tril 상삼각, 하삼각행렬 ex) triu(a), tril(a)
M-file MATLAB 명령들의집합 프로그램 Script mode 연속적인 MATLAB 명령들 Function mode 입출력매개변수이용, 파일명과함수명일치 Subfunction 사용가능 주석은 % 로단다 처음열은 lookfor 검색시출력 help 검색시함수정의부와 MATLAB 명령어사이의주석문출력
Flow 제어명령 if if, elseif, end switch switch, otherwise, end for while
기본함수 기본 그래프 : plot, axis, subplot, surface, figure, image,.. 명령어 : help, who, save, load,.. 통계함수 : sum, mean, sort, cov,.. 수학함수 : abs, sin, cos, tan, sqrt, acos, angle, exp, gcd, lcm, real, imag, log, log10,.. 기타유용한명령어 Diary file name(.out), diary on, diary off log 파일기록 linspace, logspace linear, log 공간생성 eval, feval 문자열실행, 함수실행 echo, disp, input
그림출력 plot (x values, y values, style-option ) 색 y (yellow) m (magenta) c (cyan) r (red) g (green) b (blue) w (white) k (black) 선종류 - (solid) -- (dashed) : (dotted) -. (dash-dot). (point) e (circle) x (x-mark) + (plus) * (star)
figure 새로운그림창생성 xlabel, ylabel x, y 축에이름달기 title 표제목달기 legend 범례달기 subplot 그림창분할 grid 격자표시 axis 표시영역설정 clf Clear figure hold on, hold off Hold current graph 그림출력
제어시스템해석 : Time domain (1) Transfer function tf : convert to transfer function n n 1 B( s) num b(1) s b(2) s n n 1 A( s) den a(1) s a(2) s num [ b(1) b(2) b( n) ] den [ b(1) b(2) b( n) ] b( n) a( n) sysg=tf(num, den) roots : find roots p=roots(den); z=roots(num); pole, zero : find pole, zero p=pole(sysg); z=zero(sysg); pzmap : plot pole, zero [p, z]=pzmap(sysg); residue : find partial fraction B( s) r(1) A( s) s p(1) r(2) s p(2) r( n) s p( n) k( s)
제어시스템해석 : Time domain (2) State space tf2ss : TF state space [A,B,C,D]=tf2ss(num,den) Y( s) U ( s) num den C(sI A) 1 B D x y Ax Bu Cx Du ss2tf : state space TF [num,den]=ss2ft(a,b,c,d)
제어시스템해석 : Time domain (3) Transient response step : step response step(num,den), step(sys) step(a,b,c,d) impulse : impulse response impulse(num,den), impulse(sys) Using step function Ramp input response Using step function s s R s s C s G 1 ) ( ) ( ) ( ) ( ) ( ) ( s R s s C s G s s s R s C s G 1 ) ( ) ( ) ( s s R s C s G ) ( ) ( ) (
C( s) R( s) s 2 25 4s 25 step impulse ramp
제어시스템해석 : Time domain (4) Loop 의전달함수 conv : 두식의곱 sys = conv([2 3 7], [3 4 5 1]) series : 직렬연결, open loop의전달함수 [num3,den3]=series(num1, den1,num2,den2) G 1 (s) G 2 (s) G(s) feedback : closed loop 의전달함수 [num3,den3]=feedback(num1, den1,num2,den2) + - G 1 (s) G 2 (s) G(s)
제어시스템해석 : Time domain (5) PI control K I r K p + 1 y + s - (s+1)(s+6)
제어시스템해석 : Frequency domain (1) Root Locus R(s) KG(s) C(s) R(s) KG( s) C(s) 1 KG( s) H ( s) H(s) 1 KG( s) H( s) K 값의변화에따른 pole 의위치변화 Stable 한 K 값을구할수있음 rlocus rlocus(sys); rlocus(sys,k); rlocfind rlocfind(sys);
C( s) R( s) ( s 1) s( s 2)( s 2 4)
제어시스템해석 : Frequency domain (2) Bode plot bode [mag,phase,w] =bode(sys) [mag,phase]=bode(sys,w) C( s) R( s) s 2 25 4s 25
제어시스템해석 : Frequency domain (3) Nyquist diagram Cauchy 의복소수함수이론에근거 System 의안정조건판단 Z (# of RHP closed pole) = P (# of RHP open-loop pole) N (-1 을반시계방향으로감싸는횟수 ) s-plane 의 Right Half plane 의 contour 를따라움직이는 s 값에대한 G(s)H(s) 를 plot [re,im,w] = nyquist(sys) [re,im] = nyquist(sys,w) 1 G( s) H( s) GH-plane Im -1 Re
제어시스템해석 : Frequency domain (4) Nichols chart Nyquist plot 에서 Closed loop 전달함수의 Constant M (mag), Constant N (phase) circle 을 db 단위로 Constant M Constant N
G( s) H ( s) 5 ( s 1)( s 2)( s 3)
SIMULINK System Dynamics 2012 Spring
SIMULINK What is SIMULINK? Dynamic system 의모델링, 시뮬레이션, 해석을하기위한 software package Block diagram 으로모델을생성시킬수있는 GUI 환경을제공 각모델을 part 별로설계하여계층적인모델링가능 모델링후 command 창이나메뉴를통해 simulation 을바로실행, 결과는 scope 나 display block 를통해확인가능 Advantage Dynamic system을해석하기위한미분방정식을내부적으로풀어줌 미분방정식의해를직접구하지않고 system의해석이가능 별도의 Program 지식이필요없음
MATLAB 실행후 SIMULINK 의실행 SIMULINK 아이콘을누른다 command 창에서 simlink + ENTER
Library Browser Continuous Derivative, Integrator, State-Space, Transfer Fcn, Delay Discontinuities Backlash, Dead zone, Hit Crossing, Quantizer, Saturation Discrete Discrete TF, Discrete Filter, Discrete State-Space, Unit Delay Math Operations Abs, Product, Gain, Logical Operator, Sign, Sum Ports & Subsystems In, Out, Subsystem, If, Switch Case, Enable Signal Routing Bus, Mux, Demux, From, Goto Sinks Display, Scope, Stop Simulation, To File, To Workspace, XY Graph Sources White Noise, Clock, From File, From Workspace, Pulse Generator, Ramp User-Defined Functions
Library Browser
사용방법 (1) Toolbar 의 New button 을누르거나메뉴의 new 를실행한다. 원하는 Subsystem 을 Drag & Drop 한다. Ctrl + 왼쪽 : Block Copy 각각의객체는 Edit 하거나지울수있다. 더블클릭 : Edit, 주석넣기 메뉴를이용혹은오른쪽클릭후메뉴선택 Line 을그린다. Auto connect : Ctrl 키를누르고 block 들을클릭 Manual connection : Output 에서왼쪽버튼으로 Drag & Drop Branch line : Ctrl 키를이용 or 오른쪽버튼 Vertex line : Shift 키를이용 line branch vertex
사용방법 (2) Subsystem의 parameter를설정 Simulation의 parameter를설정 Solver type, simulation time Simulation 시작 결과분석 Subsystem parameter Simulation parameter
Example
Subsystem 만드는법 Sink 의 In 과 Source 의 out 을이용 기존의모델에서 block 지정후 Edit 메뉴 (or 오른쪽클릭 ) Create subsystem 선택
Select blocks Right Click