차트 또는 상태로 진입하기
차트와 상태 진입이 발생하는 경우는 다음과 같습니다.
차트가 처음으로 활성화될 때. 이를 차트 초기화라고 합니다.
상태로의 유효한 천이가 끝날 때. 천이 평가하기 항목을 참조하십시오.
차트 또는 상태로 진입 워크플로
다음 플로우 차트는 차트 또는 상태로 진입 시 Stateflow®가 이벤트를 진행하는 과정을 보여줍니다. 이 플로우 차트에서 현재 상태는 의사결정이나 프로세스가 진행 중인 상태를 의미합니다.
차트 진입
Stateflow 차트가 처음 활성화될 때를 초기화라고 합니다. 차트가 초기화될 때 차트로 진입되고 Stateflow는 배타적(OR) 상태의 디폴트 천이를 실행합니다. 차트에서 최상위 수준의 상태가 병렬(AND)인 경우 순서 번호에 따라 활성화됩니다.
차트가 시간 t = 0
전에 디폴트 천이를 수행하도록 하려면 차트 속성 대화 상자에서 초기화 시 차트 실행(진입) 체크박스를 선택합니다. 이 옵션을 선택하면 Stateflow 차트가 Simulink® 초기화와 동시에 초기화됩니다. 그런 다음 차트의 디폴트 천이 경로가 모델 초기화 단계에서 실행됩니다.
상태 진입
상태가 entry로 표시되면 상태의 entry 동작이 실행됩니다. 차트가 활성화되고 초기화가 수행되면 최상위 상태가 활성 상태가 됩니다. 상태는 다음 중 한 가지 방식으로 entry로 표시됩니다.
들어오는 천이가 상태 경계를 가로지릅니다.
들어오는 천이가 상태 경계에서 끝납니다.
상태가 활성 상태의 병렬 상태 자식입니다.
entry 동작
entry 동작 앞에는 접두사 entry
또는 줄임말 en
가 오고, 그 뒤에는 필수 콜론(:
)과 하나 이상의 동작이 옵니다. 여러 동작은 캐리지 리턴, 세미콜론(;
) 또는 쉼표(,
)로 구분합니다. 문에 상태 동작 유형을 명시적으로 지정하지 않으면 차트는 해당 문을 entry
,during
동작으로 처리합니다.
Stateflow 차트로 진입하기
이 예제에서는 차트가 처음 활성화될 때 차트 초기화가 발생합니다.
차트가 슬립 상태로 전환될 때까지 차트 또는 상태로 진입 워크플로 항목에 따라 차트를 초기화하기 위한 단계는 다음 순서를 따릅니다.
디폴트 천이 동작이 실행되고
x = 0
,y = 0
,z = 0
입니다.StateA
가 entry로 표시됩니다.StateA
가 비활성 부모의 하위 상태가 아닙니다.StateA
에 대한entry
동작을 수행합니다. 이제x = 1
입니다.StateA
는 원래 entry로 표시되었던 상태입니다.StateA
에 이력 연결점이 포함되어 있지 않습니다.하위 상태
StateA1
로의 디폴트 천이가 있습니다. 천이 평가 플로우 차트로 이동합니다.천이 평가 플로우 차트를 따라
entry
에StateA1
을 표시합니다. exit 동작 플로우 차트로 이동합니다.현재 상태
StateA
가 대상 상태StateA1
의 상위 상태입니다. entry 동작 플로우 차트로 돌아갑니다.StateA1
이 비활성 부모의 하위 상태가 아닙니다.StateA1
에 대한entry
동작을 수행합니다. 이제x = 3
입니다.StateA1
은 원래 entry로 표시되었던 상태입니다.StateA1
에 이력 연결점이 포함되어 있지 않습니다.StateA1
에 디폴트 천이가 포함되어 있지 않습니다.StateA1
에 단일 하위 상태가 포함되어 있지 않습니다.차트가 슬립 상태로 전환됩니다.
1단계부터 14단계는 초기 시간 스텝에서 수행됩니다. 이 단계를 통해 차트 초기화 프로세스가 완료됩니다.
이력 연결점을 사용하여 상태로 진입하기
디폴트 천이와 관계없이 Stateflow 차트가 이전에 활성 상태였던 하위 상태를 기억하고 돌아갈 수 있도록 하려면 이력 연결점을 사용하십시오. 상태 내에 이력 연결점을 배치하면 배타적(OR) 하위 상태로 이어지는 디폴트 천이가 무시됩니다. 상태 내에 이력 연결점을 배치한 후 진입 시에 Stateflow 차트가 이전 활성 상태를 기억하고 해당 상태로 진입합니다. 이력 연결점은 해당 연결점이 표시되는 계층 수준에만 적용됩니다.
이 예제에서는 전등이 켜지거나 꺼질 수 있습니다. 이러한 옵션은 상태 Power_on
과 Power_off
로 표시됩니다. 옵션은 입력 이벤트 switch_on
과 switch_off
에 의해 제어됩니다. 전등이 켜지는 경우 전등은 어둡거나 밝을 수 있습니다. 이러한 옵션은 상태 Low
와 High
로 표시되고 입력 이벤트 switch_low
와 switch_high
에 의해 제어됩니다.
처음에 차트는 슬립 상태입니다. 상태 Power_off
는 활성입니다. 상태가 Power_on
이 마지막으로 활성이었을 때 High
는 이전 활성 하위 상태였습니다. 이벤트 switch_on
이 발생하고 상태 Power_on
이 entry로 표시됩니다. 이 시점에 p = 0
입니다.
차트가 슬립 상태로 전환될 때까지 차트 또는 상태로 진입 워크플로 항목에 따라 상태 Power_on
으로 진입하기 위한 실행 단계는 다음 순서를 따릅니다.
Power_on
이 비활성 부모의 자식이 아닙니다.Power_on
에 대한 entry 동작이 없습니다.Power_on
은 원래 entry로 표시되었던 상태입니다.Power_on
에 이력 연결점이 있습니다.High
가 이전 활성 하위 상태였습니다. 이제p = 2
입니다.High
에 이력 연결점이 포함되어 있지 않습니다.High
에 디폴트 천이가 포함되어 있지 않습니다.High
에 단일 하위 상태가 포함되어 있지 않습니다.차트가 슬립 상태로 전환됩니다.
이 단계를 통해 Power_on
과 High
에 대한 entry
동작이 완료됩니다.
슈퍼천이를 사용하여 상태로 진입하기
슈퍼천이는 차트에서 서로 다른 수준 간의 천이입니다. 슈퍼천이는 최상위 차트의 상태와 그 서브차트 중 하나의 상태 사이, 또는 차트에서 동일한 수준이나 다른 수준의 다른 서브차트에 있는 상태 사이에서 일어날 수 있습니다. 차트에서 여러 수준에 걸치는 슈퍼천이를 만들 수 있습니다.
상태가 슈퍼천이를 통해 진입하면 최종 대상의 entry 동작을 실행하기 전에 상위 상태가 활성으로 표시되고 entry 동작이 실행되어야 합니다. 이 예제에서 StateB1
은 StateA2
로부터의 entry로 표시되었습니다. 이 시점에는 x = 5
, y = 5
, z = 1
입니다.
차트가 슬립 상태로 전환될 때까지 차트 또는 상태로 진입 워크플로 항목에 따라 상태 StateB1
로 진입하기 위한 실행 단계는 다음 순서를 따릅니다.
StateB1
이 비활성 부모(StateB
)의 하위 상태입니다.StateB
이 활성으로 표시됩니다.StateB
이 비활성 부모의 하위 상태가 아닙니다.StateB
에 대한 entry 동작을 수행합니다. 이제x = 4
입니다.StateB
는 원래 entry로 표시되었던 상태가 아닙니다.StateB1
에 대한 entry 동작을 수행합니다. 이제x = 3
입니다.StateB1
은 원래 entry로 표시되었던 상태입니다.StateB1
에 이력 연결점이 없습니다.StateB1
에 디폴트 천이가 포함되어 있지 않습니다.StateB1
에 단일 하위 상태가 포함되어 있지 않습니다.차트가 슬립 상태로 전환됩니다.
이 단계를 통해 StateB
와 StateB1
에 대한 entry
동작이 완료됩니다.