Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

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

이벤트는 병렬 상태에서 하나의 상태가 다른 상태의 동작을 트리거하여 서로 조정되도록 합니다. 동일한 Stateflow® 차트에서 병렬 상태를 동기화하려면 하나의 상태에서 다른 상태로 이벤트를 직접 브로드캐스트해야 합니다. 병렬 상태에 대한 자세한 내용은 병렬 처리를 사용하여 동기식 서브시스템 모델링하기 항목을 참조하십시오.

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

로컬 이벤트는 Stateflow 차트의 병렬 상태에서 천이 또는 동작을 트리거할 수 있는 비그래픽 객체입니다. 이벤트를 상태로 브로드캐스트하면 수신 상태와 그 상태의 계층 구조에 포함된 모든 하위 상태에 이벤트가 적용됩니다. 이벤트를 브로드캐스트하려면 다음과 같이 send 연산자를 사용하십시오.

send(event_name,state_name)

event_name은 브로드캐스트할 이벤트의 이름입니다. state_name은 브로드캐스트 중인 활성 상태를 의미합니다.

이벤트 브로드캐스트 예제

이 예제에서는 로컬 이벤트를 주택 보안 시스템 설계의 일부로 사용하고 있습니다.

보안 시스템은 알람과 3개의 침입 방지 센서(창문 센서, 문 센서, 동작 감지기)로 구성되어 있습니다. 시스템에서 침입을 감지하면 알람을 비활성화할 수 있는 약간의 시간이 주어집니다. 알람이 비활성화되지 않으면 시스템은 경찰을 호출합니다.

서브시스템을 병렬 상태로 모델링

Security System 차트는 각 서브시스템을 개별 병렬 상태로 모델링합니다. 활성화 입력 신호는 알람에 대해서는 On 모드와 Off 모드 중에 선택하고, 각 센서에 대해서는 Active 모드와 Disabled 모드 중에 선택합니다. 활성화되면 각 센서는 침입 가능성을 나타내는 트리거 입력 신호를 모니터링합니다.

서브시스템상태활성화 신호트리거 신호
문 센서DoorD_modeDoor_sens
창문 센서WinW_modeWin_sens
동작 감지기MotionM_modeMot_sens
알람AlarmAlarm_active 

알람 서브시스템이 켜져 있을 때 침입이 감지되면 센서는 다음 명령을 사용하여 Alert 이벤트를 브로드캐스트합니다.

send(Alert,Alarm)

산발적인 거짓 양성의 영향을 완화하기 위해 동작 감지기는 디바운싱 설계를 통합하여, 지속적인 양성 트리거 신호만이 알람을 생성하도록 합니다. 이와 반대로 문 센서와 창문 센서는 하나의 양성 트리거 신호를 침입으로 간주해서 즉각적으로 알람을 생성합니다.

알람 서브시스템에서는 Alert 이벤트에 의해 Idle 하위 상태에서 Pending 하위 상태로 천이됩니다. 이 상태가 활성화되면 경고음이 울리며 주거자에게 침입 발생 가능성을 알립니다. 실수로 알람이 울리는 경우 보안 시스템을 비활성화할 수 있는 약간의 시간이 주거자에게 주어집니다. 그 시간 동안 알람이 비활성화되지 않으면 시스템은 경찰에게 도움을 요청합니다.

다른 Simulink 블록과의 조정

Stateflow 차트는 이벤트를 통해 Simulink® 모델의 다른 블록과 통신할 수 있습니다. 예를 들어 sf_security 예제에서는 다음과 같습니다.

  • 출력 이벤트 Soundcall_police가 경고음 및 경찰 호출을 처리하는 외부 블록을 구동시킵니다. 이러한 이벤트를 브로드캐스트하는 명령이 Alarm.On 상태에서 다음과 같이 발생합니다.

    • Sound에 대한 명령이 Pending 하위 상태에서 entry 동작으로서 발생합니다.

    • call_police에 대한 명령이 Pending 하위 상태와 Idle 하위 상태 간 천이에서 동작으로서 발생합니다.

    각각의 경우에 출력 이벤트를 일으키는 명령이 이벤트의 이름입니다.

  • 입력 이벤트 sl_call은 동작 감지기 디바운서의 시간 설정 및 경찰 호출 전에 있는 약간의 지연을 제어합니다. 각각의 경우, 이벤트는 시간 연산자 after에 대한 호출 내부에서 발생하며, 이에 따라 차트가 일정 횟수의 이벤트를 수신한 이후 천이가 발생합니다.

Simulink model that simulates a security system.

출력 이벤트

출력 이벤트는 Stateflow 차트에서 발생하지만 차트 밖에 있는 Simulink 블록에서 확인할 수 있습니다. 차트는 이 유형의 이벤트를 통해 모델에 있는 다른 블록에게 차트 내에서 발생한 이벤트에 대해 알릴 수 있습니다.

각 출력 이벤트는 차트 우측에 있는 출력 포트에 매핑됩니다. 구성에 따라 해당되는 신호가 Triggered Subsystem 또는 Function-Call Subsystem을 제어할 수 있습니다. 출력 이벤트를 구성하려면 다음을 수행합니다.

  1. 모델링 탭의 설계 데이터 아래에서 기호 창속성 인스펙터를 선택합니다.

  2. 기호 창에서 이벤트를 선택합니다.

  3. 속성 인스펙터에서 트리거를 다음 옵션 중 하나로 설정합니다.

    • Either — 출력 이벤트 브로드캐스트로 인해, 나가는 신호가 0과 1 간에 전환됩니다.

    • Function call — 출력 이벤트 브로드캐스트로 인해 Simulink 함수 호출 이벤트가 발생합니다.

sf_security 예제에서 출력 이벤트 Soundcall_police는 에지 트리거를 사용해서 Simulink 모델에 있는 한 쌍의 래치 서브시스템을 활성화합니다. 각 래치는 입력 신호에서 값의 변화를 감지하면 0의 출력으로 돌아가기 전에 잠깐 동안 값 1을 출력합니다.

입력 이벤트

입력 이벤트는 Simulink 블록에서 발생하지만 Stateflow 차트에서 확인할 수 있습니다. 이 유형의 이벤트를 통해 다른 Simulink 블록(다른 Stateflow 차트 포함)은 특정 차트에게 외부에서 발생한 이벤트를 알릴 수 있습니다.

외부 Simulink 블록은 Stateflow 차트 맨 위에 있는 트리거 포트에 연결된 신호를 통해 입력 이벤트를 전송합니다. 구성에 따라 입력 이벤트는 신호 값의 변경으로 인해 발생하거나 Simulink 블록에서의 함수 호출을 통해 발생합니다. 입력 이벤트를 구성하려면 다음을 수행합니다.

  1. 모델링 탭의 설계 데이터 아래에서 기호 창속성 인스펙터를 선택합니다.

  2. 기호 창에서 이벤트를 선택합니다.

  3. 속성 인스펙터에서 트리거를 다음 옵션 중 하나로 설정합니다.

    • Rising — 입력 신호가 0 또는 음수 값에서 양수 값으로 바뀌면 차트가 활성화됩니다.

    • Falling — 입력 신호가 양수 값에서 0 또는 음수 값으로 바뀌면 차트가 활성화됩니다.

    • Either — 입력 신호가 어느 방향으로 변하든지 간에 0을 지나면 차트가 활성화됩니다.

    • Function call — Simulink 블록에서 함수를 호출하면 차트가 활성화됩니다.

sf_security 예제에서 Simulink Function-Call Generator 블록은 주기적인 함수 호출을 통해 입력 이벤트 sl_call을 트리거하여 보안 시스템의 시간 설정을 제어합니다.

예제 살펴보기

Security System 차트에는 여러 개의 Manual Switch 블록에서 오는 입력과 Display 블록에 연결된 한 쌍의 래치 서브시스템으로 가는 출력이 있습니다. 시뮬레이션 중에 다음과 같이 할 수 있습니다.

  • Switch 블록을 클릭하여 알람 및 센서 서브시스템을 활성화하고 침입 감지를 트리거할 수 있습니다.

  • 차트 애니메이션을 통해 차트 내 다양한 활성 상태가 강조 표시되는 것을 확인할 수 있습니다.

  • Scope 블록 및 시뮬레이션 데이터 인스펙터에서 출력 신호를 확인할 수 있습니다.

시뮬레이션의 시간 설정을 조정하려면 Function-Call Generator 블록을 더블 클릭하고 대화 상자에서 샘플 시간 필드를 수정하십시오. 예를 들어 샘플 시간을 1로 설정한 다음, 모든 서브시스템은 켜고 모든 센서 트리거는 끈 상태로 시뮬레이션을 시작했다고 가정해보겠습니다. 시뮬레이션 중에 다음과 같은 동작을 수행합니다.

  1. t = 250초가 되면 문 센서를 트리거합니다. 알람이 울리기 시작(Sound = 1)하므로 즉시 알람 시스템을 비활성화합니다. 트리거를 끄고 알람을 다시 켭니다.

  2. t = 520초가 되어 창문 센서를 트리거하면 알람이 울리기 시작(Sound = 0)합니다. 이번에는 알람을 비활성화하지 않습니다. t = 600초 정도가 되면 보안 시스템이 경찰을 호출(call_police = 1)합니다. Soundcall_police 신호는 80초마다 계속해서 0과 1로 전환됩니다.

  3. t = 1400초가 되면 알람을 비활성화합니다. Soundcall_police 신호의 전환이 중단됩니다.

시뮬레이션 데이터 인스펙터에 수행된 동작에 대한 Soundcall_police 신호의 응답이 표시됩니다.

Simulation Data Inspector showing the output of the chart.

관련 항목