随着研究的深入,人们发现采用时间序列计算载荷谱太麻烦了,处理的工作量太大,我们不需要将每个时刻点的载荷都做运算,疲劳计算只需要提供幅值、均值和循环次数,鉴于此发展出了很多不同的计数方法,雨流法是最常见的处理方式,在ASTM E1049-85规范中记载了常见的4种计数方法。
传统的符合ASTM标准的载荷历程计数法主要有以下几种:
-
水平交叉计数(Level cross counting)
-
峰值计数(Peak counting)
-
样本幅值计数(Simple-range counting)
-
雨流计数(rainflow counting)
参考文章 疲劳载荷计算 - 知乎 (zhihu.com)
其中雨流计数法是最为主流的计数方法,也是公认效率最好的,.目前提出的各种雨 流计数的模型都是以找出循环过程中的滞后环的应力循环为原则,针对雨流法的学习,我发现了以下几类常见的处理方式:
-
第一个方法
就是在ASTM E1049-85规范中记载的常规的雨流计数的步骤,该算法在没有数据重新安排的情况下起作用,因此无需提前知道绝对最大值,可以进行实时的雨流计数。从原始谱出发采用三点雨流计数的方法,用连续的三个点判断是否形成迟滞环即可以记为1个cycle的范围。连续的三点形成两条线段,根据线段的长度判断是否形成迟滞环,如果形成记为1cycle,否则记为0.5cycle。假设连续三个点记为A、B、C,形成的线段分别是AB和BC,首先假设AB不是起始段,若AB>BC,不能形成迟滞环,则提取A、B的均值和幅值,并进行记录0.5cycle,之后将B的值给A,C的值给B,读取下一个点为C就可以下一个判断,传统方法由于第一阶段中会遗留部分不能构成应力循环 的数据点,称之为发散收敛波,因此要进行第二阶段 的计数.
参考文章Rainflow counts for fatigue analysis - MATLAB rainflow - MathWorks 中国
>
-
第二个方法
就是简化的三点雨流计数法,它是对载荷历程进行编辑,将全局最大的峰值或者谷值放在起始位置,但是这就要注意在拼接的时候不要出错,或者增添或者删减数据。将峰值和估值放在起始点,就不会出现起始段满足迟滞环条件,但是只能记作0.5cycle,所以只需要判断AB<=BC即可,为后面计算省了很多步骤。但是需要注意的是他的简化计算的优势也导致了他的操作的劣势,因简化的rainflow必须在计数之前重新安排时间序列,这使在线实时处理变得非常困难>。参考视频:疲劳与断裂
-
第三个方法
就是四点雨流计数法,依据时间序列读入时域数据的四个数据点,如果中间两个数据点构成的幅值被第一个和第四个点构成的幅值包含,则将中间这两个点构成的相对较小的载荷循环记作一次计数,并从原时域数据中删除中间这两个点,然后如法炮制的对剩余的数据点构成的新的载荷序列进行四点法雨流计数。如果中间两个点构成的幅值没有被第一和第四个点构成的幅值包含,则什么都不做,对下一个“四点”如法炮制的进行处理。当这套流程进行到最后的时候,会留下一个大的载荷循环“骨架”。按照“四点法计数”规则,在不做任何处理的情况下这个“骨架”无法再计数出任何新的结果。这个“骨架”我们习惯上称之为Residue。接着再将好多段Residue“首尾相接”进行雨流计数。这个时候,按照四点法雨流计数法则,本来数不出什么结果的,但拼接后的Residue又能贡献出新的载荷循环。而且,这些载荷循环都是幅值非常大的载荷循环,循环周次不多,但是实际形成的伪损伤数值可是不小的,因此不仅不能忽略,而且是要小心谨慎。对residue的循环计数处理,采用拼接的方法得到载荷谱,再继续雨流计数。最后对于无法再计完整循环的峰谷点,把相邻的两个数值记为半个循环。 参考文章【载荷数据处理-幅值域分析方法】雨流计数_操作稳定性测试__汽车测试网 (auto-testing.net)
>
-
第四个方法
就是改进的雨流实时计数模型(田 和 李, 2009),其是在第一种方法的基础上进行的补充改进,由于第一种方法可以做实时的雨流计数,他是经过第一阶段计数后, S点以前的遗留点构成发散波,s点以后的遗留点 构成收敛波.第二阶段计数实际是利用S的位置变 化把发散波和收敛波位置进行调整和对接,形成收 敛发散波,然后再进行处理.,但是碍于其进行完第一阶段的计数后残余的载荷情况复杂,容易发生对接不当,这处理不当可能会产生漏点,甚至会得出错误计数结果.所以改进的方法就是在进行完第一阶段的计数后,须在第二阶段处 理前进行可靠的数据对接处理,才能保证结果正确.对接处理方法如下:
标志位s前没有遗留点的处理流程如下:>
标志位s前至少有一个遗留点的处理流程如下:>
-
第四个方法
-
第三个方法
-
第二个方法
参考文献:
[1] 佚名. 田_李_2009_改进的雨流法实时计数模型.pdf[Z]([日期不详]).
[2] 佚名. 董 et al_2004_雨流计数法及其在程序中的具体实现.pdf[Z]([日期不详])
[3] MCINNES C H, MEEHAN P A. Equivalence of four-point and three-point rainflow cycle counting algorithms[J]. International Journal of Fatigue, 2008, 30(3): 547–559. DOI:10.1016/j.ijfatigue.2007.03.006.
[4] 佚名. ASTM e1049-85(2017) standard practices for cycle counting in fatigue analysi.pdf[Z]([日期不详]).
[5] HUANG J, WANG S, XU W, 等. A novel autoregressive rainflow—integrated moving average modeling method for the accurate state of health prediction of lithium-ion batteries[C]. . DOI:10.3390/PR9050795.
[6] AMZALLAG C, GEREY J P, ROBERT J, 等. Standardization of the rainflow counting method for fatigue analysis[J]. 1994. . DOI:10.1016/0142-1123(94)90343-3.
[7] RYCHLIK I. A new definition of the rainflow cycle counting method[J]. 1987. . DOI:10.1016/0142-1123(87)90054-5.
[8] SCHOOL OF INFORMATION ENGINEERING, SOUTHWEST UNIVERSITY OF SCIENCE AND TECHNOLOGY, MIANYANG 621010, CHINA, HUANG J. An improved rainflow algorithm combined with linear criterion for the accurate li-ion battery residual life prediction[J]. International Journal of Electrochemical Science, 2021: ArticleID:21075. DOI:10.20964/2021.07.29.
.
- ## 附录
现给出简化的三点雨流计数法MATLAB程序代码
%% rainflow计数法 %%
clear;clc
C=xlsread('load_F1');%%%%%%%%%在此修改加载的文件名,数据格式一直才可正确运算%%% %%%也可以自行添加一个随机列向量C作为载荷谱输入%%
B=C;A=C;
q=length(A);
%三点循环计数法;部分参考SAE ASTM标准
%% 步骤一 %%
%对载荷时间历程进行处理使它只包含峰谷峰谷交替出现
m=q;
for i=2:1:m-1
if A(i-1)<A(i)&&A(i)<A(i+1)
B(i)=NaN;
elseif A(i-1)>A(i)&&A(i)>A(i+1)
B(i)=NaN;
end
end
B(isnan(B))=\[\];
%% 步骤二 %%
%对载荷时间历程再造,使从最大(小)值拆开,前后拼接,使从最值开始最值结束
\[a,b\]=max(B);
n=length(B);
B1=B(b:n);
B2=B(1:b);
B=\[B1;B2\];
%% 步骤三 %%
%再只留波峰波谷,防止拼接处出现不合理的数据 ??
A=B;m=length(B);
for i=2:1:m-1
if A(i-1)<A(i)&&A(i)<A(i+1)
B(i)=NaN;
elseif A(i-1)>A(i)&&A(i)>A(i+1)
B(i)=NaN;
end
end
B(isnan(B))=\[\];n=length(B);
%%%%%%%%%%%%%%%%%%%%%%%% B为改造后载荷时间历程 n为B中波峰波谷的个数
%% 步骤四 %%
%画出改造好的载荷时间历程折线图
figure('Name','载荷谱');
plot(1:n,B,'-k')
legend('重组过的载荷时间历程'); %右上角标注
xlabel('时间') %x轴坐标描述
ylabel('载荷') %y轴坐标描述
xlim(\[0,10000\]);
ylim(\[0,20000\]);
xticks(0:1000:10000);
yticks(-20000:1000:20000);
grid on
%% 步骤五 %%
%雨流计数,输出结果矩阵c包括计数count、范围range、均值mean、单次循环载荷起点start、单词循环载荷终点end%
\[c,hist,edges,rmm,idx\] = rainflow(B);
TT = array2table(c,'VariableNames',{'Count','Range','Mean','Start','End'});%计数结果指标
%% 步骤六 %%
%绘制均值、幅值、循环次数的三维柱形图
figure('Name','三维图');
rainflow(B)