82 lines
4.1 KiB
JavaScript
82 lines
4.1 KiB
JavaScript
|
"use strict";
|
|||
|
|
|||
|
var imp = gtl.import("user-functions.js");
|
|||
|
|
|||
|
export function defect() {
|
|||
|
let frq = imp.BPFI(); //функциональная чатота
|
|||
|
let num = 5; //количество отрисованных гармоник
|
|||
|
|
|||
|
//присваиваем набору гармоник переменную, добавляем гармоники: частота, кол-во (default = 10), цвет, вес.
|
|||
|
var spen_lines = spen.add_harms_set(frq, num, 0xff990090, 1); //раковины на внутреннем кольце "фиолетовый"
|
|||
|
for (let i = 0; i <= num - 1; i++) { spen_lines.harms[i].tolerance = (1 + i) * frq * imp.tolerance() };
|
|||
|
spen_lines.name = 'Раковины на внутреннем кольце';
|
|||
|
//добавляем модулирующие гармоники: частота, кол-во, цвет, вес
|
|||
|
spen.harms_sets[6].modulate(imp.FREQ(), 2, 0xff923090, 1); //модуляция Fв +/- Fвр "фиолетовый"
|
|||
|
|
|||
|
var ausp_lines = ausp.add_harms_set(frq, num, 0xff990090, 2); //раковины на внутреннем кольце "фиолетовый"
|
|||
|
for (let i = 0; i <= num - 1; i++) { ausp_lines.harms[i].tolerance = (1 + i) * frq * imp.tolerance() };
|
|||
|
ausp_lines.name = 'Раковины на внутреннем кольце';
|
|||
|
//добавляем модулирующие гармоники: частота, кол-во, цвет, вес
|
|||
|
ausp.harms_sets[2].modulate(imp.FREQ(), 2, 0xff923090, 1); //модуляция Fв +/- Fвр "фиолетовый"
|
|||
|
|
|||
|
var defect = false;
|
|||
|
var spen_signs = []; //массив признаков в спектрк огибающей
|
|||
|
var ausp_signs = []; //массив признаков в спектре вибрации
|
|||
|
var deep = 0; //глубина модуляции ВЧ составляющих
|
|||
|
var ampl = 0; //амплитуда составляющих НЧ вибрации
|
|||
|
var describe = ''; //описание степени развития дефекта
|
|||
|
var result = ''; //результат диагностики
|
|||
|
|
|||
|
//вывод количества гармоник
|
|||
|
//spen.harms_sets[0].get_count(1, 2, 1, true);
|
|||
|
//1 - начало отсчета гармоники;
|
|||
|
//2 - допуситмое количество пропущенных в ряду;
|
|||
|
//3 - количество модулирующих с одной стороны;
|
|||
|
//4 - модулирующие с двух сторон (true);
|
|||
|
|
|||
|
//раковины на внутреннем кольце
|
|||
|
if (
|
|||
|
spen.harms_sets[6].get_count(0, 0, 1) >= 3 &&
|
|||
|
ausp.harms_sets[2].get_count(0, 1, 1) >= 3
|
|||
|
) {
|
|||
|
defect = true;
|
|||
|
for (let i = 0; i <= num - 1; i++) {
|
|||
|
if (spen_lines.harms[i].is_present == true) {
|
|||
|
deep = imp.mod_factor(spen_lines.harms[i].amplitude, spen_lines.harms[i].base);
|
|||
|
spen_signs.push(deep);
|
|||
|
gtl.log.info("Раковины на внутреннем кольце. Признаки в ES " + (i + 1) + "Fв +/- Fвр", deep);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
for (let i = 0; i <= num - 1; i++) {
|
|||
|
if (ausp_lines.harms[i].is_present == true) {
|
|||
|
ampl = ausp_lines.harms[i].amplitude;
|
|||
|
ausp_signs.push(ampl);
|
|||
|
gtl.log.info("Раковины на внутреннем кольце. Признаки в AS " + (i + 1) + "Fв +/- Fвр", ampl);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
gtl.log.info("Раковины на внутреннем кольце", "Признаков дефекта не обнаружено");
|
|||
|
|
|||
|
deep = Math.max(...spen_signs) * 100;
|
|||
|
switch (true) {
|
|||
|
case deep <= 4:
|
|||
|
describe = "Слабый";
|
|||
|
break;
|
|||
|
case deep < 8:
|
|||
|
describe = "Средний";
|
|||
|
break;
|
|||
|
case deep >= 8:
|
|||
|
describe = "Сильный";
|
|||
|
break;
|
|||
|
default:
|
|||
|
describe = "None";
|
|||
|
};
|
|||
|
|
|||
|
if (defect == true) { result = "(" + deep + "%; " + describe + ")" } else { result = false };
|
|||
|
|
|||
|
return result;
|
|||
|
};
|
|||
|
|