53 lines
2.2 KiB
JavaScript
53 lines
2.2 KiB
JavaScript
"use strict";
|
|
|
|
export function rbDefs(mtx, isDeep) {
|
|
var res = {}; //результат
|
|
if (isDeep = true) { var key = "dp" } else { var key = "lv" };
|
|
var des = {
|
|
FTF: { ds: "тел качения и сепаратора", dp: 8, lv: 20 },
|
|
FREQ: { ds: "внутреннего кольца", dp: 13, lv: 20 },
|
|
BSF: { ds: "тел качения", dp: 10, lv: 20 },
|
|
BPFO: { ds: "наружного кольца", dp: 15, lv: 20 },
|
|
BPFI: { ds: "внутреннего кольца", dp: 8, lv: 20 },
|
|
}; //описание функциональных частот
|
|
|
|
function getNote(harmsArr) {
|
|
let note = "Износ"; //описание характера колебаний
|
|
let cnt = 0; //количество значений в массиве
|
|
for (let i = 0; i <= harmsArr.length - 1; i++) { if (harmsArr[i] > 0) { cnt++ }; };
|
|
if (cnt >= 5) { note = "Дефект" };
|
|
if (harmsArr[1] > harmsArr[0]) { note = "Перекос" };
|
|
if (cnt > 0 && harmsArr[0] == 0 && harmsArr[1] == 0) { note = "Неидентифицированные изменения вибрации" };
|
|
return note;
|
|
};
|
|
|
|
function getLevel(lvl, thres) {
|
|
let level = "Сильный";
|
|
switch (true) {
|
|
case lvl < 0.5 * thres:
|
|
level = "Слабый";
|
|
break;
|
|
case lvl < thres:
|
|
level = "Средний";
|
|
break;
|
|
default:
|
|
break;
|
|
}; return level;
|
|
};
|
|
|
|
var rows = Object.keys(mtx); //массив ключей объекта (наборов гармоник)
|
|
for (let i = 0; i <= rows.length - 1; i++) {
|
|
let arr = mtx[rows[i]]; //массив гармоник
|
|
let lvl = Math.max(...arr); //определяем максимальное значение параметра из массива
|
|
let sum = arr.reduce(function (a, b) { return a + b }, 0); //сумма элементов массива
|
|
if (sum > 0) {
|
|
let note = getNote(arr);
|
|
res[rows[i]] = note + ' ' + des[rows[i]].ds + ': ' + getLevel(lvl, des[rows[i]][key]) + ' (' + lvl + ')';
|
|
};
|
|
};
|
|
return res;
|
|
};
|
|
|
|
|
|
|