이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
병렬 처리를 사용하여 동기식 서브시스템 모델링하기
동시에 실행되는 작동 모드를 구현하려면 Stateflow® 차트의 병렬 처리를 사용합니다. 예를 들어 병렬 상태를 복잡한 시스템 설계의 일부로 사용해서 동시에 활성화되는 독립적인 구성요소 또는 서브시스템을 모델링할 수 있습니다. 자세한 내용은 유한 상태 머신 모델링하기 항목을 참조하십시오.
상태 분해
Stateflow 차트에서 배타적(OR) 상태와 병렬(AND) 상태를 다음과 같이 결합할 수 있습니다.
배타적(OR) 상태는 상호 배타적인 작동 모드들을 나타냅니다. 같은 계층 수준에서 동시에 두 개의 배타적 상태가 활성화 또는 실행될 수 없습니다. 각각의 배타적 상태는 Stateflow에 실선 사각형으로 나타납니다.
병렬(AND) 상태는 독립적인 작동 모드들을 나타냅니다. 직렬 방식으로 실행되기는 하지만, 두 개 이상의 병렬 상태가 동시에 활성화될 수 있습니다. 각각의 병렬 상태는 Stateflow에 실행 순서를 나타내는 번호와 함께 파선 사각형으로 나타납니다.
주어진 계층 수준에 있는 모든 상태는 같은 유형이어야 합니다. 부모 상태 또는 최상위 수준 상태에 있는 경우에는 차트 자체에 OR(배타적) 또는 AND(병렬) 분해가 있습니다. 기본 상태 분해 유형은 OR(배타적)입니다. 분해 유형을 변경하려면 부모 상태를 마우스 오른쪽 버튼으로 클릭하고분해 > AND(병렬)를 선택합니다.
병렬 분해 예제
이 예제에서는 병렬 처리를 사용해서 물리적 플랜트의 기온을 120도로 유지하는 공기 조절기를 구현합니다.
조절기는 두 개의 팬을 작동시킵니다. 첫 번째 팬은 기온이 120도가 넘어가면 켜집니다. 두 번째 팬은 기온이 150도가 넘어가면 작동하면서 추가 냉각을 합니다. 차트에서는 이들 팬을 조절기가 켜지면 활성화되는 병렬 상태 FAN1
과 FAN2
로 모델링합니다. 작동 임계값 외에, 두 개의 팬은 작동의 두 가지 모드(On
및 Off
)를 반영하는 상태 및 천이 구성이 동일합니다.
세 번째 병렬 상태 SpeedValue
는 각 시간 스텝에서 가동된 팬의 개수에 근거해서 출력 데이터 airflow
의 값을 계산합니다. 부울 표현식 in(FAN1.On)
의 값은 FAN1
의 On
상태가 활성화되었을 때 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
, FAN2
및 SpeedValue
는 동시에 활성화되지만 시뮬레이션하는 동안 이러한 상태는 직렬 방식으로 실행됩니다. 상태의 상단 오른쪽 모서리에 있는 숫자는 실행 순서를 나타냅니다. 이러한 실행 순서의 근거는 다음과 같습니다.
FAN1
은FAN2
보다 낮은 온도에서 가동되므로 첫 번째로 실행됩니다.FAN2
의 켜짐/꺼짐 여부와 상관없이 켜집니다.FAN2
는FAN1
보다 높은 온도에서 가동되므로 두 번째로 실행됩니다.FAN1
이 이미 켜진 경우에만 켜집니다.SpeedValue
는 마지막에 실행되기 때문에FAN1
및FAN2
의 최신 상태를 관찰할 수 있습니다.
기본적으로 Stateflow는 차트에서 생성된 순서에 근거해서 병렬 상태의 실행 순서를 할당합니다. 병렬 상태의 실행 순서를 변경하려면 상태를 마우스 오른쪽 버튼으로 클릭하고 실행 순서 드롭다운 목록에서 값을 선택합니다.
예제 살펴보기
이 Stateflow 예제에는 Stateflow 차트와 Simulink® 서브시스템이 포함되어 있습니다.
기온 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)입니다.
kCool은
airflow
와 상응하는 냉각 활동 인수입니다.
temp
의 새로운 값이 시뮬레이션의 다음 시간 스텝에서 냉각의 양을 결정합니다.