주요 콘텐츠

MATLAB 및 Simscape에서 간단한 배터리 팩 모델 구축하기

이 예제에서는 Simscape™ Battery™에서 배터리 팩의 Simscape™ 시스템 모델을 만들고 구축하는 방법을 보여줍니다. 배터리 팩은 자동차 응용 분야에 사용되는 400V 파우치 배터리입니다. 배터리 팩의 시스템 모델을 만들려면 먼저 배터리 팩을 구성하는 Cell 객체, ParallelAssembly 객체, Module 객체, ModuleAssembly 객체를 만든 다음 buildBattery 함수를 사용해야 합니다.

다음 그림은 상향식 접근법으로 배터리 팩 객체를 만드는 전체 과정을 보여줍니다.

배터리 팩은 여러 개의 모듈 어셈블리로 구성됩니다. 이러한 모듈 어셈블리는 전기적으로 직렬 또는 병렬로 연결된 여러 개의 배터리 모듈로 구성됩니다. 배터리 모듈은 여러 개의 병렬 어셈블리로 이루어지고, 병렬 어셈블리는 특정 토폴로지 구성이나 기하학적 배열에 따라 전기적으로 병렬로 연결된 여러 개의 배터리 셀로 구성됩니다.

배터리 팩 객체가 생성되면 buildBattery 함수는 배터리 팩의 시스템 모델 블록이 포함된 라이브러리를 작업 폴더에 만듭니다. 시뮬레이션에서 이 시스템 모델을 참조로 사용할 수 있습니다. 이러한 모델의 런타임 파라미터(예: 배터리 셀 임피던스나 배터리 개방 회로 전압)는 모델을 만든 후에 정의되므로 Battery Pack Builder 클래스에서는 다루지 않습니다. 런타임 파라미터를 정의하려면 생성된 Simscape 모델의 블록 마스크에 파라미터를 지정하거나 buildBattery 함수의 MaskParameters 인수를 사용할 수 있습니다.

MATLAB에서 배터리 Pack 객체 만들기

이 섹션에서는 MATLAB® 명령 창에서 프로그래밍 방식으로 배터리 팩 객체를 만드는 방법을 보여줍니다.

Cell 객체 만들기

배터리 Pack 객체를 만들기 위해 먼저 파우치 형식의 Cell 객체를 만듭니다.

PouchGeometry 객체를 사용하면 배터리 셀의 파우치형 기하학적 배열을 정의할 수 있습니다. PouchGeometry 객체를 만들기 위해 batteryPouchGeometry 함수를 사용합니다. 첫 번째 인수로 셀 높이를 지정하고, 두 번째 인수로 셀 길이를 지정합니다.

pouchGeometry = batteryPouchGeometry(simscape.Value(0.1,"m"),...
    simscape.Value(0.3,"m"),TabLocation="Opposed")
pouchGeometry = 
  PouchGeometry with properties:

         Length: 0.3000 (m)
      Thickness: 0.0100 (m)
    TabLocation: "Opposed"
       TabWidth: 0.0400 (m)
      TabHeight: 0.0300 (m)
         Height: 0.1000 (m)

배터리 셀의 가능한 기하학적 배열에 대한 자세한 내용은 CylindricalGeometry 문서 페이지와 PrismaticGeometry 문서 페이지를 참조하십시오.

이제 이 PouchGeometry 객체를 사용하여 파우치형 배터리 셀을 만듭니다.

pouchCell = batteryCell(pouchGeometry)
pouchCell = 
  Cell with properties:

            Geometry: [1×1 simscape.battery.builder.PouchGeometry]
    CellModelOptions: [1×1 simscape.battery.builder.CellModelBlock]
                Mass: 0.1000 (kg)
            Capacity: 5 (A*hr)
              Energy: 50 (W*hr)

Show all properties

자세한 내용은 Cell 문서 페이지를 참조하십시오.

ParallelAssembly 객체 만들기

배터리 병렬 어셈블리는 특정 토폴로지 구성이나 기하학적 배열에 따라 전기적으로 병렬로 연결된 여러 개의 배터리 셀로 구성됩니다. 이 예제에서는 파우치형 셀 3개로 구성된 병렬 어셈블리를 만듭니다.

ParallelAssembly 객체를 만들기 위해 batteryParallelAssembly 함수를 사용합니다. 첫 번째 인수로 Cell 객체를 정의하고 두 번째 인수로 병렬로 연결된 셀의 수를 정의합니다.

parallelAssembly = batteryParallelAssembly(pouchCell,3)
parallelAssembly = 
  ParallelAssembly with properties:

    NumParallelCells: 3
                Cell: [1×1 simscape.battery.builder.Cell]
            Topology: "SingleStack"
                Rows: 1
     ModelResolution: "Lumped"

Show all properties

자세한 내용은 ParallelAssembly 문서 페이지를 참조하십시오.

Module 객체 만들기

배터리 모듈은 직렬로 연결된 여러 개의 병렬 어셈블리로 구성됩니다. 이 예제에서는 각 어셈블리 간의 간격이 0.005m인 11개의 병렬 어셈블리로 구성된 배터리 모듈을 만듭니다.

Module 객체를 만들기 위해 batteryModule 함수를 사용합니다. 첫 번째 인수로 ParallelAssembly 객체를 정의하고 두 번째 인수로 직렬로 연결된 병렬 어셈블리의 수를 정의합니다. 병렬 어셈블리의 간격을 지정하려면 이름-값 인수 InterParallelAssemblyGap을 사용합니다.

module = batteryModule(parallelAssembly,11,...
    InterParallelAssemblyGap=simscape.Value(0.005,"m"))
module = 
  Module with properties:

    NumSeriesAssemblies: 11
       ParallelAssembly: [1×1 simscape.battery.builder.ParallelAssembly]
        ModelResolution: "Lumped"
         SeriesGrouping: 11
       ParallelGrouping: 1

Show all properties

자세한 내용은 Module 문서 페이지를 참조하십시오.

ModuleAssembly 객체 만들기

배터리 모듈 어셈블리는 직렬 또는 병렬로 연결된 여러 개의 배터리 모듈로 구성됩니다. 이 예제에서는 각 모듈 간의 간격이 0.1m인 2개의 동일한 모듈로 구성된 배터리 모듈 어셈블리를 만듭니다. 기본적으로 ModuleAssembly 객체는 전기적으로 직렬로 모듈을 연결합니다.

ModuleAssembly 객체를 만들기 위해 batteryModuleAssembly 함수를 사용합니다. Module 객체를 첫 번째 인수로 정의하고, 이름-값 인수 InterModuleGap을 사용하여 각 모듈 간의 간격을 지정합니다.

moduleAssembly = batteryModuleAssembly(repmat(module,1,2),...
    InterModuleGap=simscape.Value(0.1,"m"))
moduleAssembly = 
  ModuleAssembly with properties:

    Module: [1×2 simscape.battery.builder.Module]

Show all properties

자세한 내용은 ModuleAssembly 문서 페이지를 참조하십시오.

Pack 객체 만들기

이제 배터리 팩을 만들기 위한 모든 기본 요소를 갖추었습니다. 배터리 팩은 직렬 또는 병렬로 연결된 여러 개의 모듈 어셈블리로 구성됩니다. 이 예제에서는 각 모듈 어셈블리 간의 간격이 0.01m인 5개의 동일한 모듈 어셈블리로 구성된 배터리 팩을 만듭니다.

Pack 객체를 만들기 위해 batteryPack 함수를 사용합니다. ModuleAssembly 객체를 첫 번째 인수로 정의하고, 이름-값 인수 InterModuleAssemblyGap을 사용하여 각 모듈 어셈블리 간의 간격을 지정합니다.

pack = batteryPack(repmat(moduleAssembly,1,5),...
    InterModuleAssemblyGap=simscape.Value(0.01,"m"))
pack = 
  Pack with properties:

    ModuleAssembly: [1×5 simscape.battery.builder.ModuleAssembly]

Show all properties

자세한 내용은 Pack 문서 페이지를 참조하십시오.

배터리 팩 시각화하기 및 모델 분해능 검사하기

팩 시뮬레이션에 사용되는 Simscape Battery(Table-Based) 블록 개수를 구하기 위해 Pack 객체의 NumModels 속성을 사용합니다.

disp(pack.NumModels);
    10

시스템 모델을 구축하기 전에 배터리 팩을 시각화하고 모델 분해능을 보기 위해 BatteryChart 객체를 사용합니다.

그런 다음 batteryChart 함수를 사용하여 배터리 팩을 시각화합니다. 모듈의 모델 분해능을 보기 위해 이름-값 인수 SimulationStrategyVisible"On"으로 정의합니다.

f = figure(Color="white",Position=[0 0 1000 500]);
packChart = batteryChart(f,pack, ...
    SimulationStrategyVisible="on");

Figure contains an object of type simscape.battery.builder.batterychart.

디폴트 축 레이블을 배터리 플롯에 추가하려면 BatteryChart 객체의 setDefaultLabels 메서드를 사용합니다.

자세한 내용은 batteryChart 문서 페이지를 참조하십시오.

배터리 팩 객체를 위한 Simscape 모델 구축하기

배터리 객체를 만든 후 블록 다이어그램에서 해당 객체를 사용하려면 Simscape 모델로 변환해야 합니다. 그런 다음 변환한 모델을 시스템 통합과 요구 사항 평가, 냉각 시스템 설계, 제어 전략 개발, HIL(Hardware-in-the-Loop), 기타 여러 응용 분야에서 참조로 사용할 수 있습니다.

이 예제에서 만든 Pack 객체의 Simscape Battery 모델을 포함하는 라이브러리를 만들기 위해 buildBattery 함수를 사용합니다.

buildBattery(pack,LibraryName="packLibrary",Verbose="off");

이 함수는 작업 디렉터리에 packLibrary_lib 라이브러리 파일과 packLibrary SLX 라이브러리 파일을 만듭니다. packLibrary_lib 라이브러리는 Modules 하위 라이브러리와 ParallelAssemblies 하위 라이브러리를 포함합니다.

Module 객체와 ParallelAssembly 객체의 Simscape 모델에 액세스하기 위해 packLibrary_lib SLX 파일을 열고 하위 라이브러리를 더블 클릭하여 Simscape 블록을 모델에 끌어서 놓습니다.

packLibrary 라이브러리는 ModuleAssembly 객체와 Pack 객체의 Simscape 모델을 포함합니다.

ModuleAssembly 객체와 Pack 객체의 Simscape 모델은 서브시스템입니다. packLibrary SLX 파일을 열고 서브시스템을 더블 클릭하여 이러한 서브시스템 내부를 들여다볼 수 있습니다.

배터리 팩에 열 효과를 포함하는 방법을 알아보려면 열 효과가 있는 배터리 모듈 모델 구축하기 예제를 참조하십시오.

보다 상세한 배터리 팩 모델을 구축하려면 Build Detailed Model of Battery Pack from Pouch Cells 예제를 참조하십시오.

피크 쉐이빙(peak shaving)에 필요한 모든 기능을 갖춘 BESS(배터리 에너지 저장 시스템) 제어기와 BMS(배터리 관리 시스템)를 모델링하는 방법을 알아보려면 Peak Shaving with Battery Energy Storage System 예제를 참조하십시오.

배터리 빌더 앱에서 배터리 팩 살펴보기 및 모델 구축하기

이 예제에서는 MATLAB 명령 창에서 관련 객체와 함수를 호출하여 배터리 팩과 모든 하위 컴포넌트를 프로그래밍 방식으로 생성했습니다. 보다 대화형 방식으로 수행할 수 있는 시각적인 접근법을 선호하는 경우 배터리 빌더 앱을 사용할 수 있습니다. 이 앱을 사용하면 기존 배터리 객체를 대화형 방식으로 가져오거나 처음부터 배터리 객체를 구축할 수 있고, 속성을 탐색하고 편집할 수 있으며, 배터리 계층 구조와 3차원 시각화를 볼 수 있습니다. 그런 다음 객체의 Simscape 시스템 모델을 구축하여 시뮬레이션에서 참조로 사용할 수 있습니다. 작업 공간의 객체를 내보낼 수도 있습니다. 배터리 빌더 앱을 사용하여 배터리 객체를 생성하고 Simscape 모델을 구축하는 방법을 알아보려면 Get Started with Battery Builder App 예제를 참조하십시오.

이 예제에서 만든 배터리 팩을 살펴봅니다. 배터리 빌더 앱을 엽니다. 탭의 Simscape에서 배터리 빌더 아이콘을 클릭합니다. 또는 다음 명령을 사용하여 명령줄에서 앱을 열 수도 있습니다.

batteryBuilder

packLibrary MAT 파일에서 배터리 팩 객체를 가져옵니다. 배터리 빌더 탭에 있는 툴스트립의 가져오기 섹션에서 가져오기를 클릭합니다. 그런 다음 MAT 파일에서 가져오기를 클릭하고 packLibrary MAT 파일을 불러옵니다.

이제 배터리 빌더 앱이 Pack 객체와 각 하위 컴포넌트로 구성됩니다.

앱 왼쪽의 배터리 브라우저 패널에는 앱의 현재 활성 세션에 있는 모든 배터리 객체가 포함되어 있습니다. 객체를 선택하고, 선택한 배터리 탭에서 이를 시각화하고, 배터리 계층 구조 패널에서 계층 구조와 자식 객체를 확인하고, 앱 오른쪽에 있는 속성 패널에서 속성을 편집할 수 있습니다.

배터리 차트 탭에서 좌표축 레이블, 좌표축 방향, 플롯 제목, 조명과 같은 플롯의 속성을 편집할 수 있습니다. 또한 현재 시뮬레이션 전략을 확인하고 선택한 배터리 객체의 분해능을 모델링할 수 있습니다. 시뮬레이션 전략을 플롯으로 시각화하려면 툴스트립의 시뮬레이션 전략 섹션에서 표시 상자를 선택합니다.

마지막으로 배터리 객체를 수정하고 업데이트된 Pack 객체의 라이브러리 모델을 만들려면 배터리 빌더 탭에 있는 툴스트립의 라이브러리 섹션에서 라이브러리 만들기를 클릭합니다. 새 창에서 라이브러리를 저장할 폴더와 라이브러리 이름을 지정하고, 마스크 파라미터와 마스크 초기 목표값에 숫자형 값을 사용할지 변수 이름을 사용할지를 지정합니다.

라이브러리 만들기를 클릭하여 지정된 폴더에 배터리 객체의 업데이트된 라이브러리 모델을 생성합니다. 이 모델을 열어서 초기 개발 단계에서의 아키텍처 평가, 소프트웨어 및 하드웨어 개발, 시스템 통합 및 요구 사항 평가, 냉각 시스템 설계, 제어 전략 개발, Hardware-in-the-Loop, 그 외 많은 응용 분야를 위한 출발점으로 삼을 수 있는 Simscape 블록으로 배터리 객체에 액세스할 수 있습니다.

참고 항목

도움말 항목