활성 상태 출력을 통합하여 Stateflow 차트 단순화하기
이 예제에서는 활성 상태 데이터를 사용하는 경우 차트 계층 구조와 상관관계가 밀접한 데이터를 관리할 필요가 없으므로 일부 Stateflow® 차트의 설계를 단순화하는 방법을 보여줍니다. 활성 상태 데이터를 사용하도록 설정하면 Stateflow는 상태 활동을 Simulink®로의 출력 포트를 통해 보고하거나 차트의 로컬 데이터로 보고합니다. 이 예제에서는 활성 상태 출력 데이터를 추가하여 Stateflow 차트의 설계를 단순화하는 방법을 보여줍니다. 자세한 내용은 Monitor State Activity Through Active State Data 항목을 참조하십시오.
레거시 모델 old_sf_car
에서 Stateflow 차트 shift_logic은 출력 데이터 gear
의 값을 업데이트하여 gear_state
의 자식 상태 활동을 추적합니다.
활성 상태 데이터를 통합함으로써 모델 sf_car
는 차트 활동을 반영하려고 데이터를 수동으로 업데이트하는 것을 피할 수 있습니다. 대신, 차트는 활성 상태 출력인 gear를 통해 자식 상태 활동을 자동으로 출력합니다.
모델 수정하기
old_sf_car
모델의 설계를 단순화하려면 차트 계층 구조와 상관관계가 밀접한 데이터를 제거하고 gear_state
에서 자식 상태 활동에 대한 자동 모니터링을 사용하도록 설정하십시오.
1단계: 상태 활동의 수동 추적 제거하기
모델
old_sf_car
에서 차트shift_logic
을 엽니다.기호 창을 열기 위해 모델링 탭에서 기호 창을 선택합니다.
gear_state
의 각 하위 상태에서 출력 데이터 변수gear
에 값을 할당하는 entry 동작을 삭제합니다.기호 창에서 출력 변수
gear
를 마우스 오른쪽 버튼으로 클릭하고Delete
를 선택합니다.
2단계: 활성 상태 출력 사용하기
속성 인스펙터를 엽니다. 모델링 탭에서 속성 인스펙터를 선택합니다.
Stateflow 편집기에서 상태
gear_state
를 선택합니다.속성 인스펙터에서 모니터링을 위한 출력 만들기 체크박스를 선택하고
Child activity
를 선택합니다.데이터 이름 필드에서 활성 상태 데이터의 이름
gear
를 입력합니다.열거형 이름 필드에서 활성 상태 데이터에 대한 열거형 데이터형의 이름
gearType
을 입력합니다.
3단계: 신호를 Simulink 블록에 연결하기
Simulink 모델에서 Cast To Double 블록을 추가합니다. 이 블록은 Stateflow 차트의 열거된 출력을
double
형의 신호로 변환합니다. 자세한 내용은 Data Type Conversion (Simulink) 항목을 참조하십시오.shift_logic
차트의 출력 신호gear
를 Cast To Double 블록에 연결합니다.Cast To Double 블록의 출력 신호를 Transmission 서브시스템에 연결합니다.
Memory (Simulink) 블록을 추가합니다. 이 블록은 Stateflow 차트와 Threshold Calculation 서브시스템 사이의 대수 루프를 방지합니다.
Cast To Double 블록의 출력 신호로부터 Memory 블록으로 두 번째 연결을 만듭니다.
Memory 블록의 출력을 Threshold Calculation 서브시스템에 연결합니다.
시뮬레이션 결과 보기
출력 신호 gear
는 Stateflow에 의해 관리되는 열거형입니다. 차트를 Scope 블록에 연결하여 시뮬레이션 중에 활성 상태 출력 신호인 gear를 볼 수 있습니다. 열거된 값의 이름은 gear_state
에 있는 하위 상태의 이름과 일치합니다. 추가적인 열거형 값 None
은 자식이 활성 상태가 아닌 경우의 시간 스텝을 나타냅니다.
참고 항목
Data Type Conversion (Simulink) | Memory (Simulink)