이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
Stateflow 차트를 사용하여 유한 상태 머신 모델링하기
유한 상태 머신은 변경을 정의하는 조건이 true일 때 한 작동 모드에서 다른 작동 모드로 천이하는 이벤트 기반 반응 시스템을 표현한 것입니다. 예를 들어 자동차의 자동 변속을 표현하는 데 상태 머신을 사용할 수 있습니다. 변속기에는 주차, 후진, 중립, 주행, 저단과 같은 작동 모드가 있습니다. 운전자가 기어 변속기를 움직이면 시스템이 한 작동 모드에서 다른 작동 모드로 천이합니다.
Stateflow 블록 유형
유한 상태 머신의 입력, 출력, 작동 모드 간의 관계를 표현하기 위해 Stateflow® 블록을 Simulink® 모델에 추가하여 상태 천이 다이어그램, 상태 천이 테이블, 진리표를 만들 수 있습니다.
Chart는 상태 천이 다이어그램을 기반으로 유한 상태 머신을 그래픽으로 표현한 것입니다. Stateflow 차트에서 상태와 천이는 순차 논리 시스템의 기본 구성요소를 형성합니다. 상태는 작동 모드에 해당하고 천이는 상태 사이의 경로를 나타냅니다. 자세한 내용은 상태를 사용하여 동작 모드 표현하기 항목과 Transition Between Operating Modes 항목을 참조하십시오.
State Transition Table은 순차적 모달 논리를 위한 유한 상태 머신을 테이블 형식으로 표현합니다. Stateflow 차트에서 상태와 천이를 그리는 대신에, 그래픽 객체의 유지관리를 간결하고 간소한 형식을 통해 최소화해 주는 상태 천이 테이블을 사용하여 상태 머신을 모델링할 수 있습니다. 자세한 내용은 Model Finite State Machines Using State Transition Tables 항목을 참조하십시오.
Truth Table은 조합 논리 설계를 테이블 형식으로 구현합니다. Truth Table 블록을 사용하여 결함 검출 및 관리와 모드 전환에 대한 의사결정을 모델링할 수 있습니다. 자세한 내용은 Use Truth Tables to Model Combinatorial Logic 항목을 참조하십시오.
제어 논리를 구현하기 위해 Stateflow 차트와 State Transition Table 블록은 MATLAB® 또는 C를 동작 언어로 사용할 수 있습니다. Truth Table 블록은 MATLAB만 동작 언어로 사용합니다. 자세한 내용은 Differences Between MATLAB and C as Action Language Syntax 항목을 참조하십시오.
팁
상태 머신 프로그래밍의 장점과 MATLAB의 모든 기능을 결합하기 위해 독립 실행형 Stateflow 차트를 만들 수 있습니다. 독립 실행형 차트를 MATLAB 객체로 실행하는데, 명령 창을 통해 직접 실행하거나 스크립트를 사용하여 실행합니다. 그래픽 사용자 인터페이스를 통해 차트의 상태를 제어하는 MATLAB 앱을 프로그래밍할 수도 있습니다. 자세한 내용은 Create Stateflow Charts for Execution as MATLAB Objects 항목을 참조하십시오.
Stateflow 차트 프로그래밍하기
유한 상태 머신을 모델링하는 Stateflow 차트를 만들려면 다음을 수행하십시오.
함수
sfnew
를 호출하여 빈 Stateflow 차트가 포함된 Simulink 모델을 만듭니다.sfnew
Stateflow 편집기를 열려면 차트 블록을 더블 클릭하십시오. Stateflow 편집기를 사용하는 방법에 대한 자세한 내용은 Stateflow Editor Operations 항목을 참조하십시오.
상태를 사용하여 동작 모드 표현하기에 설명된 대로 시스템의 각 작동 모드에 대해 상태를 그리고 상태 레이블을 추가하여 상태 동작을 구현합니다.
복잡한 시스템을 구성하려면 부모 상태 내에 자식 상태를 그려 상태 계층 구조를 정의합니다. 예를 들어 상위 상태를 사용하여 동일한 상태 동작을 공유하는 하위 상태를 묶을 수 있습니다. 자세한 내용은 Use State Hierarchy to Design Multilevel State Complexity 항목을 참조하십시오.
동시에 활성화되는 작동 모드를 모델링하려면 부모 상태에서 병렬(AND) 분해를 활성화합니다. 자세한 내용은 상태 분해를 사용하여 배타적 모드 및 병렬 모드 정의하기 항목을 참조하십시오.
상태 간의 흐름 논리 방향을 표현하려면 Transition Between Operating Modes에 설명된 대로 천이를 그리고 천이 레이블을 추가하여 천이 조건을 구현합니다.
활성화될 첫 번째 상태를 표시하려면 디폴트 천이를 사용합니다. 자세한 내용은 Use Default Transitions to Specify Initial Substate Activity 항목을 참조하십시오.
하나의 소스에서 여러 대상으로 또는 여러 소스에서 하나의 대상으로의 경로를 만들려면 천이와 연결점을 결합합니다. 자세한 내용은 Combine Transitions and Junctions to Create Branching Paths 항목을 참조하십시오.
시스템에 입력이나 출력이 있거나 시스템이 상태 변수에 의존하는 경우 Add Stateflow Data에 설명된 대로 입력, 출력, 로컬 데이터를 추가합니다.
시스템이 이벤트 트리거에 반응하는 경우 또는 시스템이 차트에서나 모델의 다른 블록에서 동작을 트리거해야 하는 경우 Synchronize Model Components by Broadcasting Events에 설명된 대로 입력, 출력 또는 로컬 이벤트를 추가합니다.
차트에 복잡한 상태 동작이나 천이 조건이 있는 경우 차트에 재사용 가능 함수를 추가합니다. 다음 함수 중에서 선택하여 상태 동작이나 천이 조건의 계산 유형에 가장 자연스러운 함수 형식을 사용하십시오.
그래픽 함수 — 논리 패턴 및 반복 루프 패턴이 포함된 플로우 차트를 캡슐화합니다. Reuse Logic Patterns by Defining Graphical Functions 항목을 참조하십시오.
MATLAB 함수 — 데이터 분석 및 시각화를 위한 행렬 기반 알고리즘을 작성합니다. Reuse MATLAB Code by Defining MATLAB Functions 항목을 참조하십시오.
Simulink 함수 — Simulink 함수 호출 서브시스템을 호출하여 설계를 간소화합니다. Reuse Simulink Functions in Stateflow Charts 항목을 참조하십시오.
진리표 — 의사결정 응용 사례에 사용할 조합 논리를 표현합니다. Use Truth Tables to Model Combinatorial Logic 항목을 참조하십시오.
또는 차트와 통합하기 위해 직접 C 또는 C++ 코드를 작성할 수도 있습니다. 자세한 내용은 Reuse Custom Code in Stateflow Charts 항목을 참조하십시오.
입력 포트와 출력 포트를 사용하여 Simulink 모델의 다른 블록에 차트를 연결합니다.
모델을 시뮬레이션하려면 실행 을 클릭합니다. 시뮬레이션 중에 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.