gtld2-diag-scripts/user-functions.js

288 lines
13 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

//параметры подшипника качения
var rbModelName = options.rbModelName || "No Name";
var rbVendor = options.rbVendor || "No Vendor";
var d_inner = options.rbInnerD || 0; //диаметр внутреннего кольца
var d_outer = options.rbOuterD || 0; //диаметр наружного кольца
var d_roller = options.rbRollerD || 0; //диаметр тела качения
var z = options.rbRollerCount || 0; //количество тел качения
var angle = (options.rbAngle * 3.1415926) / 180 || 0; //угол контакта тел качения (рад.)
var d_cage = (d_inner + d_outer) / 2; // диаметр сепаратора (средний диаметр)
//параметры редуктора
var gtZ1 = options.gtZ1 || 0; //количество зубьев шестерни
var gtZ2 = options.gtZ2 || 0; //количество зубьев зубчатого колеса
//параметры ременной передачи
var bdD1 = options.bdD1 || 0; //диаметр ведущего шкива
var bdD2 = options.bdD2 || 0; //диаметр ведомого шкива
var bdL = options.bdL || 0; //длинна ремня
//параметры зубчатой ременной передачи
var cbdZ1 = options.cbdZ1 || 0; //количество зубьев ведущего шкива
var cbdZ2 = options.cbdZ2 || 0; //количество зубьев ведомого шкива
var cbdZ3 = options.cbdZ3 || 0; //количество зубьев ремня
//параметры насоса
var pmBlades = options.pmBlades || 0; //количество лопастей насосного колеса
//параметры планетарной передачи
var pgZ1 = options.pgZ1 || 0; //количество зубьев солнца
var pgZ2 = options.pgZ2 || 0; //количество зубьев саттелитов
var pgZ3 = options.pgZ3 || 0; //количество зубьев короны
var pgN = options.pgN || 0; //количество саттелитов
//параметры турбины
var trBlades = options.trBlades || 0; //количество лопастей крыльчатки турбины
//параметры электродвигателя
//var trBlades = options.trBlades || 0; //количество лопастей крыльчатки турбины
export function FREQ() {
let FR = 0;
switch (record.tachoOptions.tachoState) {
case 0:
FR = freq.value * options.tachoRatio;
break;
case 1:
FR = record.tachoOptions.tachoValue * options.tachoRatio;
break;
case 2:
FR = record.tachoOptions.tachoFromInfo * options.tachoRatio;
break;
}; return FR;
}; //определение частоты вращения в зависимости от источника тахо сигнала (FREQ)
export function INSTABILITY() {
let freq_max = Math.max(...freq.values);
let freq_min = Math.min(...freq.values);
let instability = (freq_max - freq_min) / freq.value;
return instability;
}; //нестабильность частоты вращения в %
//определение вспомогательных коэффициентов k1 и k2 для подшипников качения
var k1 = 0.5 * (1 - (d_roller / d_cage) * Math.cos(angle));
var k2 = 0.5 * (1 + (d_roller / d_cage) * Math.cos(angle));
export function FREQNESS() {
let R = (d_inner / 2) + (d_roller / 2); //расстояние до центра тяжести тела качения
let freqness = (Math.sqrt(9.81 / (4 * (Math.PI ** 2) * R / 1000))) / k1;
return freqness;
}; //минимально необходимая частота вращения для компенсации силы тяжести центробежной силой
export function FTF() { return k1 * FREQ(); }; //частота вращения сепаратора (FTF)
export function BPFO() { return k1 * FREQ() * z; }; //частота перекатывания тел качения по наружному кольцу (BPFO)
export function BPFI() { return k2 * FREQ() * z; }; //частота перекатывания тел качения по внутреннему кольцу (BPFI)
export function BSF() { return 2 * FREQ() * (d_cage / d_roller) * k1 * k2; }; //частота вращения (контакта) тел качения (BSF)
export function BSFTF() { return k1 * FREQ(); }; //частота вращения сепаратора (перемещения тел качения)
export function BSNUT() { return k1 * FREQ() * z; }; //частота перекатывания тел качения по гайке
export function BSSCR() { return k2 * FREQ() * z; }; //частота перекатывания тел качения по винту
export function BSBAL() { return 2 * FREQ() * (d_cage / d_roller) * k1 * k2; }; //частота вращения (контакта) тел качения
export function BDF2() { return FREQ() * (bdD1 / bdD2) }; //частота вращения ведомого шкива
export function BDFB() { return FREQ() * (Math.PI * bdD1 / bdL) }; //частота вращения ремня
export function CBFZ() { return FREQ() * cbdZ1; }; //зубцовая частота
export function CBDF2() { return FREQ() * (cbdZ1 / cbdZ2) }; //частота вращения ведомого шкива
export function CBDFB() { return FREQ() * (cbdZ1 / cbdZ3) }; //частота вращения ремня
export function PMFBLD() { return FREQ() * pmBlades; }; //лопастная частота
export function GTFZ() { return FREQ() * gtZ1; }; //зубцовая частота
export function GTF2() { return FREQ() * (gtZ1 / gtZ2); }; //частота вращения второго вала редуктора
export function PGF2() { return (0.5 * FREQ() * pgZ1) / (pgZ1 + pgZ2); }; //частота вращения выходного вала планетарной передачи
export function PGFSAT() { return (0.5 * FREQ()) * (pgZ1 / pgZ2) * ((pgZ1 + 2 * pgZ2) / (pgZ1 + pgZ2)); }; //частота вращения саттелита
export function PGFZ() { return pgZ2 * PGFSAT() }; //зубцовая частота
export function TRFBLD() { return FREQ() * trBlades; }; //лопастная частота
export function filter_frequency() {
let filter = 6013.41 * Math.log(0.266935 * imp.FREQ() + 1.1201);
return filter;
}; //расчетная центральная частота полосового фильтра для спектра огибающей
export function filter_width(number) {
let n = 3;
if (number != null) { n = number };
let kf = (2 ** (1 / n) - 1) / ((2 ** (1 / n)) ** (1 / 2)); //коэффициент для полосового фильтра
let width = kf * filter_frequency();
return width;
}; //ширина фильтра спектра огибающей
export function spec_width() {
let flim = {};
switch (options.objectType) {
case 0: //объект не выбран
break;
case 1: //подшипник скольжения
flim = { as0: 1600, as1: 800, es: 20 * FREQ() };
break;
case 2: //подшипник качения
flim = { as0: 1600, as1: 800, es: 3 * BPFI() + 4 * FREQ() };
break;
case 3: //ШВП
flim = { as0: 1600, as1: 800, es: 3 * BPFI() + 4 * FREQ() };
break;
case 4: //редуктор
flim = { as0: 1600, as1: 800, es: 3 * GTFZ() + 4 * FREQ() };
break;
case 5: //ременная передача
break;
case 6: //зубчатый ремень
break;
case 7: //помпа
flim = { as0: 1600, as1: 800, es: 3 * PMFBLD() + 4 * FREQ() };
break;
case 8: //планетарый редуктор
flim = { as0: 1600, as1: 800, es: 3 * PGFZ() + 4 * FREQ() };
break;
case 9: //турбина
flim = { as0: 1600, as1: 800, es: 3 * TRFBLD() + 4 * FREQ() };
break;
case 10: //электродвигатель
break;
}; return flim;
}; //ширина спектров вибрации
export function spec_resolution() {
let res = 0;
switch (options.objectType) {
case 0: //объект не выбран
break;
case 1: //подшипник скольжения
res = FREQ() / 8;
break;
case 2: //подшипник качения
res = FREQ() / 8;
break;
case 3: //ШВП
break;
case 4: //редуктор
res = FREQ() / 8;
break;
case 5: //ременная передача
res = BDFB() / 4;
break;
case 6: //зубчатый ремень
res = CBDFB() / 4;
break;
case 7: //помпа
res = FREQ() / 8;
break;
case 8: //планетарый редуктор
res = PGF2() / 8;
break;
case 9: //турбина
res = FREQ() / 8;
break;
case 10: //электродвигатель
break;
}; return res;
}; //частотное разрешение (разделение двух гармоник с минимальной частотой)
export function spec_lines() { return spec_width().es / spec_resolution(); }; //минимальное количество линий спектра
export function tolerance() {
let tol = 0;
switch (options.objectType) {
case 0: //объект не выбран
break;
case 1: //подшипник скольжения
break;
case 2: //подшипник качения
tol = (2 * FTF()) / (5 * BPFO());
break;
case 3: //ШВП
break;
case 4: //редуктор
tol = (2 * FREQ()) / (5 * GTFZ());
break;
case 5: //ременная передача
break;
case 6: //зубчатый ремень
break;
case 7: //помпа
break;
case 8: //планетарый редуктор
tol = (2 * PGF2()) / (5 * PGFZ());
break;
case 9: //турбина
break;
case 10: //электродвигатель
break;
}; return tol;
}; //максимальный коридор обнаружения гармоник (tolerance)
export function standart_width(width) {
let STFRQ = 0;
switch (true) {
case width <= 50:
STFRQ = 50;
break;
case width <= 100:
STFRQ = 100;
break;
case width <= 200:
STFRQ = 200;
break;
case width <= 400:
STFRQ = 400;
break;
case width <= 800:
STFRQ = 800;
break;
default:
STFRQ = 1600;
break;
}; return STFRQ;
}; //стандартная ширина спектра
export function standart_lines(lines) {
let STLNS = 0;
switch (true) {
case lines <= 200:
STLNS = 200;
break;
case lines <= 400:
STLNS = 400;
break;
case lines <= 800:
STLNS = 800;
break;
case lines <= 1600:
STLNS = 1600;
break;
default:
STLNS = 3200;
break;
}; return STLNS;
}; //стандартное количество линий спектра
export function spec_square(data, bnd, frq) {
let lines = data.length; //определение количества линий спектра вибрации
let res = frq / lines; //определение частотного разрешения спектра вибрации (основание прямоугольной трапеции)
let start = 1; //переменная для определения стартового индекса в массиве
let S = 0; //переменная расчетной площади спектра вибрации
if (bnd !== 0) { start = lines - Math.round((frq - bnd) / res) }; //начальная точка отсчета в массиве (стартовый индекс)
for (let i = start - 1; i <= lines - 2; i++) { S = S + res * ((data[i] + data[i + 1]) / 2) }; //вычисляем площадь спектра вибрации
return S;
}; //определение площади спектра
export function mod_factor(ampl, base) {
let dl = (ampl - base); //разность уровней гармонической и случайной составляющей вибрации
let df = spec_resolution() / filter_width(); //отношение ширины фильтра к частотному разрешению спектра
let mod = Math.sqrt((10 ** (dl / 10) - 1) * df);
return mod;
}; //определение условной глубины модуляции
export function deep_factor(ampl, base) {
let deep = (ampl - base) / (ampl + base) * 100;
return deep;
}; //определение условной глубины модуляции
export function ampl_factor(ampl, base) {
let crest = ampl / base;
return crest;
}; //определение амплитудного коэффициента