Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

generateSimulationEnsemble

Simulink 모델을 실행하여 앙상블 데이터 생성

설명

[status,E] = generateSimulationEnsemble(simin)simin으로 지정된 Simulink® 모델을 실행하여 시뮬레이션 앙상블 데이터를 생성합니다. 이 입력 인수는 Simulink.SimulationInput 객체로 구성된 벡터로, 앙상블을 생성하기 위해 매 시뮬레이션마다 바뀌어야 하는 다른 파라미터도 지정합니다. 함수는 현재 폴더에 시뮬레이션 데이터 로그 파일을 씁니다. 각 파일에는 대응되는 Simulink.SimulationInput 객체가 포함되어 있으며 시뮬레이션할 때 모델이 기록하도록 구성된 모든 변수가 포함되어 있습니다. 출력 인수는 시뮬레이션에서 오류가 발생했는지 여부와 해당 오류를 반환합니다. 시뮬레이션 데이터와 상호 작용하는 앙상블 데이터저장소를 만들려면 simulationEnsembleDatastore를 사용합니다.

데이터 앙상블에 대한 일반적인 정보는 상태 모니터링 및 예측 정비를 위한 데이터 앙상블 항목을 참조하십시오.

예제

[status,E] = generateSimulationEnsemble(simin,location)은 시뮬레이션 결과를 저장할 위치의 경로도 지정합니다.

[status,E] = generateSimulationEnsemble(simin,location,Name,Value)는 하나 이상의 Name,Value 쌍의 인수로 지정된 추가 옵션을 사용합니다.

예제

모두 축소

결함 파라미터를 바꿔가면서 기계의 Simulink® 모델을 시뮬레이션하여 결함 상태에서 작동하는 기계를 나타내는 데이터의 시뮬레이션 앙상블 데이터저장소를 생성합니다.

Simulink 모델을 불러옵니다. 이 모델은 Simulink를 사용하여 결함 데이터 생성하기에서 설명한 기어박스 모델을 단순화한 것입니다. 이 예제에서는 기어 톱니 결함 하나만 모델링합니다.

mdl = 'TransmissionCasingSimplified';
open_system(mdl)

기어 톱니 결함은 Gear Tooth fault 서브시스템에서 외란으로 모델링됩니다. 외란의 크기는 모델 변수 ToothFaultGain에 의해 제어됩니다. 여기서 ToothFaultGain = 0은 기어 톱니 결함이 없는 상태(정상 작동)에 해당합니다. 결함 데이터의 앙상블을 생성하려면 generateSimulationEnsemble을 사용하여 -2~0 사이의 ToothFaultGain 값에서 모델을 시뮬레이션하십시오. 이 함수는 Simulink.SimulationInput 객체로 구성된 배열을 사용하여 앙상블의 각 멤버에 대해 Simulink 모델을 구성합니다. 각 시뮬레이션은 서로 다른 앙상블 멤버를 각각의 파일에 생성합니다. 이러한 배열을 만든 다음 setVariable을 사용하여 각 실행에 대해 톱니 결함 이득 값을 할당합니다.

toothFaultValues  = -2:0.5:0; % 5 ToothFaultGain values 

for ct = numel(toothFaultValues):-1:1
    simin(ct) = Simulink.SimulationInput(mdl);
    simin(ct) = setVariable(simin(ct),'ToothFaultGain',toothFaultValues(ct));
end

이 예제에서 모델은 Vibration, Tacho와 같은 특정 신호 값을 기록하도록 이미 구성되어 있습니다(Save Signal Data Using Signal Logging (Simulink) 참조). generateSimulationEnsemble은 다음과 같은 작업을 수행하도록 모델을 추가로 구성합니다.

  • 기록된 데이터를 사용자가 지정하는 폴더의 파일에 저장.

  • 신호 기록에 timetable 형식 사용.

  • 저장된 파일에 각 Simulink.SimulationInput 객체와 이에 대응하는 기록된 데이터를 함께 저장.

생성된 데이터의 위치를 지정합니다. 이 예제에서는 현재 폴더 내의 Data 폴더에 데이터를 저장합니다. 모든 시뮬레이션이 오류 없이 완료되면 지표 status는 1(true)입니다.

mkdir Data
location = fullfile(pwd,'Data');
[status,E] = generateSimulationEnsemble(simin,location);
[04-Dec-2023 12:52:37] Running simulations...
[04-Dec-2023 12:52:46] Completed 1 of 5 simulation runs
[04-Dec-2023 12:52:49] Completed 2 of 5 simulation runs
[04-Dec-2023 12:52:54] Completed 3 of 5 simulation runs
[04-Dec-2023 12:52:58] Completed 4 of 5 simulation runs
[04-Dec-2023 12:53:02] Completed 5 of 5 simulation runs

Data 폴더에서 파일 중 하나를 검토합니다. 각 파일은 다음 MATLAB® 변수를 포함하는 MAT 파일입니다.

  • SimulationInput — 파일의 데이터를 생성하도록 모델을 구성하는 데 사용된 Simulink.SimulationInput 객체입니다. 이 객체를 사용하여 시뮬레이션이 실행된 상태(결함 또는 정상)에 대한 정보를 추출할 수 있습니다.

  • logsout — Simulink 모델이 기록하도록 구성된 모든 데이터를 포함하는 Dataset 객체입니다.

  • PMSignalLogName — 기록된 데이터를 포함하는 변수의 이름(이 예제에서는 'logsout')입니다. simulationEnsembleDatastore 명령은 이 이름을 사용하여 파일의 데이터를 구문 분석합니다.

  • SimulationMetadata — 파일에 기록된 데이터를 생성한 시뮬레이션에 대한 기타 정보입니다.

이제 생성된 데이터를 사용하여 시뮬레이션 앙상블 데이터저장소를 만들 수 있습니다. 결과로 생성되는 simulationEnsembleDatastore 객체는 생성된 데이터를 가리킵니다. 이 객체는 앙상블에 있는 데이터 변수를 나열하며, 기본적으로 모든 변수가 읽어 올 대상으로 선택됩니다. 앙상블의 DataVariables 속성과 SelectedVariables 속성을 검사하여 이러한 지정을 확인합니다.

ensemble = simulationEnsembleDatastore(location)
ensemble = 
  simulationEnsembleDatastore with properties:

           DataVariables: [4x1 string]
    IndependentVariables: [0x0 string]
      ConditionVariables: [0x0 string]
       SelectedVariables: [4x1 string]
                ReadSize: 1
              NumMembers: 5
          LastMemberRead: [0x0 string]
                   Files: [5x1 string]

ensemble.DataVariables
ans = 4x1 string
    "SimulationInput"
    "SimulationMetadata"
    "Tacho"
    "Vibration"

ensemble.SelectedVariables
ans = 4x1 string
    "SimulationInput"
    "SimulationMetadata"
    "Tacho"
    "Vibration"

이제 ensemble을 사용하여 앙상블 데이터저장소에서 생성된 데이터를 읽고 분석할 수 있습니다. 자세한 내용은 simulationEnsembleDatastore 항목을 참조하십시오.

입력 인수

모두 축소

시뮬레이션 구성으로, Simulink.SimulationInput (Simulink) 객체로 구성된 벡터로 지정됩니다. 시뮬레이션 구성은 생성된 각 앙상블 멤버에 대해 다음과 같은 파라미터를 지정합니다.

  • 실행할 Simulink 모델

  • 모델 변수의 값

  • 블록 파라미터

  • 모델 초기 상태

예를 들어 시스템 내 결함의 존재와 심각도를 모델링하는 파라미터를 제외하고는 모든 시뮬레이션 구성이 동일한 Simulink.SimulationInput 객체로 구성된 벡터를 만들 수 있습니다. 그런 다음 이 벡터를 사용하여 정상 작동 상태와 결함 작동 상태의 범위를 나타내는 시뮬레이션 데이터의 앙상블을 생성할 수 있습니다.

시뮬레이션 데이터를 저장할 폴더 경로로, string형 또는 문자형 벡터로 지정됩니다. location을 제공하지 않으면 함수는 현재 폴더(pwd로 반환되는 경로)를 사용합니다.

지정된 폴더에, 함수는 시뮬레이션당 하나의 MAT 파일을 작성합니다. 각 파일에는 다음 변수가 포함되어 있습니다.

  • SimulationInput — 이 파일의 데이터를 생성하도록 모델을 구성하는 데 사용된 Simulink.SimulationInput 객체입니다. 이 객체를 사용하여 이 시뮬레이션이 실행된 상태(결함 또는 정상)에 대한 정보를 추출할 수 있습니다.

  • SimulationMetadata — 파일에 기록된 데이터를 생성한 시뮬레이션에 대한 기타 정보입니다.

  • Simulink 모델이 기록하도록 구성된 모든 신호 데이터와 상태 데이터를 포함하는 Dataset 객체입니다. 기본적으로 이 변수는 logsout이라고 하지만 모델에서 이름을 구성할 수 있습니다.

  • PMSignalLogName — 기록된 데이터를 포함하는 변수의 이름(기본적으로 'logsout')입니다. simulationEnsembleDatastore 명령은 이 이름을 사용하여 파일의 데이터를 구문 분석합니다.

데이터 기록에 대한 자세한 내용은 Save Signal Data Using Signal Logging (Simulink) 항목을 참조하십시오.

예: pwd + "\simResults"

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: 'UseParallel',true

시뮬레이션을 병렬로 실행할지 여부로, 'UseParallel'과 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • false — 시뮬레이션을 병렬로 실행하지 않습니다.

  • true — 병렬 풀을 사용하여 여러 시뮬레이션을 병렬로 실행합니다(Parallel Computing Toolbox™가 필요함).

MATLAB® 명령 창에 시뮬레이션 진행률을 표시할지 여부로, 'ShowProgress'와 함께 다음 중 하나가 쉼표로 구분되어 지정됩니다.

  • true — 개별 시뮬레이션 실행이 완료될 때마다 시뮬레이션 진행률을 한 줄씩 표시합니다.

  • false — 시뮬레이션 진행률을 표시하지 않습니다.

출력 인수

모두 축소

시뮬레이션 오류 상태로, 다음과 같이 논리값으로 반환됩니다.

  • 모든 시뮬레이션의 실행이 오류 없이 완료될 경우 1(true)

  • 그렇지 않으면 0(false)

시뮬레이션 오류로, 다음 필드를 포함하는 구조체형 배열로 반환됩니다.

  • 'SimulationInput' — 오류를 생성한 시뮬레이션 실행의 Simulink.SimulationInput

  • 'ErrorDiagnostic' — 오류를 포함하는 문자열

확장 기능

버전 내역

R2018a에 개발됨