차트에 열거형 값 할당하기
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)