Main Content

PIL 테스트를 사용한 코드 검증 및 프로파일링

이 예제에서는 Texas Instruments® LAUNCHXL-F28379D 하드웨어 보드의 PIL 프로파일링을 설명합니다. PIL(processor-in-the-loop) 시뮬레이션에서 제어 알고리즘은 타깃 하드웨어에서 실행되지만 플랜트 모델은 호스트 컴퓨터에서 실행됩니다. 플랜트 모델은 제어기의 입력 신호와 출력 신호를 시뮬레이션하고 직렬 통신 인터페이스를 사용하여 제어기와 통신합니다. 이 기능을 통해 PIL 시뮬레이션을 사용하여 타깃 하드웨어에서의 실행 시간을 확인한 다음 호스트 컴퓨터에서의 모델 시뮬레이션 실행 시간과 비교할 수 있습니다.

PIL 시뮬레이션에서 얻은 알고리즘의 실행 시간 또는 성능 메트릭은 타깃 하드웨어에서 알고리즘 오버런을 감지하는 데 도움이 됩니다. PIL 프로파일링 리포트는 타깃 하드웨어에서 알고리즘의 평균 실행 시간과 최대 실행 시간을 보여줍니다.

이 예제에서는 mcb_pmsm_foc_sim.slx 모델을 사용하여 PIL 시뮬레이션의 코드 검증을 보여줍니다. 이 예제는 모델의 Current Control 서브시스템에 대한 PIL 프로파일링을 보여줍니다. 이 서브시스템에는 FOC(자속 기준 제어), 전류 스케일링(per-unit 변환), 속도 측정 및 회전자 위치 스케일링(인코더 위치 개수에서 각도 계산) 알고리즘이 포함됩니다. PIL 프로파일링 리포트는 타깃 하드웨어에서 제어 알고리즘의 평균 실행 시간과 최대 실행 시간을 보여줍니다.

이 예제는 다음 작업으로 구성됩니다.

  • PIL 테스트를 사용해 시뮬레이션과 타깃 하드웨어 작동 모드에서 알고리즘을 비교하여 코드 실행을 검증합니다.

  • 타깃 하드웨어에서 알고리즘 실행 시간을 측정하여 PIL 프로파일링을 수행하고 PIL 프로파일링 리포트를 생성합니다.

필요한 MathWorks 제품

  • Motor Control Blockset™

  • Embedded Coder®

  • C2000™ Microcontroller Blockset

지원되는 하드웨어

  • LAUNCHXL-F28379D 제어기 하드웨어 보드

PIL 모델 준비하기

1. 모델 mcb_pmsm_foc_sim을 엽니다.

이 모델은 폐루프 속도 제어를 위해 PMSM 모터와 FOC 알고리즘을 시뮬레이션합니다.

2. Simulink 툴스트립의 하드웨어 탭에서 Hardware Settings를 클릭합니다.

3. 구성 파라미터 대화 상자의 하드웨어 구현에서 Hardware board 필드를 TI Delfino F28379D LaunchPad로 설정합니다.

PIL을 사용하여 코드 검증하기

1. 구성 파라미터 대화 상자에서 하드웨어 구현 > Hardware board settings > Target hardware resources > PIL에서 다음 구성 설정을 선택합니다.

a. Communication Interface - serial을 선택합니다.

b. SCI module - SCI_A를 선택합니다.

c. Serial port in MATLAB preferences - 모델이 하드웨어가 연결된 통신 포트를 자동으로 감지합니다. 이 파라미터는 현재 활성인 MATLAB® 세션 동안 변경되지 않고 그대로 유지됩니다. 통신 포트를 다시 검색하려면 Refresh 버튼을 클릭하십시오.

2. 다음 명령을 사용해 mcb_PIL_config_TI.m 스크립트 파일을 열어 구성 파라미터를 설정합니다.

openExample('mcb/CodeVerificationAndProfilingUsingPILTestingExample','supportingFile','mcb_PIL_config_TI.m');

3. 스크립트에서 모델 이름과 중지 시간을 업데이트합니다.

4. 스크립트를 실행하여 시뮬레이션 모델의 구성 파라미터와 PIL 기본 설정을 업데이트합니다.

5. mcb_pmsm_foc_sim.slx 예제 모델에서 Current Control 서브시스템을 마우스 오른쪽 버튼으로 클릭합니다. C/C++ 코드 메뉴에서 이 서브시스템을 하드웨어에 배포를 선택합니다.

Build code for Subsystem 대화 상자가 표시됩니다. 모든 파라미터에 대해 스토리지 클래스를 Inlined로 설정합니다.

6. 빌드를 클릭하여 Current Control이라는 PIL 서브시스템을 포함하는 untitiled라는 모델을 만듭니다.

7. Current Control 서브시스템의 이름을 Current Control (PIL)로 바꿉니다.

8. Current Control (PIL) 서브시스템을 복사하고 mcb_pmsm_foc_sim.slx 예제 모델에서 Current Control 서브시스템을 바꿉니다.

PIL 모드에서 시스템은 Current Control (PIL) 서브시스템을 타깃에 배포하고 타깃 하드웨어에서 서브시스템을 실행합니다.

9. 호스트 컴퓨터 시뮬레이션과 PIL 시뮬레이션에서 알고리즘 실행을 비교하려면 Current Control 서브시스템을 Current Control (PIL) 서브시스템에 병렬로 연결합니다. 또한 서브시스템 출력에서 신호 기록을 활성화합니다.

10. Simulink 툴스트립의 탭에서 SIL/PIL Manager 앱을 선택합니다.

11. SIL/PIL 툴스트립에서 SIL/PIL Sim Only를 선택합니다.

12. System Under Test 필드에서 Model blocks in SIL/PIL mode를 선택합니다.

13. SIL/PIL 툴스트립에서 Run SIL/PIL을 클릭하여 Current Control (PIL) 서브시스템을 빌드하고 타깃에 배포합니다.

시스템이 서브시스템을 배포한 후, Current Control (PIL) 서브시스템은 타깃 하드웨어 프로세서에서 실행되고 플랜트 모델은 호스트 컴퓨터에서 실행됩니다.

PIL 프로파일링 결과 분석하기

PIL 시뮬레이션이 종료되면 시스템은 프로파일링 리포트를 생성합니다.

참고: PIL 시뮬레이션은 호스트 컴퓨터 기반 시뮬레이션보다 시간이 더 걸립니다. 이는 호스트 컴퓨터와 타깃 하드웨어에서 실행되는 서브시스템 사이의 (Current Control (PIL) 서브시스템의 입력 및 출력과 관련된) 직렬 통신 때문입니다.

고정소수점 데이터형에 대한 이 프로파일링 리포트는 타깃 하드웨어에서 실행되는 Current Control (PIL) 서브시스템의 최대 실행 시간과 평균 실행 시간을 보여줍니다.

시뮬레이션 탭의 데이터 인스펙터 버튼을 사용하여 호스트 컴퓨터 기반 시뮬레이션과 PIL 시뮬레이션(타깃에서 실행됨) 중에 기록된 신호를 비교할 수 있습니다. 이는 호스트 컴퓨터 기반 시뮬레이션과 PIL 시뮬레이션의 정확성을 확인하는 데 도움이 됩니다.

이 플롯은 Current Control (PIL) 서브시스템과 Current Control 서브시스템의 속도 피드백 신호를 비교합니다.

실행 시간이 예산 시간의 60%를 초과하는 경우 다음 기법 중 하나를 사용하여 알고리즘을 최적화할 수 있습니다.

  • RAM에서 실행합니다.

  • 일부 기능을 CLA 또는 다른 CPU로 분담합니다.

  • 알고리즘이 사이클을 하나씩 건너뛰며 실행되도록 조정합니다.

  • 속도 계산과 같이 덜 중요한 기능을 더 느린 속도로 변경합니다.

SIL/PIL 코드 검증에 대한 자세한 내용은 다음 항목을 참조하십시오.