Main Content

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

실행하는 동안 Stateflow 객체가 상호 작용하는 방식

실행하는 동안 Stateflow® 객체는 상호 작용하여 실제 동작을 시뮬레이션합니다. 이 예에서는 호텔 체크인 프로세스를 통해 Stateflow 차트의 일반적인 그래픽 객체와 비그래픽 객체가 실행 중 상호 작용하는 방식을 설명합니다.

호텔 체크인 프로세스 모델

이 모델에는 Hotel이라는 Stateflow 차트가 포함되어 있습니다. 차트는 다음으로 토글할 수 있는 4개의 Manual Switch (Simulink) 블록으로부터 입력 이벤트를 수신합니다.

  • 호텔 체크인

  • 룸서비스 호출

  • 화재 경보 작동

  • 화재 경보 이후 경보 해제 신호 전송

Mux (Simulink) 블록이 이러한 입력 이벤트를 입력으로 구성된 하나의 벡터로 결합하여 차트 맨 위에 있는 트리거 포트에 연결합니다.

또한 차트는 Multiport Switch (Simulink) 블록으로부터 room_type이라는 입력 신호를 수신합니다. 이 신호의 값은 사용자가 머물고자 하는 객실 유형에 해당합니다. 가능한 옵션은 고급 스위트 룸의 경우 "Executive", 패밀리 스위트 룸의 경우 "Family", 싱글 룸의 경우 "Single"입니다.

시뮬레이션하는 동안 룸서비스 요금을 포함한 총 결제 금액이 Display (Simulink) 블록에 표시됩니다.

Hotel 차트에는 상태 및 이력 연결점과 같은 그래픽 객체와 데이터 또는 이벤트와 같은 비그래픽 객체가 포함됩니다. 이 차트의 객체에 레이블을 지정하는 이미지를 보려면 Stateflow Objects 항목을 참조하십시오.

시뮬레이션을 시작하면 입력 이벤트 중 하나에서 상승 에지 또는 하강 에지를 감지할 때까지 차트를 웨이크업 상태로 만들지 않습니다.

Manual Switch 블록을 토글하면 차트가 웨이크업 상태가 되도록 입력 이벤트가 트리거됩니다. 차트가 웨이크업 상태인 동안에는 Multiport Switch 블록에서 차트 입력 room_type에 대한 값을 읽고 유효한 상태 또는 천이 동작을 수행한 다음 새로운 fee 값을 Display 블록에 출력합니다.

차트는 가능한 모든 실행 단계를 완료한 후 슬립 상태로 돌아가 다음 입력 이벤트를 기다립니다.

차트 초기화

시뮬레이션을 시작하고 입력 이벤트 중 하나를 트리거합니다. 이 동작은 호텔에 들어와 프런트 데스크에서 멈추어 선 것에 해당합니다.

차트 속성 초기화 시 차트 실행(진입)이 비활성화되어 있기 때문에 차트는 입력 이벤트 중 하나에서 상승 에지 또는 하강 에지를 감지할 때까지 슬립 상태를 유지합니다. 감지되면 차트가 웨이크업 상태가 되고 차트의 디폴트 천이를 실행합니다. 상태 Check_in으로의 디폴트 천이가 발생하여 해당 상태가 활성화됩니다. 그다음 하위 상태 Front_desk로의 디폴트 천이가 발생하여 해당 상태가 활성화됩니다. 그러면 차트가 슬립 상태로 전환됩니다. 자세한 내용은 Execution of a Chart at Initialization 항목과 Enter a Chart or State 항목을 참조하십시오.

상태 간 천이

하위 상태 Front_desk가 활성화되어 있는 동안 입력 이벤트 check_in을 트리거합니다. 이 동작은 호텔 체크인에 해당합니다. 가방을 들고 프런트 데스크에서 객실로 이동하여 가방을 내려놓습니다.

차트에서 check_in 이벤트는 하위 상태 Front_desk에서 하위 상태 Checked_in으로 나가는 천이를 방지합니다. 이벤트를 트리거하면 천이가 유효해집니다. Front_desk의 exit 동작은 로컬 데이터 객체 move_bags의 값을 1로 설정하고 하위 상태 Front_desk를 비활성화합니다. 그러면 Checked_in이 활성 상태가 되고 entry 동작이 move_bags를 0으로 설정합니다. 자세한 내용은 How Stateflow Charts Respond to Events, Exit a State, Enter a Chart or State 항목을 참조하십시오.

디폴트 천이 경로 평가

차트는 Checked_in 상태에서 entry 동작을 실행한 후 디폴트 천이 경로를 평가하여 하위 상태를 파악합니다. 활성화되는 하위 상태는 객실 유형에 해당합니다. 고급 스위트 룸을 선택한 경우 기본요금은 1,500달러입니다. 패밀리 스위트 룸을 선택한 경우 기본요금은 1,000달러입니다. 싱글 룸을 선택한 경우 기본요금은 500달러입니다.

차트는 다음 순서로 디폴트 천이 경로의 분기를 테스트합니다.

  • 차트 입력 room_type"Executive"인 경우 상단 천이가 유효합니다. 조건 동작은 차트 출력 fee를 1500으로 설정하고 하위 상태 Executive_suite를 활성화합니다.

  • 차트 입력 room_type"Family"인 경우 중간 천이가 유효합니다. 조건 동작은 fee를 1000으로 설정하고 하위 상태 Family_suite를 활성화합니다.

  • 그 외에, 차트 입력 room_type"Single"인 경우 하단 천이가 유효합니다. 조건 동작은 fee를 500으로 설정하고 하위 상태 Single_room을 활성화합니다.

자세한 내용은 Order of Execution for a Set of Flow Charts 항목을 참조하십시오.

배타적 하위 상태가 있는 상태 실행

차트 입력 room_type의 값이 "Executive"인 동안 입력 이벤트 check_in을 트리거하면 하위 상태 Executive_suite가 활성화됩니다. 이 하위 상태는 고급 스위트 룸에 머무르는 것에 해당합니다. 고급 스위트 룸에는 별도의 침실 공간과 식당 공간이 있어서 항상 스위트 룸의 한 공간에만 있을 수 있습니다. 고급 스위트 룸에 도착하면 가장 먼저 침실로 들어갑니다. 룸서비스를 주문하면 식당 공간으로 들어가 식사를 합니다. 식당 공간에서 음식을 치우고 싶을 때 룸서비스를 다시 주문한 다음 침실로 돌아갑니다.

상태 Executive_suite는 배타적(OR) 분해를 가집니다. 이 상태는 두 가지 하위 상태인 BedroomDining_area를 가집니다. Executive_suite가 처음 활성 상태가 되면 Bedroom으로의 디폴트 천이가 발생하여 해당 하위 상태가 활성화됩니다. 입력 이벤트 room_service의 브로드캐스트는 Bedroom에서 Dining_area로의 천이를 트리거하여 Bedroom은 비활성 상태가 되고 Dining_area는 활성 상태가 됩니다. room_service의 후속 브로드캐스트는 Dining_area에서 Bedroom으로 다시 천이를 트리거하여 Bedroom은 활성 상태가 되고 Dining_area는 비활성 상태가 됩니다. 자세한 내용은 Enter a Chart or State 항목을 참조하십시오.

병렬 하위 상태가 있는 상태 실행

차트 입력 room_type의 값이 "Family"인 동안 입력 이벤트 check_in을 트리거하면 하위 상태 Family_suite가 활성화됩니다. 이 하위 상태는 패밀리 스위트 룸에 머무르는 것에 해당합니다. 가족이 스위트 룸에 도착하면 가족 구성원은 두 개의 침실에서 시간을 보낼 수 있습니다. 예를 들어 자녀가 두 번째 침실에서 잠을 자는 동안 부모는 첫 번째 침실에서 영화를 볼 수 있습니다.

상태 Family_suite는 병렬(AND) 분해를 가집니다. 이 상태는 두 가지 하위 상태인 First_bedroomSecond_bedroom을 가집니다. Family_suite가 활성 상태가 되면 각 상태의 오른쪽 상단 코너에 있는 숫자로 표시된 실행 순서에 따라 병렬 상태가 웨이크업 상태가 됩니다. 하위 상태는 동시에 활성 상태를 유지합니다. 자세한 내용은 Execution Order for Parallel States 항목과 Enter a Chart or State 항목을 참조하십시오.

상태 동작에서 함수 호출

하위 상태 Checked_in이 활성화되어 있는 동안 입력 이벤트 room_service를 트리거합니다. 이 동작은 룸서비스를 부르는 것에 해당합니다. 호텔 숙박료는 객실 유형과 룸서비스 요청 횟수에 따라 다릅니다.

차트가 입력 이벤트 room_service에서 상승 에지 또는 하강 에지를 감지하면 Checked_In 상태가 이 이벤트에 대해 on 동작을 실행합니다. 상태는 로컬 데이터 객체 service를 증가시키고 MATLAB® 함수 expenses를 호출합니다. 이 함수는 룸서비스의 총 요청 수를 입력으로 사용하고 현재 호텔 숙박료를 출력으로 반환합니다. 자세한 내용은 Control Chart Execution by Using Event Actions in a Superstate 항목을 참조하십시오.

이력 연결점이 있는 상태 실행

하위 상태 Checked_in이 활성화되어 있는 동안 입력 이벤트 fire_alarm을 트리거합니다. 이는 화재 경보 작동에 해당합니다. 경보가 울리면 건물 밖으로 나와 지정된 대기 공간에서 대기합니다. 그런 다음 입력 이벤트 all_clear를 트리거합니다. 이는 호텔 내부의 이전 위치로 돌아갈 수 있도록 경보 해제 신호를 전송하는 것에 해당합니다.

차트가 fire_alarm에 대한 이벤트 브로드캐스트를 수신하면 Check_in에서 Waiting_area로의 천이가 발생합니다. Check_in, Checked_in, Executive_suite의 이력 연결점은 이들 각 상태에서의 마지막 활성 하위 상태를 기록합니다. 활성 상태는 가장 안쪽에 있는 하위 상태부터 시작하여 계층 구조의 오름차순으로 비활성 상태가 됩니다. Check_in이 비활성 상태가 되면 Waiting_area가 활성 상태가 됩니다.

차트가 all_clear에 대한 이벤트 브로드캐스트를 수신하면 천이가 Waiting_area에서 Check_in의 이전 활성 하위 상태로 발생합니다. Check_in부터 시작하여 Check_in의 하위 상태가 계층 구조의 내림차순으로 활성화되기 전에 Waiting_area는 비활성 상태가 됩니다.

자세한 내용은 How Stateflow Charts Respond to Events, Exit a State, Enter a Chart or State 항목을 참조하십시오.

참고 항목

(Simulink) | (Simulink) | (Simulink) | (Simulink)

관련 항목