Main Content

병렬 처리를 사용하여 동기식 서브시스템 모델링하기

동시에 실행되는 작동 모드를 구현하려면 Stateflow® 차트의 병렬 처리를 사용합니다. 예를 들어 병렬 상태를 복잡한 시스템 설계의 일부로 사용해서 동시에 활성화되는 독립적인 구성요소 또는 서브시스템을 모델링할 수 있습니다. 자세한 내용은 유한 상태 머신 모델링하기 항목을 참조하십시오.

상태 분해

Stateflow 차트에서 배타적(OR) 상태와 병렬(AND) 상태를 다음과 같이 결합할 수 있습니다.

  • 배타적(OR) 상태는 상호 배타적인 작동 모드들을 나타냅니다. 같은 계층 수준에서 동시에 두 개의 배타적 상태가 활성화 또는 실행될 수 없습니다. 각각의 배타적 상태는 Stateflow에 실선 사각형으로 나타납니다.

    Stateflow chart with two exclusive (OR) states.

  • 병렬(AND) 상태는 독립적인 작동 모드들을 나타냅니다. 직렬 방식으로 실행되기는 하지만, 두 개 이상의 병렬 상태가 동시에 활성화될 수 있습니다. 각각의 병렬 상태는 Stateflow에 실행 순서를 나타내는 번호와 함께 파선 사각형으로 나타납니다.

    Stateflow chart with two parallel (AND) states.

주어진 계층 수준에 있는 모든 상태는 같은 유형이어야 합니다. 부모 상태 또는 최상위 수준 상태에 있는 경우에는 차트 자체에 OR(배타적) 또는 AND(병렬) 분해가 있습니다. 기본 상태 분해 유형은 OR(배타적)입니다. 분해 유형을 변경하려면 부모 상태를 마우스 오른쪽 버튼으로 클릭하고분해 > AND(병렬)를 선택합니다.

병렬 분해 예제

이 예제에서는 병렬 처리를 사용해서 물리적 플랜트의 기온을 120도로 유지하는 공기 조절기를 구현합니다.

조절기는 두 개의 팬을 작동시킵니다. 첫 번째 팬은 기온이 120도가 넘어가면 켜집니다. 두 번째 팬은 기온이 150도가 넘어가면 작동하면서 추가 냉각을 합니다. 차트에서는 이들 팬을 조절기가 켜지면 활성화되는 병렬 상태 FAN1FAN2로 모델링합니다. 작동 임계값 외에, 두 개의 팬은 작동의 두 가지 모드(OnOff)를 반영하는 상태 및 천이 구성이 동일합니다.

세 번째 병렬 상태 SpeedValue는 각 시간 스텝에서 가동된 팬의 개수에 근거해서 출력 데이터 airflow의 값을 계산합니다. 부울 표현식 in(FAN1.On)의 값은 FAN1On 상태가 활성화되었을 때 1입니다. 그 외에는 in(FAN1.On)의 값이 0입니다. 이와 비슷하게 in(FAN2.On)의 값으로 FAN2가 켜졌는지 꺼졌는지 알 수 있습니다. 이런 표현식의 합은 각 시간 스텝 중에 켜진 팬의 개수를 나타냅니다.

배타적(OR) 상태와 병렬(AND) 상태 결합하기

다음 표에는 공기 조절기 차트에서 배타적(OR) 상태와 병렬(AND) 상태를 사용하는 것에 대한 근거가 나열되어 있습니다.

상태분해근거
PowerOff, PowerOn배타적(OR) 상태조절기가 동시에 켜지고 꺼질 수는 없습니다.
FAN1, FAN2병렬(AND) 상태팬은 냉각 필요 정도에 따라 켜지고 꺼지는 독립적인 구성요소로 작동됩니다.
FAN1.On, FAN1.Off배타적(OR) 상태Fan 1이 동시에 켜지고 꺼질 수는 없습니다.
FAN2.On, FAN2.Off배타적(OR) 상태Fan 2가 동시에 켜지고 꺼질 수는 없습니다.
SpeedValue병렬(AND) 상태SpeedValue는 각 시간 스텝에서 팬의 상태를 모니터링하는 독립적인 서브시스템을 나타냅니다.

참고

객체가 차트 계층 구조의 다른 부분에서 동일한 이름을 갖고 있는 경우에 고유 식별자를 부여하려면 Fan1.On, Fan2.On과 같은 점 표기법을 사용합니다. 자세한 내용은 Identify Data by Using Dot Notation 항목을 참조하십시오.

병렬 상태의 실행 순서

FAN1, FAN2SpeedValue는 동시에 활성화되지만 시뮬레이션하는 동안 이러한 상태는 직렬 방식으로 실행됩니다. 상태의 상단 오른쪽 모서리에 있는 숫자는 실행 순서를 나타냅니다. 이러한 실행 순서의 근거는 다음과 같습니다.

  • FAN1FAN2보다 낮은 온도에서 가동되므로 첫 번째로 실행됩니다. FAN2의 켜짐/꺼짐 여부와 상관없이 켜집니다.

  • FAN2FAN1보다 높은 온도에서 가동되므로 두 번째로 실행됩니다. FAN1이 이미 켜진 경우에만 켜집니다.

  • SpeedValue는 마지막에 실행되기 때문에 FAN1FAN2의 최신 상태를 관찰할 수 있습니다.

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

예제 살펴보기

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

Simulink model that simulates an air controller system.

기온 temp에 따라 Air Controller 차트는 팬을 켜고 airflow의 값을 Physical Plant 서브시스템으로 전달합니다. 이 출력 값은 아래 표에도 나와 있듯이 냉각 활동의 양을 결정합니다.

airflow의 값설명냉각 활동 인수 kCool
0작동 중인 팬이 없습니다. temp의 값이 줄어들지 않습니다.0
1팬 한 개가 작동 중입니다. 냉각 활동 인수에 따라 temp의 값이 줄어듭니다.0.05
2팬 두 개가 작동 중입니다. 냉각 활동 인수에 따라 temp의 값이 줄어듭니다.0.1

Physical Plant 블록은 다음 방정식에 따라 플랜트 내부의 기온을 업데이트합니다.

temp(0) = TInitial

temp'(t) = (TAmbient - temp(t))·(kHeat - kCool),

여기서:

  • TInitial은 초기 온도(디폴트 값=70o)입니다.

  • TAmbient는 외기 온도(디폴트 값=160o)입니다.

  • kHeat는 플랜트의 열전도 인수(디폴트 값=0.01)입니다.

  • kCoolairflow와 상응하는 냉각 활동 인수입니다.

temp의 새로운 값이 시뮬레이션의 다음 시간 스텝에서 냉각의 양을 결정합니다.

관련 항목