《雨流法课设报告.docx》由会员分享,可在线阅读,更多相关《雨流法课设报告.docx(19页珍藏版)》请在课桌文档上搜索。
1、课程设计题 目:雨流计数法的编程及界面设计摘 要雨流计数法又叫塔顶法,是由英国的Matsuiski和 Endo两位工程师提出的,是目前在疲劳设计和疲劳试验中用的最广泛的一种计数方法,是变程计数法的一种。雨流计数法如果计及平均值和变程对均值法得到的计数结果完全一样。雨流计数法与变程对均值计数法一样具有比拟严格的力学根底,计数结果介于峰值法和变程法之间,提供比拟符合实际的数据。雨流法是建立在对封闭的应力应变迟滞回线逐个计数的根底上,因此,该方法能够比拟全面的反映随机载荷的全过程。由载荷时间历程得到的应力应变迟滞回线与造成的疲劳损伤是等效的,因此,工程界认为雨流法反映了材料的应力应变行为。而对于雨流
2、计数法的处理方法,由于手工计算只能处理一些相比照拟简单的数据,对于比拟复杂的数据无法处理,因此要用计算机实现雨流计数法的编程。本文利用MATLAB编程技术及图形界面设计,以实现数据的简单化处理。关键词:雨流计数法 疲劳 编程 界面目录一.概念4二.设计思路51. 数据压缩52.循环数提取6三设计所用软件71.MATLAB软件72.Microsoft Visio编流程图软件93.Excel软件10四.设计容101.程序设计102.界面设计12五设计结果12六结论13参考文献14附录15雨流计数法的编程及界面设计一. 概念最早的雨流计数原那么出现在“图形法的应用中。从外表看上去好象雨流从载荷的峰谷
3、处流下一样 ,凡起始于波谷(峰 )的雨流遇到比它更低的谷(峰 )值便停止 ,即上一段雨流被下一段雨流“截断而形成一个全循环,这个原那么也正是“雨流计数法命名的由来。如图 1,把应变-时间历程数据记录转过 90 ,时间坐标轴竖直向下 ,数据记录犹如一系列屋面 ,雨水顺着屋面往下流 ,这种方法就称为雨流计数法。图1雨流法计算机判断计数模型如图 2 所示。由于传统雨流法不能对第2计数阶段即发散收敛波进展计数,因此国外近十几年不断开展和研究雨流法计数模型 , 以便得到与材料的应力-应变迟滞回线完全封闭相一致的计数模型。图2 计算机判断计数模型用计算机进展处理时 ,通常有两种判别表达式 :XI XI+2
4、 XI+ 1 XI+3XI XI+2 XI+ 1 XI+3雨流计数法的主要功能是把经过峰谷值检测和无效幅值去除后的实测载荷历程数据以离散载荷循环的形式表示出来。二.设计思路雨流计数法在程序中的实现方法分为数据压缩和循环数提取两个步骤完成。1. 数据压缩数据压缩就是把原始的实验数据处理成便于计取循环数的数组,它包括峰谷值检测和无效幅值去除。1峰谷值检测是数据压缩的根本容之一,就是把数据中的峰谷值提取出来作为下一步数据处理的数组。在这一过程中,为防止在峰谷值提取时产生影响应先将相邻的等值数压缩(即把一样数值的保存一个) ,然后再提取峰谷值。设待处理数组为E(n) ,所得数组为F(n) ,i 和j
5、分别为两个数组元素的编号(以下的流程图中不再声明)。在相邻等值数压缩中(如图) ,菱形框的判断条件是前后两个元素是否不相等,假设为真值留下这个数,否那么将继续下一个数的判断,直到最后一个数为止。这样当遇到相等数时,取下的是其中的第一个数值。在峰谷值检测时(如图) ,判断条件是相邻数字的差的乘积是否大于零(即是否同号) ,假设为真值时就说明E(i)同时大于(或小于)两边的数字,那么E(i )就是峰(或谷),否那么继续。2无效幅值去除就是将幅值很小的点去除。具体过程如下列图2:图22.循环数提取通常情况下分一次雨流计数、对接和二次雨流计数三个步骤完成,对于不同的波形要根据实际情况来定,比方: 高均
6、值偏态波形只需一次雨流计数就可完成。1)一次雨流计数是从压缩处理过的数据中提取循环,并记录其特性值,如峰值、谷值、幅值等。我这里使用的方法,是按雨流计数法规那么加上个人的理解总结的一点规律称之为“四点法,而且在程序中实现起来也比拟容易。如图4所示,在数组中能提取出循环的形式也不过这两种,假设满足a大于等于b并且b小于c时就可以认为提取一个循环(图中构成三角形的局部) ,同时去除Ei 和Ei - 1两点,否那么记录下Ei这一点。这样对这个数组反复判断就可以取出所有的循环和记录所剩的各点。这种判断适用于四个点组成的各种情形,确保了循环提取的正确性,使程序的可靠性大大增加。具体的实现方法参见图5提取
7、循环的流程图。流程图中,开场的c= 0和下边的c=b是对程序一点化,“四点法其实只用了三个点,这样就把上一次计算过的|E(i - 1) - E(i )|作为本次的|E(i- 1)- E(i- 2)|; s1一个是否有循环的标志,可在图5的后加上一个s1是否等于零的判断,假设等于零那么说明一次雨流计数的循环全部提出,否那么继续执行图5的全过程; s是记录雨流计数提取循环的总个数。图32)对接 (又称波形封闭处理 )是最终完成循环计数的必要手段 ,主要容是对波形的首尾点进展取舍的简化处理。3)二次雨流计数是将完成对接的波形继续提取循环直到剩下三个点 (即是数组中最值构成的整循环 )为止。 程序中实
8、现也很简单 ,只需将对接完成的数组放入一次雨流计数中就行了 。图4三设计所用软件1.MATLAB软件在设计中用到的是MATLAB的编程技术及其图形界面功能。其界面如下:图5主界面图6编程界面图7 图形设计界面2.Microsoft Visio编流程图软件图83.Excel软件四.设计容1.程序设计MATLAB编写雨流计数法程序时,先用Microsoft Visio软件画出实现雨流计数法的流程图,如图2,4。然后用MATLAB的script编程,其中程序包括一样点的去除,波峰波谷值的检测,循环数的提取。雨流法程序如下:E1=xlsread(.xls,sheet1); n,m=size(E1);j
9、=1;for i=1:m*n; E(j)=E1(i); j=j+1;end axes(handles.axes1); plot(E,red); i=1; j=1; while (i=n*m-1) if E(i)=E(i+1) F(j)=E(i); else F(j)=E(i+1);i=i+1; end j=j+1;i=i+1; end F(j)=E(i); axes(handles.axes2);plot(F,blue);j=1;AP=0;x,y=size(F);if(x*y0 F1(j)=F(i);j=j+1; endendF1(1)=F(1);F1(j)=E(i+1);axes(handl
10、es.axes3); plot(F1,blue); success,message=xlswrite(.xls,F,sheet1); success,message=xlswrite(.xls,F1,sheet2); k=1;j=1; n,m=size(F1); for i=1:n*m-4 c=abs(F1(i)-F1(i+1); b=abs(F1(i+2)-F1(i+1); a=abs(F1(i+3)-F1(i+2); if (bb) A(k)=abs(F1(i+3)-F1(i); k=k+1; B(j)=F1(i+3);i=i+2; else B(j)=F1(i); end j=j+1;
11、endj=2;n,m=size(B);for i=2:n*m-1 a=(B(i)-B(i-1); b=(B(i)-B(i+1); if a*b0 B1(j)=B(i);j=j+1; endendB1(1)=B(1);B1(j)=B(i+1); success,message=xlswrite(.xls,B1,sheet3); n,m=size(B1); axes(handles.axes4);plot(B1,black); a,b=size(A); AP=0; for i=1:n*m-1 A(a*b+i)=abs(B1(i)-B1(i+1); endaxes(handles.axes5);pl
12、ot(A,green);x,y=size(A); for i=1:x*y AP=A(i)+AP; end AP=AP/(x*y);set(handles.text5,String,num2str(AP);success,message=xlswrite(.xls,A,sheet4);end mcc -B sglcpp pressure2.界面设计这里用的是MATLAB GUI图形界面设计的,设计结果如下:图9五设计结果设计的程序与所设计的界面结合起来就可得到所需的设计结果,结果如下:图10六结论通过这次一个月的课程设计,不仅对雨流计数法有所了解,而且对雨流计数法的编程和界面设计也较好的掌握。在
13、整个设计过程中,最难的局部就是雨流计数法程序的编写,要实现雨流计数的功能,我们进展了很多尝试,最终得到了这个结果。在这个以小组为单位的课程设计中,团队协作显得尤为重要,每个人要完成自己的任务。在这一个月中,我们学到了很多东西,无论是知识上,还是做事能力上,我们都得到了很大的提高。参考文献【1】 董乐义 . 雨流计数法及其在程序中的具体实现【2】 阎楚良 . 雨流计数法及其统计处理程序研究【3】 阎楚良 .雨流法实时计数模型【4】 荟 . 实时雨流计数法的 “三变程 计数原那么【5】 周建兴. MATLAB从入门到精通附录主程序如下:function varargout = YuliuFa(va
14、rargin)% YULIUFA MATLAB code for YuliuFa.fig% YULIUFA, by itself, creates a new YULIUFA or raises the existing% singleton*.% H = YULIUFA returns the handle to a new YULIUFA or the handle to% the existing singleton*.% YULIUFA(CALLBACK,hObject,eventData,handles,.) calls the local% function named CALLB
15、ACK in YULIUFA.M with the given input arguments.% YULIUFA(Property,Value,.) creates a new YULIUFA or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before YuliuFa_OpeningFcn gets called. An% unrecognized property name or invalid value makes prop
16、erty application% stop. All inputs are passed to YuliuFa_OpeningFcn via varargin.% *See GUI Options on GUIDEs Tools menu. Choose GUI allows only one% instance to run (singleton).% See also: GUIDE, GUIDATA, GUIHANDLES% Edit the above text to modify the response to help YuliuFa% Last Modified by GUIDE
17、 v2.5 07-Jan-2015 16:56:39% Begin initialization code - DO NOT EDITgui_Singleton = 1;gui_State = struct(gui_Name, mfilename, .gui_Singleton, gui_Singleton, .gui_OpeningFcn, YuliuFa_OpeningFcn, .gui_OutputFcn, YuliuFa_OutputFcn, .gui_LayoutFcn, , .gui_Callback, );if nargin & ischar(varargin1) gui_Sta
18、te.gui_Callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT% - Executes just before YuliuFa is made visible.function YuliuFa_OpeningFcn(hObject, eventdata, handles, vararg
19、in)% This function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to YuliuFa (see VARARGIN)% Choose default command line output
20、 for YuliuFahandles.output = hObject;% Update handles structureguidata(hObject, handles);% UIWAIT makes YuliuFa wait for user response (see UIRESUME)% uiwait(handles.figure1);% - Outputs from this function are returned to the command line.function varargout = YuliuFa_OutputFcn(hObject, eventdata, ha
21、ndles) % varargout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Get default command line output from handles structurevarargout1 = handles
22、.output;% - Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)Filename,Pathname=uige
23、tfile(*.xls,);name=Filename;path=Pathname;function edit1_Callback(hObject, eventdata, handles)% hObject handle to edit1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% Hints: get(hObject,String) returns content
24、s of edit1 as text% str2double(get(hObject,String) returns contents of edit1 as a doubleset(handles.edit1,String,path)guidata(hObject,handles);% - Executes during object creation, after setting all properties.function edit1_CreateFcn(hObject, eventdata, handles)% hObject handle to edit1 (see GCBO)%
25、eventdata reserved - to be defined in a future version of MATLAB% handles empty - handles not created until after all CreateFcns called% Hint: edit controls usually have a white background on Windows.% See ISPC and COMPUTER.if ispc & isequal(get(hObject,BackgroundColor), get(0,defaultUicontrolBackgr
26、oundColor) set(hObject,BackgroundColor,white);end% - Executes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user
27、 data (see GUIDATA)E1=xlsread(.xls,sheet1); n,m=size(E1);j=1;for i=1:m*n; E(j)=E1(i); j=j+1;end axes(handles.axes1); plot(E,red); i=1; j=1;while (i=n*m-1)if E(i)=E(i+1) F(j)=E(i);else F(j)=E(i+1);i=i+1;end j=j+1;i=i+1;end F(j)=E(i); axes(handles.axes2);plot(F,blue);j=1;AP=0;x,y=size(F);if(x*y0 F1(j)
28、=F(i);j=j+1;endendF1(1)=F(1);F1(j)=E(i+1);axes(handles.axes3); plot(F1,blue); success,message=xlswrite(.xls,F,sheet1); success,message=xlswrite(.xls,F1,sheet2); k=1;j=1; n,m=size(F1);for i=1:n*m-4 c=abs(F1(i)-F1(i+1); b=abs(F1(i+2)-F1(i+1); a=abs(F1(i+3)-F1(i+2);if (bb) A(k)=abs(F1(i+3)-F1(i); k=k+1
29、; B(j)=F1(i+3);i=i+2;else B(j)=F1(i); end j=j+1;endj=2;n,m=size(B);for i=2:n*m-1 a=(B(i)-B(i-1); b=(B(i)-B(i+1);if a*b0 B1(j)=B(i);j=j+1;endendB1(1)=B(1);B1(j)=B(i+1); success,message=xlswrite(.xls,B1,sheet3); n,m=size(B1); axes(handles.axes4);plot(B1,black); a,b=size(A);AP=0;for i=1:n*m-1 A(a*b+i)=abs(B1(i)-B1(i+1);endaxes(handles.axes5);plot(A,green);x,y=size(A);for i=1:x*y AP=A(i)+AP;end AP=AP/(x*y);set(handles.text5,String,num2str(AP);success,message=xlswrite(.xls,A,sheet4);end mcc -Bsglcpppressure19 / 19