Main Content

개루프 제어에서 3상 AC 모터를 구동하고 ADC 오프셋 보정하기

이 예제에서는 개루프 제어(스칼라 제어 또는 볼트/헤르츠 제어라고도 함)를 사용하여 모터를 구동합니다. 이 기법은 모터의 피드백을 사용하지 않고 고정자 전압과 주파수를 변경하여 회전자 속도를 제어합니다. 이 기법을 사용하여 하드웨어 연결의 무결성을 검사할 수 있습니다. 속도가 일정한 개루프 제어 응용 사례에서는 고정 주파수 모터 전원을 사용합니다. 속도 조정이 가능한 개루프 제어 응용 사례에서는 회전자 속도를 제어하기 위한 가변 주파수 전원이 필요합니다. 일정한 고정자 자기 플럭스를 보장하려면 공급 전압 진폭을 그 주파수에 비례하도록 유지하십시오.

개루프 모터 제어에는 모터 속도에 영향을 미칠 수 있는 외부 조건을 고려하는 기능이 없습니다. 따라서 이 제어 시스템은 원하는 모터 속도와 실제 모터 속도 간 편차를 자동으로 수정할 수 없습니다.

이 모델은 개루프 모터 제어 알고리즘을 사용하여 모터를 구동합니다. 그리고 이 모델은 Motor Control Blockset™을 시작하는 것은 물론, 모터를 구동하여 하드웨어 설정을 검증하는 데에도 도움이 됩니다. 타깃 모델 알고리즘은 또한 전류 센서에서 ADC 값을 읽어오고 직렬 통신을 사용하여 이러한 값을 호스트 모델로 보냅니다.

이 모델을 사용하여 다음을 수행할 수 있습니다.

  • 타깃과의 연결을 검사합니다.

  • 타깃과의 직렬 통신을 검사합니다.

  • 하드웨어 및 소프트웨어 환경을 확인합니다.

  • 전류 센서의 ADC 오프셋을 검사합니다.

  • 인버터와 타깃 설정을 통해 새 모터를 처음으로 구동합니다.

모델

이 예제에는 다음 모델이 포함됩니다.

이들 모델을 시뮬레이션과 코드 생성에 모두 사용할 수 있습니다.

여러 다른 하드웨어 구성에 사용 가능한 모델의 이름은 "코드를 생성하고 타깃 하드웨어에 모델 배포하기" 섹션의 "필수 하드웨어" 항목을 참조하십시오.

필요한 MathWorks 제품

모델을 시뮬레이션하려면:

1. 모델 mcb_open_loop_control_f28069M_DRV8312mcb_open_loop_control_f28069MLaunchPad의 경우

  • Motor Control Blockset™

  • Fixed-Point Designer™

2. 모델 mcb_open_loop_control_f28379d의 경우

  • Motor Control Blockset™

코드를 생성하고 모델을 배포하려면:

1. 모델 mcb_open_loop_control_f28069M_DRV8312mcb_open_loop_control_f28069MLaunchPad의 경우

  • Motor Control Blockset™

  • Embedded Coder®

  • C2000™ Microcontroller Blockset

  • Fixed-Point Designer™

2. 모델 mcb_open_loop_control_f28379d의 경우

  • Motor Control Blockset™

  • Embedded Coder®

  • C2000™ Microcontroller Blockset

  • Fixed-Point Designer™(최적화된 코드 생성에만 필요함)

선행 조건

1. BOOSTXL-DRV8323의 경우 다음 단계를 사용하여 모델을 업데이트합니다.

  • 모델에서 /Open Loop Control/Codegen/Hardware Initialization 경로로 이동합니다.

  • LAUNCHXL-F28379D의 경우: DRV830x Enable 블록을 GPIO124에서 GPIO67로 업데이트합니다.

  • LAUNCHXL-F28069M의 경우: DRV830x Enable 블록을 GPIO50에서 GPIO12로 업데이트합니다.

2. BOOSTXL-3PHGANINV의 경우 다음 단계를 사용하여 모델을 업데이트합니다.

  • LAUNCHXL-F28379D의 경우: mcb_open_loop_control_f28379dConfiguration 패널에서 Inverter Enable LogicActive Low로 설정합니다.

참고: BOOSTXL-3PHGANINV 인버터를 사용하는 경우, BOOSTXL-3PHGANINV의 하단 계층과 LAUNCHXL 보드 사이에 적절한 절연이 가능한지 확인하십시오.

모델 시뮬레이션하기

이 예제는 시뮬레이션을 지원합니다. 다음 단계에 따라 모델을 시뮬레이션합니다.

1. 이 예제에 포함된 모델을 엽니다.

2. 시뮬레이션 탭에서 실행을 클릭하여 모델을 시뮬레이션합니다.

3. 시뮬레이션 탭에서 데이터 인스펙터를 클릭하여 시뮬레이션 결과를 확인하고 분석합니다.

코드를 생성하고 타깃 하드웨어에 모델 배포하기

이 섹션에서는 코드를 생성하고 개루프 제어를 사용하여 모터를 구동하는 방법에 대해 설명합니다.

이 예제는 호스트 모델과 타깃 모델을 사용합니다. 호스트 모델은 제어기 하드웨어 보드에 대한 사용자 인터페이스입니다. 호스트 모델은 호스트 컴퓨터에서 실행할 수 있습니다. 호스트 모델을 사용하기 위한 선행 조건은 타깃 모델을 제어기 하드웨어 보드에 배포하는 것입니다. 호스트 모델은 직렬 통신을 사용하여 타깃 Simulink® 모델에 명령을 내리고 폐루프 제어에서 모터를 실행합니다.

필수 하드웨어

이 예제는 다음 하드웨어 구성을 지원합니다. MATLAB® 명령 프롬프트에서 타깃 모델 이름을 사용하여 해당 하드웨어 구성의 모델을 열 수도 있습니다.

위의 하드웨어 구성과 관련된 연결은 F28069 control card configuration 항목을 참조하십시오.

  • LAUNCHXL-F28379D 제어기 + (BOOSTXL-DRV8301, BOOSTXL-DRV8305, BOOSTXL-DRV8323 또는 BOOSTXL-3PHGANINV) 인버터: mcb_open_loop_control_f28379d

모델 mcb_open_loop_control_f28379d를 구성하려면, Inverter Enable Logic 필드(타깃 모델의 Configuration 패널에 있음)를 다음으로 설정합니다.

  • Active High: BOOSTXL-DRV8301, BOOSTXL-DRV8305 또는 BOOSTXL-DRV8323 인버터와 함께 이 모델을 사용하는 경우.

  • Active Low: BOOSTXL-3PHGANINV 인버터와 함께 이 모델을 사용하는 경우.

위의 하드웨어 구성과 관련된 연결은 LAUNCHXL-F28069M and LAUNCHXL-F28379D Configurations 항목을 참조하십시오.

참고:

  • 이 예제는 3상 AC 모터(PMSM 또는 유도 모터)의 유형과 지원되는 하드웨어에 연결된 인버터의 유형을 지원합니다.

  • 일부 PMSM은 특히 샤프트에 부하가 걸리면 더 높은 속도로 구동되지 않습니다. 이 문제를 해결하려면 주어진 주파수에 대응하는 더 높은 전압을 인가해야 합니다. 다음 단계를 사용하여 모델에서 인가 전압을 높일 수 있습니다.

1. 모델에서 /Open Loop Control/Control_System/VabcCalc/ 경로로 이동합니다.

2. 이득 Correction_Factor_sinePWM을 20%로 업데이트합니다.

3. 안전을 고려해 모터 샤프트, 모터 전류, 모터 온도를 정기적으로 모니터링합니다.

코드를 생성하고 모델을 실행하여 개루프 제어 구현하기

1. 타깃 모델을 시뮬레이션하고 시뮬레이션 결과를 관찰합니다.

2. 하드웨어 연결을 완료합니다.

3. 사용하려는 하드웨어 구성의 타깃 모델을 엽니다. 타깃 모델의 디폴트 하드웨어 구성 설정을 변경하려면 Model Configuration Parameters 항목을 참조하십시오.

4. 타깃 모델의 Configuration 패널에서 다음 모터 파라미터를 업데이트합니다.

  • Number of Pole Pairs

  • PWM Frequency [Hz]

  • Base Speed [RPM]

  • Data type for control algorithm

  • Inverter Enable Logic(mcb_open_loop_control_f28379d 타깃 모델에서만 사용 가능)

5. 샘플 프로그램을 LAUNCHXL-F28379D의 CPU2에 불러옵니다. 예를 들어, GPIO31을 사용하여 CPU2 파란색 LED를 작동하는 프로그램(c28379D_cpu2_blink.slx)을 불러옴으로써 CPU2가 의도치 않게 CPU1용 보드 주변 기기를 사용하지 않도록 합니다. 샘플 프로그램(모델)에 대한 자세한 내용은 Getting Started with Texas Instruments C2000 Microcontroller Blockset (C2000 Microcontroller Blockset)의 "작업 2 - TI Delfino F28379D LaunchPad(Dual Core)용 모델 생성, 구성 및 실행" 섹션을 참조하십시오.

6. Hardware 탭에서 빌드, 배포, 시작을 클릭하여 타깃 모델을 하드웨어에 배포합니다.

참고: 모델 어드바이저에 표시되는 "구성 파라미터 대화 상자의 진단 페이지에 있는 멀티태스크 데이터 저장소 옵션이 'none'입니다" 경고 메시지는 "항상 무시" 버튼을 클릭하여 무시하십시오. 이는 의도된 워크플로의 일부입니다.

7. 타깃 모델에서 host model 하이퍼링크를 클릭하여 연결된 호스트 모델을 엽니다.

호스트 모델과 타깃 모델 간의 직렬 통신에 대한 자세한 내용은 Host-Target Communication 항목을 참조하십시오.

8. 호스트 모델의 Target Selection 영역에서 타깃(TI F28069M, TI F28379D 또는 Other)을 선택합니다.

참고: Other를 선택할 경우, Host Serial Setup 블록 파라미터 대화 상자에 사용 중인 타깃 하드웨어의 Baud rate를 입력할 수 있습니다.

9. 호스트 모델에서 Host Serial Setup 블록, Host Serial Receive 블록, Host Serial Transmit 블록을 열고 포트를 선택합니다.

10. 호스트 모델에서 Reference Speed 값을 입력합니다.

11. 시뮬레이션 탭에서 실행을 클릭하여 호스트 모델을 실행합니다.

12. Start / Stop Motor 스위치의 위치를 On으로 변경하여 모터 구동을 시작합니다.

13. 모터가 구동된 후, Time Scope에서 ${I_a}$ 전류와 ${I_b}$ 전류에 대한 ADC 카운트를 관찰합니다.

참고: 이 예제에서는 모터가 최대 용량으로 구동되지 못할 수 있습니다. 낮은 속도로 모터 구동을 시작하십시오. 또한 Reference Speed를 작은 스텝으로 변경하는 것이 좋습니다(예: 베이스 속도가 3000rpm인 모터의 경우 500rpm으로 모터 구동을 시작한 다음 200rpm의 스텝으로 속도를 늘리거나 줄임).

모터가 구동되지 않으면 Start / Stop Motor 스위치의 위치를 Off로 변경하여 모터를 정지하고 호스트 모델에서 Reference Speed를 변경하십시오. 그런 다음, Start / Stop Motor 스위치의 위치를 On으로 변경하여 모터를 다시 구동합니다.

코드를 생성하고 모델을 실행하여 ADC 오프셋 보정하기

1. 타깃 모델을 시뮬레이션하고 시뮬레이션 결과를 관찰합니다.

2. 하드웨어 연결을 완료합니다.

3. 하드웨어 보드 단자에서 3상에 대한 모터 전선의 연결을 분리합니다.

4. 사용하려는 하드웨어 구성의 타깃 모델을 엽니다. 타깃 모델의 디폴트 하드웨어 구성 설정을 변경하려면 Model Configuration Parameters 항목을 참조하십시오.

5. 샘플 프로그램을 LAUNCHXL-F28379D의 CPU2에 불러옵니다. 예를 들어, GPIO31을 사용하여 CPU2 파란색 LED를 작동하는 프로그램을 불러옴으로써 CPU2가 의도치 않게 CPU1용 보드 주변 기기를 사용하지 않도록 합니다.

6. Hardware 탭에서 빌드, 배포, 시작을 클릭하여 타깃 모델을 하드웨어에 배포합니다.

참고: 모델 어드바이저에 표시되는 "구성 파라미터 대화 상자의 진단 페이지에 있는 멀티태스크 데이터 저장소 옵션이 'none'입니다" 경고 메시지는 "항상 무시" 버튼을 클릭하여 무시하십시오. 이는 의도된 워크플로의 일부입니다.

7. 타깃 모델에서 host model 하이퍼링크를 클릭하여 연결된 호스트 모델을 엽니다.

8. 호스트 모델에서 Host Serial Setup 블록, Host Serial Receive 블록, Host Serial Transmit 블록을 열고 포트를 선택합니다.

9. 시뮬레이션 탭에서 실행을 클릭하여 호스트 모델을 실행합니다.

10. 시간 스코프에서 ${I_a}$ 전류와 ${I_b}$ 전류에 대한 ADC 카운트를 관찰합니다. ADC 카운트의 평균값은 전류 ${I_a}$${I_b}$에 대한 ADC 오프셋 수정을 통해 얻을 수 있습니다. ADC 카운트의 평균값(중앙값)을 구하려면 다음을 수행하십시오.

  • 스코프 창에서 > 측정으로 이동하고 신호 통계량을 선택하여 추적 항목 선택 영역과 신호 통계량 영역을 표시합니다.

  • 추적 항목 선택에서 신호(${I_a}$ 또는 ${I_b}$)를 선택합니다. 선택한 신호의 특성이 신호 통계량 창에 표시됩니다. 선택한 신호의 중앙값은 중앙값 필드에서 볼 수 있습니다.

Motor Control Blockset 예제의 경우, 계산된 ADC(또는 전류) 오프셋 값을 이 예제에 연결된 모델 초기화 스크립트의 inverter.CtSensAOffset 변수와 inverter.CtSensBOffset 변수에 업데이트하십시오. 자세한 지침은 Estimate Control Gains and Use Utility Functions 항목을 참조하십시오.

참고: 계산된 ADC 오프셋은 모델 초기화 스트립트에 구성한 ADC 이득 값 inverter.SPI_Gain_Setting에 따라 다릅니다. ADC 이득을 변경하면 ADC 오프셋도 변경됩니다.