주요 콘텐츠

상태 천이 테이블을 사용하여 유한 상태 머신 모델링하기

State Transition Table 블록을 사용하여 순차적 모달 논리를 위한 유한 상태 머신을 모델링할 수 있습니다. Stateflow® 차트와 비교했을 때, 상태 천이 테이블은 최상위 수준 Simulink 모델을 추가하거나 수정할 때 그래픽 객체의 유지관리를 최소화해 줍니다.

상태 천이 테이블 프로그래밍하기

상태 천이 테이블에서 행은 시스템의 상태를 나타냅니다. 천이 열은 상태에서 나가는 각 천이에 대한 조건, 조건 동작, 대상을 지정합니다. IF 열은 모델의 기본 천이를 나타내며, ELSE-IF 열에는 기본 천이가 유효하지 않을 경우 모델이 취하는 동작이 포함됩니다. 또한 천이 열 추가천이 열 삽입 옵션을 사용하여 열을 더 추가할 수도 있습니다.

각 열의 셀은 3개의 하위 행으로 나뉩니다. 첫 번째 행은 조건 셀, 두 번째 행은 조건 동작 셀, 세 번째 행은 대상 상태 셀입니다. 조건과 조건 동작에 대한 자세한 내용은 천이의 동작 정의하기 항목을 참조하십시오.

Diagram of state transition table highlighting state column, transition column, condition cell, condition action cell, and destination state cell.

예를 들어 이 상태 천이 테이블에는 보일러의 온도를 두 설정 지점 reference_lowreference_high 사이에서 유지하는 모달 논리가 포함되어 있습니다. 정상적인 작동 중에는 보일러가 상태 Off, Warmup, On 사이에서 순환합니다.

State transition table with two top-level states called Normal and Alarm. Normal has three substates called Off, Warmup, and On.

상태 천이 테이블은 이 동일한 모달 논리를 다음과 같은 Stateflow 차트로 표현합니다.

Stateflow chart with two top-level states called Normal and Alarm. Normal has three substates called Off, Warmup, and On.

이 예제에 대한 자세한 내용은 Model Bang-Bang Controller by Using a State Transition Table 항목을 참조하십시오.

상태 천이 테이블 만들기

상태 천이 테이블을 만들려면 다음을 수행하십시오.

  1. 인수 -STT를 지정하여 함수 sfnew를 호출해서 State Transition Table 블록이 포함된 Simulink® 모델을 만듭니다.

    sfnew -STT

  2. State Transition Table 블록을 더블 클릭합니다.

    Block icon for state transition table.

  3. 시스템의 각 동작 모드에 상태 행을 추가합니다. 기존 상태를 선택하고 모델링 탭에서 다음 옵션 중 하나를 선택합니다.

    • 상태 행 삽입 — 상태를 계층 구조 내 동일한 수준에 추가합니다.

    • 자식 상태 행 삽입 — 상태를 선택된 상태의 자식으로 추가합니다.

      참고

      상태 행을 이동하려면 상태의 상단 가장자리를 클릭하여 새 위치로 끌어서 놓습니다. 상태를 끌어서 놓는 동안 편집기는 새 상태 위치를 나타내는 그래픽 큐를 표시합니다.

      동시에 활성화되는 작동 모드를 모델링하려면 부모 상태에서 병렬(AND) 분해를 활성화합니다. 자세한 내용은 상태 천이 테이블로 병렬 상태 시뮬레이션하기 항목을 참조하십시오.

  4. 상태의 동작 정의하기 항목에 설명된 대로, 각 상태에 대한 상태 레이블을 추가합니다.

  5. 상태 간의 흐름 논리 방향을 표현하기 위해 각 상태에서 나가는 천이에 대한 조건, 조건 동작, 대상을 지정합니다.

    • 천이 열을 추가하려면 기존 열의 헤더를 마우스 오른쪽 버튼으로 클릭하고 다음 옵션 중 하나를 선택합니다.

      • 천이 열 추가 — 천이 열을 테이블 오른쪽에 추가합니다.

      • 천이 열 삽입 — 천이 열을 선택된 열의 왼쪽에 추가합니다.

    • 천이의 조건 셀, 동작 셀, 대상 셀을 이동하려면 조건 셀의 상단 가장자리를 클릭하여 천이의 왼쪽 또는 오른쪽으로 끌어서 놓습니다. 조건 셀, 동작 셀, 대상 셀이 함께 이동합니다.

    • 천이의 대상을 지정하려면, 대상 상태 셀에서 상태의 이름을 선택하거나 다음 옵션 중 하나를 선택합니다.

      • $NEXT — 그다음 형제 상태로 가는 천이를 만듭니다. 이 옵션은 상태 계층 구조의 각 수준에서 마지막 하위 상태에는 사용할 수 없습니다.

      • $PREV — 이전 형제 상태로 가는 천이를 만듭니다. 이 옵션은 상태 계층 구조의 각 수준에서 첫 번째 하위 상태에는 사용할 수 없습니다.

      • $SELF — 자가 루프 천이를 만듭니다.

    • 천이를 주석 처리하려면 대상 상태 셀에서 % IGNORE %를 선택합니다.

상태 천이 테이블에서 형제 상태와 자식 상태 관리하기

상태 천이 테이블에 형제 상태가 여러 개 포함된 경우, 부모 상태가 활성화될 때 어떤 형제 상태를 먼저 활성화해야 하는지 표시합니다. 상태를 선택하고 모델링 탭에서 디폴트 상태로 설정을 선택합니다.

또는 분기점이 여러 개인 디폴트 천이 경로를 지정하려면 모델링 탭에서 디폴트 천이 행 삽입을 선택합니다. 예를 들어, 이 디폴트 천이 행은 condition 값에 따라 A1A2의 두 대상 중에서 선택합니다.

Default transition row with transitions to states A1 and A2.

이 상태의 아이콘은 분기점이 여러 개인 디폴트 천이를 보여줍니다.

부모 상태에서 하나 이상의 자식 상태로 가는 내부 천이를 지정하려면, 모델링 탭에서 내부 천이 행 삽입을 선택합니다. 예를 들어, 이 내부 천이 행에서 입력 이벤트 Econdition1condition2의 값에 따라 B1B2의 두 대상 중에서 선택하는 내부 천이를 트리거합니다.

Inner transition row with transitions to child states B1 and B2.

이 상태의 아이콘은 분기점이 여러 개인 내부 천이를 보여줍니다.

내부 천이 행에 대상 상태를 지정할 때는 상응하는 자식 상태가 테이블에 나타나는 순서와 동일하게 지정해야 합니다. 예를 들어, 위 예제에서 상태 B1이 상태 B2보다 위에 있어야 합니다.

입력 포트와 출력 포트를 사용하여 Simulink 모델의 다른 블록에 State Transition Table 블록을 연결합니다.

상태 천이 테이블로 병렬 상태 시뮬레이션하기

Stateflow에서는 2개의 상태를 동시에 활성 상태로 만들기 위해 병렬 분해를 사용합니다. 예를 들어 상태 A가 병렬 분해를 사용하고 2개의 하위 상태 A1A2를 갖는 경우, A1A2 모두 동시에 활성 상태입니다. 병렬 상태에 대한 자세한 내용은 상태 분해를 사용하여 배타적 모드 및 병렬 모드 정의하기 항목을 참조하십시오.

State Transition Table 블록에서 병렬 상태를 사용하려면, 상태 천이 테이블로 들어갑니다. 차트 수준에서 분해를 변경하려면 상태를 선택하지 않고 모델링 탭에서 분해 > 병렬(AND)을 선택합니다. 상태에 병렬 분해를 적용하려면 상태를 선택하고 모델링 탭에서 분해 > 병렬(AND)을 선택합니다.

참고

차트 또는 상태의 분해를 병렬(AND)로 업데이트하기 전에 상태의 천이 열에서 모든 셀을 지워야 합니다.

병렬 상태에는 점선 윤곽선이 있습니다. 아래의 상태 천이 테이블에서 stateA에 병렬 분해가 있으므로 하위 상태인 stateA1stateA2가 점선으로 표시되며 동시에 활성 상태입니다.

State transition table that shows parallel state decomposition.

상태 천이 테이블에서 오류 감지하기

상태 천이 테이블에서 구문 오류를 감지하려면 모델을 컴파일합니다. 디버그 탭에서 모델 업데이트를 선택합니다. 모델을 컴파일할 때 모델은 테이블을 정적으로 구문 분석하여 다음과 같은 오류를 찾습니다.

  • 연결이 맺어지지 않은 기호

  • 도달할 수 없는 상태

  • 비조건부 천이가 없는 디폴트 천이 행

  • 조건 또는 동작은 있지만 대상은 없는 천이 셀

  • 조건 셀의 동작 텍스트

  • 대상 상태의 순서가 테이블에서 상응하는 상태의 순서와 다르게 지정되어 있는 내부 천이 행

이러한 오류 검사는 시뮬레이션 동안에도 수행됩니다. 상태 천이 테이블 디버그에 대한 자세한 내용은 Debug Run-Time Errors in a State Transition Table 항목을 참조하십시오.

상태 천이 테이블 사용 지침

  • 상태 천이 테이블은 MATLAB® 또는 C를 동작 언어로 사용할 수 있습니다. 자세한 내용은 동작 언어 구문으로서 MATLAB과 C의 차이점 항목을 참조하십시오.

  • 상태 천이 테이블에는 적어도 하나의 천이 행과 하나의 천이 열이 있어야 합니다.

  • 상태 천이 테이블은 Stateflow 차트의 다음 요소를 지원하지 않습니다.

    • 슈퍼천이

    • 로컬 이벤트

    • 차트 수준 그래픽 함수, 진리표 함수, MATLAB 함수, Simulink 함수

참고 항목

블록

함수

객체

도움말 항목