all classes were changed

develop
aleksey_k 2024-09-09 18:14:24 +09:00
parent 8e17d04563
commit 3ec60332bf
3 changed files with 52 additions and 52 deletions

View File

@ -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; //доля непериодической энергии

View File

@ -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) {

View File

@ -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;
}; //построение спектра огибающей }; //построение спектра огибающей