모델 컴포넌트 만들기
시스템 요구 사항을 수집하면 모델 컴포넌트를 식별할 수 있습니다. 완전한 사양이 없더라도 사용자는 컴포넌트 인터페이스가 어디에 속하는지는 알고 있을 것입니다. 유연한 인터페이스를 갖춘 모델 컴포넌트로 모델을 구성하려면 서브시스템을 만드십시오.
디지털 제어기 같은 일부 컴포넌트는 모델 내에서 단일 단위로 실행되어야 합니다. 알려진 경계를 갖는 이러한 독립 실행형 컴포넌트의 경우 Atomic Subsystem을 만듭니다. 아토믹 컴포넌트를 미리 정의하면 독립 실행형 코드를 생성하고자 할 때 리팩터링에 많은 비용을 들이는 일을 피할 수 있습니다. 서브시스템을 아토믹으로 만들려면 Subsystem 블록을 선택합니다. Simulink® 툴스트립의 Subsystem 블록 탭에서 아토믹으로 설정을 선택합니다.
이름이 BasicModelingSubsystems
인 모델에는 4개의 일반 모델 컴포넌트가 들어 있습니다.
플랜트 — 시스템의 수학적 모델
제어기 — 플랜트의 동작을 제어하는 알고리즘
운영자 — 제어기에 보낼 명령을 정의하는 논리
환경 — 플랜트에 영향을 주는 외부 외란
mdl = "BasicModelingSubsystems";
open_system(mdl)
이름이 Controller
인 Subsystem 블록에서 좀 더 두꺼운 선 두께는 해당 서브시스템이 Atomic Subsystem임을 나타냅니다.
각 Subsystem 블록에 있는 포트는 서브시스템 내에 있는 입력 블록과 출력 블록에 해당합니다. 예를 들어, 이름이 Plant
인 Subsystem 블록에 control
이름의 포트가 있는데, 이는 서브시스템에 있는 이름이 control
인 In Bus Element 블록을 나타냅니다.
이 예제에서 플랜트는 질량-스프링-댐퍼 시스템을 나타냅니다.
제어기는 플랜트를 목표 위치로 옮기는 데 필요한 힘을 계산합니다.
운영자가 질량의 목표 위치를 확인하고, Stateflow® 차트를 사용하여 관련 절차적 논리를 구현합니다.
환경이 플랜트에 영향을 주는 외란 힘을 생성합니다.
질량의 위치는 모델 컴포넌트가 상호 작용하여 확인합니다.
시뮬레이션 중에 운영자는 2초간 기다린 후 질량을 2m 위로 옮기도록 제어기에 지시합니다. 질량이 목표 위치보다 더 많이 가면 운영자는 질량을 원래 위치에서 1m 위에 있도록 제어기에 지시합니다. 5초 후에 환경 외란으로 인해 물리 시스템에 일정한 힘이 가해지고, 목표 위치에서 질량을 안정되게 유지하도록 제어기가 반응합니다.
sim(mdl);