【数据驱动】【航空航天结构的高效损伤检测技术】一种数据驱动的结构健康监测(SHM)方法,用于进行原位评估结构健康状态,即损伤位置和程度,在其中利用了选定位置的引导式兰姆波响应(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、文章


💥1 概述

摘要:本文提出了一种数据驱动的结构健康监测(SHM)方法,用于进行原位评估结构健康状态,即损伤位置和程度,在其中利用了选定位置的引导式兰姆波响应。该方法由离线和在线两个阶段组成。离线阶段的目标是进行数据维度降低,并建立传感器数据与损伤状态之间的映射关系。首先,通过高保真有限元方法(ABAQUS软件)进行模拟,建立了全面的数据库,以确定在各种预先确定的结构损伤条件下的引导式兰姆波响应(例如,位移和加速度)。然后,应用适当正交分解(POD)方法从每个模拟情况下提取关键特征。最后,开发了基于神经网络的代理模型,以将损伤状态与POD的模态系数相关联。在线阶段的目标是利用有限的传感器测量量来量化损伤位置和程度。采用间隙适当正交分解(GPOD)来基于有限的传感器数据重建全场信息。随后,利用离线阶段开发的代理模型推导出相关的损伤程度和位置。提出的数据驱动型SHM方法利用从梁和板示例中获取的模拟数据进行了全面验证。评估值与实际损伤值之间的最大误差在10%以内。还进行了参数研究,以探究使用不同传感器布置和传感器类型进行损伤检测的效果。总之,提出的方法可能成为航空航天结构的高效损伤检测技术。

关键词:结构健康监测(SHM)引导式兰姆波 适当正交分解(POD)间隙POD 神经网络 损伤估计

不同的结构已经被广泛应用于航空航天、汽车、民用以及机械领域。航空航天结构展现出多种多样的结构类型,包括梁、板、壳体等。它们受到动态载荷的作用,这会导致内部缺陷在某一点生长并合并。这可能导致系统级的灾难性失败。此外,撞击事件也会对航空航天结构造成损伤。这些损伤模式随着撞击条件而变化。它们会改变结构的材料或几何属性,并影响系统的整体性能。通常,损伤以裂纹、孔洞、分层或连接处的不连续形式存在。在许多情况下,视觉检查无法在其初始阶段检测到小的损伤。因此,需要结构健康监测(SHM)技术来检测损伤、评估健康状态并预测航空航天结构的寿命周期。本次努力的新颖之处包括:(1)将POD、传感器布置优化、神经网络和GPOD技术应用于具有大数据量的时间相关信号中,整个时间域内的动态数据作为损伤检测和识别的整体特征。这与之前的工作形成鲜明对比,之前的工作绕过了逆向损伤问题(即,损伤定位和严重程度检测),而是利用静态测量数据,例如静态应变(Mainini和Willcox 2015)作为推断指标;以及(2)采用引导式兰姆波响应来进行有效的损伤检测,使用数据驱动建模方法,而不是传统的损伤三角定位方法。如前所述,传统的基于波的SHM方法广泛用于根据飞行时间(TOF)和波速计算进行实时工程应用中的损伤检测。因此,选择这些波响应来展示所提出的用于原位损伤检测的数据驱动方法。

结论
本文开发了一种基于数据驱动的结构健康监测(SHM)新方法,利用导波(Lamb波)响应实现。该方法分为离线和在线两个阶段。在离线阶段,通过高保真有限元仿真生成梁和板结构中的导波响应(即位移和加速度),以构建全面的数据库。基于POD(Proper Orthogonal Decomposition,正交分解)的代理模型被开发出来,用于在低维度中表示大量的波传播数据。只需要少数几个主要的POD模态即可准确重构波传播响应。在梁结构中,共提取了101个POD模态,其中只有前18个模态被保留用于准确的数据重构。类似地,在板结构中,只有11个POD模态被用于数据重构。相应地,开发了神经网络代理模型,以关联这些POD模态系数与梁和板结构中的损伤位置和程度。
在在线阶段,利用稀疏传感器数据通过GPOD方法重构全场测量数据。最终,通过应用离线阶段开发的代理模型,并结合添加了10%噪声的仿真响应,我们能够推断损伤的位置和程度。推断值与实际值之间的最大误差在10%以内。总之,所提出的基于数据驱动的SHM方法展示了在航空航天结构中实现实时损伤检测的潜力。

📚2 运行结果

部分代码:

% EXPERIMENT INFORMATION
fl = 3;             % 1: one 0.5cm hole 
                    % 2: one 0.75cm hole
                    % 3: two 0.75cm holes

% SWA INFORMATION
fn  = 20:1:800;     % Frequencies 
k   = (2:2:1000).'; % Wavenumbers for dispersion curves
sns = 1:1:17;       % Sensors to use (1:17 is the largest range) 

% LOCALIZATION INFORMATION
W  = 0.75;          % Window size around defect
Nx = 400;           % Number of pixels in x direction
Ny = 400;           % Number of pixels in y direction

% WINDOWING INFORMATION
vwin = 2000;        % Velcoity (in m/s) for velocity window
c    = 5110.83;     % Velocity for delay and sum
              
%%
% ---------------------------------------------
% GET DATA
% ---------------------------------------------

% DETERMINE THE DATA
basename = 'data_20121029_localize_baseline';
if fl == 1,     dataname = 'data_20121029_localize_hole_05cmC'; 
elseif fl == 2, dataname = 'data_20121029_localize_hole_075cmC'; 
elseif fl == 3, dataname = 'data_20121029_localize_2holes_075cmC'; 
end

% GET DATA (BUILD A MAT FILE IF NOT AVAILABLE)
if exist([basename '.mat'],'file') 
    load([basename '.mat']);
else
    [metab, cfgb] = extract_data(str2func(basename), 1:34);
    save([basename '.mat'], 'metab', 'cfgb');
end
if exist([dataname '.mat'],'file') 
    load([dataname '.mat']);
else
    [metas, cfgs] = extract_data(str2func(dataname), 1:34);
    save([dataname '.mat'], 'metas', 'cfgs');
end
metab = filter_tn(filter_rn(metab, sns), sns);
metas = filter_tn(filter_rn(metas, sns), sns);

%%
% ---------------------------------------------
% GET DISPERSION CURVES
% ---------------------------------------------

% COMPUTE DISTANCES BETWEEN SENSORS
Sx = metas.Sx;  % Hole location
Tx = arrayfun(@(ii) (metab.Tx{ii}.'*ones(1,size(metab.Rx{ii},1))).', 1:numel(metab.Rx), 'UniformOutput', false);  % Transmitter locations
d = diag(dist(cell2mat(metab.Rx), cell2mat(Tx.').'));  % Distance between each reciever and transmitter

% PRE-PROCESS SIGNALS
xb = cell2mat(metab.x.');              % Baseline signal
xb = xb - mean(xb,2);                  % Remove means
xb(1:110,:) = 0;                       % Remove cross-talk
xb = velwindow(xb, d, vwin/metab.Fs);  % Velocity-based window
Xb = fft(xb);                          % Fourier transform

xs = cell2mat(metas.x.');              % Signal with target
xs = xs - mean(xs,2);                  % Remove means
xs(1:110,:) = 0;                       % Remove cross-talk
xs = velwindow(xs, d, vwin/metab.Fs);  % Velocity-based window
Xs = fft(xs);                          % Fourier transform

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码、数据、文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值