차트에 열거형 값 할당하기
Stateflow® 차트의 가독성을 높이려면 열거형 데이터를 사용하십시오. 열거형 데이터를 사용하면 다음과 같은 작업이 가능합니다.
특정 값으로 제한된 집합을 만들고 해당 값을 이름으로 참조.
관련된 값을 개별 데이터형으로 그룹화.
긴 상수 목록을 정의하는 것을 방지.
열거형 데이터는 Simulink® 모델의 Stateflow 차트에서 지원됩니다. 자세한 내용은 Reference Values by Name by Using Enumerated Data 항목을 참조하십시오.
차트 동작
이 예제에서는 열거형 값을 사용하여 상태 키워드를 제공하는 차트를 만드는 방법을 보여줍니다.

시뮬레이션 동안 차트 동작은 상태 A와 B 간에 전환합니다.
상태 A의 실행
시뮬레이션이 시작되면 상태
A로 진입합니다.상태
A는 값RED를 열거형 데이터color에 할당하여entry동작을 실행합니다.데이터
y는 조건[y > 6]이 true가 될 때까지 시간 스텝당(매 0.2초) 1씩 증분합니다.차트는 상태
A에서 상태B로의 천이를 수행합니다.
상태 B의 실행
상태
A로부터 천이가 발생한 후, 상태B로 진입합니다.상태
B는 값GREEN을 열거형 데이터color에 할당하여entry동작을 실행합니다.데이터
y는 조건[y < 3]이 true가 될 때까지 시간 스텝당(매 0.2초) 1씩 감소합니다.차트는 다시 상태
B에서 상태A로의 천이를 수행합니다.
차트 만들기
상태와 천이를 차트에 추가하기
빈 차트가 있는 Simulink 모델을 만들기 위해 MATLAB® 명령 프롬프트에서
sfnew를 입력합니다.빈 차트에서 상태
A와B를 추가합니다. 텍스트 프롬프트에서 적절한 동작문을 입력합니다.디폴트 천이를 상태
A에 추가하고, 상태A와B사이에 천이를 추가합니다.각 천이를 더블 클릭합니다. 텍스트 프롬프트에서 적절한 조건을 입력합니다.
차트에 대한 열거형 데이터형 정의하기
데이터형 정의를 저장할 파일을 만들기 위해 MATLAB 툴스트립의 홈 탭에서 새로 만들기 > 클래스를 선택합니다.
MATLAB 편집기에서 다음을 입력합니다.
classdef TrafficColors < Simulink.IntEnumType enumeration RED(0) GREEN(10) end end
classdef섹션은TrafficColors라는 정수 기반 열거형 데이터형을 정의합니다.enumeration섹션에 이 데이터형이 허용하는 열거형 값이 있고, 그 뒤에 해당 값의 기본 숫자형 값이 있습니다.파일을 MATLAB 검색 경로의 폴더에
TrafficColors.m으로 저장합니다.
차트 데이터 정의하기
정의되지 않은 데이터의 연결을 맺기 위해 기호 창에서 정의되지 않은 기호 연결 맺기 아이콘
을 클릭합니다. Stateflow 편집기에서 차트의 각 기호에 적절한 범위가 할당됩니다.기호 범위 color출력 데이터 y로컬 데이터 GREEN파라미터 데이터 RED파라미터 데이터 color를 열거형 데이터로 지정하기 위해 속성 인스펙터에서 다음을 수행합니다.유형 필드에서
Enum: <class name>을 선택합니다.<class name>을 앞에서 정의한 데이터형 이름TrafficColors로 바꿉니다.기록 아래에서 신호 데이터 기록 대화 상자를 선택합니다.
y의 범위와 유형을 설정하기 위해 속성 인스펙터에서 다음을 수행합니다.범위 필드에서
출력을 선택합니다.유형 필드에서
uint8을 선택합니다.기록 아래에서 신호 데이터 기록 대화 상자를 선택합니다.
기호 창에서 기호
GREEN과 기호RED를 삭제합니다.color를 열거형 데이터로 지정하기 전에는 Stateflow 편집기에서 이들 기호가 파라미터로 잘못 식별되어 있었습니다.
기록된 출력값 표시하기
모델을 시뮬레이션합니다.
시뮬레이션 탭의 결과 검토 아래에서 데이터 인스펙터
를 선택합니다.시뮬레이션 데이터 인스펙터 (Simulink)의 검사 창에서 신호
color와y을 선택합니다. 기록된 신호를 함께 표시하거나 개별 축에 표시할 수 있습니다. 자세한 내용은 Inspect Simulation Data (Simulink) 항목을 참조하십시오.
MATLAB 작업 공간에서 기록된 데이터에 액세스하기 위해 신호 기록 객체
logsout을 호출합니다. 예를 들어 명령 프롬프트에서 다음을 입력합니다.losgout = out.logsout; colorLog = logsout.getElement("color"); Tbl = table(colorLog.Values.Time,colorLog.Values.Data); Tbl.Properties.VariableNames = ["SimulationTime","Color"]
Tbl = 9×2 table SimulationTime Color ______________ _____ 0 RED 1.6 GREEN 2.8 RED 4 GREEN 5.2 RED 6.4 GREEN 7.6 RED 8.8 GREEN 10 RED
참고 항목
시뮬레이션 데이터 인스펙터 (Simulink)