제어 이득 추정 및 유틸리티 함수 사용하기
FOC(자속 기준 제어) 알고리즘의 일부인 속도 제어 루프와 토크 제어 루프에 대한 제어 파라미터 조정을 수행합니다. Motor Control Blockset™은 모터, 인버터 및 제어기에 사용 가능한 시스템 전달 함수 또는 블록 전달 함수에서 제어 루프 이득을 계산할 수 있는 다음과 같은 여러 가지 방법을 제공합니다.
Field Oriented Control Autotuner 블록 사용.
Simulink® Control Design™ 사용.
모델 초기화 스크립트 사용.

Field-Oriented Control Autotuner
Motor Control Blockset의 Field-Oriented Control Autotuner 블록을 사용하여 FOC(자속 기준 제어) 응용 사례에서 실시간으로 PID 제어 루프를 자동으로 조정할 수 있습니다. 다음 루프와 연결된 PID 제어기를 자동으로 조정할 수 있습니다(자세한 내용은 How to Use Field Oriented Control Autotuner Block 참조).
직접 축(d축) 전류 루프
직교 축(q축) 전류 루프
속도 루프
블록이 조정하는 각 루프에 대해 Field-Oriented Control Autotuner 블록은 해당 루프와 연결된 모수적 모델을 사용하지 않고 폐루프 방식으로 자동 조정 실험을 수행합니다. 이 블록을 사용하면 블록이 제어 루프를 조정하는 순서를 지정할 수 있습니다. 한 루프에 대해 조정 실험이 실행될 때 블록은 다른 루프에는 영향을 미치지 않습니다. FOC 자동 조정기에 대한 자세한 내용은 Field Oriented Control Autotuner 및 Tune PI Controllers Using Field Oriented Control Autotuner 항목을 참조하십시오.
Simulink Control Design
Simulink Control Design을 사용하여, Simulink에서 모델링된 제어 시스템을 설계하고 분석할 수 있습니다. PID 제어기를 포함하여 임의의 SISO 및 MIMO 제어 아키텍처를 자동으로 조정할 수 있습니다. PID 자동 조정을 임베디드 소프트웨어에 배포하여 실시간으로 PID 이득을 자동으로 계산할 수 있습니다.
다양한 동작 조건에서 Simulink 모델의 동작점을 찾고 엄밀한 선형화를 계산할 수 있습니다. Simulink Control Design은 모델을 수정하지 않고도 시뮬레이션 기반 주파수 응답을 계산할 수 있는 툴을 제공합니다. 자세한 내용은 Simulink Control Design 항목을 참조하십시오.
모델 초기화 스크립트
이 섹션에서는 Motor Control Blockset 예제에서 자속 기준 제어를 구현하는 데 필요한 제어 이득을 추정하는 방법을 설명합니다. 예를 들어, 쿼드라쳐 인코더에 연결된 PMSM에 대해 다음 단계에서는 초기화 스크립트를 사용해 시스템 세부 정보로부터 제어 루프 이득 값을 계산하는 절차를 설명합니다.
MATLAB®에서 예제의 초기화 스크립트(
.m) 파일을 엽니다. 연결된 스크립트 파일 이름을 찾으려면 다음을 수행합니다.모델링 > 모델 설정 > 모델 속성을 선택하여 모델 속성 대화 상자를 엽니다.

모델 속성 대화 상자에서 콜백 탭 > InitFcn으로 이동하여 Simulink가 예제를 실행하기 전에 여는 스크립트 파일의 이름을 찾습니다.

다음 그림은 초기화 스크립트(
.m) 파일의 예를 보여줍니다.
작업 공간을 사용하여 제어 변수 값을 편집합니다. 예를 들어, 고정자 저항(
Rs)을 업데이트하려면 변수pmsm을 사용하여 파라미터 값을Rs필드에 추가합니다.
타깃 모델과 연결된 모델 초기화 스크립트가 다음 함수를 호출하고 필요한 변수가 포함된 작업 공간을 설정합니다.
모델 초기화 스크립트 모델 초기화 스크립트가 호출하는 함수 설명 타깃 모델과 연결된 스크립트 mcb.getPMSMParameters이 함수의 입력값은 PMSM의 유형(예: BLY171D)입니다.
이 함수는 MATLAB 작업 공간에서
pmsm이라는 구조체를 채우며, 이 구조체는 모델에서 사용됩니다.함수는 선택한 모터의 영구 자석 플럭스와 정격 토크도 계산합니다.
새 모터에 대한 switch-case를 추가하여 함수를 확장할 수 있습니다.
이 함수는 또한 파라미터 추정을 실행하여 얻은 구조체
motorParam을 구조체pmsm으로 불러옵니다. MATLAB 작업 공간에서 구조체motorParam을 사용할 수 없는 경우 이 함수는 디폴트 파라미터를 불러옵니다.mcb.getACIMParameters이 함수의 입력값은 AC 유도 모터의 유형(예: EM_Synergy)입니다.
이 함수는 MATLAB 작업 공간에서
acim이라는 구조체를 채우며, 이 구조체는 모델에서 사용됩니다.새 모터에 대한 switch-case를 추가하여 함수를 확장할 수 있습니다.
이 함수는 또한 파라미터 추정을 실행하여 얻은 구조체
motorParam을 구조체acim으로 불러옵니다. MATLAB 작업 공간에서 구조체motorParam을 사용할 수 없는 경우 이 함수는 디폴트 파라미터를 불러옵니다.mcb.getInverterParameters이 함수의 입력값은 인버터 유형(예: BoostXL-DRV8305)입니다.
이 함수는 MATLAB 작업 공간에서
inverter라는 구조체를 채우며, 이 구조체는 모델에서 사용됩니다.함수는 선택한 인버터에 대한 인버터 저항도 계산합니다.
새 인버터에 대한 switch-case를 추가하여 함수를 확장할 수 있습니다.
mcb.getProcessorParameters이 함수의 입력값은 프로세서 유형(예: F28379D)과 펄스 폭 변조(PWM) 스위칭 주파수입니다.
이 함수는 MATLAB 작업 공간에서
target이라는 구조체를 채우며, 이 구조체는 모델에서 사용됩니다.이 함수는 타깃 모델의 ePWM 블록에 대한 파라미터인 PWM 카운터 주기도 계산합니다.
새 프로세서에 대한 switch-case를 추가하여 함수를 확장할 수 있습니다.
mcb.getMotorBaseSpeed이 함수의 입력값은 모터 및 인버터 파라미터입니다.
이 함수는 PMSM의 베이스 속도를 계산합니다.
자세한 내용을 보려면 MATLAB 명령 창에
help mcb.getMotorBaseSpeed를 입력하거나 베이스 속도 구하기 섹션을 참조하십시오.mcb.getPUSystemParameters이 함수의 입력값은 모터 및 인버터 파라미터입니다.
이 함수는 전압, 전류, 속도, 토크, 전력에 대해 per-unit 단위계의 베이스 값을 설정합니다.
이 함수는 MATLAB 작업 공간에서
PU_System이라는 구조체를 채우며, 이 구조체는 모델에서 사용됩니다.mcb.getPIControllerParameters이 함수의 입력값은 모터 및 인버터 파라미터, per-unit 단위계 베이스 값, PWM 스위칭 시간 주기, 제어 시스템의 샘플 시간, 속도 제어기의 샘플 시간입니다.
이 함수는 자속 기준 제어 구현을 위한 비례 적분(PI) 파라미터(Kp, Ki)를 계산합니다.
이 함수는 MATLAB 작업 공간에서
PI_params라는 구조체를 채우며, 이 구조체는 모델에서 사용됩니다.자세한 내용은 경험적 방법을 사용하여 제어기 이득 구하기 섹션을 참조하십시오.
mcb.updateInverterParameters이 함수의 입력값은 모터 및 인버터 파라미터입니다.
이 함수는 선택한 하드웨어와 모터를 기반으로 하여 인버터 파라미터를 업데이트합니다.
다음 표에서는 업데이트할 수 있는 각 제어 파라미터에 유용한 변수를 설명합니다.
참고
예제 모델과 연결된 모델 초기화 스크립트를 업데이트할 수 없는 경우 Windows® 시스템에서 관리자 모드로 MATLAB을 시작해 볼 수 있습니다.
| 제어 파라미터 범주 | 제어 파라미터 이름 | MATLAB 작업 공간 변수 |
|---|---|---|
| 모터 파라미터 | 제조업체의 모델 번호 | pmsm.model |
| 제조업체의 일련 번호 | pmsm.sn | |
| 극쌍 | pmsm.p | |
| 고정자 저항(Ohm) | pmsm.Rs | |
| d축 고정자 권선 인덕턴스(헨리) | pmsm.Ld | |
| q축 고정자 권선 인덕턴스(헨리) | pmsm.Lq | |
| 역기전력 상수(V_line(peak)/krpm) | pmsm.Ke | |
| 모터 관성(kg.m2) | pmsm.J | |
| 마찰 상수(N.m.s) | pmsm.F | |
| 영구 자석 플럭스(WB) | pmsm.FluxPM | |
| Trated | pmsm.T_rated | |
| Nbase | pmsm.N_base | |
| pmsm.N_max | |
| Irated | pmsm.I_rated | |
| 위치 디코더 | QEP 인덱스 및 홀 위치 오프셋 수정 | pmsm.PositionOffset |
| 회전당 쿼드라쳐 인코더 슬릿 수 | pmsm.QEPSlits | |
| 인버터 파라미터 | 제조업체의 모델 번호 | inverter.model |
| 제조업체의 일련 번호 | inverter.sn | |
| 인버터의 DC 링크 전압(V) | inverter.V_dc | |
| 인버터에서 허용 가능한 최대 전류(A) | inverter.I_trip | |
| MOSFET의 On 상태 저항(옴) | inverter.Rds_on | |
| 전류 센싱을 위한 션트 저항(옴) | inverter.Rshunt | |
| 모터에서 바라본 1상당 보드 저항(옴) | inverter.R_board | |
| 전류 센서의 ADC 오프셋(Ia 및 Ib) |
| |
| 전류 센서의 자동 보정 ADC 오프셋(Ia 및 Ib) 최대 제한 | inverter.CtSensOffsetMax | |
| 전류 센서의 자동 보정 ADC 오프셋(Ia 및 Ib) 최소 제한 | inverter.CtSensOffsetMin | |
| 전류 센싱 ADC에 대한 자동 보정 활성화 | inverter.ADCOffsetCalibEnable | |
| SPI에 의해 구성된 ADC 이득 인자 | inverter.ADCGain | |
인버터 유형: 1 — Active High로 활성화되는 인버터 0 — Active Low로 활성화되는 인버터 | inverter.EnableLogic | |
모터로 들어가는 전류에 대한 규칙: 1 — 모터로 들어가는 전류가 전류 센싱 증폭기에서 양수로 센싱됨 –1 — 모터로 들어가는 전류가 전류 센싱 증폭기에서 음수로 센싱됨 | inverter.invertingAmp | |
| 인버터 전류 센싱 회로의 기준 전압(V) | inverter.ISenseVref | |
1암페어 전류에 대응하는 인버터 전류 센싱 회로의 출력 전압(V/A) 인버터의 전류 션트 저항(
| inverter.ISenseVoltPerAmp | |
| 인버터 전류 센싱 회로에서 측정 가능한 최대 중성점 피크 전류(A) | inverter.ISenseMax | |
| 프로세서 | 제조업체의 모델 번호 | target.model |
| 제조업체의 일련 번호 | target.sn | |
| CPU 주파수 | target.CPU_frequency | |
| PWM 주파수 | target.PWM_frequency | |
| PWM 카운터 주기 | target.PWM_Counter_Period | |
| ADC의 기준 전압(V) | Target.ADC_Vref | |
| 12비트 ADC의 최대 카운트 출력 | Target.ADC_MaxCount | |
| 직렬 통신의 보드 레이트 | Target.SCI_baud_rate | |
| Per-Unit 단위계 | 베이스 전압(V) | PU_System.V_base |
| 베이스 전류(A) | PU_System.I_base | |
| 베이스 속도(rpm) | PU_System.N_base | |
| 베이스 토크(Nm) | PU_System.T_base | |
| 베이스 전력(W) | PU_System.P_base | |
| 타깃 장치의 데이터형 | 데이터형(고정소수점 또는 부동소수점) 선택 | dataType |
| 샘플 시간 값 | 컨버터의 스위칭 주파수 | PWM_frequency |
| PWM 스위칭 시간 주기 | T_pwm | |
| 전류 제어기의 샘플 시간 | Ts | |
| 속도 제어기의 샘플 시간 | Ts_speed | |
| 시뮬레이션 샘플 시간 | Ts_simulink | |
| 모터의 시뮬레이션 샘플 시간 | Ts_motor | |
| 인버터의 시뮬레이션 샘플 시간 | Ts_inverter | |
| 제어기 파라미터 | Iq 제어기의 비례 이득 | PI_params.Kp_i |
| Iq 제어기의 적분 이득 | PI_params.Ki_i | |
| Id 제어기의 비례 이득 | PI_params.Kp_id | |
| Id 제어기의 적분 이득 | PI_params.Ki_id | |
| 속도 제어기의 비례 이득 | PI_params.Kp_speed | |
| 속도 제어기의 적분 이득 | PI_params.Ki_speed | |
| 약계자 제어기의 비례 이득 | PI_params.Kp_fwc | |
| 약계자 제어기의 적분 이득 | PI_params.Ki_fwc | |
| 센서 지연 파라미터 | 전류 센서 지연 | Delays.Current_Sensor |
| 속도 센서 지연 | Delays.Speed_Sensor | |
| 저역통과 속도 필터의 지연 | Delays.Speed_Filter | |
| 제어기 지연 파라미터 | 전류 제어 루프의 감쇠 인자(ζ) | Delays.OM_damping_factor |
| 속도 제어 루프의 대칭 최적 인자 | Delays.SO_factor_speed |
참고
미리 정의된 프로세서와 드라이버의 경우, 모델 초기화 스크립트는 디폴트 값을 사용합니다.
모델 초기화 스크립트는 계산을 수행하는 데 다음 함수를 사용합니다.
| 제어 파라미터 범주 | 함수 | 기능 |
|---|---|---|
| 모터의 베이스 속도 | mcb.getMotorBaseSpeed | 정격 전압과 정격 부하에서 PMSM의 베이스 속도를 계산합니다. 자세한 내용을 보려면 MATLAB 명령 프롬프트에 |
| 해당 모터 및 인버터에서의 모터 특성 | mcb.PMSMCharacteristics | PMSM 모터의 다음과 같은 구동 특성을 구합니다.
자세한 내용을 보려면 MATLAB 명령 프롬프트에 자세한 내용은 모터 특성 구하기 섹션을 참조하십시오. |
mcb.ACIMCharacteristics | 유도 모터의 다음과 같은 모터 특성을 구합니다.
유도 모터의 다음과 같은 구동 특성을 구합니다.
자세한 내용을 보려면 MATLAB 명령 프롬프트에 자세한 내용은 모터 특성 구하기 섹션을 참조하십시오. | |
| 제어 알고리즘 파라미터 | mcb.getPIControllerParameters | 다음 PI 제어기의 이득을 계산합니다.
자세한 내용은 경험적 방법을 사용하여 제어기 이득 구하기 섹션을 참조하십시오. |
| 사용 중인 모터 및 인버터에 대한 제어 분석 | mcb.getMotorControlAnalysis | 자속 기준 모터 제어 시스템에서 사용되는 PI 제어기의 계산된 이득에 대한 주파수 영역 분석을 수행합니다. 참고 이 기능을 사용하려면 Control System Toolbox™가 필요합니다. 자세한 내용을 보려면 MATLAB 명령 프롬프트에 |
베이스 속도 구하기
함수 mcb.getMotorBaseSpeed는 주어진 공급 전압에서 PMSM의 베이스 속도를 계산합니다. 베이스 속도(base speed)는 약계자 영역 외부에서 정격 전압 및 정격 부하에서의 최대 모터 속도입니다.
이 함수를 호출하면(예: base_speed = mcb.getMotorBaseSpeed(pmsm,inverter)) PMSM과 인버터의 주어진 조합에 대한 베이스 속도(단위: rpm)가 반환됩니다. 이 함수는 다음과 같은 입력값을 받습니다.
PMSM 파라미터 구조체.
인버터 파라미터 구조체.
다음 방정식은 이 함수가 수행하는 계산을 설명합니다.
인버터 전압 제약 조건은 d축 및 q축 전압을 계산하여 정의됩니다.
전류 제한 원은 다음으로 간주될 수 있는 전류 제약 조건을 정의합니다.
앞의 방정식에서 표면형 PMSM의 경우 는 0입니다. 매립형 PMSM의 경우 MTPA에 상응하는 및 의 값이 고려됩니다.
위 관계를 사용하여 베이스 속도를 다음과 같이 계산할 수 있습니다.
여기서
는 고정자 전압의 주파수에 대응하는 전기적 속도(라디안/초)입니다.
는 모터의 기계적 베이스 속도(라디안/초)입니다.
는 d축 전류(암페어)입니다.
는 q축 전류(암페어)입니다.
는 가 0일 때의 d축 전압(볼트)입니다.
는 가 0일 때의 q축 전압(볼트)입니다.
는 d축 권선 인덕턴스(헨리)입니다.
는 q축 권선 인덕턴스(헨리)입니다.
는 고정자 상 권선 저항(옴)입니다.
은 영구 자석 쇄교 자속(웨버)입니다.
는 d축 전압(볼트)입니다.
는 q축 전압(볼트)입니다.
는 모터에 공급되는 최대 기본 선-중성점 전압(피크)입니다(단위: 볼트).
는 인버터에 공급되는 DC 전압(볼트)입니다.
는 모터의 최대 상 전류(피크)입니다(단위: 암페어).
는 모터 극쌍 개수입니다.
모터 특성 구하기
함수 mcb.PMSMCharacteristics는 PMSM의 토크, 전력 및 전류 특성을 계산하며, 이는 모터의 제어 알고리즘을 개발하는 데 도움이 됩니다.
이 함수는 지정된 PMSM에 대해 다음과 같은 특성을 반환합니다.
속도 대비 토크
속도 대비 전력
속도 대비 Idq
속도 대비 Ipeak

함수 mcb.PMSMCharacteristicsAcim은 유도 모터의 모터 및 구동 특성을 계산하며, 이는 모터의 제어 알고리즘을 개발하는 데 도움이 됩니다.
이 함수는 지정된 유도 모터에 대해 다음과 같은 모터 특성을 반환합니다.
속도 대비 토크
속도 대비 전력
이 함수는 지정된 유도 모터에 대해 다음과 같은 구동 특성을 반환합니다.
속도 대비 토크
속도 대비 전력
속도 대비 Idq
속도 대비 Ipeak
경험적 방법을 사용하여 제어기 이득 구하기
함수 mcb.getPIControllerParameters는 자속 기준 모터 제어 시스템에서 사용되는 PI 제어기에 대해 경험적 방법을 기반으로 이득을 계산합니다.
다음 명령을 사용하여 함수 mcb.getPIControllerParameters를 호출할 수 있습니다.
PI_params = mcb.getPIControllerParameters(pmsm,inverter,PU_System,T_pwm,Ts,Ts_speed);
이 함수는 FOC 알고리즘에서 사용되는 다음 PI 제어기의 이득을 반환합니다.
직접 축(d축) 전류 루프
직교 축(q축) 전류 루프
속도 루프
약계자 제어 루프
이 함수는 다음과 같은 입력값을 받습니다.
pmsm objectinverter objectPU system paramsT_pwmTs_controlTs_speed
이 함수는 어떤 특성도 플로팅하지 않습니다.
보상기의 설계는 모터 제어 시스템에 적용되는 고전적 주파수 응답 분석에 따라 달라집니다. 전류 제어기에는 MO(모듈로 최적) 기반 설계를 사용했으며, 속도 제어기에는 SO(대칭 최적) 기반 설계를 사용했습니다.
이 함수는 입력 인수를 기반으로 하여 다른 필수 파라미터(예: 지연, 감쇠 인자)를 자동으로 계산합니다.
시스템 지연, 감쇠 인자, 대칭 최적 인자를 지정하는 이 함수에 선택적 입력값을 제공해 디폴트 시스템 응답을 수정할 수 있습니다.
PI_params = mcb.getPIControllerParameters(pmsm,inverter,PU_System,T_pwm,Ts,Ts_speed,Delays);
감쇠 인자(ζ)는 표준 형식의 2차 시스템에 대한 동적 동작을 정의합니다. 여기서 0 < ζ < 1입니다[1]. 부족감쇠된 시스템은 임계감쇠된 시스템이나 과감쇠된 시스템보다 더 빠르게 최종 값에 근접합니다. 진동 없이 반응하는 시스템 중에서 임계감쇠 시스템은 가장 빠른 응답을 보입니다. 과감쇠된 시스템은 어떤 입력에 대해서든 항상 응답이 느립니다. 이 파라미터의 디폴트 값은 입니다.
대칭 최적 인자(a)는 속도 루프의 최적 감쇠를 발생시키는 최대 위상 여유를 얻기 위해 두 코너 주파수의 기하 평균에 교차 주파수를 배치하도록 정의합니다. 여기서 a > 1입니다[2]. 이 파라미터의 디폴트 값은 1.2입니다.
이 예제에서는 파라미터를 사용자 지정하는 방법을 설명합니다.
% Sensor Delays Delays.Current_Sensor = 2*Ts; %Current Sensor Delay Delays.Speed_Sensor = Ts; %Speed Sensor Delay Delays.Speed_Filter = 20e-3; %Delay for Speed filter (LPF) % Controller Delays Delays.OM_damping_factor = 1/sqrt(2); %Damping factor for current control loop Delays.SO_factor_speed = 1.5; %Symmetrical optimum factor 1 < x < 20 % Controller design PI_params = mcb.getPIControllerParameters(pmsm,inverter,PU_System,T_pwm,Ts,Ts_speed,Delays);
최적 이론을 기반으로 제어기 이득 구하기
함수 mcb.CalcFOCGains는 자속 기준 모터 제어 시스템에서 사용되는 PI 제어기에 대해 최적 이론을 기반으로 이득을 계산합니다.
다음 명령을 사용하여 함수 mcb.CalcFOCGains를 호출할 수 있습니다.
PI_params = mcb.CalcFOCGains(pmsm,Ts,Ts_speed);
이 함수는 FOC 알고리즘에서 사용되는 다음 PI 제어기의 이득을 반환합니다.
직접 축(d축) 전류 루프
직교 축(q축) 전류 루프
속도 루프
자세한 내용은 자속 기준 제어를 사용하여 모터를 구동하기 위한 제어기 이득 구하기 항목을 참조하십시오.
이 함수는 어떤 특성도 플로팅하지 않습니다.
제어 분석 수행하기
함수 mcb.getMotorControlAnalysis는 PMSM FOC 전류 제어 시스템의 기본 제어 분석을 수행합니다. 이 함수는 자속 기준 모터 제어 시스템에서 사용되는 계산된 PI 제어기 이득에 대한 주파수 영역 분석을 수행합니다.
참고
이 함수를 사용하려면 Control System Toolbox가 필요합니다.
이 함수를 호출하면(예: mcb.getMotorControlAnalysis(pmsm,inverter,PU_System,PI_params,Ts,Ts_speed)) 전류 제어 루프 또는 서브시스템에 대해 다음 결과를 얻게 됩니다.
폐루프 전류 제어 시스템의 전달 함수
근궤적
보드 다이어그램
안정성 여유(PM 및 GM)
계단 응답
PZ 맵
이 함수는 다음과 같이 해당하는 플롯을 플로팅합니다.

참고 문헌
[1] Ogata, K. (2010). Modern control engineering. Prentice hall.
[2] Leonhard, W. (2001). Control of electrical drives. Springer Science & Business Media. pp. 86.