Main Content

Stateflow 차트 생성 및 실행하기

Stateflow® 차트는 상태, 천이 및 데이터로 구성된 유한 상태 머신을 그래픽으로 표현한 것입니다. Stateflow 차트를 만들어 시스템이 외부 입력 신호, 이벤트, 시간 기반 조건에 반응하는 방식을 정의할 수 있습니다.

예를 들어 아래 Stateflow 차트는 반파 정류기의 기반이 되는 로직을 나타냅니다. 차트에는 OnOff 레이블이 지정된 2개의 상태가 있습니다. On 상태에서 차트 출력 신호 y는 입력값 x와 동일합니다. Off 상태에서 출력 신호는 0으로 설정됩니다. 입력 신호가 임계값 t0을 지나면 차트가 이들 상태 간에 천이합니다. 각 상태의 동작이 시뮬레이션의 각 시간 스텝에서 y의 값을 업데이트합니다.

Stateflow chart with two states.

이 예제에서는 이 Stateflow 차트를 생성하고 시뮬레이션하는 방법을 보여줍니다.

Stateflow 차트 생성하기

Stateflow 편집기 열기

Stateflow 편집기는 상태 천이 다이어그램, 플로우 차트, 상태 천이 테이블 및 진리표를 설계하기 위한 그래픽 환경입니다.

  1. Stateflow 차트가 포함된 새 Simulink 모델을 열려면 MATLAB 명령 창에서 sfnew 함수를 사용합니다.

    sfnew rectify

    Simulink®rectify라는 모델을 만들며, 여기에는 빈 Stateflow Chart 블록이 포함되어 있습니다.

  2. Stateflow 편집기를 열려면 차트 블록을 더블 클릭합니다.

Stateflow 편집기의 기본 컴포넌트는 차트 캔버스, 객체 팔레트, 기호 창입니다.

  • 차트 캔버스는 상태, 천이 및 다른 그래픽 요소를 조합하여 차트를 만드는 그리기 영역입니다.

  • 캔버스 왼쪽에 있는 객체 팔레트에는 차트에 그래픽 요소를 추가하는 데 사용할 수 있는 일련의 툴이 표시됩니다.

  • 캔버스 오른쪽의 기호 창에서는 새 데이터, 이벤트, 메시지를 차트에 추가하고 정의되지 않은 기호나 미사용 기호의 연결을 맺습니다.

Default view of the Stateflow Editor.

상태 및 천이 추가하기

  1. 객체 팔레트에서 상태 아이콘 을 클릭하고 포인터를 차트 캔버스로 이동합니다. 디폴트 천이를 가진 상태가 나타납니다. 상태를 배치하려면 캔버스에서 원하는 위치를 클릭합니다. 텍스트 프롬프트에서 상태 이름으로 On을 입력하고 상태 동작으로 y = x를 입력합니다.

    Chart with one state, On.

  2. 다른 상태를 추가합니다. On 상태를 마우스 오른쪽 버튼으로 클릭하고 끕니다. 파란색 그래픽 큐가 상태를 가로 또는 세로로 정렬하도록 도와줍니다. 새로운 상태의 이름이 Off로 변경됩니다. 상태를 더블 클릭하고 상태 동작을 y = 0으로 수정합니다.

    Chart with two states, On and Off.

  3. 두 상태를 다시 정렬하고 두 상태 사이의 공간에서 잠시 멈춥니다. 파란색 천이 큐가 상태를 연결할 수 있는 여러 가지 방법을 나타냅니다. 천이를 추가하려면 적절한 큐를 클릭합니다.

    또는 한 상태의 가장자리를 클릭하여 다른 상태의 가장자리로 끌어 천이를 그립니다.

    Chart with the two states joined by transitions.

  4. 각 천이를 더블 클릭하고 적절한 천이 조건을 x<t0 또는 x>=t0으로 입력합니다. 조건이 대괄호 안에 표시됩니다.

    Chart with transition conditions.

  5. 차트를 정리합니다.

    • 명확성을 개선하려면 각 천이 레이블을 해당 천이 위 또는 아래의 편리한 위치로 이동합니다.

    • 차트의 그래픽 요소를 정렬하고 크기를 조정하려면 형식 탭에서 자동 정렬을 클릭하거나 Ctrl+Shift+A를 누릅니다.

    • 캔버스에 맞도록 차트의 크기를 조정하려면 스페이스바를 누르거나 화면에 맞춤 아이콘 을 클릭합니다.

정의되지 않은 기호 연결 맺기

차트를 실행하기 전에 차트에서 사용되는 각 기호를 정의하고 범위(예: 입력 데이터, 출력 데이터 또는 로컬 데이터)를 지정해야 합니다.

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

    기호 창에서 정의되지 않은 기호에는 빨간색 오류 배지 가 표시됩니다.

  2. 기호 창에서 정의되지 않은 기호 연결 맺기 를 클릭합니다. 유형 열에는 차트에서의 사용 정보에 기반하여 정의되지 않은 각 기호에 대해 제안된 범위가 표시됩니다. Stateflow 편집기는 기호 xt0을 입력 데이터 로 연결을 맺고 y를 출력 데이터 로 연결을 맺습니다.

    Before and after views of the Symbols pane resolving the undefined symbols t0, x, and y.

  3. 임계값 t0이 시뮬레이션 중에 변경되지 않으므로 범위를 상수 데이터로 변경합니다. 유형 열에서 t0 옆의 데이터 유형 아이콘을 클릭하고 상수 데이터를 선택합니다.

  4. 임계값 t0의 값을 설정합니다. 열에서 t0 옆의 빈 항목을 클릭하고 값을 0으로 입력합니다.

  5. Stateflow 차트를 저장합니다.

모델 시뮬레이션하기

Simulink 모델을 시뮬레이션하려면 입력 포트와 출력 포트를 통해 모델의 다른 블록에 차트 블록을 연결합니다.

  1. Simulink 편집기로 돌아가려면 캔버스 맨 위의 탐색 막대에서 Simulink 모델의 이름(수정)을 클릭합니다. 탐색 막대가 표시되지 않으면 객체 팔레트 맨 위에 있는 탐색 막대 표시/숨기기 아이콘 을 클릭합니다.

  2. 모델에 소스를 추가합니다.

    • Simulink Sources 라이브러리에서 Sine Wave (Simulink) 블록을 추가합니다.

    • Sine Wave 블록을 더블 클릭하고 샘플 시간을 0.2로 설정합니다.

    • Sine Wave 블록의 출력을 Stateflow 차트의 입력에 연결합니다.

    • 신호의 레이블을 x로 지정합니다.

  3. 모델에 싱크를 추가합니다.

    • Simulink Sinks 라이브러리에서 두 개의 입력 포트가 있는 Scope (Simulink) 블록을 추가합니다.

    • Sine Wave 블록의 출력을 Scope 블록의 첫 번째 입력에 연결합니다.

    • Stateflow 차트의 출력을 Scope 블록의 두 번째 입력에 연결합니다.

    • 신호의 레이블을 y로 지정합니다.

  4. Simulink 모델을 저장합니다.

    In a Simulink model, a Sine Wave block creates an input signal for the chart. A Scope block plots the input and output of the chart.

  5. 모델을 시뮬레이션하려면 실행 을 클릭합니다. 시뮬레이션 중에 Stateflow 편집기는 차트 애니메이션을 통해 활성 상태와 천이를 강조 표시합니다.

  6. 모델을 시뮬레이션한 후 Scope 블록을 더블 클릭합니다. 스코프에 차트에 대한 입력 및 출력 신호의 그래프가 표시됩니다.

    Scope block showing the input and output of the chart.

    시뮬레이션 결과는 정류기가 음수 입력값을 필터링했음을 보여줍니다.

관련 항목