Stateflow 차트 생성 및 실행하기
Stateflow® 차트는 상태, 천이 및 데이터로 구성된 유한 상태 머신을 그래픽으로 표현한 것입니다. Stateflow 차트를 만들어 시스템이 외부 입력 신호, 이벤트, 시간 기반 조건에 반응하는 방식을 정의할 수 있습니다.
예를 들어 아래 Stateflow 차트는 반파 정류기의 기반이 되는 로직을 나타냅니다. 차트에는 On
및 Off
레이블이 지정된 2개의 상태가 있습니다. On
상태에서 차트 출력 신호 y
는 입력값 x
와 동일합니다. Off
상태에서 출력 신호는 0으로 설정됩니다. 입력 신호가 임계값 t0
을 지나면 차트가 이들 상태 간에 천이합니다. 각 상태의 동작이 시뮬레이션의 각 시간 스텝에서 y
의 값을 업데이트합니다.
이 예제에서는 이 Stateflow 차트를 생성하고 시뮬레이션하는 방법을 보여줍니다.
Stateflow 차트 생성하기
Stateflow 편집기 열기
Stateflow 편집기는 상태 천이 다이어그램, 플로우 차트, 상태 천이 테이블 및 진리표를 설계하기 위한 그래픽 환경입니다.
Stateflow 편집기의 기본 컴포넌트는 차트 캔버스, 객체 팔레트, 기호 창입니다.
차트 캔버스는 상태, 천이 및 다른 그래픽 요소를 조합하여 차트를 만드는 그리기 영역입니다.
캔버스 왼쪽에 있는 객체 팔레트에는 차트에 그래픽 요소를 추가하는 데 사용할 수 있는 일련의 툴이 표시됩니다.
캔버스 오른쪽의 기호 창에서는 새 데이터, 이벤트, 메시지를 차트에 추가하고 정의되지 않은 기호나 미사용 기호의 연결을 맺습니다.
상태 및 천이 추가하기
객체 팔레트에서 상태 아이콘 을 클릭하고 포인터를 차트 캔버스로 이동합니다. 디폴트 천이를 가진 상태가 나타납니다. 상태를 배치하려면 캔버스에서 원하는 위치를 클릭합니다. 텍스트 프롬프트에서 상태 이름으로
On
을 입력하고 상태 동작으로y = x
를 입력합니다.다른 상태를 추가합니다.
On
상태를 마우스 오른쪽 버튼으로 클릭하고 끕니다. 파란색 그래픽 큐가 상태를 가로 또는 세로로 정렬하도록 도와줍니다. 새로운 상태의 이름이Off
로 변경됩니다. 상태를 더블 클릭하고 상태 동작을y = 0
으로 수정합니다.두 상태를 다시 정렬하고 두 상태 사이의 공간에서 잠시 멈춥니다. 파란색 천이 큐가 상태를 연결할 수 있는 여러 가지 방법을 나타냅니다. 천이를 추가하려면 적절한 큐를 클릭합니다.
또는 한 상태의 가장자리를 클릭하여 다른 상태의 가장자리로 끌어 천이를 그립니다.
각 천이를 더블 클릭하고 적절한 천이 조건을
x<t0
또는x>=t0
으로 입력합니다. 조건이 대괄호 안에 표시됩니다.차트를 정리합니다.
명확성을 개선하려면 각 천이 레이블을 해당 천이 위 또는 아래의 편리한 위치로 이동합니다.
차트의 그래픽 요소를 정렬하고 크기를 조정하려면 형식 탭에서 자동 정렬을 클릭하거나 Ctrl+Shift+A를 누릅니다.
캔버스에 맞도록 차트의 크기를 조정하려면 스페이스바를 누르거나 화면에 맞춤 아이콘 을 클릭합니다.
정의되지 않은 기호 연결 맺기
차트를 실행하기 전에 차트에서 사용되는 각 기호를 정의하고 범위(예: 입력 데이터, 출력 데이터 또는 로컬 데이터)를 지정해야 합니다.
모델링 탭의 설계 데이터 아래에서 기호 창을 선택합니다.
기호 창에서 정의되지 않은 기호에는 빨간색 오류 배지 가 표시됩니다.
기호 창에서 정의되지 않은 기호 연결 맺기 를 클릭합니다. 유형 열에는 차트에서의 사용 정보에 기반하여 정의되지 않은 각 기호에 대해 제안된 범위가 표시됩니다. Stateflow 편집기는 기호
x
와t0
을 입력 데이터 로 연결을 맺고y
를 출력 데이터 로 연결을 맺습니다.임계값
t0
이 시뮬레이션 중에 변경되지 않으므로 범위를 상수 데이터로 변경합니다. 유형 열에서t0
옆의 데이터 유형 아이콘을 클릭하고상수 데이터
를 선택합니다.임계값
t0
의 값을 설정합니다. 값 열에서t0
옆의 빈 항목을 클릭하고 값을 0으로 입력합니다.Stateflow 차트를 저장합니다.
모델 시뮬레이션하기
Simulink 모델을 시뮬레이션하려면 입력 포트와 출력 포트를 통해 모델의 다른 블록에 차트 블록을 연결합니다.
Simulink 편집기로 돌아가려면 캔버스 맨 위의 탐색 막대에서 Simulink 모델의 이름(
수정
)을 클릭합니다. 탐색 막대가 표시되지 않으면 객체 팔레트 맨 위에 있는 탐색 막대 표시/숨기기 아이콘 을 클릭합니다.모델에 소스를 추가합니다.
Simulink Sources 라이브러리에서 Sine Wave (Simulink) 블록을 추가합니다.
Sine Wave 블록을 더블 클릭하고 샘플 시간을 0.2로 설정합니다.
Sine Wave 블록의 출력을 Stateflow 차트의 입력에 연결합니다.
신호의 레이블을
x
로 지정합니다.
모델에 싱크를 추가합니다.
Simulink Sinks 라이브러리에서 두 개의 입력 포트가 있는 Scope (Simulink) 블록을 추가합니다.
Sine Wave 블록의 출력을 Scope 블록의 첫 번째 입력에 연결합니다.
Stateflow 차트의 출력을 Scope 블록의 두 번째 입력에 연결합니다.
신호의 레이블을
y
로 지정합니다.
Simulink 모델을 저장합니다.
모델을 시뮬레이션하려면 실행 을 클릭합니다. 시뮬레이션 중에 Stateflow 편집기는 차트 애니메이션을 통해 활성 상태와 천이를 강조 표시합니다.
모델을 시뮬레이션한 후 Scope 블록을 더블 클릭합니다. 스코프에 차트에 대한 입력 및 출력 신호의 그래프가 표시됩니다.
시뮬레이션 결과는 정류기가 음수 입력값을 필터링했음을 보여줍니다.