사용자 지정 라이브러리 만들기
유사한 블록 그룹과 서브시스템 그룹을 저장하고 관리할 수 있는 사용자 지정 라이브러리를 만들면 Simulink® 모델에서 재사용할 수 있습니다. 라이브러리의 블록을 모델에 추가하면 라이브러리 블록은 프로토타입으로 동작하며, 해당 인스턴스는 모델에서 프로토타입처럼 표시되고 동작하는 링크된 블록이 됩니다. 특히 모델에서 자주 재사용하는 블록의 모든 인스턴스에서 일관된 동작이 필요한 경우 링크된 블록을 사용하는 것이 유용합니다.
예를 들어, 엔진 제어, 트랜스미션 제어, 제동 시스템, 차량 동특성 및 운전자 보조 기능을 위한 블록을 포함하는 사용자 지정 자동차 제어 라이브러리를 만들 수 있습니다. 그런 다음 이 라이브러리의 블록을 여러 다른 차량 모델과 프로젝트에 사용하여 일관성을 유지하고 개발 시간을 단축할 수 있습니다. 이 라이브러리를 팀과 공유할 수도 있습니다.
사용자 지정 라이브러리를 사용할 경우의 이점
사용자 지정 라이브러리는 다음과 같은 여러 이점을 제공합니다.
블록 구성 및 재사용 가능성 — 자주 사용하고 최소한의 수정만 필요한 컴포넌트를 손쉽게 유지 관리 및 재사용할 수 있도록 유사한 블록과 서브시스템을 사용자 지정 라이브러리에 구성할 수 있습니다.
일관성 유지 — 라이브러리 블록의 인스턴스를 사용하여 모든 링크된 인스턴스에서 일관적으로 사용할 수 있습니다.
의도치 않은 수정 방지 — 라이브러리와 이에 링크된 블록 간의 링크를 잠가 다른 사용자가 라이브러리 블록 인스턴스를 변경하는 것을 방지할 수 있습니다.
사용자 지정 라이브러리 만들기
이 예제에서는 사용자 지정 라이브러리를 만들고, 블록과 주석을 추가하고, 라이브러리 설정을 구성하는 방법을 보여줍니다.
라이브러리를 만들려면 다음 단계를 따르십시오.
1. 다음 방법 중 하나를 사용하여 빈 라이브러리 창을 엽니다.
Simulink 시작 페이지의 Simulink 제품 그룹에서 빈 라이브러리를 클릭합니다.
Simulink 툴스트립의 시뮬레이션 탭에서 새로 만들기를 선택하고 라이브러리를 클릭합니다.

new_system명령을 사용하여myLibrary라는 이름의 라이브러리를 만듭니다.
new_system("myLibrary","Library"); open_system("myLibrary");
2. 모델을 저장하는 방식과 유사하게 라이브러리를 .slx 파일로 저장합니다. 하지만 모델과 달리, 라이브러리 내에서는 직접 시뮬레이션을 실행할 수 없습니다. 라이브러리의 블록을 사용하는 모델이 액세스할 수 있는 위치에 라이브러리를 저장할 수 있습니다.
블록과 서브시스템을 라이브러리에 추가하기
라이브러리를 만든 후에는 목적에 맞게 구성된 블록, 서브시스템 및 차트를 추가할 수 있습니다. 파라미터를 변경하거나, 마스크를 추가하거나, 서브시스템 내에 블록을 추가하여 블록을 수정할 수도 있습니다. 특화된 기능을 위해 사용자 지정 블록을 라이브러리 내에 만들 수 있습니다. 자세한 내용은 Design and Create a Custom Block 항목을 참조하십시오.
내용을 myLibrary에 추가하려면 다음 단계를 따르십시오.
Continuous Time이라는 이름의 Subsystem 블록을 추가합니다.Continuous Time내에 Inport 블록, Integrator 블록, Outport 블록을 추가하고 연결합니다.Discrete Time이라는 이름의 다른 Subsystem 블록을 추가합니다.Discrete Time내에 Inport 블록, Discrete-Time Integrator 블록, Outport 블록을 추가하고 연결합니다.
open_system("myLibrary")

자신이 만든 라이브러리가 여러 블록을 포함하고 있는 경우, 블록을 별도의 하위 라이브러리로 그룹화하여 구성을 개선할 수 있습니다. 예를 들어, 기능별 하위 라이브러리를 만들어 사용자 지정 자동차 제어 라이브러리의 구성을 개선할 수 있습니다. Engine Control이라는 하나의 하위 라이브러리에는 연료 분사 시스템, 점화 시점 제어, 배기 가스 제어 및 스로틀 제어를 위한 블록을 포함할 수 있습니다. 다른 하위 라이브러리 Driver Assistance에는 크루즈 컨트롤, 차선 유지 보조, 적응형 헤드라이트, 충돌 회피 시스템을 위한 블록을 포함할 수 있습니다. 자세한 내용은 라이브러리 브라우저와 빠른 삽입에 라이브러리 추가하기 항목의 라이브러리에 하위 라이브러리 추가하기를 참조하십시오.
라이브러리 잠그기 및 잠금 해제하기
라이브러리를 닫으면 라이브러리가 잠겨 편집이 불가능합니다. 다음에 라이브러리를 열 때 변경하려면 잠금을 해제해야 합니다.
라이브러리의 잠금을 해제하려면 다음 옵션 중 하나를 사용하십시오.
라이브러리 창의 왼쪽 하단 코너에서 잠금 배지를 클릭합니다.
Simulink 툴스트립의 라이브러리 탭에 있는 보호 섹션에서 잠긴 라이브러리를 클릭합니다.

MATLAB 명령 창에서
set_param함수를 사용하여 라이브러리의Lock파라미터를 설정합니다.
set_param("myLibrary","Lock","off")
라이브러리 링크 비활성화 방지하기
기본적으로 라이브러리 블록의 사용자는 부모 라이브러리에 대한 링크를 비활성화할 수 있습니다. 링크된 블록의 편집을 제어하고 블록 사용자가 링크를 비활성화하지 못하도록 방지하려면, 부모 라이브러리 블록과 이에 링크된 블록 간의 링크를 잠그면 됩니다. 라이브러리 링크를 잠그면 사용자가 라이브러리에 링크된 인스턴스를 변경할 수 없습니다. 블록 사용자가 잠긴 라이브러의 블록과 상호 작용하는 방법에 대한 자세한 내용은 라이브러리의 블록에 대한 링크 잠그기 항목을 참조하십시오.
라이브러리의 링크를 잠그려면 다음 옵션 중 하나를 사용하십시오. 이러한 설정을 변경하려면 먼저 라이브러리의 잠금을 해제해야 합니다.
라이브러리 창의 라이브러리 탭에서 링크 잠그기를 클릭합니다.
명령 창에서
set_param함수를 사용하여LockLinksToLibrary파라미터를 설정합니다.
set_param("myLibrary","LockLinksToLibrary","on");
라이브러리에 주석 추가하기
텍스트, 수식 또는 이미지 주석을 사용하여 라이브러리에 대한 배경 정보나 지침을 추가합니다. 라이브러리의 블록에 대한 주석에 콜아웃 선을 추가하거나, 클릭하면 동작을 수행하는 주석을 만들 수 있습니다.
주석을 myLibrary에 추가하려면 주석을 추가할 캔버스를 더블 클릭하고, 빠른 삽입 메뉴에서 주석 만들기를 클릭한 다음 주석 텍스트를 Integrator Library로 추가합니다. 주석 설정에 대한 자세한 내용은 Annotate Models 항목을 참조하십시오.
myLibrary의 모든 주석을 표시하려면 다음 명령을 사용하십시오.
ann = find_system("myLibrary","FindAll","on","Type","annotation"); get_param(ann,"PlainText")
ans =
2×1 cell array
{'Copyright 2024 The MathWorks, Inc.'}
{'Integrator Library' }
라이브러리의 각 블록에 대한 블록 속성도 지정할 수 있습니다. 자세한 내용은 블록 속성 지정하기 항목을 참조하십시오.
라이브러리 블록 설명 추가하기
링크된 블록에 표시되는 설명을 추가하려면, 라이브러리 블록을 마스크 처리하고 마스크의 문서 창에 설명을 추가합니다. 블록 속성을 통해 라이브러리 블록에 추가된 설명은 링크된 블록에 표시되지 않습니다. 마스크 생성에 관한 내용은 간단한 마스크 만들기 항목을 참조하십시오.
라이브러리 블록 세부 정보 숨기기
사용자 지정 라이브러리의 Subsystem 블록에 대한 구현 세부 정보를 숨겨 사용자 지정 라이브러리 블록이 의도치 않게 변경되는 것을 방지할 수 있습니다.
Subsystem 블록 Continuous Time의 구현 세부 정보를 숨기려면 해당 Subsystem 블록을 선택합니다. Simulink 툴스트립의 Subsystem 블록 탭에 있는 내부 탐색 섹션에서 '내부 탐색'이 허용됨을 클릭합니다. 이렇게 하면 사용자 인터페이스를 통해 또는 open_system(blk,"force")를 사용하여 프로그래밍 방식으로 Subsystem 블록의 구현 세부 정보를 볼 수 있는 옵션이 비활성화됩니다. 여기서 blk는 열려 있는 모델 또는 불러온 모델 내 Subsystem 블록의 전체 이름 또는 경로입니다.

라이브러리 블록의 세부 정보를 볼 수 있는 옵션을 활성화하려면 라이브러리에서 Subsystem 블록을 선택하고 Subsystem 블록 탭의 내부 탐색 섹션에서 '내부 탐색'이 허용되지 않음을 클릭합니다.
이러한 변경 사항은 라이브러리 전체가 아닌 라이브러리 내에서 선택된 블록에만 적용됩니다.
라이브러리 블록을 인스턴스에 링크하는 것 방지하기
기본적으로 라이브러리 블록을 모델에 추가하면 추가된 블록은 링크된 블록이 됩니다. 하지만 라이브러리 블록에서 생성된 인스턴스가 링크된 블록이 아닌 독립적인 복사본이 되도록 라이브러리 블록을 구성할 수 있습니다.
Continuous Time 블록에 대해 이를 수행하려면 블록의 블록 속성 창에서 콜백 탭을 사용하여 라이브러리 블록의 CopyFcn 콜백을 다음과 같이 설정하십시오.
set_param(gcbh,"LinkStatus","none");
여기서 LinkStatus 파라미터는 라이브러리 블록과 그 인스턴스 사이에 연결을 설정하기 위해 사용됩니다. 라이브러리 블록의 링크 상태는 다양한 방법으로 구성할 수 있습니다. 자세한 내용은 Link Status 항목을 참조하십시오.
사용자 지정 라이브러리 사용 시 고려 사항
모델에 부모 라이브러리 블록을 추가한 후 블록 속성을 수정하면, 변경 내용이 링크된 인스턴스에 자동으로 전파되지 않습니다.