주요 콘텐츠

Stateflow를 사용하여 Simulink 함수 스케줄링하기

이 예제에서는 시간 논리를 사용하여 Stateflow® 차트에서 Simulink® 함수를 스케줄링하는 방법을 보여줍니다. Simulink 함수는 Stateflow 차트 내에서 정의하고 상태 동작과 천이 동작에서 호출하는 Simulink 서브시스템입니다. 자세한 내용은 Stateflow 차트에서 Simulink 함수 재사용하기 항목을 참조하십시오.

모델을 열고 검토하기

이 예제에서 Simulink 함수 algo는 각 시간 스텝마다 입력을 하나씩 증가시킵니다. Stateflow 차트에는 함수 algo를 서로 다른 레이트로 호출하는 두 가지 상태가 포함되어 있습니다.

시간 논리 연산자는 상태 간 함수 호출과 천이의 스케줄을 결정합니다. 이벤트 기반 시간 논리 연산자 every는 두 개의 시간 스텝마다 Simulink 함수를 호출하도록 FastScheduler를 설정하고, SlowScheduler는 다섯 개의 시간 스텝마다 같은 함수를 호출하도록 설정합니다. 결과적으로 FastSchedulerSlowScheduler보다 함수를 더 자주 실행합니다.

FastScheduler에서 SlowScheduler로의 천이는 FastScheduler가 1.5초 동안 활성을 유지한 후에 수행됩니다. SlowScheduler가 3.5초 동안 활성을 유지한 후에는 FastScheduler로 다시 천이됩니다. 절대시간 시간 논리 연산자 after는 상태 간 천이의 시간 설정을 제어합니다.

이벤트 기반 시간 논리 연산자와 절대시간 시간 논리 연산자의 차이점

사용하는 시간 논리 연산자의 유형은 함수 호출을 스케줄링하는지 또는 천이를 스케줄링하는지에 따라 다릅니다.

이벤트 기반 시간 논리 연산자(예: every)는 Simulink 솔버에서 사용하는 스텝 크기에 따라 달라집니다. 상태가 활성화된 이후 함수 호출 횟수는 솔버의 스텝 크기에 따라 달라집니다. 그러므로 Simulink 모델의 차트에서 every를 절대시간 시간 논리 연산자로 사용하는 것은 지원되지 않습니다.

절대시간 시간 논리 연산자(예: after)는 상태가 활성화된 이후의 경과 시간에 따라 달라집니다. Simulink 모델의 차트에서 at을 절대시간 시간 논리 연산자로 사용하는 것은 지원되지 않습니다.

자세한 내용은 시간 논리를 사용하여 차트 실행 제어하기 항목을 참조하십시오.

시뮬레이션 결과 보기

모델을 실행하십시오. Scope 블록은 각 함수 호출의 레이트를 서로 다른 기울기 경사도로 보여줍니다. 기울기 경사도가 높으면 Simulink 함수 호출이 더 빈번하다는 것을 나타냅니다.

참고 항목

| |

도움말 항목