이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
Stateflow 차트 생성 및 실행하기
Stateflow® 차트는 상태, 천이 및 데이터로 구성된 유한 상태 머신을 그래픽으로 표현한 것입니다. Stateflow 차트를 생성하여 MATLAB® 알고리즘 또는 Simulink® 모델이 외부 입력 신호, 이벤트 및 시간 기반 조건에 반응하는 방식을 정의할 수 있습니다.
예를 들어 이 Stateflow 차트는 반파 정류기의 기반이 되는 로직을 나타냅니다. 차트에는 On
및 Off
레이블이 지정된 2개의 상태가 있습니다. On
상태에서 차트 출력 신호 y
는 입력값 x
와 동일합니다. Off
상태에서 출력 신호는 0으로 설정됩니다. 입력 신호가 임계값 t0
을 지나면 차트가 이들 상태 간에 천이합니다. 각 상태의 동작이 시뮬레이션의 각 시간 스텝에서 y
의 값을 업데이트합니다.
이 예제에서는 Simulink에서 시뮬레이션하고 MATLAB에서 실행하기 위해 이 Stateflow 차트를 생성하는 방법을 보여줍니다.
Stateflow 차트 생성하기
Stateflow 편집기 열기
Stateflow 편집기는 상태 천이 다이어그램, 플로우 차트, 상태 천이 테이블 및 진리표를 설계하기 위한 그래픽 환경입니다. Stateflow 편집기를 열기 전에 요구 사항에 가장 적합한 차트 실행 모드를 결정합니다.
주기적 또는 연속시간 Simulink 알고리즘을 위한 조건부, 이벤트 기반 및 시간 기반 로직을 모델링하려면
sfnew
함수를 사용해서 Simulink 모델에서 블록으로 시뮬레이션할 수 있는 Stateflow 차트를 만듭니다. MATLAB 명령 프롬프트에서 다음을 입력합니다.sfnew rectify % create chart for simulation in a Simulink model
Simulink가
rectify
라는 모델을 만들며, 여기에는 빈 Stateflow Chart 블록이 포함되어 있습니다. Stateflow 편집기를 열려면 차트 블록을 더블 클릭하십시오.MATLAB 응용 프로그램을 위해 재사용 가능한 상태 머신 및 타이밍 로직을 설계하려면
edit
함수를 사용해서 MATLAB 객체로 실행할 수 있는 독립 실행형 Stateflow 차트를 만듭니다. MATLAB 명령 프롬프트에서 다음을 입력합니다.edit rectify.sfx % create chart for execution as a MATLAB object
rectify.sfx
파일이 없을 경우, Stateflow 편집기는rectify
라는 이름의 빈 차트를 만듭니다.
Stateflow 편집기의 기본 컴포넌트는 차트 캔버스, 객체 팔레트, 기호 창입니다.
차트 캔버스는 상태, 천이 및 다른 그래픽 요소를 조합하여 차트를 만드는 그리기 영역입니다.
캔버스 왼쪽에 있는 객체 팔레트에는 차트에 그래픽 요소를 추가하는 데 사용할 수 있는 일련의 툴이 표시됩니다.
캔버스 오른쪽의 기호 창에서는 새 데이터, 이벤트, 메시지를 차트에 추가하고 정의되지 않은 기호나 미사용 기호의 연결을 맺습니다.
팁
Stateflow 차트를 작성한 후에는 차트의 내용을 다른 실행 모드를 갖는 다른 차트로 복사할 수 있습니다. 예를 들어 MATLAB에서 실행할 차트를 생성하고 그 내용을 Simulink에서 시뮬레이션할 차트로 복사할 수 있습니다.
상태 및 천이 추가하기
객체 팔레트에서 상태 아이콘 을 클릭하고 포인터를 차트 캔버스로 이동합니다. 디폴트 천이를 가진 상태가 나타납니다. 상태를 배치하려면 캔버스에서 원하는 위치를 클릭합니다. 텍스트 프롬프트에서 상태 이름으로
On
을 입력하고 상태 동작으로y = x
를 입력합니다.다른 상태를 추가합니다.
On
상태를 마우스 오른쪽 버튼으로 클릭하고 끕니다. 파란색 그래픽 큐가 상태를 가로 또는 세로로 정렬하도록 도와줍니다. 새로운 상태의 이름이Off
로 변경됩니다. 상태를 더블 클릭하고 상태 동작을y = 0
으로 수정합니다.두 상태를 다시 정렬하고 두 상태 사이의 공간에서 잠시 멈춥니다. 파란색 천이 큐가 상태를 연결할 수 있는 여러 가지 방법을 나타냅니다. 천이를 추가하려면 적절한 큐를 클릭합니다.
또는 한 상태의 가장자리를 클릭하여 다른 상태의 가장자리로 끌어 천이를 그립니다.
각 천이를 더블 클릭하고 적절한 천이 조건을
x<t0
또는x>=t0
으로 입력합니다. 조건이 대괄호 안에 표시됩니다.차트를 정리합니다.
명확성을 개선하려면 각 천이 레이블을 해당 천이 위 또는 아래의 편리한 위치로 이동합니다.
차트의 그래픽 요소를 정렬하고 크기를 조정하려면 형식 탭에서 자동 정렬을 클릭하거나 Ctrl+Shift+A를 누릅니다.
캔버스에 맞도록 차트의 크기를 조정하려면 스페이스바를 누르거나 화면에 맞춤 아이콘 을 클릭합니다.
정의되지 않은 기호 연결 맺기
차트를 실행하기 전에 차트에서 사용되는 각 기호를 정의하고 범위(예: 입력 데이터, 출력 데이터 또는 로컬 데이터)를 지정해야 합니다. 기호 창에서 정의되지 않은 기호에는 빨간색 오류 배지 가 표시됩니다. 유형 열에는 차트에서의 사용 정보에 기반하여 정의되지 않은 각 기호에 대해 제안된 범위가 표시됩니다.
기호 창을 엽니다.
Simulink 모델에서 차트를 작성하는 경우 모델링 탭의 설계 데이터 아래에서 기호 창을 선택합니다.
MATLAB에서 실행할 독립 실행형 차트를 작성하는 경우 상태 차트 탭에서 데이터 추가 > 기호 창을 선택합니다.
기호 창에서 정의되지 않은 기호 연결 맺기 를 클릭합니다.
Simulink 모델에서 차트를 작성하는 경우 Stateflow 편집기는
x
및t0
기호를 입력 데이터 로 연결을 맺고y
를 출력 데이터 로 연결을 맺습니다.MATLAB에서 실행할 독립 실행형 차트를 작성하는 경우 Stateflow 편집기는
t0
,x
및y
를 로컬 데이터 로 연결을 맺습니다.
임계값
t0
이 시뮬레이션 중에 변경되지 않으므로 범위를 상수 데이터로 변경합니다. 유형 열에서t0
옆의 데이터 유형 아이콘을 클릭하고상수 데이터
를 선택합니다.임계값
t0
의 값을 설정합니다. 값 열에서t0
옆의 빈 항목을 클릭하고 값을 0으로 입력합니다.Stateflow 차트를 저장합니다.
이제 차트를 Simulink에서 시뮬레이션에 사용하거나 MATLAB에서 실행할 준비가 되었습니다.
차트를 Simulink 블록으로 시뮬레이션하기
Simulink 모델 내에서 차트를 시뮬레이션하려면 입력 및 출력 포트를 통해 모델의 다른 블록에 차트 블록을 연결합니다. MATLAB 명령 창에서 차트를 실행하려면 차트를 MATLAB 객체로 실행하기 항목을 참조하십시오.
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 블록을 더블 클릭합니다. 스코프에 차트에 대한 입력 및 출력 신호의 그래프가 표시됩니다.
시뮬레이션 결과는 정류기가 음수 입력값을 필터링했음을 보여줍니다.
차트를 MATLAB 객체로 실행하기
MATLAB 명령 창에서 차트를 실행하려면 차트 객체를 생성하고 객체의 step
함수를 호출합니다. Simulink 모델 내부에서 차트를 시뮬레이션하려면 차트를 Simulink 블록으로 시뮬레이션하기 항목을 참조하십시오.
차트 정의를 포함하는
sfx
파일의 이름을 함수로 사용하여 차트 객체r
을 생성합니다. 차트 데이터x
의 초기값을 이름-값 쌍으로 지정합니다.r = rectify(x=0);
차트 실행을 위해 입력 및 출력 데이터를 초기화합니다. 벡터
X
에는 사인파의 입력값이 포함됩니다. 벡터Y
는 빈 누산기입니다.T = 0:0.2:10; X = sin(T); Y = [];
step
함수를 여러 번 호출하여 차트 객체를 실행합니다. 벡터X
의 개별 값을 차트 데이터x
로 전달합니다. 벡터Y
에서y
의 결과 값을 수집합니다. 실행 중에 Stateflow 편집기는 차트 애니메이션을 통해 활성 상태와 천이를 강조 표시합니다.for i = 1:51 step(r,x=X(i)); Y(i) = r.y; end
MATLAB 작업 공간에서 차트 객체
r
을 삭제합니다.delete(r)
차트 실행 결과를 검토합니다. 예를 들어
stairs
함수를 호출하여X
와Y
의 값을 비교하는 계단 그래프를 만들 수 있습니다.ax1 = subplot(2,1,1); stairs(ax1,T,X,color="#0072BD") title(ax1,"x") ax2 = subplot(2,1,2); stairs(ax2,T,Y,color="#D95319") title(ax2,"y")
실행 결과는 정류기가 음수 입력값을 필터링했음을 보여줍니다.