Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

rainflow

El flujo de lluvia cuenta para el análisis de fatiga

Descripción

c = rainflow(x) devuelve recuentos de ciclos para el historial de tiempo de carga, , según el estándar ASTM E 1049.x Consulte para obtener más información.Algoritmos

ejemplo

c = rainflow(x,fs) cuentas de ciclo de devoluciones para muestreado a una velocidad.xfs

ejemplo

c = rainflow(x,t) devuelve recuentos de ciclos para los valores muestreados en el momento almacenados en .xt

ejemplo

c = rainflow(xt) devuelve recuentos de ciclos para el historial de tiempo almacenado en el calendario.MATLAB®xt

ejemplo

c = rainflow(___,'ext') especifica el historial de tiempo como vector de identificado (picos y valles). se puede utilizar con cualquiera de las sintaxis anteriores.Revocaciones'ext'

[c,rm,rmr,rmm] = rainflow(___) genera una matriz de flujo de lluvia, , y dos vectores, y , que contiene bordes de bin histograma para las filas y columnas de , respectivamente.rmrmrrmmrm

[c,rm,rmr,rmm,idx] = rainflow(___) también devuelve los índices lineales de las reversiones identificadas en la entrada.

rainflow(___) sin argumentos de salida traza las reversiones de carga y un histograma de matriz de flujo de lluvia en la figura actual.

Ejemplos

contraer todo

Generar una señal que se asemeja a un historial de carga, que consiste en semi-períodos sinusoides conectando reversiones conocidas y equiespaciadas. La señal se muestrea a 512 Hz durante 8 segundos. Trazar el extremo y la señal.

fs = 512;  X = [-2 1 -3 5 -1 3 -4 4 -2]; lX = length(X)-1;  Y = -diff(X)/2.*cos(pi*(0:1/fs:1-1/fs)') + (X(1:lX)+X(2:lX+1))/2; Y = [Y(:);X(end)];  plot(0:lX,X,'o',0:1/fs:lX,Y)

El ciclo de proceso cuenta para los datos. Visualice la matriz de recuentos cíclicos.

[c,hist,edges,rmm,idx] = rainflow(Y,fs);  T = array2table(c,'VariableNames',{'Count','Range','Mean','Start','End'})
T=7×5 table
    Count    Range    Mean    Start    End
    _____    _____    ____    _____    ___

     0.5       3      -0.5      0       1 
     0.5       4        -1      1       2 
       1       4         1      4       5 
     0.5       8         1      2       3 
     0.5       9       0.5      3       6 
     0.5       8         0      6       7 
     0.5       6         1      7       8 

Mostrar un histograma de recuentos de ciclos en función del rango de tensión.

histogram('BinEdges',edges','BinCounts',sum(hist,2)) xlabel('Stress Range') ylabel('Cycle Counts')

Utilícelo sin argumentos de salida para mostrar un histograma de ciclos en función del promedio del ciclo y del rango de ciclo.rainflow

rainflow(Y,fs)

Generar una señal que se asemeja a un historial de carga, que consiste en semi-períodos sinusoides conectando reversiones conocidas, desigualmente espaciadas. La señal se muestrea a 10 Hz durante 15 segundos. Trazar el extremo y la señal.

 fs = 10;  X = [0 1 3 4 5 6 8 10 13 15]; Y = [-2 1 -3 5 -1 3 -4 4 -2 6];  Z = []; for k = 1:length(Y)-1     x = X(k+1)-X(k);     z = -(Y(k+1)-Y(k))*cos(pi*(0:1/fs:x-1/fs)/x)+Y(k+1)+Y(k);     Z = [Z z/2]; end Z = [Z Y(end)];  t = linspace(X(1),X(end),length(Z)); plot(X,Y,'o',t,Z)

El ciclo de proceso cuenta para los datos. Visualice la matriz de recuentos cíclicos.

[c,hist,edges,rmm,idx] = rainflow(Z,t);  TT = array2table(c,'VariableNames',{'Count','Range','Mean','Start','End'})
TT=7×5 table
    Count    Range    Mean    Start    End
    _____    _____    ____    _____    ___

     0.5       3      -0.5      0       1 
     0.5       4        -1      1       3 
       1       4         1      5       6 
     0.5       8         1      3       4 
       1       6         1     10      13 
     0.5       9       0.5      4       8 
     0.5      10         1      8      15 

Utilícelo sin argumentos de salida para mostrar un histograma de ciclos en función del promedio del ciclo y del rango de ciclo.rainflow

rainflow(Z,t)

Genere una señal aleatoria muestreada a 100 Hz durante 100 segundos. Almacene la señal y su información de tiempo en un horario.

fs = 100; t = seconds(0:1/fs:100-1/fs)';  x = randn(size(t)); TT = timetable(t,x);

Visualice las reversiones y la matriz de flujo de lluvia de la señal.

rainflow(TT)

Genere un conjunto de extremos que se asemejan a las reversiones de carga. Trazar los datos.

X = [-2 1 -3 5 -1 3 -4 4 -2]';  plot(X) xlabel('Sample Index')   ylabel('Stress')

El ciclo de proceso cuenta para los datos. Especifique que la entrada consta de un extremo ya identificado.

[C,hist,edges] = rainflow(X,'ext');

Mostrar un histograma de recuentos de ciclos en función del rango de tensión.

histogram('BinEdges',edges','BinCounts',sum(hist,2)) xlabel('Stress Range')   ylabel('Cycle Counts')

Utilícelo sin argumentos de salida para mostrar un histograma de ciclos en función del promedio del ciclo y del rango de ciclo.rainflow

rainflow(X,'ext')

Argumentos de entrada

contraer todo

Historial de tiempo de carga, especificado como vector. deben tener valores finitos.x

Tipos de datos: single | double

Frecuencia de muestreo, especificada como un escalar real positivo.

Tipos de datos: single | double

Valores de tiempo, especificados como vector, una matriz o un escalar que representa el intervalo de tiempo entre muestras.durationduration

Ejemplo: es unseconds(0:1/100:1) duration matriz que representa 1 segundo de muestreo a 100 Hz.

Tipos de datos: single | double | duration

Historial de tiempo de carga, especificado como un calendario. debe contener tiempos de fila crecientes y finitos.xt El calendario debe contener solo un vector de datos numéricos con valores de carga finitos.

Si falta un horario o se duplican los puntos de tiempo, puede corregirlo con las sugerencias de .Clean Timetable with Missing, Duplicate, or Nonuniform Times (MATLAB)

Ejemplo: especifica una variable aleatoria muestreada a 1 Hz durante 4 segundos.timetable(seconds(0:4)',rand(5,1))

Tipos de datos: single | double

Argumentos de salida

contraer todo

Recuentos de ciclos, devueltos como una matriz. contiene información de ciclo en sus columnas en este orden: recuentos, rangos, valores medios, índices de muestra iniciales e índices de muestra finales.c Vea un ejemplo.Algoritmos Si especifica una frecuencia de muestreo, un intervalo de tiempo o un vector de valores de tiempo, las dos últimas columnas de contienen tiempos de ciclo inicial y final.c Si llama con un horario como entrada, las dos últimas columnas expresan los tiempos de ciclo inicial y final en segundos.rainflow

Matriz de flujo de lluvia. Las filas de corresponden al rango de ciclo y las columnas corresponden a la media del ciclo.rm

Bordes de ubicación de histograma, devueltos como vectores. y contienen los bordes de ubicación de las filas y columnas de , respectivamente.rmrrmmrm

Los índices lineales de las reversiones, devueltos como vector.

Algoritmos

El análisis de fatiga estudia cómo se acumula el daño en un objeto sometido a cambios cíclicos en el estrés. El número de ciclos necesarios para romper el objeto depende de la amplitud del ciclo. La excitación de entrada de banda ancha contiene ciclos de amplitud diversa, y la presencia de histéresis en el objeto tiene el efecto de anidar algunos ciclos dentro de otros, ya sea total o parcialmente. estima el número de ciclos de cambio de carga en función de la amplitud del ciclo.Conteo de flujo de lluvia

Inicialmente, convierte el historial de carga en una secuencia de .rainflowRevocaciones Las reversiones son los mínimos locales y maximas donde los cambios de carga firman. La función cuenta los ciclos considerando un punto de referencia móvil de la secuencia, y un subconjunto de tres puntos ordenado en movimiento con estas características:Z

  1. El primer y segundo punto se denominan colectivamente .Y

  2. El segundo y tercer punto se denominan colectivamente .X

  3. En ambos y , los puntos se ordenan de antes a posterior en el tiempo, pero no son necesariamente consecutivos en la secuencia de inversión.XY

  4. El de , denotado por ( ), es el valor absoluto de la diferencia entre la amplitud del primer punto y la amplitud del segundo punto.GamaXrX La definición de ( ) es análoga.rY

El algoritmo es el siguiente:rainflow

Al final, la función recoge los diferentes ciclos y semiciclos y tabula sus rangos, sus medios y los puntos en los que comienzan y terminan. Esta información se puede utilizar para producir un histograma de ciclos.

Considere la siguiente secuencia de inversión:

PasoZRevocaciones¿Tres reversiones?Yr(Y)Xr(X)r(X) <r(Y)?Z en Y?Acciones
1A, ,ABCAB3BC4No
  1. Cuente como 1/2 ciclo.AB

  2. Deseche.A

  3. Establézalo en .ZB

2B,BCNoLeer.D
3B, ,BCDBC4CD8No
  1. Cuente como 1/2 ciclo.BC

  2. Deseche.B

  3. Establézalo en .ZC

4C,CDNoLeer.E
5C, ,CDECD8DE6Leer.F
6C, , ,CDEFDE6EF4Leer.G
7C, , , ,CDEFGEF4FG7NoNo
  1. Cuenta como 1 ciclo.EF

  2. Deseche y .EF

8C, ,CDGCD8DG9No
  1. Cuente como 1/2 ciclo.CD

  2. Deseche.C

  3. Establézalo en .ZD

9D,DGNoLeer.H
10D, ,DGHDG9GH8Leer.J
11D, , ,DGHJGH8HJ7Leer.K
12D, , , ,DGHJKHJ7JK4Leer.L
13D, , , , ,DGHJKLJK4KL3Leer.M
14D, , , , , ,DGHJKLMKL3LM5NoNo
  1. Cuenta como 1 ciclo.KL

  2. Deseche y .KL

15D, , , ,DGHJMHJ7JM5Leer.N
16D, , , , ,DGHJMNJM5MN1Leer.P
17D, , , , , ,DGHJMNPMN1NP4NoNo
  1. Cuenta como 1 ciclo.MN

  2. Deseche y .MN

18D, , , ,DGHJPHJ7JP9NoNo
  1. Cuenta como 1 ciclo.HJ

  2. Deseche y .HJ

19D, ,DGPDG9GP10No
  1. Cuente como 1/2 ciclo.DG

  2. Deseche.D

  3. Establézalo en .ZG

20G,GPSin datos

Cuente como 1/2 ciclo.GP

Ahora recoge los resultados.

Recuento de ciclosGamaDecirEmpezarFinal
½3–0.5AB
½4–1BC
141EF
½81CD
13–0.5KL
112.5MN
170.5HJ
½90.5DG
½101GP

Compare esto con el resultado de ejecutarse en la secuencia:rainflow

q = rainflow([-2 1 -3 5 -1 3 -4 4 -3 1 -2 3 2 6])
q =      0.5000    3.0000   -0.5000    1.0000    2.0000     0.5000    4.0000   -1.0000    2.0000    3.0000     1.0000    4.0000    1.0000    5.0000    6.0000     0.5000    8.0000    1.0000    3.0000    4.0000     1.0000    3.0000   -0.5000   10.0000   11.0000     1.0000    1.0000    2.5000   12.0000   13.0000     1.0000    7.0000    0.5000    8.0000    9.0000     0.5000    9.0000    0.5000    4.0000    7.0000     0.5000   10.0000    1.0000    7.0000   14.0000

Referencias

[1] ASTM E1049-85(2017), "Standard Practices for Cycle Counting in Fatigue Analysis." West Conshohocken, PA: ASTM International, 2011, https://www.astm.org/cgi-bin/resolver.cgi?E1049.

Capacidades ampliadas

Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.

Consulte también

| |

Introducido en R2017b