강의자료 · 제어공학1

Control Engineering 1 · Week 05 · 상태를 선택해 행렬 모델 만들기

본인 사본에서 코드와 작성란을 직접 수정하세요. 이름: ⟦직접 입력⟧ / 학번: ⟦직접 입력⟧

실행 방법

Live Editor에서 코드 안을 클릭하고 Run Section으로 현재 Section을 실행하세요(Windows/Linux Ctrl+Enter, Mac ⌘+Enter). Run은 문서 전체를 실행합니다. 설명·작성란은 직접 편집하세요.
처음에는 위에서부터 실행하고, 값을 바꾼 Section은 다시 실행하세요. 변수가 없다는 오류가 나면 앞 Section부터 실행하세요. 출력은 코드 아래 또는 오른쪽에 표시됩니다.
환경: MATLAB Online과 Control System Toolbox.

1. State Equation 유도

아래 계산을 먼저 수행한 뒤 MATLAB 결과와 비교하세요.
  • R, L, C가 같은 두 Node 사이에 병렬로 연결된 회로입니다. 아래 Node를 기준 전위로 두고, 위 Node의 전압을 v, 위에서 아래로 흐르는 인덕터 전류를 iLi_L, 공급 전류를 u로 정하세요.
  • R=1,L=1,C=1R=1,\ L=1,\ C=1에서 KCL과 v=LdiLdtv=L\frac{di_L}{dt}를 이용해 𝒙=[v,iL]T\mathbf x=[v,i_L]^T의 두 Differential Equation과 출력 y=vy=v를 직접 쓰고 A,B,C,DA,B,C,D를 구하세요.
  • Initial Condition을 0으로 놓고 두 식을 Laplace Transform하세요. Inductor 관계식에서 IL(s)I_L(s)를 V(s)V(s)로 나타낸 뒤 KCL 식에 대입하세요. V(s)V(s)가 포함된 항을 모아 V(s)U(s)\frac{V(s)}{U(s)}를 구하세요.
  • 일정 전류 1 A를 충분히 오래 공급하면 v와 iLi_L이 각각 얼마가 되는지 먼저 적으세요.
  • 직접 구한 행렬로 ss 모델을 만들고 tf·dcgain으로 검증하세요.
  • 이 병렬 회로는 아래 RL 직렬 가지 회로와 구성이 다릅니다.
  • 이번에는 RL 회로의 R 반복 세 값 중 한 값을 이 비교로 대신하세요.
코드 실행 전 — 손으로 계산한 식과 값: ⟦여기에 계산을 적으세요⟧ 코드 실행 후 — 비교할 MATLAB 출력값: ⟦출력값을 적으세요⟧

2. Mechanical State Space

기준 모델을 함수 없이 매번 새로 만듭니다.
실행 전 예상: ⟦직접 입력⟧
M=1;b=2;k=5;
A=[0 1;-k/M -b/M];B=[0;1/M];Cout=[1 0];D=0;
sys=ss(A,B,Cout,D);disp(size(A));disp(tf(sys));
figure;step(sys,10);grid on;
assert(abs(dcgain(sys)-1/k)<1e-10);
직접 수행:
  1. 기계 모델의 M=1M=1, k=5k=5는 유지하고 b∈{0.5,2,10}b\in\{0.5,2,10\}에서 A와 sys를 다시 만드세요. Position의 Step Response 세 개를 같은 시간축에 그리고 범례에 b를 적으세요.
  2. 각 곡선의 진동 유무와 수렴하는 양상을 대조하세요. 어떤 b의 곡선을 근거로 판단했는지 적으세요.
  3. 같은 State 순서에서 출력만 Linear Velocity로 선택하세요. 사용한 Cout과 dcgain(sys)를 Position 출력일 때의 값과 나란히 기록하세요.
% ✍ 직접 작성: 아래에 본인 코드를 추가하세요.
바꾼 조건: ⟦직접 입력⟧
실제 결과: ⟦직접 입력⟧
예상과 차이 및 원인: ⟦직접 입력⟧

3. Electrical State Space

전류원 입력, 커패시터 병렬의 RL 가지, 저항 전압 Output입니다.
실행 전 예상: ⟦직접 입력⟧
R=3;L=1;Ccap=.5;
A=[0 -1/Ccap;1/L -R/L];B=[1/Ccap;0];Cout=[0 R];D=0;
sys=ss(A,B,Cout,D);
figure;step(sys,15);grid on;
assert(abs(dcgain(sys)-R)<1e-10);
직접 수행:
이 회로의 State는 x=[vCiL]𝖳x=\left[\begin{array}{cc}v_C&i_L\end{array}\right]^{\mathsf T}입니다. vCv_C는 커패시터 전압 [V], iLi_L은 RL 직렬 가지의 전류 [A]입니다.
  1. 기준 회로의 다른 계수는 유지하고 R∈{1,3,10}R\in\{1,3,10\}에서 A, Cout, sys를 다시 만드세요.
  2. 입력 1 A에 대한 최종 출력 전압을 dcgain(sys)로 구하고, R과 전압을 두 열로 기록하세요.
  3. Ccap은 Capacitance, Cout은 출력 행렬임을 적으세요. State의 순서와 Cout을 사용해 출력식 y=Coutxy=C_{\mathrm{out}}x를 쓰고, 원하는 저항 전압을 나타내는지 판단하세요.
% ✍ 직접 작성: 아래에 본인 코드를 추가하세요.
바꾼 조건: ⟦직접 입력⟧
실제 결과: ⟦직접 입력⟧
예상과 차이 및 원인: ⟦직접 입력⟧

4. State 좌표와 초기값

위치와 속도에 초기값을 주면 입력 없이도 응답합니다.
실행 전 예상: ⟦직접 입력⟧
sys=ss([0 1;-5 -2],[0;1],[1 0],0);
figure;initial(sys,[1;0],0:.01:10);grid on;
직접 수행:
  1. 기준 모델과 같은 시간축에서 initial(sys,[0;1],0:0.01:10)와 initial(sys,[1;0],0:0.01:10)를 그리세요. 두 곡선의 범례에 Initial State를 적으세요.
  2. 어느 State가 0이 아닌 값에서 시작하는지와 외부 입력 유무를 적으세요. Initial State가 0인 Step Response와 Initial State에 의한 출력을 구별해 설명하세요.
% ✍ 직접 작성: 아래에 본인 코드를 추가하세요.
바꾼 조건: ⟦직접 입력⟧
실제 결과: ⟦직접 입력⟧
예상과 차이 및 원인: ⟦직접 입력⟧

반복 숙달과 제출 전 확인

앞의 직접 수행에서 비교한 조건 세 가지를 아래에 정리하세요. 이미 수행한 실험을 추가로 반복할 필요는 없습니다. 예상은 정확한 수치 대신 증가·감소 방향으로 적어도 됩니다.
반복 1 — 조건: ⟦직접 입력⟧ / 예상: ⟦직접 입력⟧ / 실제: ⟦직접 입력⟧
반복 2 — 조건: ⟦직접 입력⟧ / 예상: ⟦직접 입력⟧ / 실제: ⟦직접 입력⟧
반복 3 — 조건: ⟦직접 입력⟧ / 예상: ⟦직접 입력⟧ / 실제: ⟦직접 입력⟧
선택:
예: 출력으로 선택할 State를 잘못 지정한 경우
  1. 기계 모델의 A,B,D는 유지하세요. Position이 필요한데 Cout=[0 1]을 썼을 때와 Cout=[1 0]일 때의 Transfer Function을 기록하세요.
  2. State의 순서와 각 출력의 단위를 적으세요. Position을 출력하도록 Cout 한 줄만 수정하고 모델을 다시 만드세요.
코드, 실제 Output·그래프, 직접 작성한 해석을 포함하세요. 제출은 KLAS를 이용하며 기한은 학기 일정과 최신 공지를 확인합니다.
파일명: 이름_학번_5주차.mlx.