주요 콘텐츠

열거형 데이터형 정의하기

Stateflow® 차트의 가독성을 높이려면 열거형 데이터를 사용하십시오. 열거형 데이터를 사용하면 다음과 같은 작업이 가능합니다.

  • 특정 값으로 제한된 집합을 만들고 해당 값을 이름으로 참조.

  • 관련된 값을 개별 데이터형으로 그룹화.

  • 긴 상수 목록을 정의하는 것을 방지.

열거형 데이터는 Simulink® 모델의 Stateflow 차트에서 지원됩니다. 자세한 내용은 Reference Values by Name by Using Enumerated Data 항목을 참조하십시오.

열거형 데이터를 Stateflow 차트에 추가하기 전, 열거형 데이터형을 MATLAB® 클래스 정의 파일에 정의해야 합니다. 각 열거형마다 다른 파일을 만드십시오.

열거형 데이터형 정의의 요소

열거형 데이터형 정의는 세 개의 코드 섹션으로 구성됩니다.

코드 섹션필요 여부목적
classdef

열거형 데이터형의 이름 제공

enumeration

데이터형이 허용하는 열거형 값 나열

methods

아니요

데이터형을 사용자 지정하는 메서드 제공

열거형 데이터형 정의하기

  1. 데이터형 정의를 저장하는 새 파일을 엽니다. 탭의 MATLAB 툴스트립에서 새로 만들기 > 클래스를 선택합니다.

  2. 정의의 classdef 섹션을 작성합니다.

    classdef BasicColors < Simulink.IntEnumType
      ...
    end

    classdef 섹션은 이름이 BasicColors인 열거형 데이터형을 정의합니다. Stateflow는 내장 유형 Simulink.IntEnumType에서 데이터형을 파생합니다. 열거형 데이터형 이름은 데이터형 이름과 작업 공간 변수 이름에서 고유해야 합니다.

  3. 열거형 값을 enumeration 섹션에 정의합니다.

    classdef BasicColors < Simulink.IntEnumType
      enumeration
        Red(0)
        Yellow(1)
        Green(2)
      end
    end

    열거형은 원하는 개수의 값을 정의할 수 있습니다. enumeration 섹션에는 이 데이터형이 허용하는 일련의 열거형 값이 나열됩니다. 각 열거형 값은 이름과 기본 정수 값으로 구성됩니다. 각 이름은 해당 유형 내에서 고유해야 하지만, 다른 열거형에도 나타날 수 있습니다. 디폴트 값은 목록의 첫 번째 값입니다. 단, 사용자가 정의의 methods 섹션에 디폴트 값을 지정한 경우는 예외입니다.

  4. (선택 사항) methods 섹션을 사용하여 데이터형을 사용자 지정합니다. 이 섹션에 포함되는 메서드는 다음과 같습니다.

    • getDefaultValue는 허용되는 값 목록의 첫 번째 값이 아닌 디폴트 열거형 값을 지정합니다.

    • getDescriptionSimulink Coder™에 의해 생성되는 코드의 데이터형에 대한 설명을 지정합니다.

    • getHeaderFileSimulink Coder에 의해 생성되는 코드에 열거형 정의가 포함된 사용자 지정 헤더 파일을 지정합니다.

    • getDataScope을 사용하면 Simulink Coder에 의해 생성되는 코드의 헤더 파일로 열거형 정의를 내보내거나 해당 헤더 파일에서 열거형 정의를 가져올 수 있습니다.

    • addClassNameToEnumNames는 가독성을 향상하며, Simulink Coder에 의해 생성되는 코드의 식별자와 이름 충돌을 방지합니다.

    예를 들어, 이 MATLAB 파일에는 다음을 수행하는 열거형 데이터형 BasicColors에 대한 사용자 지정 정의가 있습니다.

    • 허용되는 값 목록의 마지막 값이 디폴트 열거형 값임을 지정합니다.

    • Simulink Coder에 의해 생성되는 코드의 데이터형에 대한 간략한 설명을 포함합니다. 생성 코드에 설명을 포함시키려면 Simulink 데이터 객체 설명 (Embedded Coder) 모델 구성 파라미터를 활성화하십시오. 이 파라미터에는 Embedded Coder® 라이선스가 필요합니다.

    • 사용자 정의 헤더 파일에서 데이터형의 정의를 가져와 Simulink Coder가 정의를 생성하는 것을 방지합니다.

    • Simulink Coder에 의해 생성되는 코드의 각 열거형 멤버 이름에 데이터형의 이름을 접두사로 추가합니다.

    classdef BasicColors < Simulink.IntEnumType
      enumeration
        Red(0)
        Yellow(1)
        Green(2)
      end
    
      methods (Static = true)
        function retVal = getDefaultValue()
          % GETDEFAULTVALUE Specifies the default enumeration member. 
          % Return a valid member of this enumeration class to specify 
          % the default. If you do not define this method, Simulink uses 
          % the first member.
          retVal = BasicColors.Green;
        end
    
        function retVal = getDescription()
          % GETDESCRIPTION Specifies a string to describe this enumerated 
          % type.
          retVal = 'This defines an enumerated type for colors';
        end
    
        function retVal = getHeaderFile()
          % GETHEADERFILE Specifies the file that defines this type in 
          % generated code. The method getDataScope determines the 
          % significance of the specified file.
          retVal = 'imported_enum_type.h';
        end
    
        function retVal = getDataScope()
          % GETDATASCOPE Specifies whether generated code imports or 
          % exports this type. Return one of these strings:
          % * 'Auto': define type in model_types.h, or import if header 
          %           file specified
          % * 'Exported': define type in a generated header file
          % * 'Imported': import type definition from specified header 
          %               file
          % If you do not define this method, DataScope is 'Auto' by 
          % default.
          retVal = 'Imported';
        end
    
        function retVal = addClassNameToEnumNames()
          % ADDCLASSNAMETOENUMNAMES Specifies whether to add the class 
          % name as a prefix to enumeration member names in generated 
          % code. Return true or false.
          % If you do not define this method, no prefix is added.
          retVal = true;
        end % function
      end % methods
    end % classdef
    

  5. 파일을 MATLAB 경로에 저장합니다. 파일의 이름은 데이터형의 이름과 정확히 일치해야 합니다. 예를 들어, 데이터형 BasicColors에 대한 정의는 이름이 BasicColors.m인 파일에 있어야 합니다.

    MATLAB 검색 경로에 폴더를 추가하려면 명령 프롬프트에 addpath pathname을 입력합니다.

속성 인스펙터에 데이터형 지정하기

열거형 데이터를 차트에 추가할 때 해당 유형을 속성 인스펙터에 지정하십시오.

  1. 유형 필드에서 Enum: <class name>을 선택합니다.

  2. <class name>을 데이터형의 이름으로 바꿉니다. 예를 들어, Enum: BasicColors유형 필드에 입력할 수 있습니다.

  3. (선택 사항) 접두사가 지정된 식별자를 사용하여 열거형 데이터의 초기값을 입력합니다. 초기값은 유효한 MATLAB 표현식으로 평가되어야 합니다. 접두사가 지정된 식별자와 접두사가 지정되지 않은 식별자에 대한 자세한 내용은 Notation for Enumerated Values 항목을 참조하십시오.

참고 항목

도움말 항목