이 페이지는 기계 번역을 사용하여 번역되었습니다. 영어 원문을 보려면 여기를 클릭하십시오.
열거형
열거형 데이터형을 생성하려면 MATLAB® 파일에서 열거형 클래스를 정의하십시오. 그런 다음, 모델 내의 신호, 블록 파라미터 및 상태의 데이터형으로 열거형 클래스를 사용하십시오.
C 구조
typedef enum {
Choice1 = 0,
Choice2
} myEnumType;
절차
현재 폴더에서 MATLAB 파일을 ex_myEnumType.m로 생성하십시오. 이 파일은 열거형 클래스 ex_myEnumType를 정의합니다.
classdef ex_myEnumType < Simulink.IntEnumType enumeration Choice1(0) Choice2(1) end %enumeration methods (Static) function retVal = getHeaderFile() retVal = 'myEnumHdr.h'; end %function function retVal = getDataScope() retVal = 'Exported'; end %function end %methods end %classdef
1. Enumerated Constant 블록과 Multiport Switch 블록이 포함된 ex_pattern_enum 모델을 엽니다.

2. 모델 데이터 편집기에서 파라미터 탭을 선택합니다.
3. 모델에서 Enumerated Constant 블록을 클릭합니다.
4. 모델 데이터 편집기에서 값 열을 사용하여 상수 값을 myChoice로 설정하십시오. myChoice 옆에서 작업 버튼(세로로 나란히 놓인 점 세 개)을 클릭한 다음 만들기를 선택합니다.
5. '새 데이터 만들기' 대화 상자에서 값을 Simulink.Parameter(ex_myEnumType.Choice1)로 설정하고 만들기을 클릭합니다. Simulink.Parameter라는 이름의 myChoice 객체가 기본 작업 공간에 나타납니다. 이 객체는 ex_myEnumType 유형의 열거형 값 Choice1를 저장합니다.
6. 코드 생성 탭에서 스토리지 클래스를 ExportedGlobal로 설정합니다. 이 설정을 사용하면, 해당 객체가 생성된 코드에서 전역 변수로 나타납니다.
7. 모델 데이터 편집기에서 신호 탭을 선택합니다.
8. 모델에서 Enumerated Constant 블록의 출력 신호를 선택하십시오.
9. 모델 데이터 편집기에서 데이터형 열을 사용하여 신호 데이터형을 Enum: ex_myEnumType로 설정하십시오.
10. Multiport Switch 블록을 선택하십시오.
11. 속성 인스펙터에서 다음을 설정합니다:
데이터 포트 순서을
Specify indices에게.enumeration('ex_myEnumType')에 대한 데이터 포트 인덱스. 이 표현식은ex_myEnumType의 모든 열거형 멤버를 반환합니다.
12. 모델 파라미터 파일 패키징 형식을 Modular로 설정하십시오. 이 설정을 사용하면, 생성된 코드에서 ex_myEnumType의 정의가 지정된 헤더 파일인 myEnumHdr.h에 나타날 수 있습니다.
13. 모델을 구축하고 코드를 생성하려면 Ctrl+B를 누르십시오.
결과
생성된 헤더 파일 myEnumHdr.h를 확인합니다. 이 파일은 열거형 데이터형을 정의합니다.
typedef enum {
Choice1 = 0, /* Default value */
Choice2
} ex_myEnumType;
소스 파일 ex_pattern_enum.c를 확인합니다. 이 파일은 myChoice 변수를 정의합니다. step 함수의 알고리즘은 myChoice를 사용하여 입력 신호 중 하나를 출력 신호로 연결합니다.
ex_myEnumType myChoice = Choice1; /* Variable: myChoice
/* Model step function */
void ex_pattern_enum_step(void)
{
/* MultiPortSwitch: '<Root>/Multiport Switch' incorporates:
* Constant: '<S1>/Constant'
*/
if (myChoice == Choice1) {
/* Outport: '<Root>/Data Out' incorporates:
* Inport: '<Root>/Data In 1'
*/
rtY.DataOut = rtU.DataIn1;
} else {
/* Outport: '<Root>/Data Out' incorporates:
* Inport: '<Root>/Data In 2'
*/
rtY.DataOut = rtU.DataIn2;
}
/* End of MultiPortSwitch: '<Root>/Multiport Switch' */
}