표면부착형 영구자석 동기전동기 파라미터 식별: 오프라인에서 온라인까지

1. 영구자석 동기전동기 기초

표면부착형 영구자석 동기전동기(PMSM)는 회전자 표면에 영구자석이 부착되어 구조가 비교적 단순합니다. dq 회전 좌표계에서 전압 방정식은 다음과 같습니다.

\[ \begin{cases} u_d = R_s i_d + L_d \frac{di_d}{dt} - \omega_e L_q i_q \\ u_q = R_s i_q + L_q \frac{di_q}{dt} + \omega_e (L_d i_d + \psi_f) \end{cases} \]

여기서 \(u_d\), \(u_q\)는 d축과 q축 전압, \(i_d\), \(i_q\)는 d축과 q축 전류, \(R_s\)는 고정자 저항, \(L_d\), \(L_q\)는 d축과 q축 인덕턴스, \(\omega_e\)는 전기 각속도, \(\psi_f\)는 영구자석 쇄교자속입니다. 이 방정식에서 모터의 동작 특성이 이러한 파라미터와 밀접하게 관련됨을 알 수 있습니다.

2. 오프라인 식별 모델

오프라인 식별은 모터가 정지하거나 특정 비동작 상태에서 파라미터를 측정합니다.

고정자 저항 \(R_s\)의 오프라인 식별

일반적으로 직류 주입법을 사용합니다. 모터의 한 상 권선에 직류 전류 \(I_{dc}\)를 인가하고 해당 상 권선 양단의 전압 \(U_{dc}\)를 측정한 후, 옴의 법칙 \(R_s = \frac{U_{dc}}{I_{dc}}\)에 따라 고정자 저항을 구합니다. Python 예시 코드는 다음과 같습니다.

# 측정된 직류 전압과 전류를 가정
U_dc = 10.0  # 측정된 직류 전압 (V)
I_dc = 2.0   # 측정된 직류 전류 (A)
R_s = U_dc / I_dc
print(f"고정자 저항 R_s: {R_s} 옴")

인덕턴스 \(L_d\), \(L_q\)의 오프라인 식별

보통 펄스 응답법을 사용합니다. 모터에 좁은 펄스 전압을 인가하고 전류 응답을 검출하여 인덕턴스 값을 계산합니다. 실제 구현은 복잡하므로 대략적인 코드 프레임워크만 제시합니다.

# 펄스 전압 인가 후 전류 응답 데이터 시뮬레이션
current_response = [1.2, 1.5, 1.8, 2.0, 1.9, 1.7]  # 가상의 전류 응답 데이터
# 구체적인 물리 모델에 따라 인덕턴스 계산 알고리즘 적용
# 여기서는 단순화된 예시로, 실제로는 더 복잡한 공식을 사용
def calculate_inductance(response):
    start_current = response[0]
    peak_current = max(response)
    inductance = (peak_current - start_current) / some_constant  # some_constant는 실제 상수로 대체
    return inductance
L = calculate_inductance(current_response)
print(f"인덕턴스 L: {L} 헨리")

오프라인 식별의 장점은 정밀도가 높다는 점이지만, 모터를 정지시켜야 하므로 연속 운전 시스템에는 불편할 수 있습니다.

3. 온라인 식별 모델

오프라인 식별의 한계를 극복하기 위해 온라인 식별이 등장했습니다. 온라인 식별은 모터가 운전 중에도 파라미터를 실시간으로 추정할 수 있게 합니다.

모델 기준 적응 시스템(MRAS) 기반 온라인 식별

MRAS 방식은 모터의 실제 모델을 기준 모델로, 추정 모델을 가변 모델로 사용합니다. 두 모델 출력의 오차를 통해 가변 모델의 파라미터를 조정하여 실제 모델에 점진적으로 근접시킵니다. MATLAB 기반 핵심 코드 예시입니다.

% 파라미터 초기화
alpha = 0.1;        % 적응률
Rs_hat = 1.0;       % 고정자 저항 초기 추정값
Ld_hat = 0.01;      % d축 인덕턴스 초기 추정값
Lq_hat = 0.01;      % q축 인덕턴스 초기 추정값
psi_f_hat = 0.1;    % 영구자석 쇄교자속 초기 추정값

% 모터 운전 중 샘플마다 파라미터 갱신
for k = 1:num_samples
    % 현재 시점의 전압, 전류 등 측정값
    u_d = measured_voltages(k, 1);
    u_q = measured_voltages(k, 2);
    i_d = measured_currents(k, 1);
    i_q = measured_currents(k, 2);
    omega_e = measured_speed(k);

    % 기준 모델 출력 계산
    y_ref = reference_model(u_d, u_q, i_d, i_q, omega_e);
    % 가변 모델 출력 계산
    y_hat = adjustable_model(u_d, u_q, i_d, i_q, omega_e, Rs_hat, Ld_hat, Lq_hat, psi_f_hat);
    % 오차 계산
    error = y_ref - y_hat;
    % 적응률 기반 파라미터 업데이트
    Rs_hat = Rs_hat + alpha * error(1) * i_d;
    Ld_hat = Ld_hat + alpha * error(2) * (-omega_e * i_q);
    Lq_hat = Lq_hat + alpha * error(2) * (omega_e * i_d);
    psi_f_hat = psi_f_hat + alpha * error(2) * (-omega_e);
end

function y = reference_model(u_d, u_q, i_d, i_q, omega_e)
    % 실제 모터 모델 기반 기준 출력
    Rs = 1.0; Ld = 0.01; Lq = 0.012; psi_f = 0.1; % 실제 파라미터 (알려져 있다고 가정)
    y(1) = u_d - Rs * i_d + omega_e * Lq * i_q;
    y(2) = u_q - Rs * i_q - omega_e * Ld * i_d - omega_e * psi_f;
end

function y = adjustable_model(u_d, u_q, i_d, i_q, omega_e, Rs_hat, Ld_hat, Lq_hat, psi_f_hat)
    % 추정 모델 기반 가변 출력
    y(1) = u_d - Rs_hat * i_d + omega_e * Lq_hat * i_q;
    y(2) = u_q - Rs_hat * i_q - omega_e * Ld_hat * i_d - omega_e * psi_f_hat;
end

이 코드는 모터 운전 중 측정값을 바탕으로 기준 모델과 가변 모델의 출력 오차를 계산하고, 적응률에 따라 파라미터 추정값을 갱신하여 실시간 식별을 수행합니다.

온라인 식별은 실시간 파라미터 변화를 추적할 수 있지만, 운전 환경의 잡음 등 간섭 요소로 인해 정밀도가 영향을 받을 수 있습니다.

4. 토크 관측

모터 토크를 정확히 관측하는 것은 성능 평가와 제어에 중요합니다. 파라미터를 알면 다음 공식으로 토크를 계산합니다.

\[ T_e = \frac{3}{2} p [\psi_f i_q + (L_d - L_q) i_d i_q] \]

여기서 \(p\)는 모터 극 쌍 수입니다. 식별된 파라미터와 함께 사용하면 모터 운전 중 실시간 토크를 관측할 수 있습니다. Python 예시입니다.

# 식별된 파라미터 가정
p = 4          # 극 쌍 수
psi_f = 0.1    # 영구자석 쇄교자속 (Wb)
L_d = 0.01     # d축 인덕턴스 (H)
L_q = 0.012    # q축 인덕턴스 (H)
# 현재 d축, q축 전류 가정
i_d = 1.5      # (A)
i_q = 2.0      # (A)
T_e = (3/2) * p * (psi_f * i_q + (L_d - L_q) * i_d * i_q)
print(f"현재 모터 토크 T_e: {T_e} Nm")

표면부착형 영구자석 동기전동기의 파라미터 식별은 오프라인과 온라인 방식 모두 장단점이 있으므로, 실제 응용에서는 상황에 맞게 선택해야 합니다. 토크 관측은 정확한 파라미터 식별을 기반으로 모터 성능 최적화를 지원합니다.

태그: PMSM 표면부착형 파라미터 식별 오프라인 식별 온라인 식별

6월 24일 23:59에 게시됨