55 lines
3.1 KiB
JavaScript
55 lines
3.1 KiB
JavaScript
|
"use strict";
|
||
|
|
||
|
var ufc = gtl.import("user-functions.js");
|
||
|
|
||
|
export function rb_mtx(spec, isDeep) {
|
||
|
var num = 6; //глубина матрицы (количество гармоник)
|
||
|
var level = 0; //уровень развития дефекта
|
||
|
var res = {}; //результат
|
||
|
|
||
|
var set = {
|
||
|
FTF: { nm: "Частота вращения сепаратора", fn: ufc.FTF(), md: 0, cl: 0xffff0000 },
|
||
|
FREQ: { nm: "Частота вращения", fn: ufc.FREQ(), md: 0, cl: 0xff0000f0 },
|
||
|
BSF: { nm: "Частота вращения (контакта) тел качения", fn: ufc.BSF(), md: ufc.FTF(), cl: 0xffFFB841 },
|
||
|
BPFO: { nm: "Частота перекатывания тел качения по наружному кольцу", fn: ufc.BPFO(), md: ufc.FTF(), cl: 0xffED3CCA },
|
||
|
BPFI: { nm: "Частота перекатывания тел качения по внутреннему кольцу", fn: ufc.BPFI(), md: ufc.FREQ(), cl: 0xff990090 }
|
||
|
}; //набор функциональных частот
|
||
|
|
||
|
var rows = Object.keys(set); //массив ключей объекта (наборов гармонических рядов)
|
||
|
//присваиваем набору гармоник переменную, добавляем гармоники: частота, кол-во (default = 10), цвет, вес.
|
||
|
for (let i = 0; i <= rows.length - 1; i++) {
|
||
|
let lines = rows[i];
|
||
|
let idx = 0; //индекс гармонического ряда
|
||
|
let nms = set[lines].nm; //название гармонического ряда
|
||
|
let frq = set[lines].fn; //расчетная частота
|
||
|
let mod = set[lines].md; //модулирующая частота
|
||
|
let clr = set[lines].cl; //предустановленный цвет
|
||
|
let arr = []; //массив обнаруженных гармоник
|
||
|
|
||
|
lines = spec.add_harms_set(frq, num, clr, 2); //строим набор частот (гармонический ряд)
|
||
|
lines.name = nms;
|
||
|
idx = spec.index_of_harms_set(lines); //определяем индекс набора частот
|
||
|
if (mod != 0) { spec.harms_sets[idx].modulate(mod, 2, clr, 0.5) }; //строим амплитудную модуляцию
|
||
|
for (let j = 0; j <= num - 1; j++) {
|
||
|
lines.harms[j].tolerance = (j + 1) * frq * ufc.tolerance(); //устанавливаем коридор обнаружения гармоники
|
||
|
if (lines.harms[j].is_present == true) {
|
||
|
switch (isDeep) {
|
||
|
case true:
|
||
|
level = Math.round(ufc.mod_factor(lines.harms[j].amplitude, lines.harms[j].base));
|
||
|
break;
|
||
|
case false:
|
||
|
level = Math.round(lines.harms[j].amplitude);
|
||
|
break;
|
||
|
default:
|
||
|
break;
|
||
|
};
|
||
|
arr.push(level);
|
||
|
} else { arr.push(0) };
|
||
|
res[rows[i]] = arr;
|
||
|
};
|
||
|
};
|
||
|
|
||
|
return res;
|
||
|
};
|
||
|
|