Main Content

병렬 분해를 사용하여 동기 서브시스템 모델링하기

동시에 실행되는 동작 모드를 구현하려면 Stateflow® 차트에서 병렬 상태를 사용합니다. 예를 들어 복잡한 시스템 설계의 일부로 병렬 상태를 사용하여 동시에 활성화되는 독립적인 컴포넌트나 서브시스템을 모델링할 수 있습니다.

상태 분해

차트나 상태의 분해 유형에 따라 차트나 상태에 배타적 상태를 포함할지 병렬 상태를 포함할지가 지정됩니다.

  • 배타적 상태는 상호 배타적인 동작 모드를 나타냅니다. 동일한 계층 수준에 있는 두 개의 배타적 상태는 동시에 활성화되거나 실행될 수 없습니다. Stateflow 차트는 각각의 배타적 상태를 실선 직사각형으로 나타냅니다.

  • 병렬 상태는 독립적인 동작 모드를 나타냅니다. 병렬 상태는 동시에 두 개 이상 활성화될 수 있지만 순차적으로 실행됩니다. Stateflow 차트는 각 병렬 상태를 실행 순서를 나타내는 번호가 있는 파선 직사각형으로 나타냅니다.

상태 계층 구조의 서로 다른 수준에서 상태 분해를 설정하여 Stateflow 차트에서 배타적 상태와 병렬 상태를 결합할 수 있습니다. 디폴트 상태 분해 유형은 Exclusive (OR)입니다. 분해 유형을 Parallel (AND)로 변경하려면 부모 상태를 마우스 오른쪽 버튼으로 클릭하고 분해 > 병렬(AND)를 선택합니다. 분해 유형을 다시 Exclusive (OR)로 변경하려면 부모 상태를 마우스 오른쪽 버튼으로 클릭하고 분해 > 배타적(OR)을 선택합니다.

공기 온도 조절기 모델링하기

이 예제에서는 물리적 플랜트에서 공기 온도를 120도로 유지하는 공기 조절기를 모델링하기 위해 병렬 분해를 사용합니다.

공기 조절기 차트의 최상위 수준에는 PowerOffPowerOn이라는 두 가지 배타적 상태가 있습니다. 조절기를 동시에 켜고 끌 수는 없으므로 차트는 배타적(OR) 분해를 사용합니다.

조절기는 두 개의 팬을 작동합니다. 첫 번째 팬은 공기 온도가 120도를 넘으면 켜집니다. 두 번째 팬은 공기 온도가 150도를 넘으면 추가적인 냉각을 제공합니다. 차트는 최상위 상태 PowerOn의 병렬 하위 상태인 FAN1FAN2로 이 두 팬을 모델링합니다. 팬은 필요한 냉각량에 따라 켜지거나 꺼지는 독립적인 컴포넌트로 동작하므로 PowerOn은 조절기가 켜지면 두 하위 상태가 모두 활성화되도록 하기 위해 병렬(AND) 분해를 사용합니다.

동작 임계값을 제외하고, 팬은 두 가지 팬 동작 모드인 OnOff를 반영하여 하위 상태와 천이가 동일하게 구성된 상태로 모델링되어 있습니다. 두 팬 모두 동시에 켜지거나 꺼질 수 없으므로 FAN1FAN2는 배타적(OR) 분해를 갖습니다.

PowerOn에서 SpeedValue라는 세 번째 병렬 상태는 각 시간 스텝에서 켜진 팬의 수를 계산하는 독립적인 서브시스템을 나타냅니다. 부울 표현식 in(FAN1.On)FAN1On 상태가 활성화되면 값 1을 갖습니다. 그렇지 않으면 in(FAN1.On)은 0입니다. 마찬가지로 in(FAN2.On)의 값은 FAN2가 켜진 상태인지 꺼진 상태인지를 나타냅니다. 이러한 표현식의 합은 각 시간 스텝 중에 켜진 팬의 수를 나타냅니다.

병렬 상태의 실행 순서 지정하기

상태 FAN1, FAN2, SpeedValue는 동시에 활성화되어 있지만 이 상태들은 시뮬레이션 중에 순차적으로 실행됩니다. 상태의 오른쪽 위 코너에 있는 번호는 실행 순서를 지정합니다. 이 실행 순서의 근거는 다음과 같습니다.

  • FAN1FAN2보다 낮은 온도에서 켜지므로 첫 번째로 실행됩니다. FAN2가 켜졌든 꺼졌든 상관없이 켜질 수 있습니다.

  • FAN2FAN1보다 높은 온도에서 켜지므로 두 번째로 실행됩니다. FAN1이 이미 켜져 있는 경우에만 켜질 수 있습니다.

  • SpeedValueFAN1FAN2의 가장 최신 상태를 관측할 수 있도록 마지막에 실행됩니다.

기본적으로 Stateflow는 병렬 상태를 차트에 추가하는 순서에 따라 실행 순서를 할당합니다. 병렬 상태의 실행 순서를 변경하려면 상태를 마우스 오른쪽 버튼으로 클릭하고 실행 순서 드롭다운 목록에서 값을 선택합니다.

예제 살펴보기

이 예제에는 Air Controller라는 Stateflow 차트와 Physical Plant라는 Simulink® 서브시스템이 포함되어 있습니다.

차트는 물리적 플랜트의 공기 온도에 따라 팬을 켜고 작동 중인 팬의 수인 airflow를 서브시스템으로 출력합니다. 이 값은 다음 규칙에 따라 냉각 활동 인자 $k_{\mathrm Cool}$을 결정합니다.

  • airflow = 0 — 작동 중인 팬이 없습니다. $k_{\mathrm{Cool}} = 0$이므로 공기 온도가 낮아지지 않습니다.

  • airflow = 1 — 팬 1개가 작동 중입니다. 냉각 활동 인자 $k_{\mathrm{Cool}} = 0.05$에 따라 공기 온도가 낮아집니다.

  • airflow = 2 — 팬 2개가 작동 중입니다. 냉각 활동 인자 $k_{\mathrm{Cool}} = 0.1$에 따라 공기 온도가 낮아집니다.

Physical Plant 서브시스템은 다음 방정식에 따라 플랜트 내부 공기 온도인 $temp$를 업데이트합니다.

$$temp(0) = T_{\mathrm{Initial}}$$

$$temp'(t) = (T_{\mathrm{Ambient}}-temp(t)) \cdot (k_{\mathrm{Heat}}-k_{\mathrm{Cool}}),$$

여기서 각각은 다음과 같습니다.

  • $T_{\mathrm{Initial}}$은 초기 온도입니다. 디폴트 값은 70°입니다.

  • $T_{\mathrm{Ambient}}$는 주변 온도입니다. 디폴트 값은 160°입니다.

  • $k_{\mathrm{Heat}}$는 플랜트의 열 전달 인자입니다. 디폴트 값은 0.01입니다.

  • $k_{\mathrm{Cool}}$airflow와 부합하는 냉각 활동 인자입니다.

새 온도는 시뮬레이션의 다음 시간 스텝에서의 냉각량을 결정합니다.

관련 항목