Main Content

열 효과가 있는 배터리 모듈 모델 구축하기

이 예제에서는 Simscape™ Battery™에서 열 효과가 있는 배터리 모듈의 Simscape™ 시스템 모델을 만들고 구축하는 방법을 보여줍니다. 배터리 모듈의 시스템 모델을 만들려면 먼저 배터리 모듈을 구성하는 Cell 객체와 ParallelAssembly 객체를 만든 다음 buildBattery 함수를 사용해야 합니다.

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

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

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

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

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

Cell 객체 만들기

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

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

pouchGeometry = batteryPouchGeometry(simscape.Value(0.1,"m"),...
    simscape.Value(0.3,"m"),TabLocation="Opposed" );

배터리 셀의 가능한 기하학적 배열에 대한 자세한 내용은 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 문서 페이지를 참조하십시오.

Cell 객체를 사용하면 단순한 1차원 모델을 사용하여 배터리 셀의 열 효과를 시뮬레이션할 수 있습니다. 배터리 셀의 열 효과를 시뮬레이션하려면 Cell 객체의 CellModelOptions 속성에 있는 BlockParameters 속성에서 thermal_port 속성을 "model"로 설정하고 T_dependence 속성을 "yes"로 설정합니다.

pouchCell.CellModelOptions.BlockParameters.thermal_port = "model";
pouchCell.CellModelOptions.BlockParameters.T_dependence = "yes";

이전에 셀 수준에서 열 모델을 정의한 경우에만 배터리 병렬 어셈블리와 모듈에 대한 열 경계 조건을 정의할 수 있습니다.

ParallelAssembly 객체 만들기

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

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

parallelAssembly = batteryParallelAssembly(pouchCell,3,...
     ModelResolution="Detailed");

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

Module 객체 만들기

이제 배터리 모듈을 만들기 위한 모든 기본 요소를 갖추었습니다. 배터리 모듈은 직렬로 연결된 여러 개의 병렬 어셈블리로 구성됩니다. 이 예제에서는 각 어셈블리 간의 간격이 0.005m인 14개의 병렬 어셈블리로 구성된 배터리 모듈을 만듭니다. 모듈의 모델 분해능도 정의합니다.

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

module = batteryModule(parallelAssembly,14,...
    InterParallelAssemblyGap=simscape.Value(0.005,"m"), ...
    ModelResolution="Detailed");

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

열 경계 조건 정의하기

Module 객체의 경우 AmbientThermalPath, CoolantThermalPath, CoolingPlate 속성을 사용하여 주변 열 경로, 냉매 열 경로, 냉각 플레이트의 위치를 정의할 수 있습니다.

주변 열 경로 정의하기

주변에 대한 열 경로를 정의하려면 AmbientThermalPath 속성을 "CellBasedThermalResistance"로 설정합니다. 이 속성을 설정하면 이 Module 객체 내의 모든 하위 컴포넌트 배터리 객체에 해당 값이 자동으로 전파됩니다. 하지만 이 변경 사항은 MATLAB 작업 공간의 다른 배터리 객체에는 전파되지 않습니다.

module.AmbientThermalPath = "CellBasedThermalResistance";

이 명령은 셀 모델의 모든 열 포트에 Thermal Resistor 블록 1개를 추가하고 연결합니다. 모든 저항기의 다른 열 포트는 하나의 열 노드에 연결됩니다. 그런 다음 이 열 노드를 일정한 온도 소스나 Simscape 라이브러리의 다른 블록과 연결할 수 있습니다.

냉매 열 경로 정의

셀에서 냉매까지의 열 경로를 정의하려면 CoolantThermalPath 속성을 "CellBasedThermalResistance"로 설정합니다. 이 속성을 설정하면 이 Module 객체 내의 모든 하위 컴포넌트 배터리 객체에 해당 값이 자동으로 전파됩니다. 하지만 이 변경 사항은 MATLAB 작업 공간의 다른 배터리 객체에는 전파되지 않습니다.

module.CoolantThermalPath = "CellBasedThermalResistance";

이 명령은 셀 모델의 모든 열 포트에 Thermal Resistor 블록 1개를 추가하고 연결합니다. 모든 저항기의 다른 열 포트는 하나의 열 노드에 연결됩니다. 그런 다음 이 열 노드를 일정한 온도 소스나 Simscape 라이브러리의 다른 블록과 연결할 수 있습니다. 모든 열 저항이 다른 값을 갖도록 개별적으로 파라미터화할 수 있습니다.

Thermal Resistor 블록을 사용하여 셀, 열 인터페이스 재료, 냉매 경로에 있는 다른 재료에 대한 전도 저항을 파악할 수 있습니다. 배터리 모듈의 냉각 플레이트와 같은 냉각 시스템을 정의하는 경우 Thermal Resistor 블록의 다른 열 포트는 열 노드 커넥터 배열에 연결됩니다.

냉각 플레이트 위치 정의

배터리 모듈의 냉각 플레이트 위치를 정의하기 위해 CoolingPlate 속성을 "Top" 또는 "Bottom"으로 설정합니다. 이 속성을 설정하면 이 Module 객체 내의 모든 하위 컴포넌트 배터리 객체에 해당 값이 자동으로 전파됩니다. 하지만 이 변경 사항은 MATLAB 작업 공간의 다른 배터리 객체에는 전파되지 않습니다.

module.CoolingPlate = "Bottom";

이 명령은 배터리 모듈에 있는 각 셀 모델의 모든 열 노드를 열 노드 커넥터 배열 내부의 해당 요소에 연결합니다. CoolantThermalPath가 활성화된 경우 각 배터리 모델과 열 노드 배열 내부의 해당 요소 사이에 열 저항이 추가됩니다.

열 노드 배열은 모듈 수준에서 단일 커넥터로 노출되지만 다차원 배열입니다. 열 노드 배열은 크기가 동일한 다른 열 노드 배열에만 연결할 수 있습니다. Simscape Battery 라이브러리에서 Cooling Plate 블록을 히트 싱크로 추가할 수 있습니다.

다차원 열 도메인을 손쉽게 연결하기 위해 Module 객체의 ThermalNodes 속성을 Cooling Plate 블록의 입력으로 사용할 수 있습니다. ThermalNodes 속성에 액세스하여 기본 셀 모델의 열 노드 수, 차원, 열 노드 위치를 볼 수 있습니다.

disp(module.ThermalNodes);
       Top: [1×1 struct]
    Bottom: [1×1 struct]

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

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

disp(module.NumModels);
    42

시스템 모델을 구축하기 전에 배터리 모듈을 시각화하고 모델 분해능을 보기 위해, 모듈을 시각화할 Figure를 만든 다음 batteryChart 함수를 사용합니다. 모듈의 모델 분해능을 보려면 이름-값 인수 SimulationStrategyVisible을 "On"으로 정의합니다.

f = uifigure(Color="w");
tl = tiledlayout(1,2,"Parent",f,"TileSpacing","Compact");
nexttile(tl)
moduleChart1 = batteryChart(tl,module); 
nexttile(tl)
moduleChart2 = batteryChart(tl,module,SimulationStrategyVisibl="On");

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

배터리 Module 객체에 대한 Simscape 모델 구축하기

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

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

buildBattery(module,LibraryName="moduleBTMSExample");

이 함수는 이름이 moduleBTMSExample_lib인 라이브러리를 작업 디렉터리에 생성합니다. 이 라이브러리는 Module 객체와 ParallelAssembly 객체의 Simscape 모델을 포함합니다.

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

냉매 열 경로가 있는 배터리 열 효과 모델의 응용 예제의 경우 Protect Battery During Charge and Discharge for Electric Vehicle 예제를 참조하십시오.

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

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

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

batteryBuilder

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

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

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

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

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

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

참고 항목

관련 항목