Open Access

Automation of Aircraft Fatigue Life Estimation


Cite

INTRODUCTION

Fatigue life is an extremely important factor during the exploitation of any machine. Its estimation requires an in-depth knowledge on the structure of the object, as well as conditions it will be exposed to. Although many industries, such as automotive (Reza Kashyzadeh, 2020), agricultural (Mattetti et al., 2012), or aerospace (Tavares & de Castro, 2017), use different standards for estimation and measurement of overall fatigue strength of a designed structure, the fundamental methods stay constant. The main idea is to predict the most probable time or number of cycles the structure can endure (Zhang et al., 2023). The prediction is mostly performed using data on statistical fatigue strength of a given material’s test sample. Depending on type of the analyzed material, expected scale and directions of loads, and other factors, multiple models of fatigue accumulation may be implemented.

In aviation, throughout the years, several methods of load prediction for the expected mission profiles were developed. In order to accelerate the initial design phase, engineers may use standardized load spectra. For instance, an analytically acquired block-spectra for sailplanes was published by Thielman, Franzmeyer in 1969 and was improved by work of Kossira, Reinke with experiment-based spectra in 1982 (Kossira & Reinke, 1989). However, as advised by works of Rodzewicz (Rodzewicz, 2007) and Kensche (Kensche, 2019), substantially better results may be achieved using dedicated spectra, based on flights of similar aircrafts with identical or comparable mission designs.

Given recent improvements in unmanned aerial vehicle (UAV) technology, as well as ongoing miniaturization of onboard inertial measuring units (IMU) and microcontroller units (MCU), it is possible to gather live data during the flights of aircrafts even lighter than 150 -g, such as Cinewhoops, which is a well-known device in the first-person view (FPV) drone-use community. Some of the popular operating systems for UAVs offer automated onboard sensor indications’ recording (Logs — Copter documentation; Blackbox logging internals | Betaflight), which reduces the burden of collecting in-flight load spectra. This brings a new possible approach in preparation of load estimations for aircraft-specific mission profiles. Devices operating on such software could be quickly deployed in both unmanned and manned aircrafts as a flight controller or an additional low-weight payload, respectively.

After gathering the data, a filtration must be applied to properly represent loads that could be reenacted on the analyzed structure by means of an experiment (Rodzewicz & Przekop, 2000) or a simulation (Maksimovic et al., 2021). In aircrafts, while some events and resulting accelerations may be treated as random (mainly gusts and landings), flight loads can be assumed as mostly deterministic (“Load Spectra”, 2009). This allows for use of time-based methods, instead of frequency-based ones, which are better suited for stochastic events. Historically in aviation the filtration was performed on the go, mostly due to memory limitations. The load history was stored as an array containing the number of discrete load level (LL) changes. Depending on the method used for detecting a cycle, as well as the format used for data storage, the array was called a halfcycle array or a full-cycle array. One of the most popular time-based filtration methods was the Rainflow Cycle Counting (RCC), as presented in work of Matsuichi, Endo (Matsuichi & Endo, 1968). It follows the locally extreme load values and counts the number of LL changes. The length of the half-cycle depends on previously detected cycles or the minimal LL encountered in a cycle. Its main advantage is robustness against irregularly increasing (or decreasing) LL, in which case classical load level difference counting would ignore low frequency high amplitude load changes.

Lastly, the influence of cycles endured is estimated using an application-specific material fatigue model. For metals and many other materials, estimation accuracy is satisfied by the Palmgren-Miner rule (Murakami, 2019), although other methods may be implemented for non-isotropic materials, such as textile composites (Lomov & Xu, 2015) or 3D prints. Combined with the half-cycle array, it enables a relatively low-cost computation-wise estimation of overall fatigue damage.

The main goal was to develop a software aiding fast and reliable preparation of a custom load spectra for a structure integrated into an aircraft. The processed data were to come from a real-time flight telemetry, collected by either ground station or saved in onboard memory. The data should be filtered and converted into a half-cycle array. The results of the software should consist of calculated load spectra as presented by Owczarek, Rodzewicz (Owczarek & Rodzewicz, 2009), as well as predicted fatigue lifetime of the structure.

The remainder of this paper is organized as follows: the forthcoming section contains assumptions made during the design phase of the software. Section 3 describes methods of problem analysis. Section 4 provides individual software module tests. The sample analysis results are discussed in Section 5. The paper is summarized with conclusions and further development possibilities in Section 6.

PROJECT ASSUMPTIONS

As stated in Section 1, the main goal of the project was to develop a software capable of aiding aircraft engineers in fatigue life calculations of designed structures. During the planning phase of the project, the Python 3 (Drake & Rossum, 2009) programing language was chosen, due to its multiplatform capabilities. The main assumptions of the project were as follows:

the available data come from a three-axis accelerometer set in the aircraft’s center of gravity, or is pre-processed to eliminate linear components of angular acceleration;

the available data were recorded constantly, that is every pre-set time step, or were labeled with time of measurement;

noise of the accelerometer is negligible in comparison to in-flight loads and does not impact the quality of recorded data;

the data available were recorded in form of an array according to OpenTX documentation (Bernet, 2021);

the time step between consecutive data points is no longer than 1/12 of the period of significant loads (Bathe, 2014);

dimensions of the analyzed component, as well as stress induced by acceleration field during a flight, are known;

critical loads assumed during the aircraft’s design are known;

data on material fatigue characteristics are known and defined by an array of decimal logarithm of number of load cycles, sample mean stress, and decimal logarithm of stress amplitude; and

some data points of the load records are available for readings calibration.

The forthcoming section describes the means of achieving the goals described earlier.

METHODS AND ALGORITHMS OF CALCULATIONS

During the program execution, three main problems are resolved:

filtration of the available data,

half-cycle array computation, and

fatigue lifetime calculation of the analyzed components.

The methods of solving the above are presented in the forthcoming subsections.

Filtration of the available data

In terms of fatigue damage level calculation, it is useful to convert the direct log of accelerations into a Markov array (Kossira & Reinke, 1989). Historically in aviation it is a two-dimensional array with a size of 32 columns by 32 rows. In order to create it, the time-based data must be filtered by extreme values and transformed from accelerations to LLs (Rodzewicz, 2007). An example of the available data array is shown in Table 1.

Example of telemetry log used in calculations

Date Time Hdg(@) Ptch Roll AccX(g) RSSI(dB) AccY(g) AccZ(g)
2021-10-10 16:27:29.650 178.60 65.6 -17.0 -0.06 82 -0.02 0.05
2021-10-10 16:27:29.850 178.60 65.6 -17.0 -0.06 87 -0.02 0.05
2021-10-10 16:27:30.050 186.60 49.7 0.5 -0.09 70 -0.02 0.05
2021-10-10 16:27:30.250 186.60 49.7 0.5 -0.09 70 -0.09 0.14
2021-10-10 16:27:30.450 202.10 49.7 0.5 -0.09 80 -0.09 0.14
2021-10-10 16:27:30.650 202.10 28.9 8.5 -0.07 85 -0.11 0.21
2021-10-10 16:27:30.850 202.10 28.9 8.5 -0.07 85 -0.11 0.21
2021-10-10 16:27:31.050 233.70 23.1 28.5 -0.02 90 -0.08 0.19
2021-10-10 16:27:31.250 233.70 23.1 28.5 -0.02 90 -0.08 0.19
2021-10-10 16:27:31.450 273.10 40.2 28.5 -0.02 87 -0.08 0.19
2021-10-10 16:27:31.650 273.10 40.2 44.1 0.00 87 -0.03 0.17
2021-10-10 16:27:31.850 273.10 40.2 44.1 0.00 80 -0.03 0.17
2021-10-10 16:27:32.050 295.70 54.7 41.5 0.00 87 -0.01 0.09
2021-10-10 16:27:32.250 295.70 54.7 41.5 0.00 87 -0.01 0.09
2021-10-10 16:27:32.450 328.70 59.7 34.9 0.00 90 -0.01 0.09

The filtration begins with normalization of the logged accelerations. According to Assumption 9 described in Section 2, the available data should be appended with a calibration set of accelerations (aτxi)calib${(a_\tau ^{{x_i}})_{calib}}$, with xi. meaning one of three main aircraft axis. The calibration should be performed by positioning the sensor in three perpendicular orientations, and so sensor readings for a = g acceleration in X, Y, and Z axes are acquired. Then, the normalization is performed on the data using the equation, ntxi=atxiτ=0k(aτxi)calibk $$n_t^{{x_i}} = {{a_t^{{x_i}}} \over {{{\mathop \sum \limits_{\tau = 0}^k {{(a_\tau ^{{x_i}})}_{calib}}} \over k}}}$$ where t denotes the sample index and axi the acceleration in a chosen axis. It is worth noting that, despite the unusual notation of acceleration in Table 1, the load factors resulting from Eq. (3.1) are represented correctly in non-dimensional form. This means that, provided the calibration recording was performed the same way as the flight itself, the method will return correct values. A comparison between raw and normalized data is shown in Figures 3.1a and 3.1b.

Figure 3.1.

Example of logged data before [Frame 1] and after [Frame 2] normalization.

The next step of the filtration is computation of LLs based on load factors calculated earlier. According to Assumption 7, the critical load factors of the aircraft are known. With such information it is possible to calculate a (n) function. Kossira and Reinke (Kossira & Reinke, 1989) define LLs in a function of load factors as a discrete line between points (3, (nxi)maxcrit) and (31, (nxi)mincrit) in (LL, n) space. This means that the desired function is a line with factors of: [aibi]=[331(nxi)maxcrit(nxi)mincrit31331(nxi)maxcrit(nxi)mincrit(nxi)mincrit] $$[\matrix{ {{a_i}} \cr {{b_i}} \cr } ] = [\matrix{ {{{3 - 31} \over {{{({n^{{x_i}}})}_{maxcrit}} - {{({n^{{x_i}}})}_{mincrit}}}}} \hfill \cr {31 - {{3 - 31} \over {{{({n^{{x_i}}})}_{maxcrit}} - {{({n^{{x_i}}})}_{mincrit}}}} \cdot {{({n^{{x_i}}})}_{mincrit}}} \hfill \cr } ]$$

Data from Figure 3.1b transformed by Eq. (3.2) for (nxi)maxcrit = 4.796 and (nxi)mincrit = −2.398 are shown in Figure 3.2.

Figure 3.2.

Example of logged data after transformation to load levels.

Knowing the LLs during the flight, it is possible to filter out non-extreme values from the log. The filtration may be performed by analysis of LL gradient sign. When the derivative of (n) function by data point index changes sign and is non-zero, the algorithm saves the argument of found extremum. It is highly important to not consider points with the derivative value of 0, as it introduces noise into the filtered data. This step of analysis enables matrix size reduction and, by extension, lowers computational costs of the subsequent steps. With such an approach it may be easier to implement the project into a super low-power device capable of long-term low-maintenance data collection onboard an aircraft.

The block flow diagram of extreme values filter (EVF) is shown in Figure 3.3 and an example of filtered data is shown in Figure 3.4.

Figure 3.3.

Block flow diagram of extreme values filter.

Figure 3.4.

Example of extreme values filtration results.

With the filtered set of extreme values, it is possible to calculate the half-cycle array.

Half-cycle array computation

Based on the advice provided in the work of Owczarek, Rodzewicz (Owczarek & Rodzewicz, 2009), the RCC (Tavares & de Castro, 2017) method was used during the preparation of a half-cycle array. The main idea behind RCC is to count “streams” flowing down the LL extremes time-wise. Each stream begins in a consecutive extreme LL (source) and is broken if any of the following conditions is met:

a source of a deeper extremum exists (LL0 > LLt for even streams [upper] and LL0 > LLn for odd streams [lower]),

or a stream of higher extreme LL already flows through the current stream position (the end of the stream is set to the LL of an older stream that has been met).

With the above set of rules it is possible to prepare a recursive algorithm for the RCC method. A block flow diagram of the algorithm and its results are shown in Figures 3.5 and 3.6, respectively.

Figure 3.5.

Block flow diagram of the Rainflow Cycle Counting method.

Figure 3.6.

Example of stream generation in the Rainflow Cycle Counting method.

The computed streams can then be saved as vectors of source and end LLs: s=[ LL(0),LL(n1)] $$\vec s = [LL(0),LL(n - 1)]$$ where n is the complete number of steps flowed by a stream. In this form it is less computationally demanding to count the number of specific streams, as both values are used as column and row index of half-cycle array, respectively. An example of an active zone of the calculated half-cycle array is shown in Table 3.2.

Example of active zone in half-cycle array.

LL 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
25 1 0 2 0 2 1 0 1 1 0 0 1 0 0 1 1 1 x 0
24 0 1 2 2 0 1 1 1 1 0 0 0 0 0 0 2 x 1 0
23 0 1 2 2 1 3 0 4 2 1 0 1 0 0 3 x 2 1 0
22 0 1 0 0 1 3 5 7 2 1 2 1 1 2 x 3 0 1 0
21 0 0 0 0 2 0 3 8 10 8 13 10 5 x 2 0 0 0 0
20 0 0 0 0 0 1 0 3 5 10 30 53 x 5 1 0 0 0 0
19 0 0 0 0 0 0 1 2 0 7 29 x 52 10 1 1 0 1 0
18 0 0 0 0 0 0 1 3 3 8 x 29 31 12 3 0 0 0 0
17 0 0 0 0 0 0 0 0 1 x 8 7 10 8 1 1 0 0 0
16 0 0 0 0 0 0 0 0 x 1 3 0 5 11 2 1 1 1 0
15 0 0 0 0 0 0 1 x 0 0 3 2 3 8 7 4 1 1 0
14 0 0 0 0 0 0 x 1 0 0 1 1 0 3 5 0 1 0 0
13 0 0 0 0 0 x 0 0 0 0 0 0 1 0 2 3 2 1 0
12 0 0 0 1 x 0 0 0 0 0 0 0 0 2 1 1 0 2 0
11 0 0 0 x 1 0 0 0 0 0 0 0 0 0 0 2 2 0 0
10 0 0 x 0 0 0 0 0 0 0 0 0 0 0 0 3 0 2 2
9 0 x 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1
8 x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0

The resulting half-cycle array [T] can be used in fatigue life calculation, which is described in the forthcoming subsection.

Fatigue lifetime calculation

In order to acquire an estimated time of the designed structure’s fatigue life, a specific deconstruction of the half-cycle array must be performed. First, the LLs must be converted back into load factors using the inverse linear function according to Eq. (3.2): [ab]=[(nxi)maxcrit(nxi)mincrit331(nxi)mincrit(nxi)maxcrit(nxi)mincrit33131] \[[\begin{matrix} a\\ b\\ \end{matrix}]=[\begin{array}{*{35}{l}} \frac{{{({{n}^{{{x}_{i}}}})}_{maxcrit}}-{{({{n}^{{{x}_{i}}}})}_{mincrit}}}{3-31}\\ {{({{n}^{{{x}_{i}}}})}_{mincrit}}-\frac{{{({{n}^{{{x}_{i}}}})}_{maxcrit}}-{{({{n}^{{{x}_{i}}}})}_{mincrit}}}{3-31}\cdot 31\\ \end{array}]\]

Next, a load factor array is prepared by computing for each non-zero half-cycle array cell: ni,ja=|nz(LLv)nz(LLh)2| $$n_{i,j}^a = |{{{n_z}(L{L_v}) - {n_z}(L{L_h})} \over 2}|$$ ni,jm=|nz(LLv)+nz(LLh)2| $$n_{i,j}^m = |{{{n_z}(L{L_v}) + {n_z}(L{L_h})} \over 2}|$$ where [na] represents the load factor amplitude matrix, [nm] the mean load factor matrix, LLh the column index of half-cycle array, and LLv the row index of half-cycle array. However, it is important to emphasize that the exact values of the prepared arrays are independent from the half-cycle array computed in the preceding subsection. Both [na] and [nm] matrices represent the corresponding load factors based only on column and row index. LLh and LLv are just sets of numbers between 1 and 32. The proper use of the half-cycle array values will be shown directly during fatigue damage level matrix computation.

According to Assumption 6 from Section 2, the mean stress value for the n = 1 situation is known. The computed matrices may then be scaled by a factor of known σ(n = 1), which results in the following arrays of mean stress matrix [σm] and stress amplitude matrix [σa]: [σm]=[nm]σ(n=1) $$[{\sigma ^m}] = [{n^m}] \cdot \sigma (n = 1)$$ [σa]=[na]σ(n=1) $$[{\sigma ^a}] = [{n^a}] \cdot \sigma (n = 1)$$

Having calculated stress matrices, it is now possible to compute the maximum number of cycles for each non-zero cell of the half-cycle array [T]. Due to σ(n = 1) being a result of a continuous function, it may not always fit the discrete material data available within the input data (Assumption 8).

The software compensates for lack of information using a linear approximation between the lines of material constant mean stress (as shown in Figure 3.7). The maximal number of cycles is calculated with: Ni,j=10a(σi,jm)σi,ja+b(σi,jm) $${N_{i,j}} = {10^{a(\sigma _{i,j}^m) \cdot \sigma _{i,j}^a + b(\sigma _{i,j}^m)}}$$ where both a and b are a function of σi,jm$\sigma _{i,j}^m$.

Figure 3.7.

Approximation process of the number of cycles N for uncharacteristic argument.

Having calculated both the half-cycle array and the maximum number of cycles matrix, it is now possible to calculate the fatigue level matrix: Di,j=Ti,jNi,j \[{{D}_{i,j}}=\frac{{{T}_{i,j}}}{{{N}_{i,j}}}\]

The overall fatigue level may then be calculated using the Palmgren-Miner rule as a sum of all elements of matrix D: Dc=0.5i=132j=132Di,j=0.5i=132j=132Ti,jNi,j \[{{D}_{c}}=0.5\underset{i=1}{\overset{32}{\mathop \sum }}\,\underset{j=1}{\overset{32}{\mathop \sum }}\,{{D}_{i,j}}=0.5\underset{i=1}{\overset{32}{\mathop \sum }}\,\underset{j=1}{\overset{32}{\mathop \sum }}\,\frac{{{T}_{i,j}}}{{{N}_{i,j}}}\] and the hourly fatigue lifetime: TFL=tDc \[{{T}_{FL}}=\frac{t}{{{D}_{c}}}\] where t indicates time period of the logged data for which the half-cycle array [T] was calculated.

The forthcoming section describes methods of testing the described algorithms.

TESTING SOFTWARE SUBMODULES

It is useful to prove the validity of a new software’s submodules before performing complete testing. The developed tool consists of three components – the aforementioned EVF, stream generator (SG), and array generator (AG). Each of the submodules performs calculations according to the rules and equations specified in Section 3.

Validity of Extreme Values Filter

The most important factor of data preparation is correctly filtering extreme values for use in half-cycle array. The EVF submodule should return only local extremes of LLs without considering regions of zero LL difference. Due to its implementation, the module is expected to find only the last extreme point before a change of derivative sign. Values returned are expected to be integers between 1 and 32.

The validation was performed on three sets of logged LLs by comparing the input with the results of the filtration. All three sections have shown correct behavior of computed polylines. Test 3 seems to be of significant importance as it contains multiple steps of little LL difference; however, the local extremes are found correctly. The tests are visualized in Figures 4.14.3.

Figure 4.1.

First test zone of EVF.

Figure 4.2.

Second test zone of EVF.

Figure 4.3.

Third test zone of EVF.

Validity of Stream Generator

In order to validate the SG submodule, generated streams were imposed on points of extreme LLs from Subsection 4.1. The expected behavior of streamlines was specified in Subsection 3.2. The tests were visualized in a manner similar to that adopted in Subsection 4.1, as portrayed in Figures 4.44.6. They show the streams following the specified rules, with the exception of Test 3, where streams with sources at Points 180 and 194 are broken seemingly without a cause. This is, however, a limitation of the visualization method, as the global chart shows the streams are blocked by at least one older stream (as shown in Figure 4.7).

Figure 4.4.

First test zone of generated streams.

Figure 4.5.

Second test zone of generated streams.

Figure 4.6.

Third test zone of generated streams.

Figure 4.7.

Global view on third test zone of generated streams.

Validity of Array Generator

The last step of submodule validation was to analyze the generated arrays based on characteristics deduced from Section 3.3:

values of the [na] matrix should rise perpendicularly to the diagonal in the direction of matrix borders and be equal parallelly to the diagonal,

values of the [nm] matrix should rise parallelly to the diagonal in direction of (1, 1) cell and be equal perpendicularly to the diagonal,

values of the [N] matrix should rise exponentially to infinity closing on the diagonal,

the active zones of all of the matrices should have equal length of vertical and horizontal dimensions,

the diagonal of each matrix should have only 0 values.

Examples of active zones of computed matrices are shown in Tables 4.14.3. Each of the generated arrays complies with the above expectations. Based on these findings, it is assumed that all of the submodules are implemented correctly, and accordingly, full software testing may be performed.

The forthcoming section describes a full test on real-life data.

Active zone of matrix.

LL 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
27 1,456 0 1,199 0 0,942 0,814 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
26 0 1,456 0 0 0 0,942 0,814 0,685 0 0 0 0,171 0 0 -0,214 0 0 0 0 0 0 0 0
25 0 0 0 1,327 0 1,071 0 0 0,685 0,557 0 0 0 0 0 0 0 -0,471 0 0 0 0 0
24 0 1,713 0 1,456 1,327 1,199 1,071 0 0,814 0,685 0,557 0 0,300 0 0 0 0 0 -0,471 0 0 0 0
23 0 0 0 1,584 1,456 0 1,199 1,071 0,942 0,814 0,685 0,557 0 0 0 0,043 0 0 0 0 -0,599 -0,728 0
22 0 0 0 0 0 1,456 1,327 0 1,071 0,942 0,814 0,685 0,557 0,428 0,300 0,171 0,043 0 -0,214 -0,343 0 0 0
21 0 0 0 0 1,713 0 1,456 1,327 0 1,071 0,942 0,814 0,685 0,557 0,428 0,300 0 0,043 -0,086 0 0 0 0
20 0 0 0 0 1,841 0 0 1,456 0 0 1,071 0,942 0,814 0,685 0,557 0 0,300 0,171 0,043 0 -0,214 0 0
19 0 0 0 0 0 1,841 1,713 1,584 1,456 0 1,199 1,071 0,942 0,814 0 0,557 0,428 0,300 0 0 0 -0,214 0
18 0 0 0 0 0 1,970 0 0 0 0 1.327 1,199 1,071 0 0.814 0.685 0,557 0,428 0,300 0 0 0 0
17 0 0 0 0 0 0 0 0 0 0 0 1,327 0 1,071 0,942 0,814 0,685 0,557 0,428 0,300 0 0 0
16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,071 0,942 0,814 0,685 0,557 0,428 0,300 0 0
15 0 0 0 0 0 0 0 0 0 0 0 0 1,456 1,327 1,199 1,071 0,942 0,814 0,685 0,557 0 0,300 0
14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,327 0 1,071 0,942 0,814 0 0,557 0 0
13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,327 0 1,071 0,942 0,814 0,685 0 0
12 0 0 3,126 0 0 0 0 0 0 0 0 0 0 0 0 0 1,327 1,199 0 0,942 0,814 0 0
11 0 0 0 0 0 0 0 2,612 0 0 0 0 0 0 0 0 0 1,327 0 1,071 0,942 0,814 0
10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,327 0 1,071 0,942 0,814
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,456 0 1,199 0 0,942
8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,584 0 1,327 0 0
7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,327 1,199
6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,713 0 0 0
5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,713 0 0

Active zone of [na] matrix.

LL 5 6 7 8 9 10 11 12 13 14 15 16 17 la 19 20 21 22 23 24 25 26 27
27 2.826 0 2,569 0 2,312 2,184 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
26 0 2,569 0 0 0 2,055 1,927 1,798 0 0 0 1,285 0 0 0,899 0 0 0 0 0 0 0 0
25 0 0 0 2,184 0 1,927 0 0 1,542 1,413 0 0 0 0 0 0 0 0,385 0 0 0 0 0
24 0 2,312 0 2,055 1,927 1,798 1,670 0 1,413 1,285 1,156 0 0,899 0 0 0 0 0 0,128 0 0 0 0
23 0 0 0 1,927 1,798 0 1,542 1,413 1,285 1,156 1,028 0,899 0 0 0 0,385 0 0 0 0 0,257 0,385 0
22 0 0 0 0 0 1,542 1,413 0 1,156 1,028 0,899 0,771 0,642 0,514 0,385 0,257 0,128 0 0,128 0,257 0 0 0
21 0 0 0 0 1,542 0 1,285 1,156 0 0,899 0,771 0,642 0,514 0,385 0,257 0,128 0 0,128 0,257 0 0 0 0
20 0 0 0 0 1,413 0 0 1,028 0 0 0,642 0,514 0,385 0,257 0,128 0 0,128 0,257 0,385 0 0,642 0 0
19 0 0 0 0 0 1,156 1,028 0,899 0,771 0 0,514 0,385 0,257 0,128 0 0,128 0,257 0,385 0 0 0 0,899 0
18 0 0 0 0 0 1,028 0 0 0 0 0,385 0,257 0,128 0 0,128 0,257 0,385 0,514 0.642 0 0 0 0
17 0 0 0 0 0 0 0 0 0 0 0 0,128 0 0,128 0,257 0,385 0,514 0,642 0,771 0,899 0 0 0
16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,385 0,514 0,642 0,771 0,899 1,028 1,156 0 0
15 0 0 0 0 0 0 0 0 0 0 0 0 0,257 0,385 0,514 0,642 0,771 0,899 1,028 1,156 0 1,413 0
14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,642 0 0,899 1,028 1,156 0 1,413 0 0
13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,899 0 1,156 1,285 1,413 1,542 0 0
12 0 0 0,642 0 0 0 0 0 0 0 0 0 0 0 0 0 1,156 1,285 0 1,542 1,670 0 0
11 0 0 0 0 0 0 0 0,128 0 0 0 0 0 0 0 0 0 1,413 0 1,670 1,798 1,927 0
10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,670 0 1,927 2,055 2,184
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,798 0 2,055 0 2,312
8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,927 0 2,184 0 0
7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2,441 2,569
6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2,312 0 0 0
5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2,569 0 0

Active zone of [N] matrix

11 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
27 5016 0 9323 0 18880 27888 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
26 0 6867 0 0 0 29520 45552 72734 0 0 0 739650 0 0 8777566 0 0 0 0 0 0 0 0
25 0 0 0 13948 0 31222 0 0 135688 242254 0 0 0 0 0 0 0 1238567291 0 0 0 0 0
24 0 6971 0 14323 21400 33011 52788 0 153650 283687 559374 0 2816397 0 0 0 0 0 363061881753 0 0 0 0
23 0 0 0 14668 22239 0 57012 97452 175690 337414 699601 1595342 0 0 0 260105776 0 0 0 0 15664059809 2702740887 0
22 0 0 0 0 0 36956 61809 0 203528 409747 903678 2239961 6489824 23452051 119196963 1112010656 44006761878 0 126400861458 6485934196 0 0 0
21 0 0 0 0 23955 0 67384 122768 0 511886 1220828 3379409 11549092 54623608 460444357 15321059277 0 44006761878 2685596385 0 0 0 0
20 0 0 0 0 24864 0 0 140556 0 0 1759740 5687415 25032002 190653754 5334063388 0 15321059277 1112010656 260105776 0 45963108 0 0
19 0 0 0 0 0 44669 82322 164245 362646 0 2800799 11471251 78942989 1857066911 0 5334063388 460444357 119196963 0 0 0 8777566 0
18 0 0 0 0 0 48215 0 0 0 0 5256855 32687505 646542282 0 1857066911 190653754 54623608 23452051 12463071 0 0 0 0
17 0 0 0 0 0 0 0 0 0 0 0 225095240 0 646542282 78942989 25032002 11549092 6489824 4109855 2816397 0 0 0
16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 11471251 5687415 3379409 2239961 1595342 1194495 927346 0
15 0 0 0 0 0 0 0 0 0 0 0 0 13534742 5256855 2800799 1759740 1220828 903678 699601 559374 0 381954 0
14 0 0 0 0 0 0 0 0 0 0 0 0 0 0 916340 0 511886 409747 337414 0 242254 0 0
13 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 289957 0 203528 175690 153650 135688 0 0
12 0 0 9513 0 0 0 0 0 0 0 0 0 0 0 0 0 122768 108806 0 87954 79823 0 0
11 0 0 0 0 0 0 0 1151365 0 0 0 0 0 0 0 0 0 61809 0 52788 49000 45552 0
10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 34910 0 31222 29520 27888
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 22239 0 20563 0 18880
8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 14668 0 13948 0 0
7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 9535 9323
6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6971 0 0 0
5 0 0 0 0 0 0 0 0 0 j 0 1 0 0 0 0 0 0 0 0 5058 0 0
ANALYSIS OF REAL-LIFE DATA

Knowing that each of the main submodules works correctly, it is possible to test the complete software by analyzing real-life data. Due to a lack of third party data for result comparison, the output was validated against the rules specified in previous sections.

During the tests, an aluminum sample with a static load of nz = 1 characterized by a stress of σ(nz = 1) = 37.298 MPa was analyzed. The model represents a pin of camera mounting in a typical sport quadcopter; however, the method should be applicable to any aluminum component of the structure. The considered critical load factors are (nxi)mincrit = −2.398 and (nxi)maxcrit = 4.796. The material characteristics are shown in Table 5.1. The analyzed mission profile was designed according to the Polish NSTS-06 rules of flight.

Material fatigue characteristics of aluminum used in analyzed component.

σm lg(N) (lg(σa)
0 3,3 2,2551
0 7 1,4699
34 3,3 2,1954
34 7 1,228
69 3,3 2,1138
69 7 1,1087
103 3,3 2,0761
103 7 1,0333
138 3,3 2,0384
138 7 0,9516
207 3,3 1,9913
207 7 0,8323

A log of computed LLs is visualized in Figure 5.1. The log does not comply with the assumption of continuous acceleration sampling; however, the available data are labelled with exact time stamps of measurements.

Figure 5.1.

Visualization of filtered load levels in function of time.

The visualization of the generated RCC streams (Figures 5.2 and 5.3) was divided into odd and even streams for improved readability. The results show coherence with earlier tests, with acquired streams following the rules specified in Subsection 3.2. In order to further improve the readability of the following diagrams, index of sample was used instead of time stamp.

Figure 5.2.

Even RCC streams.

Figure 5.2.

Odd RCC streams.

Based on the above results, the software calculated half-cycle array [T]. The active zone of the matrix is shown in Table 5.2. The results are on par with the expectations specified in Subsection 4.3. The highest values are reached near cells (18, 19) and (19, 18) corresponding to the load factor of nz ≈ 1. The diagonal consists of only 0 values, which shows that no zero LL changes were found in the log. This proves further the correctness of the EVF submodule algorithm. The matrix has the same vertical and horizontal dimensions, which shows that streams were most probably generated correctly.

Active zone of generated half-cycle array [T].

LL 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
25 1 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
24 0 0 1 0 2 0 2 1 0 1 1 0 0 1 0 0 1 1 1 0 0
23 0 1 0 1 2 2 0 1 1 1 1 0 0 0 0 0 0 2 0 1 0
22 0 0 0 1 2 2 1 3 0 4 2 1 0 1 0 0 3 0 2 1 0
21 0 0 0 1 0 0 1 3 5 7 2 1 2 1 1 2 0 3 0 1 0
20 0 0 0 0 0 0 2 0 3 8 10 8 13 10 5 0 2 0 0 0 0
19 0 0 0 0 0 0 0 1 0 3 5 10 30 53 0 5 1 0 0 0 0
18 0 0 0 0 0 0 0 0 1 2 0 7 29 0 52 10 1 1 0 1 0
17 0 0 0 0 0 0 0 0 1 3 3 8 0 29 31 12 3 0 0 0 0
16 0 0 0 0 0 0 0 0 0 0 1 0 8 7 10 8 1 1 0 0 0
15 0 0 0 0 0 0 0 0 0 0 0 1 3 0 5 11 2 1 1 1 0
14 0 0 0 0 0 0 0 0 1 0 0 0 3 2 3 8 7 4 1 1 0
13 0 0 0 0 0 0 0 0 0 1 0 0 1 1 0 3 5 0 1 0 0
12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 2 3 2 1 0
11 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 2 1 1 0 2 0
10 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 2 2 0 0
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 3 0 2 2
8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 1
7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1
6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0
5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0

The active zone of the fatigue level matrix [D] is shown in Table 5.3. Evaluating it against the rules and expectations specified in Subsection 4.3, the array seems to be generated correctly. However, it is currently not validated against third party data, as such were not available during the software development. It is essential to perform further validation of the project in the near future.

Active zone of the fatigue level matrix [D].

LL 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
25 0.000198 0 0,000103 7.17E-05 4,86E-05 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
24 0 0 0,000101 0 9.35E-05 0 3,79E-05 1,14E-05 0 3,53E-06 1,79E-06 0 0 1,33E-07 0 0 1,76E-09 1,54E-10 2,75E-12 0 0
23 0 0,000143 0 6,82E-05 8.99E-05 5,73E-05 0 1,03E-05 5,69E-06 2,96E-06 1,43E-06 0 0 0 0 0 0 1,58E-11 0 2,75E-12 0
22 0 0 0 6,67E-05 8,56E-05 5,41E-05 1,62E-05 2,76E-05 0 9,76E-06 2,21E-06 4,46E-07 0 4,26E-08 0 0 6,82E-11 0 1,58E-11 1,54E-10 0
21 0 0 0 6,55E-05 0 0 1.48E-05 2.44E-05 2.08E-05 1,37E-05 1,64E-06 2,96E-07 1,73E-07 1,83E-08 2,17E-09 1.31E-10 0 6.82E-11 0 1,76E-09 0
20 0 0 0 0 0 0 2,70E-05 0 1,03F-05 1,20F-05 5,68F-06 1,41F-06 5,19F-07 5,25F-08 9,37F-10 0 1,31E-10 0 0 0 0
19 0 0 0 0 0 0 0 6,09E-06 0 3,27E-06 1,79E-06 8,72E-07 3,80E-07 2,85E-08 0 9.37E-10 2.17E-09 0 0 0 0
18 0 0 0 0 0 0 0 0 2,10E 06 l,45E06 0 2,14E07 4,49E 08 0 2,80E08 5,25E08 1,83E08 4,26E08 0 l,33E07 0
17 0 0 0 0 0 0 0 0 1,47E-06 1,25E-06 2,22E-07 3,55E-08 0 4,49E-08 3,93E-07 4,79E-07 2,60E-07 0 0 0 0
16 0 0 0 0 0 0 0 0 0 0 1,28E-08 0 3,55E-08 2,14E-07 8,72E-07 1,41E-06 2,96E-07 4,46E-07 0 0 0
15 0 0 0 0 0 0 0 0 0 0 0 1,28E-08 2,22E-07 0 1,79E-06 6,25E-06 1,64E-06 1,11-06 1,43E-06 1,79E-06 0
14 0 0 0 0 0 0 0 0 1,05E-07 0 0 0 1,25E-06 1,45E-06 3,27E-06 1,20E-05 1,37E-05 9,76E-06 2,96E-06 3,53E-06 0
13 0 0 0 0 0 0 0 0 0 1,05E-07 0 0 1,47E-06 2,10E-06 0 1,03E-05 2,08E-05 0 5,69E-06 0 0
12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 6,09E-06 0 1,63E-05 2,76E-05 2,05E-05 1,14E-05 0
11 0 0 0 0 0 2,49E-06 0 0 0 0 0 0 0 0 0 2,70E-05 1,48E-05 1,62E-05 0 3,79E-05 0
10 0 0 0 0 0 0 2,49E-06 0 0 0 0 0 0 0 0 0 0 5,41E-05 5.73E-05 0 0
9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,000130 0 9,35E-05 9.73E-05
8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 06,55E-05 6,67E-05 6,82E-05 0 7,71E-05
7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000101 0.000103
6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000143 0 0
5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.000200 0 0

The overall fatigue level of the analyzed object after 20 min of loads shown in Figure 5.1 is estimated to be Dc = 0.00154. This suggests the object fatigue lifetime to last about TFL ≈ 220 h. The result may seem to be low; however, it is important to notice the tests’ high loads relative to a typical aircraft. This may generate high stresses in the structure, possibly introducing conditions for low cycle fatigue.

CONCLUSIONS AND POSSIBILITIES FOR FURTHER DEVELOPMENT

The main goal of the project was to develop a tool aiding engineers in fatigue lifetime calculations, based on real-life data collected during exploitation of an aircraft. The software was supposed to perform automatic transformation of telemetry logs to custom load spectra and estimated fatigue level, which was then to be recalculated to hourly fatigue lifetime. The input data were supposed to consist of flight log formatted according to the OpenTX telemetry standard and an array of discrete material fatigue data based on experiments.

The paper describes methods, algorithms, and validation of implemented software modules used in calculations, as well as the results of test data analysis. The test data consisted of accelerations imposed on an aluminum sample simulating a pin of a camera mounting on a typical sport UAV during flight according to the Polish NSTS-06 rules. The results show high coherence with all of expectations stated during the algorithm design phase, which suggests that the estimations have been computed correctly.

The results of the analysis show rather a low fatigue lifetime of the sample. However, it is important to emphasize that during the test flights, high-G acrobatics were abundantly performed, which significantly influences the overall load spectra of the aircraft. Moreover, the tests represent a relatively short sample size. In order to prepare full custom load spectra, the test flights should represent real-life situations as much as possible. To adequately estimate fatigue lifetime of the sample, further tests must be performed.

A strong advantage of this software is its multiplatform approach, with a focus on the requirements for the computational power and memory needed during calculations to remain low. This means the developed software could be used on mobile platforms for live data gathering and analysis. It would require integration of the pre-processing submodule, eliminating the effects of being placed outside of the center of gravity. This approach could provide a highly augmented view on fatigue levels in both small UAVs and manned aircrafts.

Further project development should also focus on extrapolation of half-cycle arrays. This approach could provide a view on a higher range of loads, sometimes very hard, problematic, or dangerous to invoke in real-life testing.

eISSN:
2300-7591
Language:
English
Publication timeframe:
Volume Open
Journal Subjects:
Engineering, Introductions and Overviews, other