이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
동작을 사용하여 차트 작동 방식 정의하기
상태 동작 및 천이 동작은 시뮬레이션 중에 Stateflow® 차트가 작동하는 방식을 정의하고자 상태 내에 또는 천이 옆에 기록하는 명령입니다. 자세한 내용은 유한 상태 머신 모델링하기 항목을 참조하십시오.
상태 동작 및 천이 동작 예제
이 차트에서 동작은 콜라츠 추측(Collatz conjecture)의 한 사례를 경험적으로 검증하는 상태 머신을 정의합니다. 주어진 숫자형 입력값 에 대해, 차트는 다음 규칙을 반복하여 헤일스톤 수열
…을 계산합니다.
가 짝수이면
입니다.
가 홀수이면
입니다.
콜라츠 추측에 따르면 모든 양의 정수가 최종적으로 1이 되는 헤일스톤 수열을 갖습니다.
차트는 3개의 상태로 구성됩니다. 시뮬레이션 시작 시, Init
상태가 차트 데이터를 초기화합니다.
로컬 데이터
n
을 입력u
의 값으로 설정합니다.로컬 데이터
n2
는n
을 2로 나눈 나머지로 설정됩니다.출력 데이터
y
는false
로 설정됩니다.
입력의 패리티에 따라 차트는 Even
또는 Odd
상태 중 하나로 천이됩니다. 상태의 활동이 Even
과 Odd
상태 간에 전환됨에 따라 차트는 헤일스톤 수열의 숫자를 계산합니다. 수열이 1 값에 도달하면 출력 데이터 y
는 true
가 되고 Simulink® 모델에 있는 Stop Simulation (Simulink) 블록을 트리거합니다.
상태 동작 유형
상태 동작은 어떤 상태가 활성화된 동안에 Stateflow 차트가 수행하는 작업을 정의합니다. 상태 동작의 가장 일반적인 유형은 entry
, during
, exit
동작입니다.
상태 동작 유형 | 약어 | 설명 |
---|---|---|
entry | en | 상태가 활성화되는 시간 스텝에서 동작이 발생합니다. |
during | du | 상태가 이미 활성화되어 있고 차트가 해당 상태에서 벗어나도록 천이하지 않는 시간 스텝에서 동작이 발생합니다. |
exit | ex | 차트가 상태에서 벗어나도록 천이하는 시간 스텝에서 동작이 발생합니다. |
완전한 키워드(entry
, during
, exit
) 또는 약어(en
, du
, ex
)를 사용하여 상태 동작 유형을 지정할 수 있습니다. 또한 쉼표를 사용하여 상태 동작 유형을 결합할 수도 있습니다. 예들 들어 결합된 entry,during
유형을 갖는 동작은 상태가 활성화되는 시간 스텝과 활성화된 상태가 유지되는 모든 후속 시간 스텝에서 발생합니다.
이 테이블에는 헤일스톤 차트에서 각 상태 동작의 결과가 나와 있습니다.
상태 | 동작 | 결과 |
---|---|---|
Init |
entry: n2 = rem(n,2); y = false; | Init 가 시뮬레이션 시작 시 활성화되면 n 의 패리티를 결정하고 y 를 false 로 설정합니다. |
exit: y = isequal(n,1); | 하나의 시간 스텝 후 Init 을 벗어나도록 천이하면 n 이 1과 같은지 확인합니다. | |
Even |
entry,during: n = n/2; n2 = rem(n,2); | 헤일스톤 수열에서 다음 수(
|
Odd |
entry,during: n = 3*(n-y)+1; n2 = rem(n,2); | 헤일스톤 수열에서 다음 수(3
대부분의 시뮬레이션에서 |
천이 동작 유형
천이 동작은 천이가 활성 상태에서 벗어날 때 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부터 시작해서 헤일스톤 수열을 계산하려 한다고 가정해 보겠습니다.
Constant (Simulink) 블록에
9
값을 입력합니다.시뮬레이션 탭에서 실행
을 클릭합니다.
차트가 다음과 같은 동작으로 응답합니다.
시간 t = 0에서
Init
으로의 디폴트 천이가 발생합니다.천이 동작이
n
값을 9로 설정합니다.Init
상태가 활성화됩니다.Init
의entry
동작에서n2
를 1로 설정하고y
를false
로 설정합니다.
시간 t = 1에서 조건
n2 == 0
이 false이므로 차트는Odd
로 천이할 준비를 합니다.Init
의exit
동작이y
를false
로 설정합니다.Init
상태가 비활성화됩니다.Odd
상태가 활성화됩니다.Odd
의entry
동작에서n
을 28로 설정하고n2
를 0으로 설정합니다.
시간 t = 2에서 조건
n2 == 0
이 true이므로 차트가Even
으로 천이할 준비를 합니다.Odd
상태가 비활성화됩니다.Even
상태가 활성화됩니다.Even
의entry
동작에서n
을 14로 설정하고n2
를 0으로 설정합니다.
시간 t = 3에서 조건
n2 ~= 0
이 false이므로 차트가 천이를 수행하지 않습니다.Even
상태가 활성으로 유지됩니다.Even
의during
동작에서n
을 7로 설정하고n2
를 1로 설정합니다.
시간 t = 4에서 조건
n2 ~= 0
이 true이므로 차트가Odd
로 천이할 준비를 합니다.천이 동작에서
y
를false
로 설정합니다.Even
상태가 비활성화됩니다.Odd
상태가 활성화됩니다.Odd
의entry
동작에서n
을 22로 설정하고n2
를 0으로 설정합니다.
차트는 시간 t = 19에서
n
= 1의 값에 도달할 때까지 헤일스톤 수열 계산을 계속합니다.시간 t = 20에서 차트가
Even
에서Odd
로 천이할 준비를 합니다.Even
상태가 비활성화되기 전에 천이 동작이y
를true
로 설정합니다.Odd
상태가 활성화됩니다.Odd
의entry
동작에서n
또는n2
를 수정하지 않습니다.출력 신호
y
에 연결된 Stop Simulation (Simulink) 블록이 시뮬레이션을 중지합니다.
시뮬레이션 탭의 결과 검토 아래에서 데이터 인스펙터
를 클릭합니다.
헤일스톤 수열의 값을 보려면 시뮬레이션 데이터 인스펙터에서 기록된 신호
n
을 선택합니다.
헤일스톤 수열은 19회 반복 후 값 1에 도달합니다.