10주차 · DC Motor의 Disturbance Rejection

실습 전에

01 외부 영향이 있는 상황

DC Motor의 Angular Velocity를 일정하게 유지하려는데 외부에서 힘이 가해집니다. 목표값이 바뀌지 않아도 제어가 필요한 이유는 무엇일까요?

설명
  • Disturbance Torque가 출력 ω에 미치는 영향
  • 목표 추종 성능과 Disturbance 억제 성능을 구분

02 외부 영향에 대응하기

외부에서 가해지는 힘 자체를 없앨 수 없다면, Angular Velocity Deviation을 줄이기 위해 무엇을 할 수 있을까요?

설명
  • Angular Velocity 측정에 따른 Feedback으로 조작 조정
  • Disturbance 자체의 제거와 Output에 미치는 영향의 감소를 구분

실습

1. 모델 유도와 Gain 계산

  • TdT_d (input): Disturbance Torque.
  • ω\omega (output): 운전점에서의 Angular Velocity Deviation [rad/s].
  • VaV_a: Armature Voltage 변화.
  • ii: Armature Current 변화.
  • 모델 가정: Armature Inductance 무시.
기호뜻값
RaR_aArmature Resistance1
KmK_mTorque Constant0.1
KbK_bBack EMF Constant0.1
JJMoment of Inertia0.01
bbViscous Friction Coefficient0.001
KtK_tTachometer Gain0.05

모터 식:

  • Va=−KaKtωV_a=-K_aK_t\omega
  • i=Va−KbωRai=\frac{V_a-K_b\omega}{R_a}
  • Jdωdt+bω=Kmi+TdJ\frac{d\omega}{dt}+b\omega=K_mi+T_d
  1. VaV_a의 식을 전류 ii의 식에 대입하세요. 이어서 구한 ii의 식을 운동방정식에 대입하고, ω\omega와 TdT_d 사이의 미분방정식으로 정리하세요.
  2. Initial Condition을 0으로 놓고 이 미분방정식을 Laplace Transform하세요. Ω(s)\Omega(s)가 포함된 항을 한쪽으로 모은 뒤 Ω(s)Td(s)\frac{\Omega(s)}{T_d(s)}를 구하세요.
  3. 직접 구한 Transfer Function의 분자·분모를 차수가 높은 항부터 계수 배열로 각각 기록하세요.

구할 값: 허용조건을 만족하는 최소 Amplifier Gain.

  • 일정한 Disturbance: Td=D=0.2T_d=D=0.2.
  • Steady State 허용조건: |ωss|≤0.5|\omega_{ss}|\le0.5 rad/s.
  • Amplifier Gain 범위: Ka≥0K_a\ge0.
  • 모터 계수: 위 표의 값.
  1. 앞에서 구한 미분방정식에 Td=DT_d=D, dωdt=0\frac{d\omega}{dt}=0, ω=ωss\omega=\omega_{ss}를 대입하세요. ωss\omega_{ss}에 곱해진 계수로 양변을 나누어, ωss\omega_{ss}를 KaK_a의 함수로 나타내세요.
  2. 그 식을 허용조건 |ωss|≤ωlimit|\omega_{ss}|\le\omega_{\mathrm{limit}}에 대입하세요. D=0.2D=0.2, ωlimit=0.5\omega_{\mathrm{limit}}=0.5와 표의 모터 계수를 넣고, 조건을 만족하는 KaK_a의 범위를 구하세요.
  3. 구한 범위에서 가장 작은 값을 Ka,minK_{a,\min}으로 기록하세요. 결과에는 ωss\omega_{ss}의 식, 수치를 대입한 부등식, KaK_a의 허용 범위와 최소값이 보이게 적으세요. 이후 MATLAB 계산과 비교할 때 이 기록을 사용합니다.

2. Open-loop Disturbance Step Response

‘Open-loop Disturbance Step Response’ 코드에 정의된 Gd=tf(1,[J b+Km*Kb/Ra])를 사용하세요. Ra,Km,Kb,J,b는 그 코드에 정의된 값을 유지합니다.

조건DD
10.1
20.2
30.3
  1. 각 조건의 ωss=D⋅dcgain⁡(Gd)\omega_{ss}=D\cdot\operatorname{dcgain}(G_d) [rad/s]를 계산하세요.
  2. 한 표에 다음 세 열을 기록하세요.
    • DD
    • ωss\omega_{ss} [rad/s]
    • ωss/D\omega_{ss}/D
  3. 세 행의 ωss/D\omega_{ss}/D를 대조하세요. 비율이 일정한지와, 그 결과가 DD와 ωss\omega_{ss}의 비례 관계를 어떻게 보여 주는지 적으세요.

3. Tachometer Feedback에 따른 Disturbance Rejection

‘Tachometer Feedback에 따른 Disturbance Rejection’ 코드의 Ra,Km,Kb,J,b,Kt와 D=0.2D=0.2는 그대로 두고, KaK_a만 바꿉니다.

조건KaK_a
110
220
340
  1. 각 KaK_a에서 Gc를 다시 만들고 dcgain(Gc)를 구하세요.
  2. 각 DC Gain에 DD를 곱해 ωss\omega_{ss} [rad/s]를 구하세요.
  3. KaK_a, DC Gain, ωss\omega_{ss}를 세 열로 기록하세요.
  4. 활동 1에서 기호로 유도한 계수 배열과 이 활동의 코드에 적힌 계수식을 대조하세요.
    1. Gc를 정의하는 tf 호출의 첫 번째·두 번째 인수를 찾아, 분자·분모 계수 배열로 각각 적으세요.
    2. 각 표현의 분모 최고차항 계수가 1이 되도록, 분자와 분모 전체를 그 계수로 함께 나누세요.
    3. ‘분자/분모’를 두 행으로, ‘직접 유도한 배열/코드의 배열/일치 여부’를 세 열로 기록하세요. 같은 차수의 계수끼리 비교하고, 다른 항이 있으면 표시하세요.

4. Amplifier Gain 설계

직전 활동에서 사용한 D=0.2D=0.2와 모터 계수는 유지합니다. 아래 두 허용값을 각각 적용하세요.

  1. 먼저 손계산에 사용한 D=0.2D=0.2, limit=0.5로 최소 Gain을 계산하세요. ‘Amplifier Gain 설계’ 코드의 Ka_min은 Ka,minK_{a,\min}을 계산한 값입니다. 이 출력과 활동 1에서 손으로 구한 값을 나란히 기록하세요.
  2. 조건limit [rad/s]
    10.25
    21
    각 limit에서 최소 KaK_a를 계산하세요. 계산 결과 Ka,minK_{a,\min}은 코드의 Ka_min에 해당하며, 소수 Gain을 허용합니다.
  3. 구한 최소값보다 조금 작은 KaK_a와 큰 KaK_a를 하나씩 고르세요. 예: 0.9Ka,min0.9K_{a,\min}, 1.1Ka,min1.1K_{a,\min}.
  4. 각 Gain을 Feedback 모델 Gc에 넣어 모델을 다시 만들고, ωss=D⋅dcgain⁡(Gc)\omega_{ss}=D\cdot\operatorname{dcgain}(G_c)를 구하세요.
  5. 조건별 계산 결과를 한 표에 남기세요.
    허용값 [rad/s]
    limit
    계산한 최소 Gain
    Ka,minK_{a,\min}
    모델에 적용한 Gain
    KaK_a
    정상상태 Angular Velocity Deviation [rad/s]
    ωss\omega_{ss}
    허용값 충족 여부
    |ωss|≤limit|\omega_{ss}|\le\mathrm{limit}의 참/거짓
  6. 최소값보다 작은 Gain과 큰 Gain에서 허용값 충족 여부가 어떻게 달라지는지 적으세요. 계산한 최소값이 두 경우를 나누는 경계인지 이 표로 판단합니다.

제출·저장

코드, 실제 Output·그래프, 직접 작성한 해석을 포함하세요. 제출은 KLAS를 이용하며 기한은 학기 일정과 최신 공지를 확인합니다.

파일명: 이름_학번_10주차.mlx.

실행 환경을 다시 시작하고 전체 코드를 위에서부터 실행한 뒤 저장하세요.

선택 실습

예: 마지막 시뮬레이션 표본을 정상상태 값으로 판단한 경우

  1. 모터 계수 Ra,Km,Kb,J,b,Kt는 앞 활동의 값을 유지하세요. Ka=20, D=0.2를 지정하고 Gc=tf(1,[J b+Km/Ra*(Kt*Ka+Kb)])를 만든 뒤, step(D*Gc,0:0.005:0.05)의 마지막 값을 구하세요.
  2. 그 값을 D*dcgain(Gc)와 나란히 적고 차이를 구하세요. 0.05 s에서 충분히 수렴했다고 볼 수 있는지 판단하세요.
  3. 같은 Gc에 대해 종료 시간을 0.05 s에서 8 s로 늘리고, 시간 간격은 0.005 s로 유지하세요. [y_long,t_long]=step(D*Gc,0:0.005:8)을 실행한 뒤, y_long(end)와 D*dcgain(Gc)의 차이를 구하세요. 앞서 구한 0.05 s의 차이와 대조하세요.