all classes were changed
parent
8e17d04563
commit
3ec60332bf
|
@ -6,7 +6,7 @@ export class peakClass {
|
||||||
if (args.spec != undefined) { this.spec = args.spec };
|
if (args.spec != undefined) { this.spec = args.spec };
|
||||||
}
|
}
|
||||||
|
|
||||||
getLevels(rpm = this.freq * 60) {
|
__getLevels(rpm = this.freq * 60) {
|
||||||
let __allert = 0; //уровень предупреждения, g
|
let __allert = 0; //уровень предупреждения, g
|
||||||
switch (true) {
|
switch (true) {
|
||||||
case rpm <= 900:
|
case rpm <= 900:
|
||||||
|
@ -26,7 +26,7 @@ export class peakClass {
|
||||||
return __allert
|
return __allert
|
||||||
}; //рассчет пороговых уровней
|
}; //рассчет пороговых уровней
|
||||||
|
|
||||||
getParams(rpm = this.freq * 60) {
|
__getParams(rpm = this.freq * 60) {
|
||||||
let __wdt = 0; //граничная частота ФВЧ
|
let __wdt = 0; //граничная частота ФВЧ
|
||||||
let __frq = 40 * this.freq; //граничная частота спектра
|
let __frq = 40 * this.freq; //граничная частота спектра
|
||||||
let __lns = 800; //количество линий спектра
|
let __lns = 800; //количество линий спектра
|
||||||
|
@ -65,8 +65,38 @@ export class peakClass {
|
||||||
};
|
};
|
||||||
}; //рассчет параметров спектра
|
}; //рассчет параметров спектра
|
||||||
|
|
||||||
|
__getSpecSquare() {
|
||||||
|
if (this.spec != undefined) {
|
||||||
|
let __base = this.spec.base; //массив значений средней линии
|
||||||
|
let __data = this.spec.data; //массив значений амплитуд
|
||||||
|
let __lines = this.spec.data.length; //количества линий спектра
|
||||||
|
let __res = this.spec.resolution; //частотное разрешения спектра (высота прямоугольной трапеции)
|
||||||
|
let __start = 0; //стартовый индекс в массиве
|
||||||
|
let __end = __lines; //конечный индекс в массиве
|
||||||
|
let s0 = 0; //площадь под базовой линией
|
||||||
|
let s1 = 0; //площадь всего спектра
|
||||||
|
let s2 = 0; //площадь над базовой линией
|
||||||
|
let s3 = 0; //площадь обнаруженных гармоник
|
||||||
|
|
||||||
|
for (let i = __start; i <= __end - 1; i++) {
|
||||||
|
s0 += __base[i] * __res;
|
||||||
|
s1 += __data[i] * __res;
|
||||||
|
let __delta = __data[i] - __base[i];
|
||||||
|
if (__delta >= 0) { s2 += __delta * __res };
|
||||||
|
if (__delta >= this.spec.peak_level) { s3 += __delta * __res };
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
base: s0,
|
||||||
|
spec: s1,
|
||||||
|
harm: s2,
|
||||||
|
peak: s3
|
||||||
|
};
|
||||||
|
}; //определение площадей спектра
|
||||||
|
}
|
||||||
|
|
||||||
getWave() {
|
getWave() {
|
||||||
let __allert = this.getLevels();
|
let __allert = this.__getLevels();
|
||||||
let __fault = 2 * __allert;
|
let __fault = 2 * __allert;
|
||||||
|
|
||||||
if (this.visible == true) {
|
if (this.visible == true) {
|
||||||
|
@ -134,36 +164,6 @@ export class peakClass {
|
||||||
return __max;
|
return __max;
|
||||||
}; //рассчет автокорреляции
|
}; //рассчет автокорреляции
|
||||||
|
|
||||||
getSpecSquare() {
|
|
||||||
if (this.spec != undefined) {
|
|
||||||
let __base = this.spec.base; //массив значений средней линии
|
|
||||||
let __data = this.spec.data; //массив значений амплитуд
|
|
||||||
let __lines = this.spec.data.length; //количества линий спектра
|
|
||||||
let __res = this.spec.resolution; //частотное разрешения спектра (высота прямоугольной трапеции)
|
|
||||||
let __start = 0; //стартовый индекс в массиве
|
|
||||||
let __end = __lines; //конечный индекс в массиве
|
|
||||||
let s0 = 0; //площадь под базовой линией
|
|
||||||
let s1 = 0; //площадь всего спектра
|
|
||||||
let s2 = 0; //площадь над базовой линией
|
|
||||||
let s3 = 0; //площадь обнаруженных гармоник
|
|
||||||
|
|
||||||
for (let i = __start; i <= __end - 1; i++) {
|
|
||||||
s0 += __base[i] * __res;
|
|
||||||
s1 += __data[i] * __res;
|
|
||||||
let __delta = __data[i] - __base[i];
|
|
||||||
if (__delta >= 0) { s2 += __delta * __res };
|
|
||||||
if (__delta >= this.spec.peak_level) { s3 += __delta * __res };
|
|
||||||
};
|
|
||||||
|
|
||||||
return {
|
|
||||||
base: s0,
|
|
||||||
spec: s1,
|
|
||||||
harm: s2,
|
|
||||||
peak: s3
|
|
||||||
};
|
|
||||||
}; //определение площадей спектра
|
|
||||||
}
|
|
||||||
|
|
||||||
getResult() {
|
getResult() {
|
||||||
let __result = {}; //результат
|
let __result = {}; //результат
|
||||||
let __mech = 0; //механические проблемы
|
let __mech = 0; //механические проблемы
|
||||||
|
@ -178,8 +178,8 @@ export class peakClass {
|
||||||
|
|
||||||
if (this.spec != undefined) {
|
if (this.spec != undefined) {
|
||||||
let GS = MaxPK / FaultLevel; //общая серьезность проблемы
|
let GS = MaxPK / FaultLevel; //общая серьезность проблемы
|
||||||
let SQpeak = this.getSpecSquare().peak; //площадь обнаруженных гармонических составляющих
|
let SQpeak = this.__getSpecSquare().peak; //площадь обнаруженных гармонических составляющих
|
||||||
let SQspec = this.getSpecSquare().harm; //площадь над базовой линией
|
let SQspec = this.__getSpecSquare().harm; //площадь над базовой линией
|
||||||
let PE = (SQpeak ** 2 / SQspec ** 2); //доля периодической энергии
|
let PE = (SQpeak ** 2 / SQspec ** 2); //доля периодической энергии
|
||||||
let NPE = (SQspec ** 2 - SQpeak ** 2) / SQspec ** 2; //доля непериодической энергии
|
let NPE = (SQspec ** 2 - SQpeak ** 2) / SQspec ** 2; //доля непериодической энергии
|
||||||
|
|
||||||
|
|
|
@ -5,11 +5,11 @@ export class spmClass {
|
||||||
this.frq = args.freq;
|
this.frq = args.freq;
|
||||||
this.d = args.d_inner;
|
this.d = args.d_inner;
|
||||||
this.visible = args.visible;
|
this.visible = args.visible;
|
||||||
this.cpt = this.todB(this.src1.values); //переводим значения массива в дБ
|
this.cpt = this.__todB(this.src1.values); //переводим значения массива в дБ
|
||||||
this.max = this.todB(this.src2.values); //переводим значения массива в дБ
|
this.max = this.__todB(this.src2.values); //переводим значения массива в дБ
|
||||||
}
|
}
|
||||||
|
|
||||||
todB(arr, type) {
|
__todB(arr, type) {
|
||||||
let __limit = 3e-4; //пороговое значение
|
let __limit = 3e-4; //пороговое значение
|
||||||
if (type != undefined) {
|
if (type != undefined) {
|
||||||
switch (type) {
|
switch (type) {
|
||||||
|
@ -24,7 +24,7 @@ export class spmClass {
|
||||||
return arr.map((item) => (item = 20 * Math.log10(item / __limit)));
|
return arr.map((item) => (item = 20 * Math.log10(item / __limit)));
|
||||||
} //перевод линейных величин в дБ
|
} //перевод линейных величин в дБ
|
||||||
|
|
||||||
getdBi(d = this.d, rpm = this.frq * 60) {
|
__getdBi(d = this.d, rpm = this.frq * 60) {
|
||||||
const a = 3.135283064375708;
|
const a = 3.135283064375708;
|
||||||
const b = 4.999746694992378;
|
const b = 4.999746694992378;
|
||||||
const k = -58.16048390995372;
|
const k = -58.16048390995372;
|
||||||
|
@ -50,35 +50,35 @@ export class spmClass {
|
||||||
return a * getDLogUnitValue(d) + b * getRpmLogUnitValue(rpm) + k;
|
return a * getDLogUnitValue(d) + b * getRpmLogUnitValue(rpm) + k;
|
||||||
} //расчет естественного уровня вибрации dBi
|
} //расчет естественного уровня вибрации dBi
|
||||||
|
|
||||||
getdBc() {
|
__getdBc() {
|
||||||
return Math.sqrt(this.cpt.reduce((acc, item) => (acc + item ** 2), 0) / this.cpt.length);
|
return Math.sqrt(this.cpt.reduce((acc, item) => (acc + item ** 2), 0) / this.cpt.length);
|
||||||
} //вычисляем ковровый уровень (СКЗ) в дБ
|
} //вычисляем ковровый уровень (СКЗ) в дБ
|
||||||
|
|
||||||
getdBm() {
|
__getdBm() {
|
||||||
return Math.max(...this.max);
|
return Math.max(...this.max);
|
||||||
} //вычисляем максимальную амплитуду импульсов в дБ
|
} //вычисляем максимальную амплитуду импульсов в дБ
|
||||||
|
|
||||||
getdBn() {
|
__getdBn() {
|
||||||
return this.getdBm() - this.getdBi()
|
return this.__getdBm() - this.__getdBi()
|
||||||
} //нормализованное значение амплитуды в дБ
|
} //нормализованное значение амплитуды в дБ
|
||||||
|
|
||||||
getLR() {
|
__getLR() {
|
||||||
let __max0 = this.max.slice(0) //делаем копию массива для сортировки
|
let __max0 = this.max.slice(0) //делаем копию массива для сортировки
|
||||||
let __maxSort = __max0.sort((a, b) => (b - a)); //сортируем массив по убыванию
|
let __maxSort = __max0.sort((a, b) => (b - a)); //сортируем массив по убыванию
|
||||||
let __max40 = __maxSort.slice(0, 40); //выделяем 40 первых (максимальных) значений из массива
|
let __max40 = __maxSort.slice(0, 40); //выделяем 40 первых (максимальных) значений из массива
|
||||||
return __max40.reduce((acc, item) => (acc + item), 0) / __max40.length;
|
return __max40.reduce((acc, item) => (acc + item), 0) / __max40.length;
|
||||||
} //определяем LR (среднее из 40 импульсов)
|
} //определяем LR (среднее из 40 импульсов)
|
||||||
|
|
||||||
getHR() {
|
__getHR() {
|
||||||
let __max1000 = this.max.slice(0, this.max.length / 2); //выделяем 1000 значений из массива
|
let __max1000 = this.max.slice(0, this.max.length / 2); //выделяем 1000 значений из массива
|
||||||
return Math.sqrt(__max1000.reduce((acc, item) => (acc + item ** 2), 0) / __max1000.length); //вычисляем HR (СКЗ) в дБ
|
return Math.sqrt(__max1000.reduce((acc, item) => (acc + item ** 2), 0) / __max1000.length); //вычисляем HR (СКЗ) в дБ
|
||||||
} //вычисляем HR (СКЗ) в дБ
|
} //вычисляем HR (СКЗ) в дБ
|
||||||
|
|
||||||
getWave() {
|
getWave() {
|
||||||
let __dBm = this.getdBm();
|
let __dBm = this.__getdBm();
|
||||||
let __dBc = this.getdBc();
|
let __dBc = this.__getdBc();
|
||||||
let __LR = this.getLR();
|
let __LR = this.__getLR();
|
||||||
let __HR = this.getHR();
|
let __HR = this.__getHR();
|
||||||
|
|
||||||
if (this.visible == true) {
|
if (this.visible == true) {
|
||||||
let __canvas = gtl.plots.add("Impulseform");
|
let __canvas = gtl.plots.add("Impulseform");
|
||||||
|
@ -130,7 +130,7 @@ export class spmClass {
|
||||||
getResult() {
|
getResult() {
|
||||||
let __result = {}; //результат
|
let __result = {}; //результат
|
||||||
let __state = "Норма"; //общее состояние
|
let __state = "Норма"; //общее состояние
|
||||||
let __dBn = this.getdBn();
|
let __dBn = this.__getdBn();
|
||||||
let __wav = this.getWave(); //рисуем форму сигнала и получаем пороги
|
let __wav = this.getWave(); //рисуем форму сигнала и получаем пороги
|
||||||
|
|
||||||
switch (true) {
|
switch (true) {
|
||||||
|
|
|
@ -306,7 +306,7 @@ export function getAusp(args) {
|
||||||
__ausp.window = gtl.spec.rectangular; //тип окна
|
__ausp.window = gtl.spec.rectangular; //тип окна
|
||||||
__ausp.smoothing_factor = 100; //коэффициент сглаживания спектра
|
__ausp.smoothing_factor = 100; //коэффициент сглаживания спектра
|
||||||
__ausp.smoothed_line_color = 0xFFFF00; //цвет средней линии
|
__ausp.smoothed_line_color = 0xFFFF00; //цвет средней линии
|
||||||
__ausp.harm_tolerance = __ausp.resolution; //диапазон поиска гармоник +/-
|
__ausp.harm_tolerance = 1; //диапазон поиска гармоник +/-
|
||||||
return __ausp;
|
return __ausp;
|
||||||
}; //построение спектра вибрации
|
}; //построение спектра вибрации
|
||||||
|
|
||||||
|
@ -324,7 +324,7 @@ export function getSpen(args) {
|
||||||
__spen.window = gtl.spec.rectangular; //тип окна
|
__spen.window = gtl.spec.rectangular; //тип окна
|
||||||
__spen.smoothing_factor = 100; //коэффициент сглаживания спектра
|
__spen.smoothing_factor = 100; //коэффициент сглаживания спектра
|
||||||
__spen.smoothed_line_color = 0xFFFF00; //цвет средней линии
|
__spen.smoothed_line_color = 0xFFFF00; //цвет средней линии
|
||||||
__spen.harm_tolerance = __spen.resolution; //диапазон поиска гармоник +/-
|
__spen.harm_tolerance = 1; //диапазон поиска гармоник +/-
|
||||||
|
|
||||||
return __spen;
|
return __spen;
|
||||||
}; //построение спектра огибающей
|
}; //построение спектра огибающей
|
||||||
|
|
Loading…
Reference in New Issue