随着研究的深入,人们发现采用时间序列计算载荷谱太麻烦了,处理的工作量太大,我们不需要将每个时刻点的载荷都做运算,疲劳计算只需要提供幅值均值循环次数,鉴于此发展出了很多不同的计数方法,雨流法是最常见的处理方式,在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)

符合ASTM标准的雨流计数法及其不同的改进方法的更多相关文章

  1. Python中将array类型不按科学计数法存在文件中的方法

    直接上代码: from numpy import *import numpy as npDrug_array = zeros((708,708),dtype = int)f = open('D:\ma ...

  2. java中Double类数字太大时页面正常显示而不要用科学计数法

    /** * 当浮点型数据位数超过10位之后,数据变成科学计数法显示.用此方法可以使其正常显示. * @param value * @return Sting */ public static Stri ...

  3. Linux下科学计数法(e)转化为数字的方法 [shell中几种数字计算说明]

    科学计数法使用e标识数值,将科学计算学转化为数字的思路:按e右边的数字移动小数点位数.e右边的数字如果是负数,则向左移动小数点.示例如下: 1.2345678e2 = 123.45678 1.2345 ...

  4. Java中怎么把科学计数法显示出全部数字

    如果想去除科学计数法显示可以用如下方法处理: /** * 把科学计数法显示出全部数字 * @param d */ public static String object2Str(Object d) { ...

  5. python 全栈开发,Day48(标准文档流,块级元素和行内元素,浮动,margin的用法,文本属性和字体属性)

    昨日内容回顾 高级选择器: 后代选择 : div p 子代选择器 : div>p 并集选择器: div,p 交集选择器: div.active 属性选择器: [属性~='属性值'] 伪类选择器 ...

  6. C++:标准I/O流

    标准I/O对象:cin,cout,cerr,clog cout; //全局流对象 输出数据到显示器 cin; //cerr没有缓冲区 clog有缓冲区 cerr; //标准错误 输出数据到显示器 cl ...

  7. 2006Jam的计数法

    题目描述 Description Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的(使用 ...

  8. 1140 Jam的计数法

    1140 Jam的计数法 2006年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Descri ...

  9. Jam的计数法(codevs 1140)

    题目描述 Description Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的(使用 ...

  10. Codevs 1140 Jam的计数法 2006年NOIP全国联赛普及组

    1140 Jam的计数法 2006年NOIP全国联赛普及组 传送门 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Jam是个喜欢标 ...

随机推荐

  1. npm包管理工具 --save和--save-dev的区别

    --save是默认的,例如 npm i jquery 和 npm i jquery --save 是等价的 --save是代表着项目上线时所依赖的包 --save-dev 代表着是项目打包或者开发时候 ...

  2. Ubuntu 设置远程桌面(VNC)

    连接 Xfce 4 远程桌面 下载 Xfce 4 桌面环境: sudo apt install -y xfce4 xfce4-goodies 这里会提示你设置显示管理器,我们设置 gdm3 就好. 安 ...

  3. 【Python + Appium】之元素定位总结(更新)

    一.ID定位 uiautomatorviewer里面的:resource-id driver.find_element(By.ID,"com.csks.businesses:id/tv_nu ...

  4. Serilog文档翻译系列(二) - 设置AspNetCore应用程序

    Serilog 日志记录适用于 ASP.NET Core.此包将 ASP.NET Core 的日志消息通过 Serilog 进行路由,使你可以将有关 ASP.NET 内部操作的信息写入与应用程序事件相 ...

  5. CSS – :has parent selector, @container container query, transform replacement, subgrid (2022 期待新功能)

    前言 CSS 一直有一些老问题没有被解决. 2022 视乎看见了曙光. 参考 4 Exciting New CSS Features in 2022 :has() 参考: YouTube – How ...

  6. Asp.net Core – CSS Isolation

    前言 ASP.NET Core 6.0 Razor Pages 新功能, 我是用 webpack 做打包的, 所以这个对我没有什么帮助. 但是了解一下是可以的. 希望 .NET 会继续发展的更好, 多 ...

  7. Angular 学习笔记 work with zip (压缩文件格式)

    最近在做批量创建. 上回说到了 读写 excel, 那么就可以通过 excel 的资料来创建资料了.但是资料经常会有图片,而 excel 里面放图片有点不太好. 于是就想 upload excel 的 ...

  8. C# – 冷知识 (新手)

    替 Action/Func Parameter 设置名字 public static void MatchBracket(string value, string bracket, Action< ...

  9. nRF24L01芯片驱动记录

    nRF24L01芯片驱动记录 ​ 学习完了usb,了解了部分元器件的功能以及用途后,打算在端午假期用一天的时间完成一个小目标,不过实际上是花了一天半才成功实现,现将驱动nRF24L01芯片的整个过程记 ...

  10. CF228E 题解

    CF228E 题解 题目简述 给定一个 \(n\) 个点,\(m\) 条边的无向图,每条边都为 \(0\) 或 \(1\),可以进行若干次操作,与此点相连的所有点权值取反,求一种方案使得所有边都变为 ...