Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

동작을 사용하여 차트 작동 방식 정의하기

상태 동작 및 천이 동작은 시뮬레이션 중에 Stateflow® 차트가 작동하는 방식을 정의하고자 상태 내에 또는 천이 옆에 기록하는 명령입니다. 자세한 내용은 유한 상태 머신 모델링하기 항목을 참조하십시오.

상태 동작 및 천이 동작 예제

이 차트에서 동작은 콜라츠 추측(Collatz conjecture)의 한 사례를 경험적으로 검증하는 상태 머신을 정의합니다. 주어진 숫자형 입력값 $u$에 대해, 차트는 다음 규칙을 반복하여 헤일스톤 수열 $n_0 = u,$ $n_1,$ $n_2,$ $n_3,$…을 계산합니다.

  • $n_i$가 짝수이면 $n_{i+1} = n_i / 2$입니다.

  • $n_i$가 홀수이면 $n_{i+1} = 3n_i+1$입니다.

콜라츠 추측에 따르면 모든 양의 정수가 최종적으로 1이 되는 헤일스톤 수열을 갖습니다.

차트는 3개의 상태로 구성됩니다. 시뮬레이션 시작 시, Init 상태가 차트 데이터를 초기화합니다.

  • 로컬 데이터 n을 입력 u의 값으로 설정합니다.

  • 로컬 데이터 n2n을 2로 나눈 나머지로 설정됩니다.

  • 출력 데이터 yfalse로 설정됩니다.

입력의 패리티에 따라 차트는 Even 또는 Odd 상태 중 하나로 천이됩니다. 상태의 활동이 EvenOdd 상태 간에 전환됨에 따라 차트는 헤일스톤 수열의 숫자를 계산합니다. 수열이 1 값에 도달하면 출력 데이터 ytrue가 되고 Simulink® 모델에 있는 Stop Simulation (Simulink) 블록을 트리거합니다.

상태 동작 유형

상태 동작은 어떤 상태가 활성화된 동안에 Stateflow 차트가 수행하는 작업을 정의합니다. 상태 동작의 가장 일반적인 유형은 entry, during, exit 동작입니다.

상태 동작 유형약어설명
entryen상태가 활성화되는 시간 스텝에서 동작이 발생합니다.
duringdu상태가 이미 활성화되어 있고 차트가 해당 상태에서 벗어나도록 천이하지 않는 시간 스텝에서 동작이 발생합니다.
exitex차트가 상태에서 벗어나도록 천이하는 시간 스텝에서 동작이 발생합니다.

완전한 키워드(entry, during, exit) 또는 약어(en, du, ex)를 사용하여 상태 동작 유형을 지정할 수 있습니다. 또한 쉼표를 사용하여 상태 동작 유형을 결합할 수도 있습니다. 예들 들어 결합된 entry,during 유형을 갖는 동작은 상태가 활성화되는 시간 스텝과 활성화된 상태가 유지되는 모든 후속 시간 스텝에서 발생합니다.

이 테이블에는 헤일스톤 차트에서 각 상태 동작의 결과가 나와 있습니다.

상태동작결과
Init

entry:
 n2 = rem(n,2);
 y = false;

Init가 시뮬레이션 시작 시 활성화되면 n의 패리티를 결정하고 yfalse로 설정합니다.

exit:
 y = isequal(n,1);

하나의 시간 스텝 후 Init을 벗어나도록 천이하면 n이 1과 같은지 확인합니다.
Even

entry,during:
 n = n/2;
 n2 = rem(n,2);

헤일스톤 수열에서 다음 수(n / 2)를 계산하고 아래와 같은 경우에 패리티를 업데이트합니다.

  • Even이 처음 활성화되는 시간 스텝

  • Even이 활성 상태인 모든 후속 시간 스텝

Odd

entry,during:
 n = 3*(n-y)+1;
 n2 = rem(n,2);

헤일스톤 수열에서 다음 수(3n+1)를 계산하고 아래와 같은 경우에 패리티를 업데이트합니다.

  • Odd가 처음 활성화되는 시간 스텝

  • Odd가 활성 상태인 모든 후속 시간 스텝

대부분의 시뮬레이션에서 y는 0으로 평가됩니다. n = 1인 마지막 시간 스텝에서 y는 1로 평가되므로 이 동작은 시뮬레이션을 중지하기 전에 n 또는 n2를 수정하지 않습니다.

천이 동작 유형

천이 동작은 천이가 활성 상태에서 벗어날 때 Stateflow 차트가 수행할 작업을 정의합니다. 천이 동작의 가장 일반적인 유형은 조건과 조건부 동작입니다. 천이 동작을 지정하려면 아래 구문이 포함된 레이블을 사용합니다.

[condition]{conditional_action}

condition은 천이가 발생했는지 여부를 판단하는 부울 표현식입니다. 조건을 지정하지 않을 경우 true로 평가되는 암묵적 조건이 있다고 간주됩니다.

conditional_action은 천이에 대한 가드 조건이 true일 때 실행되는 명령입니다. 조건부 동작은 조건 다음에, exit 또는 entry 상태 동작 전에 수행됩니다.

이 테이블에는 헤일스톤 차트에서 각 천이 동작의 결과가 나와 있습니다.

천이동작동작 유형결과
Init으로 디폴트 천이

n = u

조건부 동작시뮬레이션 시작 시, 입력 값 u를 로컬 데이터 n에 할당합니다.
Init에서 Even으로 천이

n2 == 0

조건n이 짝수일 때 천이가 발생합니다. 이 천이의 소스에 있는 숫자 1은 Odd로의 천이 전에 평가됨을 나타냅니다.
Init에서 Odd로 천이 없음n이 홀수일 때 천이가 발생합니다. 이 천이의 소스에 있는 숫자 2는 Even으로의 천이 후에 평가됨을 나타냅니다.
Odd에서 Even으로 천이

n2 == 0

조건n이 짝수일 때 천이가 발생합니다.
Even에서 Odd로 천이

n2 ~= 0

조건n이 홀수일 때 천이가 발생합니다.

y = isequal(n,1)

조건부 동작천이가 발생하면 n이 1과 같은지 판단합니다.

차트 작동 방식 검토하기

값을 9부터 시작해서 헤일스톤 수열을 계산하려 한다고 가정해 보겠습니다.

  1. Constant (Simulink) 블록에 9 값을 입력합니다.

  2. 시뮬레이션 탭에서 실행 을 클릭합니다.

    차트가 다음과 같은 동작으로 응답합니다.

    • 시간 t = 0에서 Init으로의 디폴트 천이가 발생합니다.

      • 천이 동작이 n 값을 9로 설정합니다.

      • Init 상태가 활성화됩니다.

      • Initentry 동작에서 n2를 1로 설정하고 yfalse로 설정합니다.

    • 시간 t = 1에서 조건 n2 == 0이 false이므로 차트는 Odd로 천이할 준비를 합니다.

      • Initexit 동작이 yfalse로 설정합니다.

      • Init 상태가 비활성화됩니다.

      • Odd 상태가 활성화됩니다.

      • Oddentry 동작에서 n을 28로 설정하고 n2를 0으로 설정합니다.

    • 시간 t = 2에서 조건 n2 == 0이 true이므로 차트가 Even으로 천이할 준비를 합니다.

      • Odd 상태가 비활성화됩니다.

      • Even 상태가 활성화됩니다.

      • Evenentry 동작에서 n을 14로 설정하고 n2를 0으로 설정합니다.

    • 시간 t = 3에서 조건 n2 ~= 0이 false이므로 차트가 천이를 수행하지 않습니다.

      • Even 상태가 활성으로 유지됩니다.

      • Evenduring 동작에서 n을 7로 설정하고 n2를 1로 설정합니다.

    • 시간 t = 4에서 조건 n2 ~= 0이 true이므로 차트가 Odd로 천이할 준비를 합니다.

      • 천이 동작에서 yfalse로 설정합니다.

      • Even 상태가 비활성화됩니다.

      • Odd 상태가 활성화됩니다.

      • Oddentry 동작에서 n을 22로 설정하고 n2를 0으로 설정합니다.

    • 차트는 시간 t = 19에서 n = 1의 값에 도달할 때까지 헤일스톤 수열 계산을 계속합니다.

    • 시간 t = 20에서 차트가 Even에서 Odd로 천이할 준비를 합니다.

      • Even 상태가 비활성화되기 전에 천이 동작이 ytrue로 설정합니다.

      • Odd 상태가 활성화됩니다.

      • Oddentry 동작에서 n 또는 n2를 수정하지 않습니다.

      • 출력 신호 y에 연결된 Stop Simulation (Simulink) 블록이 시뮬레이션을 중지합니다.

  3. 시뮬레이션 탭의 결과 검토 아래에서 데이터 인스펙터 를 클릭합니다.

  4. 헤일스톤 수열의 값을 보려면 시뮬레이션 데이터 인스펙터에서 기록된 신호 n을 선택합니다.

Simulation Data Inspector showing the output of the chart.

헤일스톤 수열은 19회 반복 후 값 1에 도달합니다.

관련 항목