Stateflow API 개요
Stateflow® API(애플리케이션 프로그래밍 인터페이스)를 사용하면 MATLAB® 명령 창에서 Stateflow 차트를 만들거나 변경할 수 있습니다. MATLAB 함수 또는 스크립트에 Stateflow API 명령을 넣어 다음을 수행할 수 있습니다.
여러 편집 단계를 하나의 명령으로 실행하여 차트 수정 작업을 자동화할 수 있습니다.
사용자가 애플리케이션의 템플릿으로 재사용할 수 있는 "기본" Stateflow 차트를 생성하여 반복적인 차트 생성 단계를 제거할 수 있습니다.
사용자 모델에 특화된 리포트를 생성할 수 있습니다.
Stateflow API는 Stateflow 차트의 그래픽 객체와 비그래픽 객체를 나타내는 객체로 구성됩니다. 예를 들어, API 객체 Stateflow.State
와 Stateflow.Transition
은 Stateflow 차트의 상태와 천이를 나타냅니다. API 객체의 속성을 수정하거나 API 객체의 객체 함수 중 하나를 호출하면 Stateflow 차트의 해당 객체에 영향을 미치게 됩니다. Stateflow 편집기를 사용하여 차트의 객체에 대한 작업을 수행하면 해당 API 객체에 영향을 미치게 됩니다.
참고
Stateflow API를 사용하여 수행하는 Stateflow 편집기의 작업은 실행 취소할 수 없습니다. API를 통해 편집 작업을 수행하는 경우에는 빠른 액세스 도구 모음에 있는 실행 취소 버튼과 다시 실행 버튼이 비활성화됩니다.
Stateflow API 객체의 계층 구조
Stateflow API 객체들은 포함 계층 구조 안에 구성되어 있습니다. 예를 들어 Stateflow 차트에서 상태 A
가 상태 B
를 포함하는 경우, 상태 A
의 API 객체는 상태 B
의 API 객체를 포함합니다. Stateflow API 계층 구조는 Stateflow 객체 계층 구조와 동일한 포함 규칙을 따릅니다. 예를 들어, 차트는 상태를 포함하지만 상태는 차트를 포함할 수 없습니다. 자세한 내용은 Stateflow 객체 개요 항목을 참조하십시오.
다음 다이어그램은 Stateflow API에서 객체의 계층 구조를 보여줍니다.
계층 구조는 4개 수준의 포함 계층으로 구성됩니다.
루트 —
Simulink.Root
객체는 모든 Stateflow API 객체의 부모입니다. 루트는 Stateflow API 계층 구조의 최상위에 있는 자리 표시자로서, 이에 의해 Stateflow 객체와 Simulink® 모델 내의 다른 객체가 구분됩니다. Stateflow 차트, State Transition Table 블록, Truth Table 블록 또는 MATLAB Function 블록을 Simulink 모델에 추가하거나 이러한 블록 중 하나를 포함하는 모델을 불러올 때,Simulink.Root
객체가 자동으로 생성됩니다.머신 — Stateflow 관점에서,
Stateflow.Machine
객체는 Simulink 모델과 동일합니다.Stateflow.Machine
객체에는 모델의 Stateflow 차트, State Transition Table 블록, Truth Table 블록, MATLAB Function 블록을 나타내는 객체가 포함됩니다.차트 —
Stateflow.Chart
,Stateflow.StateTransitionTableChart
,Stateflow.TruthTableChart
,Stateflow.EMChart
객체는 각각 Stateflow 차트, State Transition Table 블록, Truth Table 블록, MATLAB Function 블록을 나타냅니다. 계층 구조의 이 수준에 있는 객체에는 상태, 함수, 상자, 데이터, 이벤트, 메시지, 천이, 연결점, 진입 포트와 진출 포트, 주석이 포함될 수 있습니다.상태, 함수, 상자 — 계층 구조의 이 수준에는 각각 상태, 함수, 상자를 나타내는
Stateflow.State
객체,Stateflow.Function
객체,Stateflow.Box
객체가 포함됩니다. 이러한 객체에는 상태, 함수, 상자, 데이터, 이벤트, 메시지, 천이, 연결점, 진입 포트와 진출 포트, 주석이 포함될 수 있습니다. 중첩의 수준은 무한정 계속될 수 있습니다.
계층 구조 다이어그램에는 포함 계층 구조의 외부에 있는 다음 두 가지 객체 유형이 나와 있습니다.
편집기 —
Stateflow.Editor
객체는 차트와 상태 천이 테이블의 그래픽 요소에 대한 액세스 권한을 제공합니다. 각Stateflow.Chart
객체 또는Stateflow.StateTransitionTableChart
객체에는 사용자가 Stateflow 편집기의 위치, 크기, 확대/축소 수준을 제어하기 위해 사용할 수 있는Stateflow.Editor
객체가 있습니다. 자세한 내용은 Zoom in on Stateflow Chart, Zoom out on Stateflow Chart, Set Zoom Factor 항목을 참조하십시오.클립보드 —
Stateflow.Clipboard
객체에는 클립보드를 스테이징 영역으로 사용하여 Stateflow API에서 복사해 붙여 넣는 기능을 구현하는 두 함수copy
와pasteTo
가 있습니다. 자세한 내용은 그룹화를 통해 복사하여 붙여넣기 항목과 객체의 배열 복사 및 붙여넣기 항목을 참조하십시오.
Stateflow API 객체에 액세스하기
Stateflow API를 사용하려면 먼저 Stateflow API에 있는 모든 객체의 부모인 Simulink.Root
객체에 액세스하십시오. 모델에 있는 다른 API 객체에 액세스하려면 Simulink.Root
객체를 사용합니다. 예를 들면 다음과 같습니다.
함수
sfnew
를 호출하여 빈 Stateflow 차트가 포함된 Simulink 모델을 만듭니다.sfnew
함수
sfroot
를 사용하여Simulink.Root
객체에 액세스합니다.rt = sfroot;
find
함수를 호출하여 모델에 있는 차트에 대응하는Stateflow.Chart
객체에 액세스합니다.ch = find(rt,"-isa","Stateflow.Chart");
Stateflow.State
함수를 호출하여 상태를 차트에 추가합니다. 이 함수는 새 상태에 대응되는Stateflow.State
객체를 반환합니다.st = Stateflow.State(ch);
새 상태를 Stateflow 편집기에 표시합니다.
view(st)
자세한 내용은 Access Objects in Your Stateflow Chart 항목과 Create Charts by Using the Stateflow API 항목을 참조하십시오.
API 객체의 속성 수정하기
API 객체에는 Stateflow 편집기에서 설정한 값에 대응하는 속성이 있습니다. 예를 들어, 편집기를 사용하여 상태의 위치를 변경하려면 상태를 클릭하여 끌어서 놓습니다. Stateflow API를 사용해 대응하는 Stateflow.State
객체의 Position
속성을 수정하여 상태의 위치를 변경합니다.
st.Position = [10 20 100 80];
API 객체 함수 호출하기
API 객체에는 Stateflow 편집기의 동작에 대응하는 함수가 있습니다. 예를 들어, 편집기를 사용하여 천이의 속성 대화 상자를 열려면 천이를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택합니다. Stateflow API를 사용하여 이 대화 상자를 열려면 대응하는 Stateflow.Transition
객체의 dialog
함수를 호출하십시오.
dialog(tr);
참고 항목
함수
객체
Stateflow.Box
|Stateflow.Chart
|Stateflow.Clipboard
|Stateflow.Editor
|Stateflow.EMChart
|Stateflow.Function
|Stateflow.Machine
|Stateflow.State
|Stateflow.StateTransitionTableChart
|Stateflow.Transition
|Stateflow.TruthTableChart