주요 콘텐츠

이 페이지는 기계 번역을 사용하여 번역되었습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

생성된 C++ 코드 시뮬레이션 및 검증

튜토리얼의 이 단계에서는 생성된 코드가 제공하는 결과가 Simulink®에서 모델링한 알고리즘의 결과와 수치적으로 동일한지 확인합니다. CppClassWorkflowKeyIgnition를 표준 모드와 SIL(Software-in-the-Loop) 모드에서 시뮬레이션하기 위한 테스트 하네스 모델을 만든 다음, 시뮬레이션 데이터 인스펙터를 사용하여 시뮬레이션을 비교합니다.

일반적으로, 생성된 코드를 테스트하기 위해 SIL(Software-in-the-Loop) 및 PIL(Processor-in-the-Loop) 시뮬레이션을 실행할 수 있습니다. SIL 시뮬레이션은 개발 컴퓨터에서 생성 코드를 컴파일하고 실행합니다. PIL 시뮬레이션은 개발 컴퓨터에서 소스 코드를 크로스 컴파일합니다. 그런 다음 PIL 시뮬레이션은 타깃 프로세서나 이와 동등한 명령어 세트 시뮬레이터에서 오브젝트 코드를 다운로드하여 실행합니다. SIL 및 PIL 시뮬레이션을 사용하여 다음을 수행할 수 있습니다.

  • 코드의 수치적 동작을 검증합니다.

  • 코드 커버리지 메트릭과 실행 시간 메트릭을 수집합니다.

  • IEC 61508, IEC 62304, ISO 26262, EN 50128 또는 DO-178 인증 획득을 위해 진행합니다.

테스트 하네스 만들기

이 섹션에서는 테스트 중인 모델인 CppClassWorkflowKeyIgnition를 참조하기 위해 빈 Simulink 모델에서 테스트 하네스 CppClassHarness를 생성합니다. Simulink Test™ 라이선스가 있는 경우 간소화된 워크플로를 사용하여 컴포넌트 모델에서 테스트 하네스를 만들 수 있습니다. 자세한 내용은 Create or Import Test Harnesses and Select Properties (Simulink Test) 항목을 참조하십시오.

하네스 모델은 참조된 모델에 대한 테스트 입력을 생성합니다.

  1. CppClassWorkflowKeyIgnition 모델을 엽니다.

    openExample("CppClassWorkflowKeyIgnition.slx");
  2. 모델 탐색기를 엽니다. 모델링 탭의 설계 아래에서 모델 탐색기를 클릭합니다.

  3. 모델 탐색기에서 CppClassWorkflowKeyIgnition 모델에 대한 구성을 내보냅니다.

    1. 모델 계층 구조에서 Simulink 루트를 확장하고, CppClassWorkflowKeyIgnition를 마우스 오른쪽 버튼으로 클릭한 다음, 구성 > 활성 구성 내보내기를 선택합니다.

    2. 내보내기 대화 상자에서 구성을 cpp_sil_configuration이라는 이름으로 저장합니다.

  4. 모델 탐색기 도구 모음에서 New Model button를 클릭하여 새 모델을 만듭니다.

  5. 제목 없는 새 모델을 CppClassHarness라는 이름으로 저장합니다.

  6. 저장된 구성을 하네스 모델 CppClassHarness로 가져옵니다.

    1. 모델 계층 구조에서 CppClassHarness를 마우스 오른쪽 버튼으로 클릭하고 구성 > 가져오기를 선택합니다.

    2. 가져오기 대화 상자에서 cpp_sil_configuration을 선택하고 열기를 클릭합니다.

    3. 확인 대화 상자가 열리면 확인를 클릭하여 구성을 저장합니다. 그런 다음 모델 탐색기에서 CppClassHarness를 마우스 오른쪽 버튼으로 클릭하고 모델을 저장합니다.

    4. 모델 탐색기를 닫습니다.

    이 시점에서 하네스 모델은 테스트 중인 모델(CppClassWorkflowKeyIgnition)과 동일한 구성 파라미터를 사용하도록 구성됩니다. 각 모델의 구성 파라미터 대화 상자를 열고 설정을 비교하여 구성 파라미터를 가져왔는지 확인할 수 있습니다.

  7. 하네스 모델 CppClassHarness의 Simulink 캔버스에 Pulse Generator 블록, 두 개의 Outport 블록, 출력 포트와 펄스 생성기 사이에 Model 블록을 추가합니다.

  8. Model 블록을 더블 클릭합니다. 블록 파라미터 대화 상자에서 다음을 수행할 수 있습니다.

    1. 모델 이름에서 찾아보기를 클릭하고 CppClassWorkflowKeyIgnition을 선택합니다.

    2. 열기를 클릭한 다음 확인를 클릭합니다.

  9. Pulse Generator 블록을 Model 블록 CppClassWorkflowKeyIgnitionkeyState 입력 포트에 연결하고, 두 개의 Outport 블록을 Model 블록 CppClassWorkflowKeyIgnitionengineStatecycleTime 출력 포트에 연결합니다.

    Harness model CppClassHarness shows the connected function generator, Model block CppClassWorkflowKeyIgnition, outputs engineState and cycleTime.

  10. Pulse Generator 블록을 더블 클릭하여 블록 파라미터 대화 상자를 엽니다. 블록 파라미터 대화 상자에서 다음을 수행할 수 있습니다.

    • 펄스 유형샘플 기반으로 설정합니다.

    • 진폭2로 설정합니다.

    • 기간(샘플 수)200으로 설정합니다.

    • 펄스 폭(샘플 수)2로 설정합니다.

    • 위상 지연(샘플 수)200으로 설정합니다.

    • 샘플 시간0.01로 설정합니다.

    • 다른 옵션은 디폴트 설정 그대로 두십시오.

    확인을 클릭합니다.

  11. 최상위 입력 및 출력 신호 라인에 레이블을 추가합니다.

    • 펄스 발생기를 Model 블록에 연결하는 신호선을 더블 클릭하고 input을 입력합니다.

    • Model 블록과 engineState 출력 포트를 연결하는 신호선을 더블 클릭하고 outputState를 입력합니다.

    The harness model for CppClassWorkflowKeyIgnition contains the input stimulus pulse generator and labeled input signal and output signal.

  12. CppClassHarness에 대한 구성 파라미터 대화 상자를 엽니다.

  13. 데이터 가져오기/내보내기 창에서 신호 기록을 선택합니다. 확인을 클릭합니다.

  14. 모델을 저장합니다.

표준 모드에서 모델 시뮬레이션

표준 모드에서 하네스 모델을 실행하고 시뮬레이션 데이터 인스펙터에서 결과를 캡처합니다.

  1. 하네스 모델에서 모델링 탭을 선택하고 모델 데이터 편집기를 클릭하여 모델 데이터 편집기를 엽니다.

  2. 모델 데이터 편집기에서 신호 탭을 선택합니다.

  3. 드롭다운 목록의 설정을 설계에서 계측으로 변경합니다.

  4. 데이터 테이블의 이름 열에서 inputoutputState 신호를 찾아 데이터 기록 열에서 해당 확인란을 선택합니다.

    The Model Data Editor panel displays at the bottom of the Simulink window and shows the Log Data check boxes selected for the input and outputState signals.

    데이터 기록 열의 선택된 체크 박스는 어떤 신호가 시뮬레이션 데이터 인스펙터에 시뮬레이션 데이터를 기록할지를 지정합니다.

  5. Model 블록 CppClassWorkflowKeyIgnition을 마우스 오른쪽 버튼으로 클릭합니다. 상황별 메뉴에서 블록 파라미터를 선택합니다.

  6. 블록 파라미터 대화 상자에서 시뮬레이션 모드표준으로 설정되어 있는지 확인합니다. 확인을 클릭합니다.

  7. 실행을 클릭하면 CppClassHarness를 시뮬레이션할 수 있습니다.

  8. 시뮬레이션이 완료되면 시뮬레이션 데이터 인스펙터에서 시뮬레이션 결과를 확인합니다. 시뮬레이션 데이터 인스펙터가 아직 열려 있지 않으면 결과 검토 아래의 시뮬레이션 탭에서 데이터 인스펙터를 클릭하십시오.

  9. 가장 최근(현재) 실행의 경우 실행 이름 필드를 더블 클릭하고 실행 이름을 CppClassHarness: Normal mode로 변경합니다.

  10. 신호를 플로팅하도록 inputoutputState를 선택합니다.

    Simulation results for input and outputState signals.

SIL 모드에서 모델 시뮬레이션

다음으로, SIL 모드에서 하네스 모델을 실행합니다. SIL 시뮬레이션은 개발 컴퓨터에서 코드를 생성하고 컴파일하고 실행합니다. 시뮬레이션 데이터 인스펙터가 결과를 기록합니다.

  1. CppClassHarness 모델 창에서 CppClassWorkflowKeyIgnition 모델 블록을 마우스 오른쪽 버튼으로 클릭하고 블록 파라미터를 선택합니다.

  2. 블록 파라미터 대화 상자에서 시뮬레이션 모드Software-in-the-loop (SIL)로 설정하고 코드 인터페이스Top model로 지정합니다. 확인을 클릭합니다. Model 블록은 시뮬레이션이 상위 모델에서 SIL 모드로 실행됨을 나타냅니다.

    The CppClassWorkflowKeyIgnition Model block indicates "SIL: Top".

  3. CppClassHarness 모델을 시뮬레이션합니다. 진단 뷰어 패널이 열리고 빌드 및 코드 생성 상태가 표시됩니다.

    코드 생성 리포트 창이 열리면 나중에 이 튜토리얼을 살펴볼 수 있도록 최소화하십시오.

  4. 시뮬레이션이 완료되면 시뮬레이션 데이터 인스펙터에서 실행 이름 필드를 더블 클릭하고 새 실행의 이름을 CppClassHarness: SIL mode로 변경합니다.

  5. 신호를 플로팅하도록 inputoutputState를 선택합니다.

시뮬레이션 결과 비교

시뮬레이션 데이터 인스펙터를 사용하여 시뮬레이션 결과를 비교합니다.

  1. 시뮬레이션 데이터 인스펙터에서 비교 탭을 클릭합니다.

  2. 기준 필드에서 CppClassHarness: Normal mode를 선택합니다.

  3. 비교 대상 필드에서 CppClassHarness: SIL mode를 선택합니다.

  4. 비교를 클릭합니다.

시뮬레이션 데이터 인스펙터는 표준 모드 결과와 SIL 모드 결과가 일치함을 보여 줍니다. 비슷한 방식으로 표준 모드와 PIL 모드의 결과를 비교할 수 있습니다. 표준 모드 시뮬레이션 결과를 SIL 및 PIL 시뮬레이션과 비교하면 생성된 애플리케이션이 예상대로 수행되는지 확인하는 데 도움이 됩니다.

The Simulation Data Inspector shows the outputState waveform and indicates that the simulation results match.

또는 생성된 모델 코드를 검증하는 간소화된 워크플로를 위해 SIL/PIL Manager 앱을 사용할 수 있습니다.

다음으로, 생성 코드를 배포할 수 있는 방법을 살펴봅니다.