홈으로 돌아가기

PID 컨트롤러: P I D 부분 모델링

이 기사는 히터와 기계 시스템의 FDTD 시뮬레이션을 통해 PID 컨트롤러 모델링을 시연합니다. P, I, D 구성 요소의 효과를 Mathematica 코드 예제로 분석합니다. 정적 오류 제거와 응답 최적화에 대해 논의합니다.

PID 작동 원리: 코드와 그래프를 사용한 시뮬레이션
Advertisement 728x90

PID 컨트롤러 모델링: 비례 기초에서 완전한 피드백 루프까지

PID 컨트롤러는 오차 e(t) = 목표값 - 측정값을 기반으로 제어 신호를 생성합니다. 가장 단순한 형태에서는 비례 성분 u(t) = K_p * e(t)가 편차를 보정합니다. 예를 들어, 물 수위 조절 시, e(t) > 0이면 밸브가 오차에 비례해 열리지만, 최대 유량까지만 제한됩니다.

실제 시스템은 지연 현상을 보입니다. 히터의 경우 열은 확산 방정식 ∂w/∂t = Δw + f(x,y,t)에 따라 전파되며, 여기서 f는 열원을 나타냅니다. 이는 감쇠되는 확산 과정으로, 에너지 손실이 있는 파동과 유사합니다.

열 확산의 수치 시뮬레이션

Mathematica에서 분석적 해법을 통해 온도 변화를 시각화할 수 있습니다:

Google AdInline article slot
sol = NDSolveValue[
  {
    D[w[x, y, t], t] == Laplacian[w[x, y, t], {x, y}] + 
      If[(x + 2)^2 + y^2 < 0.1 && t > 0.0, 100.0, 0],
    w[x, y, 0] == 0
  },
  w,
  {x, y} ∈ Rectangle[{-2, -1}, {2, 1}],
  {t, 0, 10}
];

열원에서 멀리 떨어진 지점의 온도는 지연을 거쳐 상승합니다. 피드백을 구현하기 위해 FDTD(Finite-Difference Time-Domain) 기법을 활용한 이산 시간 모델링으로 전환합니다.

2D 열 방정식의 기본 단계:

solveHeat[w_, f_, dt_: 0.0025, dx_: 0.1] := Table[
  If[i > 1 && i < 50 && j > 1 && j < 50,
    w[[i, j]] + dt (
      w[[i - 1, j]] + w[[i, j - 1]] - 4 w[[i, j]] + 
      w[[i, j + 1]] + w[[i + 1, j]]
    )/dx^2 + dt f[i, j],
    w[[i, j]]
  ],
  {i, 50}, {j, 50}
];

CFL 안정성 조건: δt / δx² ≤ 0.25. 히터의 켜기/끄기 시뮬레이션은 시스템 관성의 존재를 확인합니다.

Google AdInline article slot

비례 제어기: 지속적인 오차 문제

P-컨트롤러 연결: 히터 = K_p * Clip[오차, {0, ∞}]. 낮은 출력일 때 열손실로 인해 온도는 목표보다 낮게 정착합니다. K_p를 증가시키면 응답 속도는 빨라지지만 진동이 심화되고, 정상 상태 오차는 여전히 남아 있습니다.

그래프에서 확인할 수 있듯이:

  • 저출력: 천천히 상승하며 목표치 도달 실패.
  • 고출력: 수렴 없이 진동 발생.

적분 성분: 정상 상태 오차 제거

적분은 누적 오차를 계산합니다: accError += 오차; u(t) = K_p 오차 + K_i accError. 이는 정적 손실을 보상합니다.

Google AdInline article slot

저출력 예시:

Module[{w = Table[0., {50}, {50}], accError = 0.0},
  Table[
    With[{error = (0.0022 - w[[25, 25]])},
      {
        heater = 20000.0 Clip[error + 0.001 accError, {0, Infinity}]
      },
      accError += error;
      w = solveHeat[w, Function[{i, j}, If[Max[Abs[{i, j} - {25, 2}]] < 1, heater, 0.0]]];
      {{steps, w[[25, 25]]}, {steps, heater/30000.0}}
    ],
    {steps, 1, 3000}
  ]
];

온도는 진동 없이 목표치에 수렴합니다.

미분 성분: 진동 예측 및 억제

미분 성분은 오차의 변화율에 반응합니다: u(t) = K_p e + K_i ∫e + K_d * de/dt. 이는 미래의 과잉 반응을 억제합니다.

완전한 PID 제어기는 응답 속도를 개선하지만 정밀한 튜닝이 필요합니다. 지나친 K_d 값은 부작용을 유발할 수 있습니다.

비교 결과:

  • P-단독: 느린 반응, 지속적 오차.
  • PI: 수렴 가능, 과잉 반응 가능성.
  • PID: 최적의 반응, 최소 진동.

공식 정의와 기계 시스템 적용

완전한 공식: u(t) = K_p e(t) + K_i ∫₀ᵗ e(τ) dτ + K_d de/dt.

질량 m에 대한 운동 방정식: x''(t) = u(t)/m. PID를 미분하면 간단한 형태로 변환됩니다: u'(t) = K_i e + K_p e' + K_d e''.

컨트롤러 없이: 일정한 u=1일 때 x(t) = t²/(2m) — 포물선 궤적.

P-컨트롤러 적용 시: e(t) = a - x(t)로 폐루프 형성. 계수 튜닝은 시스템 동역학을 고려한 반복적 과정입니다.

핵심 요약:

  • 비례 항은 기본 반응을 제공하지만 정상 상태 오차를 남깁니다.
  • 적분 항은 관성 시스템에서 누적 편차를 제거합니다.
  • 미분 항은 변화를 예측하고 안정화를 가속화합니다.
  • FDTD 시뮬레이션은 디버깅에 효과적인 시각화 도구입니다.
  • 안정성을 위해서는 CFL 조건 충족과 u(t) 제한이 필수입니다.

— Editorial Team

Advertisement 728x90

다음 읽기