주요 콘텐츠

이벤트를 브로드캐스트하여 모델 컴포넌트 동기화하기

이벤트는 다음 객체 중 하나에서 동작을 트리거할 수 있는 Stateflow® 객체입니다.

  • Stateflow 차트의 병렬 상태

  • 다른 Stateflow 차트

  • 트리거된 Simulink® 또는 Function-Call Subsystem

시뮬레이션을 위해, Stateflow 차트에서 이벤트의 수에는 제한이 없습니다. 그러나 코드 생성의 경우 기본 C 컴파일러에는 231-1개 이벤트의 이론적 한계가 적용됩니다.

이벤트 유형

묵시적 이벤트는 차트 실행 중에 브로드캐스트되는 내장 이벤트입니다. 이러한 이벤트는 사용자가 명시적으로 정의하거나 트리거하지 않으므로 묵시적입니다. 자세한 내용은 묵시적 이벤트를 사용하여 차트 동작 제어하기 항목을 참조하십시오.

명시적 이벤트는 사용자가 명시적으로 정의하는 이벤트입니다. 명시적 이벤트는 다음 유형 중 하나일 수 있습니다.

유형설명
입력 이벤트차트 외부에서 Stateflow 차트로 브로드캐스트되는 이벤트입니다. 자세한 내용은 입력 이벤트를 전송하여 Stateflow 차트 활성화하기 항목과 Stateflow 차트를 사용하여 인간-기계 인터페이스 논리 설계하기 항목을 참조하십시오.
로컬 이벤트Stateflow 차트의 어디에서나 발생할 수 있지만 부모 객체와 그 후손에게만 보이는 이벤트입니다. 로컬 이벤트는 MATLAB®의 독립 실행형 Stateflow 차트에서는 지원되지 않습니다. 자세한 내용은 로컬 이벤트를 브로드캐스트하여 병렬 상태 동기화하기 항목을 참조하십시오.
출력 이벤트Stateflow 차트에서 발생하지만 Simulink 블록으로 브로드캐스트되는 이벤트입니다. 출력 이벤트는 MATLAB의 독립 실행형 Stateflow 차트에서는 지원되지 않습니다. 자세한 내용은 Activate a Simulink Block by Sending Output Events 항목을 참조하십시오.

로컬 이벤트는 Stateflow 계층 구조의 다음 수준에 정의할 수 있습니다.

계층 구조의 수준가시성
차트로컬 이벤트가 해당 차트와 그 안의 모든 상태 및 하위 상태에서 보입니다.
서브차트로컬 이벤트가 서브차트와 그 안의 모든 상태 및 하위 상태에서 보입니다.
상태로컬 이벤트가 상태와 모든 하위 상태에서 보입니다.

차트에 이벤트 정의하기

이벤트는 기호 창, Stateflow 편집기 메뉴 또는 모델 탐색기를 사용하여 Stateflow 차트에 추가할 수 있습니다.

기호 창을 통해 이벤트 추가하기

  1. 모델링 탭의 설계 데이터 아래에서 기호 창을 선택합니다.

  2. 이벤트 만들기 아이콘 을 클릭합니다.

  3. 새 이벤트의 행에 있는 유형 아래에서 아이콘을 클릭하고 다음을 선택합니다.

    • 입력 이벤트

    • 로컬 이벤트

    • 출력 이벤트

  4. 이벤트의 이름을 편집합니다.

  5. 입력 이벤트와 출력 이벤트의 포트 필드를 클릭하고 포트 번호를 선택합니다.

  6. 이벤트의 속성을 지정하려면 속성 인스펙터를 엽니다. 기호 창에서 이벤트의 행을 마우스 오른쪽 버튼으로 클릭하고 탐색을 선택합니다. 자세한 내용은 이벤트의 속성 설정하기 항목을 참조하십시오.

Stateflow 편집기 메뉴를 사용하여 이벤트 추가하기

  1. Stateflow 차트의 Simulink 모델에서 추가할 이벤트의 유형에 해당하는 메뉴 옵션을 선택합니다.

    유형메뉴 옵션
    입력 이벤트모델링 탭의 설계 데이터 아래에서 이벤트 입력을 클릭합니다.
    출력 이벤트모델링 탭의 설계 데이터 아래에서 이벤트 출력을 클릭합니다.
    로컬 이벤트모델링 탭의 설계 데이터 아래에서 로컬 이벤트를 클릭합니다.

  2. 이벤트 대화 상자에서 데이터 속성을 지정합니다. 자세한 내용은 이벤트의 속성 설정하기 항목을 참조하십시오.

모델 탐색기를 통해 이벤트 추가하기

  1. 모델링 탭의 설계 데이터 아래에서 모델 탐색기를 선택합니다.

  2. 모델 계층 구조 창에서, Stateflow 계층 구조에서 새 이벤트가 보이도록 할 객체를 선택합니다. 선택한 객체가 새 이벤트의 부모가 됩니다.

  3. 모델 탐색기 메뉴에서 추가 > 이벤트를 선택합니다. 디폴트 정의가 포함된 새 이벤트가 모델 탐색기의 내용 창에 표시됩니다.

  4. 이벤트 창에 이벤트의 속성을 지정합니다. 자세한 내용은 이벤트의 속성 설정하기 항목을 참조하십시오.

Stateflow 차트의 이벤트 정보에 액세스하기

입력 이벤트 또는 로컬 이벤트의 속성을 표시하거나 Stateflow 차트에서 직접 출력 이벤트의 대상을 열 수 있습니다. 관심 이벤트가 포함된 상태 또는 천이를 마우스 오른쪽 버튼으로 클릭하고 탐색을 선택합니다. 상황별 메뉴에는 상태 또는 천이에서 연결이 맺어진 모든 기호의 이름과 범위가 나열됩니다. 상황별 메뉴에서 입력 이벤트 또는 로컬 이벤트를 선택하면 모델 탐색기에 해당 속성이 표시됩니다. 상황별 메뉴에서 출력 이벤트를 선택하면 해당 이벤트와 연결된 Simulink 서브시스템 또는 Stateflow 차트가 열립니다.

Stateflow 차트에서 이벤트를 사용하는 모범 사례

send 명령을 사용하여 동작에서 명시적 이벤트 브로드캐스트하기

상태 동작 또는 천이 동작에서 로컬 이벤트나 출력 이벤트를 브로드캐스트하려면 send 연산자를 사용하십시오. 예를 들어, 천이가 유효한 경우 출력 이벤트를 브로드캐스트하려면 이벤트의 이름을 조건 동작으로 사용하지 마십시오.

{output_event;}

대신, send 연산자를 호출하십시오.

{send(output_event);}

두 동작 모두 유효하지만, send 연산자를 사용하면 차트의 가독성이 향상되고 명시적 이벤트가 데이터로 혼동되는 일이 없습니다.

명시적 이벤트를 사용하여 조건 동작을 트리거하지 않기

이벤트 대신 천이에 대한 조건을 사용해야 하는 경우는 다음과 같습니다.

  • 조건문을 나타내는 경우, 예: [x < 1] 또는 [x == 0].

  • 데이터 값의 변경을 나타내는 경우, 예: [hasChanged(x)].

명시적 이벤트 enter를 사용하여 상태 활동을 검사하지 않기

상태 활동을 검사하려면, 명시적 이벤트 enter 대신 in 연산자를 사용하십시오. 자세한 내용은 Check State Activity by Using the in Operator 항목을 참조하십시오.

차트에서 에지 트리거 입력 이벤트와 함수 호출 입력 이벤트를 함께 사용하지 않기

에지 트리거와 함수 호출을 사용하는 입력 이벤트를 함께 사용하면 컴파일타임 오류가 발생합니다.

참고 항목

| |

도움말 항목