AEGLOSLAB 제어공학 종합 핸드북

제3부 디지털 제어

3.1 이산시간 시스템과 z-변환

제3부 디지털 제어 · 시작. 실제 제어기는 컴퓨터에서 일정 주기로 실행된다(0.1.4.2). 연속시간 설계(제1·2부)를 컴퓨터에 구현하려면 이산시간의 언어가 필요하다. 차분방정식, z-변환, 그리고 안정 영역이 좌반평면에서 단위원 안으로 바뀌는 핵심을 다룬다.

이 장을 마치면 차분방정식과 펄스 전달함수 $G(z)$를 다루고, z-평면에서 안정성을 판정하며(|z|<1), 연속의 $s$와 이산의 $z$가 z=e^{sT}로 이어짐을 이해해야 한다.

3.1.1 왜 디지털 — 제어기는 컴퓨터에서 실행된다

0.1.4.2의 while 루프를 떠올리자: 측정 → 오차 → 계산 → 구동을 일정 주기 $T$마다 반복했다. 이것이 디지털 제어의 실체다. 마이크로컨트롤러·PC·ROS2 노드(제7부)는 연속이 아니라 이산 시각 t=0, T, 2T, …에만 동작한다.

연속 신호 y(t) ADC·샘플러 (매 T초 표본화) y[k] 제어 알고리즘 (차분방정식) u[k] DAC·홀드 (계단 유지·ZOH) u(t)

그래서 제1·2부의 연속 설계는 둘 중 하나로 디지털화된다: ① 연속으로 설계 후 이산 변환(3.2), ② 처음부터 이산으로 설계. 어느 쪽이든 z-변환이 토대다.

3.1.2 샘플링과 홀드 — 연속과 이산의 다리

  • 샘플러(ADC): 연속 $y(t)$를 매 $T$초마다 읽어 수열 $y[k] = y(kT)$로 만든다. $T$=샘플링 주기, $fs=1/T$=샘플링 주파수.
  • 영차홀드(ZOH, DAC): 제어기가 낸 $u[k]$를 다음 표본까지 계단처럼 유지한다(아래 계단 모양).
0 1 2 3 4 5 0.00 0.25 0.50 0.75 1.00 t [s] u(t) 이산 표본 u[k] ZOH 출력 u(t)
샘플→ZOH 파형

이 "표본 → 계산 → 홀드"가 연속 세계와 이산 알고리즘을 잇는다. ZOH는 평균 $T/2$의 지연을 더한다(3.1.10·3.2).

3.1.3 이산시간 신호와 차분방정식

이산 신호는 수열 $y[k]$(k=0,1,2,…)다. 연속의 미분방정식(0.2.3)에 대응하는 것이 차분방정식(difference equation)으로, 미분 대신 과거 표본으로 동특성을 적는다:

$$y[k] = a_1\cdot y[k-1] + a_2\cdot y[k-2] + \cdots + b_1\cdot u[k-1] + b_2\cdot u[k-2] + \cdots$$

  • y[k−1] = 한 표본 전 값. 미분 dy/dt의 이산 대응은 차분 (y[k]−y[k−1])/T.
  • 이 식 자체가 구현 코드다 — 과거 입출력으로 현재 출력을 점화식처럼 계산(3.1.8). 1.4.6의 ARX 모델이 바로 이 형태였다.

3.1.4 z-변환 — 이산의 라플라스

라플라스가 연속을 $s$영역으로 옮겼듯, z-변환은 이산 수열을 $z$영역으로 옮긴다:

$$Y(z) = \sum_{k=0}^{\infty} y[k]\cdot z^{-k}$$

핵심은 정의가 아니라 한 가지 성질이다:

z^{−1} = 단위 지연(한 표본 뒤로). 즉 y[k−1]의 z-변환은 z^{−1}Y(z).

이것이 라플라스의 "$s$ = 미분"(0.2.4)에 대응하는 변환이다. 차분방정식의 각 y[k−n]을 z^{−n}Y로 바꾸면 대수방정식이 된다.

  • 선형성: $\mathbb{Z}\{a\cdot f+b\cdot g\} = aF+bG$.
  • 시간 이동: ℤ{y[k−n]} = z^{−n}Y(z) (초기조건 0).
  • 그래서 미적분 없이 곱셈·나눗셈으로 푼다 — 연속에서와 똑같은 이득.

3.1.5 펄스 전달함수 G(z)

차분방정식을 z로 옮기면 펄스 전달함수 $G(z)=Y(z)/U(z)$가 나온다. 예: $y[k] = a\cdot y[k-1] + b\cdot u[k-1]$.

$$Y = a \cdot z^{-1} Y + b \cdot z^{-1} U$$

$$Y(1 - a \cdot z^{-1}) = b \cdot z^{-1} U$$

$$G(z) = \frac{Y(z)}{U(z)} = \frac{b \cdot z^{-1}}{1 - a \cdot z^{-1}} = \frac{b}{z - a} \qquad (\text{극: } z = a)$$

$G(z)$의 극·영점(분모·분자 근)이 연속에서처럼 응답·안정성을 정한다 — 단, 해석 영역이 s-평면이 아니라 z-평면이다.

3.1.6 z-평면과 안정성 — 단위원 "안"

연속에서 안정 = "모든 극이 좌반평면"(2.1)이었다. 이산에서는 다르다.

*이산 안정성: 모든 극이 단위원 안(|z|<1).*

Re(z) Im(z) 안정 |z|<1 |z|=1
z-평면: 단위원 안이 안정
s-평면(연속)z-평면(이산)의미
좌반평면 $\sigma<0$단위원 안 `z<1`안정
허수축 $\sigma=0$단위원 위 `z=1`경계
우반평면 $\sigma>0$단위원 밖 `z>1`불안정

3.1.5 예에서 극 z=a는 |a|<1이면 안정(예: $a=0.9$ 안정, $a=1.2$ 불안정). 1차 연속계 $1/(\tau s+1)$를 ZOH로 이산화하면 극이 $z=e^{-T/\tau}$로 0과 1 사이 → 안정과 일관(3.2).

판정 도구도 바뀐다: Routh-Hurwitz(2.1)는 좌반평면용이라 z엔 직접 못 쓴다. 쌍일차(Tustin) 변환 z→s 후 Routh를 쓰거나(3.2), Jury 판정, 또는 단순히 numpy.roots로 |z|를 확인한다.

3.1.7 s↔z 사상 — 주파수와 에일리어싱 예고

연속 극 $s$와 이산 극 $z$는 z=e^{sT}로 이어진다($T$=샘플링 주기). $s=\sigma+j\omega$를 넣으면:

$$z = e^{sT} = e^{\sigma T}\cdot e^{j\omega T} \quad\to\quad |z| = e^{\sigma T}, \quad \angle z = \omega T$$

  • $\sigma<0$ → |z|<1(안), $\sigma=0$ → |z|=1(위), $\sigma>0$ → 밖. 3.1.6 표 그대로.
  • 주파수 $\omega$는 단위원 둘레의 각 $\angle z=\omega T$로 매핑된다. $\omega=0$→$z=1$, $\omega=\pi/T$(나이퀴스트 주파수)→$z=e^{j\pi}=-1$.
  • ⚠️ 사상은 다대일이다: $\omega$와 $\omega+2\pi/T$가 같은 $z$로 간다. 나이퀴스트 주파수 위 신호는 낮은 주파수로 나타남(에일리어싱) — 샘플링이 가져오는 가장 중요한 함정이며 3.2에서 본격적으로 다룬다.

3.1.8 변환표와 구현 — 차분방정식으로 코딩

자주 쓰는 z-변환쌍(상세는 부록 A.1):

이산 $y[k]$$Y(z)$
단위 임펄스 $\delta[k]$1
단위 계단 1z/(z−1) = 1/(1−z^{−1})
지수 aᵏz/(z−a)

구현은 거꾸로다 — $G(z)$를 z^{−1}의 비로 적고 점화식으로 코딩한다. 예 G(z)=b/(z−a) = bz^{−1}/(1−az^{−1}):

# G(z)=b/(z−a) 를 코드로:  y[k] = a·y[k−1] + b·u[k−1]
y_prev, u_prev = 0.0, 0.0
def step(u):                     # 매 표본 호출
    global y_prev, u_prev
    y = a*y_prev + b*u_prev
    y_prev, u_prev = y, u
    return y

이것이 디지털 제어기의 본모습이다 — 2.5.7의 이산 PID도, 제7부 ROS2 노드도 결국 이런 점화식이다. z-변환은 설계·해석의 언어이고, 차분방정식은 실행 코드다.

3.1.9 도구로 — 이산 전달함수

# discrete.py — 이산 전달함수와 극, 연속→이산 미리보기
import control as ct
T = 0.1                                  # 샘플링 주기
Gz = ct.tf([1], [1, -0.9], T)            # 1/(z−0.9), dt=T → 이산계
print("poles:", ct.poles(Gz))           # |극| < 1 이면 안정
print("안정?", all(abs(p) < 1 for p in ct.poles(Gz)))

Gs = ct.tf([1], [1, 1])                  # 연속 1/(s+1)
Gd = ct.c2d(Gs, T, method='zoh')         # ZOH 이산화 (자세히 3.2)
print(Gd)

이산계는 dt(샘플링 주기)를 함께 준다. $c2d$가 연속→이산 변환을 대신한다(방법·함정은 3.2). (출력은 여러분 환경에서 재현 — ✅ control 0.10.2 검증됨; 재현 권장.)

3.1.10 정직 — 이산이 새로 들고 오는 것

이산화는 대가가 따른다. 연속에는 없던 문제들이 따라온다.

  • 계산·홀드 지연: 표본 사이 ZOH는 평균 $T/2$ 지연을 더하고, 계산 시간만큼 또 지연된다. 지연은 위상 여유를 줄인다(2.4) — $T$가 크면 치명적.
  • z^{−1}은 실제 지연: 점화식의 한 표본 지연은 실제 시간 $T$의 지연이다. 빠른 동특성에는 작은 $T$가 필요.
  • 에일리어싱: 나이퀴스트($\pi/T$) 위 성분은 저주파로 나타난다(3.1.7) → 안티에일리어싱 필터·적절한 $T$가 필수(3.2).
  • 양자화: ADC·DAC의 유한 비트는 작은 잡음·극한주기를 만든다.

핵심 설계 결정인 샘플링 주기 $T$의 선택과 연속→이산 변환법(ZOH·Tustin)이 다음 장의 주제다.

3.1.11 정리 — 그리고 다음 장

  • 디지털 제어기는 표본화→계산→홀드를 주기 $T$로 반복한다(3.1.1·3.1.2). 동특성은 차분방정식, 변환 도구는 z-변환(z^{−1}=단위 지연)이다(3.1.3·3.1.4).
  • 펄스 전달함수 $G(z)$의 극으로 안정성을 보되, 안정 영역은 단위원 안 |z|<1(좌반평면 아님)이다(3.1.6). 연속과 이산은 z=e^{sT}로 이어진다(3.1.7).
  • $G(z)$는 점화식으로 코딩되어 실제 제어기가 된다(3.1.8). 이산화는 지연·에일리어싱·양자화를 새로 들고 온다(3.1.10).

다음 3.2에서는 핵심 실무 결정 — 샘플링 주기 선정과 연속→이산 변환(ZOH·Tustin), 그리고 에일리어싱을 다룬다.

3.1.12 연습·생각해 볼 것

  1. 차분 ↔ z. 차분방정식 y[k] = 0.8y[k−1] + 0.5u[k] − 0.3u[k−1]의 펄스 전달함수 $G(z)=Y/U$를 구하라. 극은? 안정한가? (3.1.5·3.1.6)
  2. 안정 판정. 다음 이산 극 집합을 안정/경계/불안정으로 분류하라: ⓐ {0.5, −0.7}, ⓑ {0.9, 1.05}, ⓒ $\{0.6\pm j0.6\}$(|·| 계산), ⓓ {1, 0.3}. (3.1.6)
  3. s→z 매핑. 연속 극 s=−2를 샘플링 주기 $T=0.1$로 이산화하면 z-평면 어디로 가나(z=e^{sT})? $s=-2\pm j10$은? |z|<1인가? (3.1.7)
  4. 나이퀴스트. $T=0.01 \,\mathrm{s}$일 때 나이퀴스트 주파수(rad/s, Hz)는? 이보다 높은 주파수의 신호가 표본화되면 어떻게 보이나? (3.1.7·3.1.10)
  5. 구현. G(z) = 0.2/(z−0.8)를 점화식 y[k]=…로 적고, 단위 계단 입력에 대해 $y[0], y[1], y[2], y[3]$을 손으로 계산하라. 정상상태값은 얼마로 수렴하나? (3.1.8)
  6. 연속 직관 잇기. 연속 1차계 $1/(\tau s+1)$가 안정인 것과, 그 ZOH 이산화 극 $z=e^{-T/\tau}$가 (0,1)에 있어 안정인 것이 일관됨을 설명하라. $T$를 키우면 극은 어디로 움직이나? (3.1.6·3.1.7)
  7. (손으로) discrete.py로 $1/(s+1)$을 $T=0.1$과 $T=1.0$으로 ZOH 이산화해 극 위치를 비교하라. $T$가 커지면 이산 극이 단위원 어디로 가며, 응답은 어떻게 달라질지 추측하라. (검증 필요 — 3.2 예고)

막히면 "z⁻¹은 한 표본 지연, 안정은 단위원 안, s와 z는 z=e^{sT}" 세 마디로 돌아가라.