주요 콘텐츠

활성 상태 출력을 통합하여 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단계: 상태 활동의 수동 추적 제거하기

  1. 모델 old_sf_car에서 차트 shift_logic을 엽니다.

  2. 기호 창을 열기 위해 모델링 탭에서 기호 창을 선택합니다.

  3. gear_state의 각 하위 상태에서 출력 데이터 변수 gear에 값을 할당하는 entry 동작을 삭제합니다.

  4. 기호 창에서 출력 변수 gear를 마우스 오른쪽 버튼으로 클릭하고 Delete를 선택합니다.

2단계: 활성 상태 출력 사용하기

  1. 속성 인스펙터를 엽니다. 모델링 탭에서 속성 인스펙터를 선택합니다.

  2. Stateflow 편집기에서 상태 gear_state를 선택합니다.

  3. 속성 인스펙터에서 모니터링을 위한 출력 만들기 체크박스를 선택하고 Child activity를 선택합니다.

  4. 데이터 이름 필드에서 활성 상태 데이터의 이름 gear를 입력합니다.

  5. 열거형 이름 필드에서 활성 상태 데이터에 대한 열거형 데이터형의 이름 gearType을 입력합니다.

3단계: 신호를 Simulink 블록에 연결하기

  1. Simulink 모델에서 Cast To Double 블록을 추가합니다. 이 블록은 Stateflow 차트의 열거된 출력을 double형의 신호로 변환합니다. 자세한 내용은 Data Type Conversion (Simulink) 항목을 참조하십시오.

  2. shift_logic 차트의 출력 신호 gear를 Cast To Double 블록에 연결합니다.

  3. Cast To Double 블록의 출력 신호를 Transmission 서브시스템에 연결합니다.

  4. Memory (Simulink) 블록을 추가합니다. 이 블록은 Stateflow 차트와 Threshold Calculation 서브시스템 사이의 대수 루프를 방지합니다.

  5. Cast To Double 블록의 출력 신호로부터 Memory 블록으로 두 번째 연결을 만듭니다.

  6. Memory 블록의 출력을 Threshold Calculation 서브시스템에 연결합니다.

시뮬레이션 결과 보기

출력 신호 gear는 Stateflow에 의해 관리되는 열거형입니다. 차트를 Scope 블록에 연결하여 시뮬레이션 중에 활성 상태 출력 신호인 gear를 볼 수 있습니다. 열거된 값의 이름은 gear_state에 있는 하위 상태의 이름과 일치합니다. 추가적인 열거형 값 None은 자식이 활성 상태가 아닌 경우의 시간 스텝을 나타냅니다.

참고 항목

(Simulink) | (Simulink)

도움말 항목