diff --git a/userFunctions.js b/userFunctions.js index 624d3b6..f61373d 100644 --- a/userFunctions.js +++ b/userFunctions.js @@ -134,7 +134,7 @@ export function tolerance() { tol = (2 * FTF()) / (5 * BPFO()); break; case 3: //ШВП - tol = (2 * BSFTF()) / (5 * BSNUT()); + tol = (2 * BSFTF()) / (5 * BSNUT()); break; case 4: //редуктор tol = (2 * FREQ()) / (5 * GTFZ()); @@ -218,15 +218,35 @@ export function specParams() { }; }; -export function specSquare(data, bnd, frq) { - let lines = data.length; //определение количества линий спектра вибрации - let res = frq / lines; //определение частотного разрешения спектра вибрации (основание прямоугольной трапеции) - let start = 1; //переменная для определения стартового индекса в массиве - let S = 0; //переменная расчетной площади спектра вибрации - if (bnd !== 0) { start = lines - Math.round((frq - bnd) / res) }; //начальная точка отсчета в массиве (стартовый индекс) - for (let i = start - 1; i <= lines - 2; i++) { S = S + res * ((data[i] + data[i + 1]) / 2) }; //вычисляем площадь спектра вибрации - return S; -}; //определение площади спектра +export function specSquare(spec, L, R) { + let base = spec.base; //массив значений средней линии + let data = spec.data; //массив значений амплитуд + let lines = spec.data.length; //количества линий спектра + let res = spec.resolution; //частотное разрешения спектра (высота прямоугольной трапеции) + let peaks = spec.peaks; //массив обнаруженных гармоник (объекты) + let start = 0; //стартовый индекс в массиве + let end = lines; //конечный индекс в массиве + let s0 = 0; //площадь под базовой линией + let s1 = 0; //площадь всего спектра + let s2 = 0; //площадь над базовой линией + let s3 = 0; //площадь обнаруженных гармоник + if (L != undefined) { start = Math.round(L / res) }; + if (R != undefined) { end = Math.round(R / res) }; + + for (let i = start; i <= end - 1; i++) { + s0 += 0.5 * (base[i] + base[i + 1]) * res; + s1 += 0.5 * (data[i] + data[i + 1]) * res; + if ((s1 - s0) >= 0) { s2 += s1 - s0 }; + if (i <= peaks.length - 1) { s3 += res * peaks[i].level }; + }; + + return { + base: s0, + spec: s1, + harm: s2, + peak: s3 + }; +}; //определение площадей спектра export function modFactor(ampl, base) { let dl = (ampl - base); //разность уровней гармонической и случайной составляющей вибрации