DC Motor의 Disturbance Rejection

제어공학1 · 10주차

실행: MathWorks 로그인 후 내 작업 공간의 .mlx를 엽니다. 코드 안 클릭 → Live Editor → Run Section으로 한 Section씩 실행하세요. Run은 전체 실행입니다. 값 수정 후에는 관련 Section을 다시 실행해야 합니다. ⟦직접 입력⟧ 작성란은 설명을 직접 수정하며 실행하지 않습니다. Windows/Linux는 Ctrl+Enter, Mac은 ⌘+Enter를 사용할 수 있습니다.

기호와 운동 방향 정하기

Disturbance Torque Td의 양의 방향을 회전 방향으로 정합니다. Ra는 Armature Resistance, Km은 Torque Constant, Kb는 Back-EMF Constant, J는 Inertia, b는 Viscous Friction입니다. Kt는 Angular Velocity를 전압으로 변환하는 Tachometer Gain, KaK_a는 Amplifier Gain입니다. Reference Angular Velocity Deviation은 0으로 두고 Disturbance만 가합니다.

1. 어느 입력에 대한 Transfer Function인가?

이번 실습은 Reference Tracking이 아니라 Disturbance Torque Td가 Angular Velocity Deviation ω에 미치는 영향입니다. 문제에서 주어진 Disturbance 방향을 양의 방향으로 두고 해석합니다.

어느 입력에 대한 Transfer Function인가?

Load Torque를 반대 방향으로 정의하면 부호가 달라집니다. 편차 크기를 비교할 때는 절댓값을 쓰고, 블록선도의 Disturbance 합산 위치를 먼저 확인합니다.

모터 분모가 만들어지는 과정

Armature Inductance를 생략하면 Ra·i = va − Kb·ω입니다. Torque Balance은 J·ω′ + b·ω = Km·i + Td입니다. 기준 모델에서 전압 변화 va=0을 대입하면 J·ω′ + (b+KmKb/Ra)·ω = Td가 됩니다.

Angular Velocity가 증가했을 때 전압을 줄이는 Feedback은 va=−KaKt·ω입니다. 이를 같은 식에 대입하면 추가 항 (Km/Ra)KaKt가 분모에 들어갑니다. 그래서 이 단순화 모델에서는 같은 Disturbance에 대한 Angular Velocity Deviation이 줄어듭니다.

2. Open-loop Disturbance Model

Armature Inductance를 무시한 모델에서 ΩTd=1Js+b+KmKb/Ra\frac\Omega{T_d}=\frac1{Js+b+K_mK_b/R_a}입니다. 일정한 Disturbance D를 가한 뒤의 Steady-State Angular Velocity Deviation은 Db+KmKb/Ra\frac D{b+K_mK_b/R_a}입니다. 따라서 분모에서 s가 붙지 않은 항이 커질수록 같은 Disturbance에 대한 최종 편차가 작아집니다.

Open-loop Disturbance Model

Armature Voltage가 일정할 때 가해지는 Disturbance를 다룹니다. Armature Inductance는 무시합니다.

3. Tachometer Feedback을 추가하기

Tachometer Gain KtK_t와 Amplifier Gain KaK_a를 적용하면 분모는 Js+b+(Km/Ra)(KtKa+Kb)Js+b+(K_m/R_a)(K_tK_a+K_b)가 됩니다.

안정한 모델에서 Gd(0)G_d(0)는 일정한 Unit Disturbance에 대한 출력의 정상상태 값입니다. 입력 크기가 DD이면 ωss=DGd(0)\omega_{ss}=D\,G_d(0)입니다. MATLAB의 dcgain(Gd)는 이 Gd(0)G_d(0)를 계산합니다.

Tachometer Feedback을 추가하기

dcgain은 Transfer Function의 정적 Gain입니다. 실제 입력이 D=0.2라면 dcgain 자체를 Steady-State Value로 보고하지 말고 D를 곱해야 합니다.

4. 이론과 수치 결과 대조

Ra=1,Km=Kb=0.1,J=0.01,b=0.001,Kt=0.05,D=0.2 조건을 사용합니다. Open-loop·Closed-loop를 같은 시간축에서 그리고 목표 편차 0.5rad/s 이하가 되는 KaK_a를 찾습니다.

이론과 수치 결과 대조

자동 시간축의 마지막 값만 비교하면 아직 수렴하지 않은 값을 Steady State라고 착각할 수 있습니다. dcgain과 충분한 관측 시간을 함께 사용하세요.

학습 내용 확인

  1. 코드에 넣을 값은 무엇이며, 결과 배열의 각 행·열은 무엇을 뜻하나요? 물리량을 계산한다면 단위도 확인했나요?
  2. 조건을 하나 바꿨을 때 다시 실행해야 하는 부분을 찾을 수 있나요?
  3. 실행 결과가 예상과 맞나요? 다르다면 출력값이나 그래프를 보고 이유를 설명할 수 있나요?

MATLAB 공식 문서 · Control System Toolbox

실습 자료