주요 콘텐츠

Simulink 버스 기능

버스는 여러 요소를 하나로 묶은 집합을 나타내며, 여러 전선을 함께 묶은 전선 다발에 비유할 수 있습니다. 버스는 블록 다이어그램에서 선이 복잡하고 지저분해지는 것을 줄이고, 컴포넌트 인터페이스를 점진적으로 변경하기 쉽게 해줍니다. 예를 들어 컴포넌트 인터페이스에서 요소를 추가하거나 제거해야 하는 경우 버스를 수정하는 것이 포트를 추가하거나 제거하는 것보다 더 간단할 수 있습니다.

이 예제에서는 다음 작업을 지원하는 Simulink® 버스 기능을 소개합니다.

  • 버스를 사용하여 블록 다이어그램 구성.

  • 버스 요소 포트를 사용하여 컴포넌트 인터페이스 간소화.

  • 스마트 편집으로 일반적인 버스 워크플로 간소화.

BusCapabilities 모델을 열고 컴파일합니다. 모델을 컴파일하려면 Simulink 툴스트립의 모델링 탭에서 모델 업데이트를 클릭합니다.

mdl = "BusCapabilities";
open_system(mdl);
set_param(mdl, SimulationCommand="Update");

BusCapabilities model with three areas that each contain one or more Subsystem blocks

모델을 컴파일하면 선 스타일이 업데이트됩니다. 모델을 열면 버스의 선 스타일이 스칼라 신호와 동일하게 표시됩니다. 모델이 컴파일된 후에는 각 버스의 선 스타일이 세 개의 평행선으로 표시됩니다.

버스를 사용하여 블록 다이어그램 구성하기

BusRouting 서브시스템은 다음 방법을 보여줍니다.

  • Bus Creator 블록을 사용하여 버스 만들기.

  • Bus Assignment 블록을 사용하여 버스의 요소 바꾸기.

  • Bus Selector 블록을 사용하여 버스에서 요소 추출.

BusRouting subsystem

Bus Creator 블록은 해당 입력을 버스로 그룹화합니다.

  • BusCreator1은 이름이 sinechirp인 신호를 포함하는 버스를 만듭니다. 출력 버스는 이름이 sinusoidal입니다.

  • BusCreator2는 이름이 pulsesaw인 신호를 포함하는 버스를 만듭니다. 출력 버스는 이름이 nonsinusoidal입니다.

  • BusCreator3은 이름이 sinusoidalnonsinusoidal인 버스를 포함하는 버스를 만듭니다. 새 버스의 컨텍스트에서 이러한 버스는 중첩된 버스라고 합니다.

  • BusCreator4는 이름이 pulsesaw인 서로 다른 신호를 포함하는 버스를 만듭니다.

버스의 계층 구조를 보려면 해당 버스를 클릭하십시오. 그런 다음 신호 탭에서 신호 계층 구조를 선택합니다. 예를 들어 BusCreator3에 의해 만들어진 최상위 버스의 계층 구조를 검사해 보겠습니다.

Bus hierarchy in which the top bus contains a nested bus named sinusoidal, a signal named constant, and a nested bus named nonsinusoidal

Bus Assignment 블록은 Bus 입력 포트에 연결된 버스 내의 하나 이상의 요소를 바꿉니다. 이 예제에서 최상위 버스는 Bus 입력 포트에 연결됩니다. Bus Assignment 블록은 constant 이름의 신호를 다른 신호로 바꾸고 nonsinusoidal 이름의 버스를 다른 버스로 바꿉니다.

Bus Selector 블록은 입력 포트에 연결된 버스에서 하나 이상의 요소를 추출합니다. 이 예제에서는 Bus Selector 블록이 nonsinusoidal.pulse, sinusoidal.sineconstant로 식별된 신호를 선택합니다.

선택한 각 신호는 신호 값을 표시하는 싱크에 연결됩니다. 시뮬레이션이 시작되면 스코프 창에는 nonsinusoidal.pulsesinusoidal.sine의 값이 표시되고 Display 블록에는 constant의 값이 표시됩니다. 이 동작을 보기 위해 모델을 시뮬레이션합니다.

sim(mdl);

A Display block shows the value of constant at the end of the simulation. A Scope block receives simulation data from nonsinusoidal.pulse and sinusoidal.sine.

버스 요소 포트를 사용하여 컴포넌트 인터페이스 간소화하기

출력 포트에서 버스 계층 구조를 만들기 위해 BusOutput 서브시스템은 Out Bus Element 블록을 사용합니다.

Subsystem with five Out Bus Element blocks

Out Bus Element 블록은 Outport 블록에 연결된 Bus Creator 블록처럼 동작합니다. 각 Out Bus Element 블록에는 출력을 식별하는 레이블이 있습니다. 예를 들어 레이블이 Out1.sinusoidal.sine인 Out Bus Element 블록은 Out1이라는 출력 포트에서 sinusoidal이라는 중첩된 버스에 sine 이름의 요소를 만듭니다.

입력 포트에서 버스 요소를 추출하기 위해 BusInput 서브시스템은 In Bus Element 블록을 사용합니다.

Subsystem with three In Bus Element blocks

In Bus Element 블록은 Bus Selector 블록에 연결된 Inport 블록과 유사합니다. 각 In Bus Element 블록에는 입력을 식별하는 레이블이 있습니다. 예를 들어 레이블이 In1.sinusoidal.sine인 In Bus Element 블록은 In1이라는 입력 포트에서 sinusoidal이라는 중첩된 버스에 있는 sine 이름의 요소를 선택합니다.

버스 요소 포트는 부분 선택을 지원합니다. 서브시스템의 입력 포트는 다섯 개의 요소를 포함하는 버스를 수신하지만, 서브시스템은 세 개의 요소만 사용합니다. 이러한 유연성을 통해 동일한 입력 포트의 다른 요소를 사용하는 Variant를 만들 수 있습니다.

In Bus Element 블록 또는 Out Bus Element 블록에 대응하는 입력 또는 출력을 변경하려면 블록 레이블을 편집합니다. 레이블의 첫 번째 부분은 포트 이름입니다. 레이블의 두 번째 부분은 요소 경로이며, 여기서 각 점은 계층 구조의 다른 수준을 나타냅니다.

GIF that demonstrates label editing

버스를 수신하는 서브시스템 입력 포트의 경우 사용 가능한 요소 목록에서 선택합니다.

GIF that demonstrates selecting a different element from a subsystem input port

포트를 만들거나 기존 포트에 대한 블록을 추가하려면 In Bus Element 블록 또는 Out Bus Element 블록을 마우스 오른쪽 버튼으로 클릭하고 끌어서 놓습니다. 그런 다음 새 포트, 새 요소 또는 복제를 선택합니다. 출력 요소에 대한 중복 쓰기를 방지하기 위해 Out Bus Element 블록에서는 복제가 비활성화되어 있습니다.

GIF that shows the menu that opens when you right-click and drag an Out Bus Element block

In Bus Element 블록 또는 Out Bus Element 블록을 복사하여 붙여넣어 포트를 생성할 수도 있습니다.

In Bus Element 블록의 그룹에서 액세스하는 버스 또는 Out Bus Element 블록의 그룹에서 생성하는 버스를 표시하려면 속성 인스펙터를 엽니다. 그런 다음 블록 중 하나를 선택합니다. 또는 블록 중 하나를 더블 클릭할 수도 있습니다.

속성 인스펙터 또는 대화 상자에서 여러 가지 작업을 수행할 수 있습니다. 예를 들어, 다음 작업을 수행할 수 있습니다.

  • 포트와 요소의 이름 변경.

  • 블록을 추가하거나 추가하지 않고 요소 추가.

  • 버스 및 버스에 속한 요소의 특성 지정.

  • 블록 색을 개별적으로, 버스별로 또는 선택 항목별로 변경.

  • 출력 포트의 요소 순서 변경.

GIF that demonstrates Property Inspector actions for an output bus element port

현재 블록 다이어그램에 In Bus Element 블록과 Out Bus Element 블록의 레이블이 표시되는 방식을 변경하려면, In Bus Element 또는 Out Bus Element 블록을 클릭하고 줄임표 위에 커서를 올리고 다음 옵션 중 하나를 선택하십시오.

  • 확장 표기법 — 레이블에 포트 이름과 요소 경로가 표시됩니다(예: Out1.sinusoidal.sine).

  • 간단 표기법 — 레이블에 리프 요소 이름만 표시됩니다. 예를 들어 Out1.sinusoidal.sinesine이 됩니다. 레이블을 클릭하면 레이블의 두 부분이 모두 편집 가능한 상태로 표시됩니다.

GIF that toggles between expanded and compact notation

이 예제에서는 서브시스템 인터페이스에서 사용되는 In Bus Element 블록과 Out Bus Element 블록을 보여주지만, 이 두 블록은 모델 인터페이스에서도 유사하게 동작합니다.

스마트 편집으로 일반적인 버스 워크플로 간소화하기

스마트 편집을 사용하면 다음 작업을 신속하게 수행할 수 있습니다.

  • 입력 및 출력 포트를 버스 요소 포트로 변환.

  • 입력 및 출력 인터페이스에서 버스 생성.

  • 블록 출력에서 버스 생성.

  • 버스 블록에 포트 추가.

  • 서브시스템 및 참조된 모델에 버스 요소 포트 추가.

신속하게 포트 변환하기

PortConversion 서브시스템에는 버스로 연결된 두 개의 서브시스템이 포함되어 있습니다. 첫 번째 서브시스템에는 Out Bus Element 블록으로 변환할 Bus Creator 블록과 Outport 블록이 포함되어 있습니다. 두 번째 서브시스템에는 In Bus Element 블록으로 변환할 Inport 블록과 Bus Selector 블록이 포함되어 있습니다.

첫 번째 서브시스템에서, Outport 블록에 연결된 Bus Creator 블록을 클릭합니다. 줄임표가 나타나면 커서를 올려 놓습니다. 그런 다음 작업 모음에서 버스 포트를 선택합니다.

GIF that demonstrates Bus Ports action for Bus Creator and Outport blocks

두 번째 서브시스템에서, Inport 블록에 연결된 Bus Selector 블록을 클릭합니다. 줄임표가 나타나면 커서를 올려 놓습니다. 그런 다음 작업 모음에서 버스 포트를 선택합니다.

GIF that demonstrates Bus Ports action for Bus Selector and Inport blocks

신속하게 버스 만들기

BusCreation 서브시스템은 서브시스템 인터페이스와 블록 출력에서 버스를 생성하도록 설정되어 있습니다.

서브시스템 인터페이스에서 버스를 만들려면 해당 선들을 둘러싸도록 선택 상자를 끌어서 놓습니다. 줄임표가 나타나면 커서를 올려 놓습니다. 그런 다음 작업 모음에서 버스 만들기를 선택합니다.

GIF that demonstrates Create Bus action for subsystem inputs and outputs

그러면 선택한 요소들이 하나의 버스로 묶이고, 서브시스템에서 Inport 블록과 Outport 블록이 In Bus Element 블록과 Out Bus Element 블록으로 대체되며, 서브시스템 외부와의 연결이 유지되도록 Bus Creator 블록과 Bus Selector 블록이 추가됩니다.

블록 출력에서 버스를 만들려면 해당 블록들을 둘러싸도록 선택 상자를 끌어서 놓습니다. 줄임표가 나타나면 커서를 올려 놓습니다. 그런 다음 작업 모음에서 버스 만들기를 선택합니다.

GIF that demonstrates Create Bus action for three source blocks

그러면 선택한 블록들로부터 입력을 받는 Bus Creator 블록이 삽입됩니다.

신속하게 포트 만들기

PortCreation 서브시스템은 Bus Creator 블록에는 입력 포트를, Bus Selector 블록에는 출력 포트를, Subsystem 블록에는 버스 요소 포트를 만들도록 설정되어 있습니다.

요소를 버스에 추가하려면 Bus Creator 블록에 선을 끌어서 놓습니다. 버스에서 요소를 선택하려면 Bus Selector 블록에 선을 끌어서 놓고 사용 가능한 요소 목록에서 원하는 요소를 선택합니다.

GIF that demonstrates port sprouting for Bus Creator and Bus Selector blocks

버스 요소 포트를 서브시스템 또는 모델에 추가하려면 Subsystem 블록 또는 Model 블록의 가장자리를 클릭합니다. 그런 다음 버스 인포트 만들기 또는 버스 아웃포트 만들기를 선택합니다.

GIF that demonstrates bus element port sprouting for a Subsystem block

참고 항목

| | | |

도움말 항목