주요 콘텐츠

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

클래스 인터페이스 구성

튜토리얼의 이 단계에서는 C++ 클래스 인터페이스를 구성합니다. 사용자 지정된 C++ 클래스 인터페이스를 사용하면 생성된 클래스가 특정 코드 표준이나 인터페이스 요구 사항을 충족하게 되므로, 생성 코드를 컴파일한 뒤 생성 후의 사용자 지정 작업을 최소한으로만 수행하여 대규모 아키텍처에 통합할 수 있습니다.

모델 CppClassWorkflowKeyIgnition의 클래스 인터페이스를 사용자 지정하려면:

  • 클래스 이름을 engine_status로 변경합니다.

  • 클래스 네임스페이스를 en1로 설정합니다.

  • 모델의 인포트를 액세스를 위한 set 메서드에서 퍼블릭으로 구성합니다.

  • 집계 구조 기반 get 메서드에서 모든 출력 포트에 액세스할 수 있도록 모델의 아웃포트를 퍼블릭으로 구성합니다.

  • 초기화 및 종료 진입점 메서드의 이름을 업데이트합니다.

모델 클래스 이름 및 네임스페이스 구성

  1. 모델 CppClassWorkflowKeyIgnition가 열려 있지 않으면 모델을 엽니다.

    openExample("CppClassWorkflowKeyIgnition.slx")
  2. C++ 코드 탭에서 코드 인터페이스를 클릭하고 클래스 이름 및 네임스페이스를 선택합니다.

  3. C++ 클래스 이름 필드를 engine_status로 편집합니다.

  4. C++ 클래스 네임스페이스 필드에 en1을 입력합니다.

    Set the model class name and namespace for the Configure C++ Class Settings window for CppClassWorkflowKeyIgnition

  5. 확인을 클릭합니다. 유효성 검사는 대화형 방식으로 수행되며, 잘못된 이름이나 네임스페이스를 입력하면 경고 메시지가 표시됩니다.

  6. 모델을 저장한 다음 빌드를 클릭하여 코드를 빌드하고 다시 생성합니다.

  7. 코드 보기에서 engine_status를 검색하면 생성된 코드의 변경 사항을 볼 수 있습니다.

    Search for new class name in the Code view

클래스 멤버의 가시성 및 액세스 구성

  1. 코드 매핑 편집기를 엽니다.

    코드 매핑 편집기를 열려면 C++ 코드 탭에서 코드 인터페이스를 클릭하고 코드 매핑을 선택하십시오.

  2. 데이터 탭을 클릭하면 데이터 창이 열립니다.

    코드 매핑 스프레드시트는 각 모델 요소 범주에 대한 가시성과 액세스 정보를 표시합니다.

  3. 인포트를 구성합니다.

    • 데이터 가시성 열에서 퍼블릭을 선택하십시오.

    • 멤버 액세스 메서드 열에서 인라인 메서드를 선택하십시오.

  4. 아웃포트를 구성합니다.

    • 데이터 가시성 열에서 퍼블릭을 선택하십시오.

    • 멤버 액세스 메서드 열에서 구조체 기반 메서드를 선택하십시오.

  5. 모델을 저장하고 빌드를 클릭하여 코드를 빌드하고 다시 생성합니다.

  6. 모델 CppClassWorkflowKeyIgnition에서 Inport 블록 keyState를 클릭합니다.

  7. 커서를 블록 위의 줄임표 메뉴에 올려 놓은 다음 코드 탐색을 클릭합니다.

    View of the contextual menu for the keyState inport block

    코드 보기는 블록에 해당하는 코드를 강조 표시합니다.

  8. 코드 보기에서 검색 화살표를 클릭하여 루트 입력 포트 keyState에 대한 set 메서드 setkeyState의 퍼블릭 선언과 정의를 찾습니다.

    View of the code for the setkeyState method

    집계된 루트 아웃포트 getExternalOutputs에 대한 get 메서드는 인포트 set 메서드 바로 아래에 선언됩니다.

  9. getExternalOutputs 메서드 선언에서 식별자 ExtY 위에 커서를 올려놓습니다.

    추적성 대화 상자에는 코드에 해당하는 정의가 표시됩니다.

    View of the traceability dialog box displaying the ExtY structure

  10. 추적성 대화 상자에서 struct ExtY를 클릭하여 구조체를 찾습니다.

        // External outputs (root outports fed by signals with default storage)
        struct ExtY {
          real_T engineState;              // '<Root>/engineState'
          real_T cycleTime;                // '<Root>/cycleTime'
        };
  11. 검색 표시줄에 getExternalOutputs를 입력하고 Enter 키를 눌러 CppClassWorkflowKeyIgnition.cpp에 있는 메서드 정의를 찾습니다.

모델 함수 구성

클래스 메서드 이름을 구성합니다. 모델에서 C++ 코드를 생성하면 모델 진입점 함수가 생성 코드에서 클래스 메서드로 나타납니다. 외부 코드나 인터페이스 요구 사항과 통합하기 위해 생성된 메서드의 이름을 사용자 지정할 수 있습니다.

  1. 코드 매핑 편집기에서 함수 탭을 클릭하여 클래스 메서드를 확인합니다.

  2. 초기화 함수 이름을 구성합니다.

    메서드 이름 열에서 스프레드시트를 클릭하고 편집하여 이름을 initIntegrator로 변경합니다.

  3. 종료 함수 이름을 구성합니다.

    메서드 이름 열에서 스프레드시트를 클릭하고 편집하여 이름을 terminateIntegrator로 변경합니다.

  4. 메서드 미리보기 열에서 업데이트된 이름을 확인합니다.

    View of the CppClassWorkflowKeyIgnition model in Simulink. The toolstrip is at the top. The Simulink model is in the middle. The Code Mappings pane is at the bottom. The Functions tab in the Code Mappings pane is open, displaying updated entry-point function names.

  5. 모델을 저장한 다음 빌드를 클릭하여 코드를 빌드하고 다시 생성합니다.

  6. 코드 보기에서 진입점 함수에 대한 업데이트된 메서드 이름을 검색하여 생성된 코드를 확인합니다.

다음으로, 생성된 C++ 코드를 시뮬레이션하고 검증합니다.