주요 콘텐츠

Stateflow 메시지, 이벤트, 데이터 간의 차이점 보기

이 예제에서는 Stateflow®에서 메시지, 이벤트, 데이터의 동작을 비교합니다.

전송자 차트

이 모델에는 세 개의 전송자 차트 DataSender, EventSender, MessageSender가 있습니다. 각 전송자에는 한 개의 상태가 있습니다. 상태의 entry 동작에서 차트는 데이터에 값을 할당하거나 함수 호출 이벤트를 보내거나 메시지를 보냅니다.

수신자 차트

각 전송자 차트마다 이에 대응하는 수신자 차트가 있습니다. 각 수신자 차트에는 상태 A0, A1, A2, A3의 상태 다이어그램이 있습니다. 묵시적 이벤트 after(3,sec)A0에서 A1로의 천이를 트리거합니다. 해당 전송자 차트로부터의 데이터, 이벤트 또는 메시지는 A1, A2, A3 간 천이를 가드합니다.

스코프 출력

각 수신자 차트에서는 활성 상태 출력이 활성화되어 있고 스코프가 연결되어 있습니다. 스코프는 각 시간 스텝에서 어떤 상태가 활성화되었는지 보여줍니다. 이 출력은 출력 데이터, 이벤트, 메시지 간의 동작 차이를 강조하여 표시합니다.

데이터의 동작

DataSender 차트는 출력 데이터 M에 값 1을 할당하며, 이는 DataReceiver 차트에 입력으로 연결됩니다.

DataReceiver 차트는 매 시간 스텝마다 한 번 실행됩니다. 시뮬레이션 시작 시 상태 A0은 활성화되어 있습니다. 시간 t=3A0에서 A1로의 천이가 발생합니다. 시간 t=4에 차트는 M이 1인지 테스트합니다. 이 조건이 true이므로, 차트는 A1에서 A2로 천이합니다. 시간 t=5M은 여전히 1이므로, 차트는 A2에서 A3으로 천이합니다. 스코프에서는 DataReceiver의 상태가 3회 변경된 것을 확인할 수 있습니다.

데이터에 값이 할당되면 전체 시뮬레이션 시간 동안 그 값이 유지됩니다. 그러므로 DataReceiver가 조건 [M == 1]을 평가할 때마다 새로운 상태로 천이됩니다.

이벤트의 동작

EventSender 차트는 명령 send(M)을 사용하여 함수 호출 이벤트를 전송함으로써 EventReceiver 차트를 웨이크업 상태로 만듭니다.

EventReceiver 차트는 입력 이벤트 M이 차트를 웨이크업 상태로 만들 경우에만 실행됩니다. 시뮬레이션 시작 시 상태 A0은 활성화되어 있습니다. A0에서 A1로의 천이는 절대시간 시간 논리를 기반으로 하며 시간 t=0에서 유효하지 않습니다. A0은 활성 상태로 유지되고 차트는 슬립 상태로 돌아갑니다. EventSender는 이벤트 M을 한 번만 보내므로 EventReceiver는 다시 웨이크업 상태가 되지 않습니다. 스코프에서 EventReceiverA0에서 천이되지 않는 것을 확인할 수 있습니다.

이벤트는 다음 시간 스텝을 넘어가면 유효하지 않으므로, 수신 차트는 이벤트에 응답할 수 있는 기회가 단 한 번뿐입니다. EventSender가 이벤트를 보낼 때, EventReceiver는 이벤트에 응답할 준비가 되어 있지 않습니다. 이 이벤트에 대한 응답으로 EventReceiver는 천이할 수 있는 기회를 잃게 됩니다.

메시지의 동작

MessageSender 차트는 구문 send(M)을 사용하여 출력 메시지 포트를 통해 메시지를 전송합니다. 메시지는 MessageReceiver 차트의 입력 메시지 대기열로 이동합니다. 메시지는 MessageReceiver가 해당 메시지를 평가할 때까지 대기열에서 대기합니다.

MessageReceiver 차트는 매 시간 스텝마다 한 번 실행됩니다. 시뮬레이션 시작 시 상태 A0은 활성화되어 있습니다. 시간 t=3A0에서 A1로의 천이가 발생합니다. 시간 t=4에, 차트는 M이 대기열에 있는 것으로 판단하여 A2로 천이합니다. 시간 스텝이 끝나면 차트는 대기열에서 M을 제거합니다. 시간 t=5에는 대기열에 메시지가 없으므로 차트가 A3으로 천이하지 않습니다. A2는 활성 상태를 유지합니다. 스코프에서 MessageReceiver의 상태가 2회만 변경된 것을 확인할 수 있습니다.

이벤트와 달리 메시지는 대기 상태로 유지됩니다. 수신 차트는 메시지가 전송된 후 언제든지 메시지에 응답하도록 선택할 수 있습니다. 데이터와 달리 메시지는 무한정 유효한 것으로 유지되지 않습니다. 메시지는 시간 스텝이 끝나면 제거됩니다.

참고 항목

도움말 항목