Main Content

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

시간 논리를 사용해서 차트 동작 스케줄링하기

Stateflow® 차트의 동작을 시뮬레이션 시간 측면에서 정의하려면 시간 논리 연산자를 차트의 상태 및 천이 동작에 포함시킵니다. 시간 논리 연산자는 어떤 상태가 활성 상태를 유지하거나 부울 조건이 true를 유지할 수 있는 시간의 길이를 나타내는 내장 함수입니다. 시간 논리를 통해 다음 항목의 시간 설정을 제어할 수 있습니다.

  • 상태 간 천이

  • 함수 호출

  • 변수 값 변경

자세한 내용은 동작을 사용하여 차트 작동 방식 정의하기 항목을 참조하십시오.

시간 논리 연산자

절대시간 시간 논리의 가장 일반적인 연산자는 after, elapsed, duration입니다.

연산자구문설명

after

after(n,sec)

관련 상태가 활성화된 이후로 시뮬레이션 시간 n초가 지나면 true를 반환합니다. 그 외에는 연산자가 false를 반환합니다.

elapsed

elapsed(sec)

관련 상태가 활성화된 이후로 경과한 시뮬레이션 시간을 초 단위로 반환합니다.

duration

duration(C)

부울 조건 Ctrue가 된 이후로 경과한 시뮬레이션 시간을 초 단위로 반환합니다.

각 연산자는 다음과 같은 상황이 발생할 때마다 관련 타이머를 0으로 초기화합니다.

  • 연산자가 포함된 상태가 재활성화됩니다.

  • 연산자가 포함된 천이를 위한 소스 상태가 재활성화됩니다.

  • duration 연산자의 부울 조건이 false가 됩니다.

참고

일부 연산자(예: after)는 이벤트 기반 시간 논리 및 초(sec), 밀리초(msec), 마이크로초(usec) 단위의 절대시간 시간 논리를 지원합니다. 자세한 내용은 Control Chart Execution by Using Temporal Logic 항목을 참조하십시오.

시간 논리 예제

이 예제에서는 시간 논리를 사용해서 보일러 내부 온도를 조절하는 Bang-Bang Controller를 모델링합니다.

이 예제는 Stateflow 차트와 Simulink® 서브시스템으로 구성되어 있습니다. Bang-Bang Controller 차트에서는 현재 보일러 온도와 기준점을 비교해 보일러를 켤 것인지 결정합니다. Boiler Plant Model 서브시스템은 제어기 상태에 따라 온도를 높이거나 낮추는 보일러 내부의 동특성을 모델링합니다. 시뮬레이션의 다음 단계를 위해 보일러 온도가 Controller 차트로 다시 들어갑니다.

Bang-Bang Controller 차트는 다음을 위해 시간 논리 연산자 after를 사용합니다.

  • 보일러가 켜지고 꺼지는 사이에 뱅뱅 순환 시간 설정을 조정합니다.

  • 보일러 작동 모드에 따라 다른 속도로 점멸하는 상태 LED를 제어합니다.

보일러 및 LED 서브시스템의 동작을 결정하는 타이머는 제어기 시뮬레이션을 차단하거나 방해하지 않고 다른 타이머와 독립적으로 작동합니다.

뱅뱅 순환 시간 설정

Bang-Bang Controller 차트에는 보일러의 두 가지 작동 모드(OnOff)를 나타내는 한 쌍의 하위 상태가 포함되어 있습니다. 차트는 활성 상태 출력 데이터 boiler를 사용해서 활성화된 하위 상태를 나타냅니다.

Chart modeling a bang-bang controller. Subcharts appear as opaque boxes to hide the low-level details of the chart.

OnOff 하위 상태 사이의 천이에 있는 레이블은 Bang-Bang Controller의 동작을 정의합니다.

천이레이블설명
On에서 Off로 천이after(20,sec)On 상태에서 20초가 지난 후 Off 상태로 천이됩니다.
Off에서 On으로 천이after(40,sec)[cold()]보일러 온도가 그래픽 함수 cold()에 의해 정의된 기준점 이하로 떨어지면 Off 상태에서 40초가 지난 후 On 상태로 천이됩니다.
On에서 Off로 천이turnOff보일러 온도가 기준점 이상이어서 On 상태 내부 천이 논리에서 보일러 끄기를 요청하면 Off 상태로 천이됩니다.

이러한 천이 동작으로 인해 뱅뱅 순환 시간 설정은 보일러 현재 온도에 따라 달라집니다. 시뮬레이션이 시작되고 보일러가 차가울 때, 제어기는 Off 상태에서는 40초, On 상태에서는 20초의 시간을 소요합니다. 시간이 t = 478초가 되면 보일러 온도가 기준점에 도달합니다. 그때부터 보일러는 Off 상태에서 손실된 열만 보충합니다. 이때 제어기는 Off 상태에서는 40초, On 상태에서는 4초의 시간을 소요합니다.

Simulation Data Inspector showing the output of the chart.

상태 LED 시간 설정

Off 상태에는 동작 after(5,sec)의 보호를 받는 자가 루프 천이가 포함된 하위 상태 Flash가 포함되어 있습니다. 이러한 천이로 인해 Off 상태가 활성화되면 하위 상태에서는 entry 동작을 실행하고 5초 간격으로 그래픽 함수 flash_LED를 호출합니다. 함수는 출력 기호 LED의 값을 0과 1 간에 전환합니다.

The Off substate.

On 상태는 그래픽 함수 flash_LED를 유형 en,du의 상태 동작으로 호출합니다. On 상태가 활성화되면 시뮬레이션 시간 스텝마다(여기서는 1초 간격) 함수를 호출하여 출력 기호 LED의 값을 0과 2 간에 전환합니다.

The On substate.

이러한 동작으로 인해 상태 LED 시간 설정은 보일러 작동 모드에 따라 달라집니다. 예를 들면 다음과 같습니다.

  • t = 0초 ~ t = 40초일 때는 보일러가 꺼지고 LED 신호가 5초 간격으로 0과 1 간에 전환됩니다.

  • t = 40초 ~ t = 60초일 때는 보일러가 켜지고 LED 신호가 1초 간격으로 0과 2 간에 전환됩니다.

  • t = 60초 ~ t = 100초일 때는 보일러가 다시 한번 꺼지고 LED 신호가 5초 간격으로 0과 1 간에 전환됩니다.

Simulation Data Inspector showing the output of the chart.

예제 살펴보기

추가적인 시간 논리를 사용해서 보일러 온도가 기준점에 도달했을 때 뱅뱅 순환 시간 설정이 변경되는 방식을 조사할 수 있습니다.

  1. elapsed 연산자와 duration 연산자를 호출하는 새로운 상태 동작을 입력합니다.

    • On 상태에서는 Timer1On 상태가 활성화되어 있는 시간의 길이라고 정의합니다.

      en,du,ex: Timer1 = elapsed(sec)

    • Off 상태에서는 Timer2를 보일러 온도가 기준점 이상이 되는 시간의 길이라고 정의합니다.

      en,du,ex: Timer2 = duration(temp>=reference)

    레이블 en,du,ex는 해당되는 상태가 활성화될 때 이러한 동작이 발생한다는 것을 나타냅니다.

  2. 기호 창에서 정의되지 않은 기호 연결 맺기 를 클릭합니다. Stateflow 편집기는 기호 Timer1Timer2를 출력 데이터 로서 연결을 맺습니다.

  3. Timer1Timer2에 대해 로깅을 사용하도록 설정합니다. 기호 창에서 각각의 기호를 선택합니다. 그런 다음, 속성 인스펙터기록 아래에서 신호 데이터 기록을 선택합니다.

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

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

  6. 시뮬레이션 데이터 인스펙터에서 신호 boilerTimer1을 동일한 축 세트에 표시합니다. 플로팅에 다음과 같은 내용이 표시됩니다.

    • 뱅뱅 순환의 On 단계는 일반적으로 보일러가 차가울 때는 20초, 보일러가 따뜻할 때는 4초간 지속됩니다.

    • 보일러가 기준 온도에 처음으로 도달하면 순환이 중간에 중지되고 제어기의 On 상태가 18초 동안만 지속됩니다.

    • 보일러가 따뜻하고 처음 순환이 후속 순환에 비해 약간 짧은 경우에는 제어기의 On 상태가 3초 동안만 지속됩니다.

    Simulation Data Inspector showing the output of the chart.

  7. 시뮬레이션 데이터 인스펙터에서 신호 boilerTimer2를 동일한 축 세트에 표시합니다. 플로팅에 다음과 같은 내용이 표시됩니다.

    • 보일러가 따뜻해지면 뱅뱅 순환의 Off 단계에서 일반적으로 9초가 지나면 냉각됩니다.

    • 보일러가 기준 온도에 처음으로 도달했을 때는 두 배의 시간(19초)이 지나야 냉각됩니다.

    Simulation Data Inspector showing the output of the chart.

짧은 순환과 긴 냉각 시간은 On 상태에 포함된 하위 상태 계층 구조의 결과입니다. 보일러가 기준 온도에 처음으로 도달하면 HIGH에서 NORM로의 천이에 의해 제어기가 추가 시간 스텝 동안 켜진 상태로 유지되기 때문에 보일러는 일반적인 상태보다는 따뜻한 상태가 됩니다. 이후 순환에서는 이력 연결점 으로 인해 On 단계가 활성 NORM 하위 상태로 시작됩니다. 보일러가 기준 온도에 도달하면 제어기가 즉시 꺼지면서 보일러가 냉각됩니다.

관련 항목