이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.
서브시스템 코드를 별도의 함수 및 파일로 생성
Atomic Subsystem을 구성하여 별도의 함수와 파일에 코드를 생성하도록 설정할 수 있습니다. 이를 통해 코드의 모듈성이 향상되며, 개별 서브시스템에 대한 단위 테스트를 수행할 수 있게 됩니다.
함수 패키징 Subsystem 블록 파라미터에는 서브시스템이 별도의 함수 형태로 코드를 생성하도록 하는 두 가지 설정이 있습니다. 재사용 가능 함수 옵션은 I/O, 상태 및 파라미터를 함수 인수로 전달하는 함수를 생성합니다. 재사용 불가 함수 옵션은 I/O, 상태 및 파라미터를 함수 인수와 전역 데이터 구조의 조합으로 전달하는 함수를 생성합니다.
서브시스템 간의 함수 의존성
서브시스템용 코드를 생성할 때, 서브시스템 함수 코드가 별도의 파일에 있더라도 해당 코드는 모델의 전역 데이터 구조를 참조할 수 있습니다. 각 서브시스템 코드 파일에는 의존성을 설명하는 include 지시문과 주석이 포함되어 있습니다. 코드 생성기는 순환 파일 종속성을 확인하고, 빌드 시 이에 대한 경고를 출력합니다. 코드 생성기가 코드를 어떻게 패키징하는지에 대한 설명은 Manage Build Process File Dependencies를 참조하십시오.
상위 모델용으로 생성된 코드와 독립적인 서브시스템 함수 코드를 생성하려면, Generate Reusable Code from Library Subsystems Shared Across Models에 설명된 대로 해당 서브시스템을 라이브러리에 배치하고 재사용 가능한 서브시스템으로 구성하십시오.
Embedded Coder®가 있다면, 서로 다른 함수 인터페이스를 가진 재사용 가능한 서브시스템들로 구성된 라이브러리에 대한 코드를 생성할 수 있습니다. 자세한 내용은 다음을 참조하십시오.
Library-Based Code Generation for Reusable Library Subsystems (Embedded Coder)
파일 패키징 형식 (Embedded Coder)
서브시스템을 재사용 가능한 함수로 생성
1. SubsystemAtomic와 같은 서브시스템이 포함된 모델을 엽니다.
SubsystemAtomic

Embedded Coder를 사용 중인 경우, C 코드 탭에서 코드 뷰를 클릭하여 코드 뷰 편집기를 여십시오.
2. Subsystem 블록을 마우스 오른쪽 버튼으로 클릭한 다음, 블록 파라미터 버튼
를 클릭합니다.
3. 서브시스템 파라미터 대화 상자에서 아토믹 단위로 처리가 선택되어 있는지 확인하십시오. 해당 파라미터를 선택하면, 코드 생성 탭에서 함수 패키징 파라미터를 사용할 수 있습니다.
4. 코드 생성 탭을 클릭하고 함수 패키징 파라미터에서 Reusable function를 선택하십시오. 이를 통해 다음 두 가지 파라미터를 사용할 수 있습니다:
5. 파일 이름 옵션 파라미터를 Use subsystem name로 설정하십시오.
6. 적용을 클릭한 다음 대화 상자를 닫습니다.
7. Embedded Coder를 사용 중인 경우, 구성 파라미터 대화 상자를 엽니다. 모델 구성 파라미터 파일 패키징 형식 (Embedded Coder)가 Modular로 설정되어 있는지 확인하십시오.
8. 코드를 생성합니다.
#include "SS1.h"
/* Include model header file for global data */
#include "SubsystemAtomic.h"
#include "SubsystemAtomic_private.h"
/* Outputs for atomic system: '<Root>/SS1' */
real_T myfun(DW_myfun_T *localDW)
{
/* DiscreteIntegrator: '<S1>/Integrator' */
return localDW->Integrator_DSTATE;
}
/* Update for atomic system: '<Root>/SS1' */
void myfun_Update(real_T rtu_In1, DW_myfun_T *localDW)
{
/* Update for DiscreteIntegrator: '<S1>/Integrator' */
localDW->Integrator_DSTATE += rtu_In1;
}
재사용 가능한 함수 myfun는 입력과 상태를 서브시스템 함수의 인수로 전달합니다.
자세한 내용은 Generate Reentrant Code from Subsystems 항목과 Generate Reusable Code from Library Subsystems Shared Across Models 항목을 참조하십시오.
서브시스템을 재사용 불가능한 함수로 생성
1. SubsystemAtomic와 같은 서브시스템이 포함된 모델을 엽니다.
SubsystemAtomic

Embedded Coder를 사용 중인 경우, C 코드 탭에서 코드 뷰를 클릭하여 코드 뷰 편집기를 여십시오.
2. Subsystem 블록을 마우스 오른쪽 버튼으로 클릭한 다음, 블록 파라미터 버튼
를 클릭합니다.
3. 서브시스템 파라미터 대화 상자에서 아토믹 단위로 처리가 선택되어 있는지 확인하십시오. 해당 파라미터를 선택하면, 코드 생성 탭에서 함수 패키징 파라미터를 사용할 수 있습니다.
4. 코드 생성 탭을 클릭하고 함수 패키징 파라미터에서 Nonreusable function를 선택하십시오. 이를 통해 다음 두 가지 파라미터를 사용할 수 있습니다:
5. 파일 이름 옵션 파라미터를 Use subsystem name로 설정하십시오.
6. 적용을 클릭한 다음 대화 상자를 닫습니다.
7. Embedded Coder를 사용 중인 경우, 구성 파라미터 대화 상자를 엽니다. 모델 구성 파라미터 파일 패키징 형식 (Embedded Coder)가 Modular로 설정되어 있는지 확인하십시오.
8. 코드를 생성합니다.
#include "SS1.h"
/* Include model header file for global data */
#include "SubsystemAtomic.h"
#include "SubsystemAtomic_private.h"
/* Outputs for atomic system: '<Root>/SS1' */
void myfun(void)
{
/* Outport: '<Root>/Out1' incorporates:
* DiscreteIntegrator: '<S1>/Integrator'
*/
SubsystemAtomic_Y.Out1 = SubsystemAtomic_DW.Integrator_DSTATE;
}
/* Update for atomic system: '<Root>/SS1' */
void myfun_Update(void)
{
/* Update for DiscreteIntegrator: '<S1>/Integrator' */
SubsystemAtomic_DW.Integrator_DSTATE += SubsystemAtomic_B.Sum;
}
재사용 불가능한 함수 myfun는 전역 데이터 구조체 SubsystemAtomic_Y와 SubsystemAtomic_DW를 통해 입력과 상태를 전달받습니다.