主要内容

시뮬레이션된데이터앙상블생성및사용하기

이예제에서는결함파라미터를바꾸면서기계의仿真软件®모万博1manbetx델을시뮬레이션하여예측정비알고리즘설계를위한데이터앙상블을생성하는방법을보여줍니다。그런다음시뮬레이션앙상블데이터저장소와상호작용하는몇가지방법을보여줍니다。이예제에서는데이터저장소에서MATLAB®작업공간으로데이터를읽어들인다음데이터를처리하여도출된변수를계산하고새로운변수를다시데이터저장소에쓰는방법을보여줍니다。

이예제에서사용하는모델은万博1manbetxSimulink를사용하여결함데이터생성하기에서설명한기어박스모델을단순화한것니다。万博1manbetxSimulink모델을불러옵니다。

mdl =“TransmissionCasingSimplified”;open_system (mdl)

이예제에서는하나의결함모드만모델링합니다。기어톱니결함은齿轮故障서브시스템에서외란으로모델링됩니다。외란의크기는모델변수ToothFaultGain에의해제어됩니다。여기서ToothFaultGain = 0은기어톱니결함이없는상태(정상작동)에해당합니다。

시뮬레이션된데이터의앙상블생성하기

결함데이터의시뮬레이션앙상블데이터저장소를생성하려면generateSimulationEnsemble을사용하여-2~0사이의ToothFaultGain값에서모델을시뮬레이션하십시오。이함수는사용자가제공한万博1manbetx仿真软件。SimulationInput객체로구성된배열의각소에대해한번씩모델을시뮬레이션합니다。각시뮬레이션은서로다른앙상블멤버를생성합니다。이러한배열을만든다음setVariable을사용하여각실행에대해톱니결함이득값을할당합니다。

toothFaultValues = -2:0.5:0;% 5牙faultgain值tmp = Simulink.SimulationInput(mdl);万博1manbetxtmp = setVariable(tmp,“ToothFaultGain”toothFaultValues (ct));Simin (ct) = tmp;结束

이예제에서모델은振动转速计와같은특정신호값을기록하도록이미구성되어있습니다(使用信号日志导出信号数据(万博1manbetx模型)참조)。generateSimulationEnsemble함수는다음과같은작업을수행하도록모델을추가로구성합니다。

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

  • 신호기록에时间表형식 사용

  • 저장된파일에각万博1manbetx仿真软件。SimulationInput객체와이에대응하는기록된데이터를함께저장

생성된데이터의위치를지정합니다。이예제에서는현재폴더내의数据폴더에데이터를저장합니다。모든시뮬레이션이오류없이완료되면함수는지@ @출력값状态真正的를반환합니다。

mkdir数据位置= fullfile(pwd,“数据”);[status,E] = generateSimulationEnsemble(simin,location);
[05-11-2022 13:10:44]运行模拟…[05-11-2022 13:10:54]完成5次模拟运行中的1次[05-11-2022 13:10:57]完成5次模拟运行中的3次[05-11-2022 13:10:59]完成5次模拟运行中的4次[05-11-2022 13:11:01]完成5次模拟运行中的5次
状态
状态=逻辑1

数据폴더에서파일중하나를검토합니다。각파일은다음matlab®변수를포함하는mat파일입니다。

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

  • logsout- 万博1manbetxSimulink모델이기록하도록구성된모든데이터를포함하는数据集객체입니다。

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

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

이제생성된데이터를사용하여시뮬레이션앙상블데이터저장소를만들수있습니다。결과로생성되는simulationEnsembleDatastore객체는생성된데이터를가리킵니다。이객체는앙상블에있는데이터변수를나열하며,기본적으로모든변수가읽어올대상으로선택됩니다。

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]
合奏。数据变量
ans =4 x1字符串SimulationInput SimulationMetadata Tacho振动
合奏。SelectedVariables
ans =4 x1字符串SimulationInput SimulationMetadata Tacho振动

앙상블멤버에서데이터읽기

수행하려는분석에서는振动데이터와,각멤버가시뮬레이션된상태를기술하는万博1manbetx仿真软件。SimulationInput객체만필하다고가정하겠습니다。合奏。SelectedVariables를설정하여읽어들이려는변수를지정합니다。명령은자동으로정해지는첫번째앙상블멤버에서해당변수를추출합니다。

合奏。SelectedVariables = [“振动”“SimulationInput”];Data1 = read(集合)
data1 =1×2表振动SimulationInput  _________________ ______________________________ { 589年x1时间表}{1 x1仿真软件。万博1manbetxSimulationInput}

数据。振动은시뮬레이션시간과이에대응하는진동신호를저장하는하나의时间表행을포함하는셀형배열입니다。이제이데이터를필에맞게처리할수있습니다。예를들어,테이블에서진동데이터를추출하여플로팅합니다。

vibdata1 = data1.振动{1};情节(vibdata1.Time vibdata1.Data)标题(“振动-乐团第一成员”

图中包含一个轴对象。标题为“振动-第一集成成员”的axis对象包含一个类型为line的对象。

앙상블의LastMemberRead속성은가장최근에읽은멤버의파일이름을포함합니다。이앙상블에대해다음번에를호출하면앙상블의다음멤버로넘어갑니다。(자세한내용은상태모니터링및예측정비를위한데이터앙상블항목을참조하십시오.)앙상블의다음멤버에서선택된변수를읽어들입니다。

Data2 = read(集合)
data2 =1×2表振动SimulationInput  _________________ ______________________________ { 603年x1时间表}{1 x1仿真软件。万博1manbetxSimulationInput}

data1data2가서로다른앙상블멤버의데이터를포함하는지확인하려면서로다르게지정한모델파라미터ToothFaultGain의값을검토하십시오。이값은각앙상블에대해SimulationInput변수의变量필드에저장되어있습니다。

simminput1 = data1.SimulationInput{1};SimInput1。变量
ans =带属性的变量:名称:'ToothFaultGain'值:-2工作空间:'global-workspace'上下文:"描述:""
simminput2 = data2.SimulationInput{1};SimInput2。变量
ans =带属性的变量:名称:'ToothFaultGain'值:-1.5000工作空间:'global-workspace'上下文:"描述:""

이 결과는data1ToothFaultGain= -2앙상블의데이터이고data2ToothFaultGain= -1.5앙상블의데이터임을확해줍니다

앙상블멤버에데이터추가

각앙상블멤버의ToothFaultGain값을톱니결함의존재여부를나타내는이진지@ @로변환하려한다고가정하겠습니다。시스템에대한경험을바탕으로,크기가0.1보다작은톱니결함이득값은정상작동으로간주해도될만큼작다는사실도알고있다고가정하겠습니다。방금지표로읽어들인앙상블멤버의이득값이-0.1 <이득< 0.1이면0(결함없음)으로,그렇지않으면1(결함)로변환합니다。

sT = (abs(simminput2 . variables . value) < 0.1);

새로운톱니결함지표를대응되는앙상블데이터에추가하려면먼저앙상블에서데이터변수목록을확장하십시오。

合奏。数据变量= [ensemble.DataVariables;“ToothFault”];合奏。数据变量
ans =5 x1字符串"SimulationInput" "SimulationMetadata" "Tacho" "Vibration" " teeth fault "

그런 다음writeToLastMemberRead를사용하여앙상블의마지막으로읽은멤버에새로운변수의값을씁니다。

writeToLastMemberRead(合奏,“ToothFault”、圣);

모든앙상블멤버의데이터일괄처리

실제현장에서는앙상블의멤버마다톱니결함지@ @를추가하는것이좋습니다。이렇게하려면다음번읽기가첫번째앙상블멤버에서시작하도록앙상블을읽지않음상태로재설정하십시오。그런다음모든앙상블멤버를순환하면서각멤버에대해ToothFault를계산하고이를추가합니다。

重置(套装);sT = false;Hasdata (ensemble) data = read(ensemble);simminputvars = data.SimulationInput{1}.Variables;TFGain = simminputvars . value;sT = (abs(TFGain) < 0.1);writeToLastMemberRead(合奏,“ToothFault”、圣);结束

마지막으로,새로운톱니결함지@를앙상블의상태변수로지정합니다。이지정을사용하여멤버데이터가생성될때의상태를나타내는앙상블데이터에서변수를추적하고참조할수있습니다。

合奏。ConditionVariables =“ToothFault”;合奏。ConditionVariables
ans = "牙齿缺陷"

이제각앙상블멤버는처리되지않은원래데이터와데이터가수집될당시의결함상태를나타내는추가변수를포함합니다。실제현장에서는,결함검출및진단에사용할수있는잠재적인상태지표의식별을위해원시진동데이터에서도출된다른값을계산하여추가할수있습니다。simulationEnsembleDatastore객체에저장된데이터를조작하고분석하는더많은방법을보여주는보다상세한예제는万博1manbetxSimulink를사용하여결함데이터생성하기항목을참조하십시오。

한번에여러멤버읽기

수행하려는처리작업에유용하거나효율적이라면,한번에여러멤버에서데이터를읽도록앙상블을구성할수있습니다。이렇게하려면ReadSize속성을사용하십시오。명령은이속성을사용하여한번에몇개의앙상블멤버를읽어야할지확합니다。예를들어,앙상블이한번에두개의멤버를읽도록구성합니다。

合奏。ReadSize= 2;

ReadSize의값을변경하면앙상블이읽지않음상태로재설정됩니다。따라서다음번읽기작업은처음두개의앙상블멤버를읽습니다。ReadSize와동일한행개수를갖는테이블을반환합니다。

合奏。SelectedVariables = [“振动”“ToothFault”];Data3 = read(集合)
data3 =2×2表振动ToothFault  _________________ __________ { 589年x1时间表}假{603}x1时间表假

앙상블의LastMemberRead속성은이작업에서읽어들모든앙상블멤버의파일이름을포함합니다。

合奏。LastMemberRead
ans =2 x1字符串“/ tmp / Bdoc22b_2115095_3154142 / tpcf7bb49b / predmaint-ex54897023 /数据/ TransmissionCasingSimplified_log_1。垫”“/ tmp / Bdoc22b_2115095_3154142 / tpcf7bb49b / predmaint-ex54897023 /数据/ TransmissionCasingSimplified_log_2.mat”

ReadSize> 1인앙상블데이터저장소에데이터를추가할때는읽어들인앙상블멤버의개수와동일한개수만큼을써야합니다。따라서예를들어ReadSize= 2이면writeToLastMemberRead에2개행을가진테이블을제공해야합니다。

참고 항목

|||

관련 항목