주요 콘텐츠

묵시적 이벤트를 사용하여 차트 동작 제어하기

묵시적 이벤트는 차트 실행 중 다음 시점에 발생하는 내장 이벤트입니다.

  • 차트가 웨이크업 상태가 될 때.

  • 차트가 상태로 진입하고 상태가 활성 상태가 될 때.

  • 차트가 상태에서 진출하고 상태가 비활성 상태가 될 때.

  • 차트가 내부 데이터 객체에 값을 할당할 때.

이러한 이벤트는 사용자가 명시적으로 정의하거나 트리거하지 않으므로 묵시적입니다. 묵시적 이벤트는 해당 이벤트가 발생하는 차트의 자식이며 부모 차트에서만 볼 수 있습니다.

차트 실행에 따른 묵시적 이벤트

키워드 tick은 이산시간 시뮬레이션에서 차트가 웨이크업 상태가 될 때 생성되는 묵시적 이벤트를 지정합니다.

예를 들어, 이 차트에서 FanHeater는 병렬(AND) 상태입니다. 각 상태에는 하위 상태 OnOff 쌍이 있습니다. 처음에 하위 상태 Fan.OffHeater.Off는 활성입니다. 차트는 웨이크업 상태가 될 때마다 tick 이벤트를 생성합니다. 세 번째 tickHeater.Off에서 Heater.On으로의 천이를 트리거합니다. 유사하게, 네 번째 tickFan.Off에서 Fan.On으로의 천이를 트리거합니다. 여덟 번째 tick에서 차트는 Fan.OffHeater.Off로 다시 천이됩니다.

Stateflow chart that uses the implicit event tick.

시간 논리 연산자 after에 대한 자세한 내용은 시간 논리를 사용하여 차트 실행 제어하기 항목을 참조하십시오.

참고

tick 이벤트는 평가 중인 동작이 포함된 차트를 참조합니다. 이 이벤트는 다른 차트를 참조할 수 없습니다.

데이터와 상태에 따른 묵시적 이벤트

Simulink® 모델의 Stateflow® 차트에서, 다음 연산자는 차트가 변수의 값을 설정하거나 차트가 상태에 진입하거나 차트가 상태에서 진출할 때 묵시적 이벤트를 생성합니다.

연산자구문설명
change

change(data_name)

chg(data_name)

차트가 변수 data_name의 값을 설정할 때 묵시적 로컬 이벤트를 생성합니다.

상태 동작 또는 천이 동작이 변수 Engine.rpm에 값을 쓸 때의 묵시적 로컬 이벤트를 정의합니다.

change(Engine.rpm)

enter

enter(state_name)

en(state_name)

지정된 상태 state_name이 활성화될 때 묵시적 로컬 이벤트를 생성합니다.

차트 실행이 상태 Fan.On에 진입할 때의 묵시적 로컬 이벤트를 정의합니다.

enter(Fan.On)

exit

exit(state_name)

ex(state_name)

지정된 상태 state_name이 비활성화될 때 묵시적 로컬 이벤트를 생성합니다.

차트 실행이 상태 Fan.Off에서 나갈 때의 묵시적 로컬 이벤트를 정의합니다.

exit(Fan.Off)

둘 이상의 상태 또는 데이터 객체에 동일한 이름이 있는 경우 점 표기법을 사용하여 상태의 이름을 검증합니다. 자세한 내용은 Identify Data by Using Dot Notation 항목을 참조하십시오.

예를 들어, 이 차트에서 FanHeater는 병렬(AND) 상태입니다. 각 상태에는 하위 상태 OnOff 쌍이 있습니다. 처음에 하위 상태 Fan.OffHeater.Off는 활성입니다. 차트는 웨이크업 상태가 되면 Fan.Off에서 Fan.On으로의 천이를 트리거하는 tick 이벤트를 생성합니다. Fan.Off가 비활성화되면 차트는 추가적인 묵시적 이벤트를 생성하여 Heater.Off에서 Heater.On으로의 천이를 트리거합니다. 차트 실행이 끝나면 하위 상태 Fan.OnHeater.On이 활성 상태가 됩니다.

Stateflow chart that uses the implicit event exit.

참고

동일한 묵시적 이벤트가 병렬 상태의 여러 천이를 트리거하는 경우, 천이가 실행되는 순서가 병렬 상태의 실행 순서와 일치하지 않을 수 있습니다. 예기치 않은 동작을 방지하고 병렬 상태에 지정된 순서대로 천이가 실행되도록 하려면 묵시적 이벤트를 사용하지 마십시오. 대신, in 또는 hasChanged와 같은 연산자를 호출하는 천이 조건을 사용하십시오. 자세한 내용은 Check State Activity by Using the in Operator 항목과 Detect Changes in Data and Expression Values 항목을 참조하십시오.

참고 항목

| | | | |

도움말 항목