주요 콘텐츠

로컬 이벤트를 브로드캐스트하여 병렬 상태 동기화하기

로컬 이벤트는 Stateflow® 차트에서 발생하는 이벤트이며, 차트 내에서만 볼 수 있습니다. 이 이벤트 유형을 사용하면 같은 차트 내에 있는 병렬(AND) 상태들이 서로 동기화될 수 있어 한 상태에서의 동작이 다른 상태에서의 동작을 트리거합니다. 어느 한 차트 안의 동작은 로컬 이벤트를 또 다른 차트 안의 상태로 브로드캐스트할 수 없습니다. 로컬 이벤트를 정의하려면 다음을 수행하십시오.

  1. 차트에 이벤트 정의하기 항목에 설명된 대로, Stateflow 차트에 이벤트를 추가합니다.

  2. 이벤트의 범위 속성을 로컬로 설정합니다.

로컬 이벤트는 MATLAB®의 독립 실행형 Stateflow 차트에서는 지원되지 않습니다. 자세한 내용은 이벤트를 브로드캐스트하여 모델 컴포넌트 동기화하기 항목을 참조하십시오.

로컬 이벤트 브로드캐스트하기

유방향 이벤트 브로드캐스트는 연산자 send를 사용하여 로컬 이벤트를 하나의 상태에서 다른 상태로 직접 보냅니다.

send(event_name,state_name)
event_name은 로컬 이벤트이고, state_name은 수신하는 상태입니다. 로컬 이벤트는 수신하는 상태와 수신하는 상태의 모든 하위 상태로 직접 브로드캐스트됩니다. 로컬 이벤트는 송신하는 상태(sending state)와 수신하는 상태(receiving state) 모두에서 볼 수 있어야 합니다. 수신하는 상태는 이벤트가 브로드캐스트되는 동안 활성 상태여야 합니다.

예를 들어, 이 차트에는 2개의 병렬(AND) 상태인 AB가 포함되어 있습니다. 로컬 이벤트 E_one은 차트에 속해 있으며, 두 상태 모두에서 볼 수 있습니다. 상태 A에서, 하위 상태 A1에서 하위 상태 A2로의 천이는 send(E_one,B) 형식의 유방향 이벤트 브로드캐스트를 사용하여 로컬 이벤트 E_one을 상태 B로 보냅니다. B에서, 이벤트는 하위 상태 B1에서 하위 상태 B2로의 천이를 트리거합니다. 따라서 AB의 활성 하위 상태가 동기화됩니다. 이 예제의 의미 체계에 대한 자세한 내용은 Directed Event Broadcast Using Send 항목을 참조하십시오.

Stateflow chart that uses a directed event broadcast to synchronize the substates of two parallel (AND) states.

state_name 인수에는 상태에 대한 전체 계층 구조 경로가 포함될 수 있습니다. 예를 들어 상태 A가 상태 A1을 포함하는 경우 다음과 같은 브로드캐스트를 통해 이벤트 E를 상태 A1로 보낼 수 있습니다.

send(E,A.A1)

상태에 대한 전체 계층 구조 경로에 차트 이름을 포함하지 마십시오.

이벤트 브로드캐스트에서 정규화된 이벤트 이름 사용하기

송신하는 상태에서 볼 수 없는 로컬 이벤트를 브로드캐스트하려면 연산자 send를 다음과 같은 정규화된 이벤트 이름과 함께 사용하십시오.

send(state_name.event_name)
event_name은 수신하는 상태 state_name이 소유한 로컬 이벤트입니다. 로컬 이벤트는 수신하는 상태와 수신하는 상태의 모든 하위 상태로 직접 브로드캐스트됩니다. 이 로컬 이벤트는 수신하는 상태에게는 보이지만, 송신하는 상태에게는 보이지 않습니다. 수신하는 상태는 이벤트가 브로드캐스트되는 동안 활성 상태여야 합니다.

예를 들어, 이 차트에는 2개의 병렬(AND) 상태인 AB가 포함되어 있습니다. 로컬 이벤트 E_one은 상태 B에 속해 있으며, 이 상태에게만 보입니다. 상태 A에서, 하위 상태 A1에서 하위 상태 A2로의 천이는 send(B.E_one) 형식의 유방향 이벤트 브로드캐스트를 사용하여 로컬 이벤트 E_one을 상태 B로 보냅니다. B에서, 이벤트는 하위 상태 B1에서 하위 상태 B2로의 천이를 트리거합니다. 따라서 AB의 활성 하위 상태가 동기화됩니다. 이 예제의 의미 체계에 대한 자세한 내용은 Directed Event Broadcast Using Qualified Event Name 항목을 참조하십시오.

Stateflow chart that uses a directed event broadcast to synchronize the substates of two parallel (AND) states. The broadcast uses the qualified event name B.E_one.

state_name 인수에는 수신하는 상태에 대한 전체 계층 구조 경로가 포함될 수 있습니다. 상태의 전체 경로 이름에 차트 이름을 사용하지 마십시오. 예를 들어 상태 A가 상태 A1을 포함하고, A1이 로컬 이벤트 E를 소유한다고 가정하겠습니다. 다음과 같은 브로드캐스트를 통해 이벤트 E를 상태 A1로 보낼 수 있습니다.

send(A.A1.E)

무방향 이벤트 브로드캐스트

무방향 이벤트 브로드캐스트는 다음과 같이 이벤트 이름을 조건 동작으로 사용하여 로컬 이벤트를 그 이벤트를 볼 수 있는 모든 상태에게 보냅니다.

event_name;

또는 수신하는 상태를 지정하지 않고 연산자 send를 호출하는 방법도 있습니다.

send(event_name)
event_name은 송신하는 상태에서 볼 수 있는 로컬 이벤트입니다.

가능한 경우, 무방향 이벤트 브로드캐스트 대신 유방향 이벤트 브로드캐스트를 사용하십시오. 유방향 이벤트 브로드캐스트는 시뮬레이션 동안 불필요한 재귀를 방지하고 생성된 코드의 효율성을 향상합니다. 자세한 내용은 원치 않는 재귀 동작 해결하기 항목을 참조하십시오.

무방향 로컬 이벤트 브로드캐스트 감지를 위한 진단

시뮬레이션 중에 Stateflow 차트는 무방향 로컬 이벤트 브로드캐스트를 감지할 수 있습니다. 진단 동작의 수준을 제어하려면 구성 파라미터 대화 상자를 열고, 진단 > Stateflow 창에서 무방향 이벤트 브로드캐스트 파라미터를 없음, 경고 또는 오류로 설정하십시오. 디폴트 설정은 경고입니다. 자세한 내용은 Undirected event broadcasts (Simulink) 항목을 참조하십시오.

참고 항목

도움말 항목