PMSM 벡터 제어(FOC) 실습: 전류·속도 PI 튜닝

벡터 제어 드라이브는 단순한 모델 위에 PI 루프 두 개를 쌓은 구조입니다. 안쪽 전류 루프가 토크를 만들고, 바깥쪽 속도 루프가 필요한 전류를 요청합니다. 종이 위에서 게인을 정하는 데는 식 두 줄이면 되지만, 그 게인이 실제로 무엇을 하는지 보려면 모터가 필요합니다. 이 실습기는 48 V PMSM을 회전자 dq 좌표에서 시뮬레이션하고, 마이크로컨트롤러가 돌리는 것과 같은 이산 제어기를 실행해 슬라이더를 움직일 때마다 모든 그래프를 다시 그립니다. 왼쪽 회전자 그림은 같은 결과를 느린 화면으로 재생하며, 그 위에 고정자 전류 벡터를 겹쳐 그립니다.

실험

i_d, i_q 전류 PI (10 kHz)

교과서 튜닝: Kp_i = L·ω_bw, Ki_i = R·ω_bw. 이렇게 하면 PI 영점이 R/L 극점을 상쇄해 루프가 ω_bw/(s + ω_bw)처럼 동작합니다.
ω_bw = Kp_i/L = 2π·500 Hz · Ki_i/Kp_i = 250 rad/s (R/L = 250)

속도 PI → i_q* (1 kHz)

출발점: Kp_ω = J·ω_sc/K_t, Ki_ω = Kp_ω·ω_sc/4, K_t = 1.5·p·λ_m. ω_sc는 전류 루프 대역폭보다 5~10배 이상 낮게 둡니다.
ω_sc ≈ Kp_ω·K_t/J = 2π·50 Hz · 전류/속도 = 10

모터: R = 0.5 Ω, L_d = L_q = 2 mH, λ_m = 0.05 Wb, 극쌍수 p = 4, J = 1×10⁻⁴ kg·m², B = 1×10⁻⁴ N·m·s. V_dc = 48 V 이므로 전압 한계는 V_dc/√3 = 27.7 V. 전류 한계 20 A, i_d* = 0.

회전자, dq 축, 전류 벡터
abcNSdqi_s

2극 등가 기계로 그렸기 때문에 보이는 회전 각도는 전기각입니다. 실제 시간보다 약 1333배 느리게 재생합니다. a, b, c 축 위의 막대는 상전류입니다.

t
6 ms
i_d / i_q
-0.00043 / 1 A
T_e
0.3 N·m
속도
300 rpm
|v|
6.79 V
θ_e
43°

결과

i_q 상승 시간 10–90 %
310 µs
이상값 2.2/ω_bw
700 µs
오버슈트
2.46 %
전류 루프 대역폭
500 Hz
i_q 계단: 지령과 응답
1.1-0.082A6 ms0
i_q*i_q
d축, q축 전류
1.1-0.084A6 ms0
i_di_q
인가 전압과 한계
V_dc/√330-2.6V6 ms0
v_dv_q|v|
상전류 (역 Park 변환)
1.1-0.95A6 ms0
i_ai_bi_c

모델: 표면 부착형 PMSM의 dq 방정식을 100 µs 제어 주기마다 RK4로 적분하고, 한 주기에 계산한 전압은 다음 주기에 인가합니다. PWM 리플, 데드타임, 자기 포화, 철손은 넣지 않았습니다. 두 PI 모두 조건부 적분 방식의 와인드업 방지를 씁니다.

실습기의 모델

회전자 좌표에서 고정자 방정식은 L_d·di_d/dt = v_d − R·i_d + ω_e·L_q·i_q, L_q·di_q/dt = v_q − R·i_q − ω_e·(L_d·i_d + λ_m)이고 ω_e = p·ω_m입니다. 토크는 T_e = 1.5·p·(λ_m·i_q + (L_d − L_q)·i_d·i_q)이며, L_d = L_q인 표면 자석형에서는 1.5·p·λ_m·i_q가 됩니다. 즉 토크는 i_q만 따라갑니다. 축은 J·dω_m/dt = T_e − B·ω_m − T_L을 따릅니다.

두 전류 제어기는 10 kHz, 속도 제어기는 1 kHz로 동작합니다. 전압 벡터는 반지름 V_dc/√3인 원 안으로 자릅니다. 공간 벡터 변조가 과변조 없이 낼 수 있는 가장 큰 정현파 전압입니다. d축을 우선하고, i_q*는 ±20 A로 제한합니다.

왜 Kp = L·ω_bw, Ki = R·ω_bw 인가

역기전력 항을 빼고 v_q에서 보면 q축 전류는 1/(L·s + R)인 1차 플랜트입니다. PI 제어기 Kp + Ki/s는 Ki/Kp에 영점이 있습니다. 이 영점을 모터 극점 R/L에 놓으면 극점이 상쇄되고 개루프는 Kp/(L·s), 즉 교차 주파수 Kp/L인 적분기가 됩니다. 루프를 닫으면 대역폭 ω_bw = Kp/L인 1차 응답이 되고, 10–90 % 상승 시간은 2.2/ω_bw입니다.

이 결과는 연속 시간 제어기를 가정합니다. 500 Hz 프리셋에서 계산 지연을 끄면 측정된 상승 시간이 이상값과 약 20 % 안으로 들어오고, 남은 차이는 10 kHz 샘플링 자체에서 옵니다. 지연을 다시 켜면 루프 안에 100 µs 한 주기만큼의 지연이 생겨 응답이 더 빨라지고 작은 오버슈트가 생깁니다. 1 kHz에서는 오버슈트가 50 % 안팎이 되고, 1.4 kHz 프리셋에서는 전류가 1 ms 넘게 출렁입니다. 한 샘플 지연이 있는 이산 루프는 비례 게인만 있을 때 Kp·T_s/L이 1에 이르면 불안정해지며, 여기서는 대역폭 약 1.6 kHz에 해당합니다. 실제 전류 루프 대역폭을 샘플링 주파수의 대략 1/10~1/20로 잡는 경우가 많은 이유입니다.

비간섭 보상과 전압 한계

ω_e·L_q·i_q와 ω_e·(L_d·i_d + λ_m) 항이 두 축을 묶고 있으며, 둘 다 속도에 비례해 커집니다. 피드포워드가 없으면 q축 적분기가 역기전력 전체를 혼자 쌓아야 하고, i_q를 바꿀 때마다 i_d가 흔들립니다. 회전 속도를 1000 rpm으로 고정하고 i_q 계단을 준 뒤 비간섭을 켜고 꺼 보세요. 끄면 계단 동안 i_d가 0에서 벗어나고 q축 적분기가 역기전력을 떠안습니다. v_d,ff = −ω_e·L_q·i_q, v_q,ff = ω_e·(L_d·i_d + λ_m)을 더하면 이 결합이 대부분 사라져 PI 제어기는 튜닝 기준이었던 R과 L의 동특성만 상대하면 됩니다.

48 V에서 인버터가 낼 수 있는 전압 벡터는 약 27.7 V이고, 역기전력 λ_m·ω_e는 1000 rpm에서 이미 21 V입니다. 속도 모드에서 1500 rpm을 지령하면 속도가 도달하기 전에 전압 그래프가 한계선에 닿고, 게인을 어떻게 바꿔도 모터는 기저 속도 근처에서 더 오르지 못합니다. 실제 드라이브는 i_d를 음으로 흘려 쇄교 자속을 줄이는 약계자 제어로 이 지점을 넘어갑니다. 이 실습기는 약계자를 모델링하지 않고 전압만 포화시키지만, 한계가 왜 존재하는지 보기에는 충분합니다.

속도 루프와 전류 루프 떼어 놓기

속도 제어기는 전류 루프가 i_q*를 즉시 만들어 준다고 보고 설계합니다. 전류 루프가 훨씬 빠를 때만 맞는 가정입니다. 속도 루프 프리셋은 500 Hz 전류 루프 위에 200 Hz 속도 교차 주파수를 얹어 비율이 2.5입니다. 이 모델에서는 속도 오버슈트가 약 17 %에서 약 34 %로 두 배 가까이 커지고, 계단 동안 i_q*가 20 A 한계에 닿습니다. 늘어난 오버슈트의 일부는 전류 루프의 지연에서, 일부는 이 전류 한계에서 옵니다. 흔히 비율을 5~10으로 둡니다. 속도 적분기의 영점은 여기서 교차 주파수의 1/4에 두었으며, 부하 토크를 얼마나 빨리 이겨 내는지와 큰 계단 뒤 오버슈트 크기를 정합니다.

해 볼 만한 것

Ki_i를 10배 낮추면 i_q가 지령 조금 아래에서 멈췄다가 천천히 따라옵니다. 영점이 극점을 상쇄하지 못해 느린 꼬리가 생긴 것입니다. i_q 계단을 10 A로 키우면 전류가 거의 직선으로 오르는데, 게인 때문이 아니라 전압 벡터가 포화됐기 때문입니다. 속도 모드에서 부하 토크를 2 N·m로 두면 i_q가 약 6.7 A에서 자리 잡습니다. i_q 1 A당 K_t = 0.3 N·m의 토크가 나오기 때문입니다. 이 숫자들은 이 모터 모델의 값이며 실제 모터에서는 달라집니다.

참고 문헌

R. Krishnan, Permanent Magnet Synchronous and Brushless DC Motor Drives, CRC Press, 2010. N. Mohan, Advanced Electric Drives: Analysis, Control and Modeling Using MATLAB/Simulink, Wiley, 2014. 이 사이트의 관련 페이지: Clarke·Park 변환, SVPWM, 제어 블록도, PID 코드 생성기, PI 이산화 도구.

애니메이션은 이 페이지에 적은 식을 그대로 따릅니다. 교재와 소프트웨어 라이브러리마다 규약이 다르므로, 숫자를 비교하기 전에 쓰고 있는 코드의 규약을 확인하세요.