gtld2-diag-scripts/ballscrew/bsDefs.js

53 lines
2.2 KiB
JavaScript

"use strict";
export function bs_defs(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 get_note(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 get_level(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 = get_note(arr);
res[rows[i]] = note + ' ' + des[rows[i]].ds + ': ' + get_level(lvl, des[rows[i]][key]) + ' (' + lvl + ')';
};
};
return res;
};