유한 상태 머신 모델링하기
유한 상태 머신은 특정 조건이 충족되는 경우 동작 모드 간에 천이되는 이벤트 기반 반응 시스템을 표현합니다. 예를 들어, 가속할 때 기어가 바뀌는 자동차의 변속기를 모델링할 수 있습니다. 유한 상태 머신은 여러 상태와 천이를 갖는 시스템을 표현할 수 있으므로 소프트웨어 공학, 로봇, 통신과 같은 분야에서 흔히 사용됩니다. Stateflow®에서 상태, 천이, 데이터를 사용하여 유한 상태 머신을 모델링할 수 있습니다.
예를 들어, 다음과 같은 간단한 Stateflow 차트에서 자동차 변속기는 기어 상태 간에 천이됩니다.

소프트웨어 개발에서는 유한 상태 머신을 사용하여 사용자 인터페이스, 프로토콜 설계, 워크플로 자동화를 관리할 수 있습니다. 로보틱스에서 유한 상태 머신은 로봇 동작을 제어하여, 탐색, 장애물 회피, 물체 조작과 같은 작업 간의 원활한 천이를 가능하게 합니다. 전기통신 분야에서는 통신 프로토콜과 네트워크 동작을 모델링합니다. Stateflow를 사용하여 다양한 분야에서 유한 상태 머신의 성능을 설계하고, 시뮬레이션하며, 문제를 해결할 수 있습니다.
Stateflow 블록 유형
유한 상태 머신의 입력, 출력, 동작 모드 간의 관계를 표현하기 위해 다음과 같은 Stateflow 블록을 사용하여 상태 천이 다이어그램, 상태 천이 테이블, 진리표를 만들 수 있습니다.
Stateflow 블록 | 활용 사례 |
|---|---|
| Chart | 유한 상태 머신의 그래픽 표현. Stateflow 차트 내에서 상태와 천이를 사용하여 순차 논리 시스템을 빌드합니다. 상태는 작동 모드에 해당하고 천이는 상태 사이의 경로를 나타냅니다. 자세한 내용은 상태를 사용하여 동작 모드 표현하기 항목과 동작 모드 간 천이 항목을 참조하십시오. |
| State Transition Table | 순차적 모달 논리를 위한 유한 상태 머신의 테이블 형식 표현. State Transition Table 블록을 사용하여 그래픽 객체에 대한 최소한의 유지관리를 필요로 하는 간소한 형식으로 상태 머신을 모델링합니다. 자세한 내용은 상태 천이 테이블을 사용하여 유한 상태 머신 모델링하기 항목을 참조하십시오. |
| Truth Table | 조합 논리 설계의 테이블 형식 표현. Truth Table 블록을 사용하여 결함 검출 및 관리와 모드 전환에 대한 의사결정을 모델링할 수 있습니다. 자세한 내용은 조합 논리 모델링에 진리표 사용하기 항목을 참조하십시오. |
Stateflow 블록 구현하기
유한 상태 머신을 모델링하는 Stateflow 차트를 만들려면 다음 단계를 따르십시오.
MATLAB®을 시작합니다. MATLAB 툴스트립의 홈 탭에서 Simulink를 클릭합니다.

시작 페이지의 Stateflow 섹션에서 빈 차트 템플릿을 클릭합니다. Chart 블록을 더블 클릭하여 Stateflow 편집기를 엽니다.
시스템의 각 동작 모드에 대해, 상태를 그린 다음 상태 레이블을 추가하여 동작을 구현합니다.
천이를 그려 상태 간의 흐름 논리 방향을 표현하고, 천이 레이블을 추가하여 천이 조건을 구현합니다. 디폴트 천이를 사용하여 첫 번째 활성 상태를 표시합니다.
시스템에 입력이나 출력이 있거나 시스템이 상태 변수에 의존하는 경우 입력, 출력, 로컬 데이터를 추가합니다. 자세한 내용은 Stateflow 데이터 추가하기 항목을 참조하십시오.
시스템이 이벤트 트리거에 반응하는 경우 또는 시스템이 차트에서나 모델의 다른 블록에서 동작을 트리거해야 하는 경우 입력, 출력 또는 로컬 이벤트를 추가합니다. 자세한 내용은 Use Events to Execute Charts 항목을 참조하십시오.
차트에 복잡한 상태 동작이나 천이 조건이 있는 경우 재사용 가능 함수를 추가할 수 있습니다. 그래픽 함수, MATLAB 함수, Simulink 함수 또는 진리표 중에서 선택할 수 있습니다. 또는 차트와 통합하기 위해 직접 C 또는 C++ 코드를 작성할 수도 있습니다. 자세한 내용은 MATLAB 함수를 정의하여 MATLAB 코드 재사용하기 항목과 상태와 천이에서 Simulink 함수 호출하기 항목을 참조하십시오.
입력 포트와 출력 포트를 사용하여 Simulink 모델의 다른 블록에 차트를 연결합니다.
실행
을 클릭하여 모델을 시뮬레이션합니다. Stateflow 편집기는 활성 상태와 천이를 강조 표시하여 시뮬레이션하는 동안 차트를 애니메이션합니다.
Stateflow 차트와 State Transition Table 블록은 MATLAB 또는 C를 동작 언어로 사용할 수 있습니다. Truth Table 블록은 MATLAB만 동작 언어로 사용합니다. 자세한 내용은 동작 언어 구문으로서 MATLAB과 C의 차이점 항목을 참조하십시오.
Stateflow 차트를 만드는 방법을 보여주는 튜토리얼은 Stateflow 차트 만들기 항목을 참조하십시오.
참고 문헌
[1] Harel, David. "Statecharts: A Visual Formalism for Complex Systems." Science of Computer Programming 8, no.3 (June 1987): 231-74.
[2] Hatley, Derek J. and Imtiaz A. Pirbhai. Strategies for Real-Time System Specification. New York, NY: Dorset House Publishing, 1988.