245 lines
13 KiB
JavaScript
245 lines
13 KiB
JavaScript
//параметры подшипника качения
|
|
var rbModelName = options.rbModelName || "No Name";
|
|
var rbVendor = options.rbVendor || "No Vendor";
|
|
var rb_inner = options.rbInnerD || 0; //диаметр внутреннего кольца
|
|
var rb_outer = options.rbOuterD || 0; //диаметр наружного кольца
|
|
var rb_roller = options.rbRollerD || 0; //диаметр тела качения
|
|
var rb_rollerCount = options.rbRollerCount || 0; //количество тел качения
|
|
var rb_angle = (options.rbAngle * Math.PI) / 180 || 0; //угол контакта тел качения (рад.)
|
|
var rb_cage = (rb_inner + rb_outer) / 2; //диаметр сепаратора (средний диаметр)
|
|
|
|
//параметры ШВП
|
|
var bsModelName = options.bsModelName || "No Name";
|
|
var bsVendor = options.bsVendor || "No Vendor";
|
|
var bs_inner = options.bsInnerD || 0; //диаметр внутреннего кольца
|
|
var bs_outer = options.bsOuterD || 0; //диаметр наружного кольца
|
|
var bs_roller = options.bsRollerD || 0; //диаметр тела качения
|
|
var bs_rollerCount = options.bsRollerCount || 0; //количество тел качения
|
|
var bs_angle = (options.bsAngle * Math.PI) / 180 || 0; //угол контакта тел качения (рад.)
|
|
var bs_cage = (bs_inner + bs_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 rb_k1 = 0.5 * (1 - (rb_roller / rb_cage) * Math.cos(rb_angle));
|
|
var rb_k2 = 0.5 * (1 + (rb_roller / rb_cage) * Math.cos(rb_angle));
|
|
var bs_k1 = 0.5 * (1 - (bs_roller / bs_cage) * Math.cos(bs_angle));
|
|
var bs_k2 = 0.5 * (1 + (bs_roller / bs_cage) * Math.cos(bs_angle));
|
|
|
|
export function FREQNESS() {
|
|
let R = (rb_inner / 2) + (rb_roller / 2); //расстояние до центра тяжести тела качения
|
|
let freqness = (Math.sqrt(9.81 / (4 * (Math.PI ** 2) * R / 1000))) / k1;
|
|
return freqness;
|
|
}; //минимально необходимая частота вращения для компенсации силы тяжести центробежной силой
|
|
|
|
export function FTF() { return rb_k1 * FREQ(); }; //частота вращения сепаратора (FTF)
|
|
export function BPFO() { return rb_k1 * FREQ() * rb_rollerCount; }; //частота перекатывания тел качения по наружному кольцу (BPFO)
|
|
export function BPFI() { return rb_k2 * FREQ() * rb_rollerCount; }; //частота перекатывания тел качения по внутреннему кольцу (BPFI)
|
|
export function BSF() { return 2 * FREQ() * (rb_cage / rb_roller) * rb_k1 * rb_k2; }; //частота вращения (контакта) тел качения (BSF)
|
|
|
|
export function BSFTF() { return bs_k1 * FREQ(); }; //частота вращения сепаратора (перемещения тел качения)
|
|
export function BSNUT() { return bs_k1 * FREQ() * bs_rollerCount; }; //частота перекатывания тел качения по гайке
|
|
export function BSSCR() { return bs_k2 * FREQ() * bs_rollerCount; }; //частота перекатывания тел качения по винту
|
|
export function BSBAL() { return 2 * FREQ() * (bs_cage / bs_roller) * bs_k1 * bs_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 * 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 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 spec_params() {
|
|
let frq = 200; //ширина спектра
|
|
let res = 400; //частотное разрешение
|
|
function getStandart(value) {
|
|
let arr = [50, 100, 200, 400, 800, 1600, 3200, 6400, 12800]; //массив стандартных величин
|
|
let t = arr[0];
|
|
if (value >= arr[arr.length - 1]) { t = arr[arr.length - 1] } else {
|
|
for (let i = 0; i <= arr.length - 1; i++) {
|
|
if (value > arr[i]) { t = arr[i + 1] };
|
|
};
|
|
}; return t
|
|
};
|
|
|
|
switch (options.objectType) {
|
|
case 0: //объект не выбран
|
|
break;
|
|
case 1: //подшипник скольжения
|
|
frq = 20 * FREQ();
|
|
res = FREQ() / 8;
|
|
break;
|
|
case 2: //подшипник качения
|
|
frq = 5 * BPFI() + 4 * FREQ();
|
|
res = FREQ() / 8;
|
|
break;
|
|
case 3: //ШВП
|
|
frq = 5 * BPFI() + 4 * FREQ();
|
|
res = FREQ() / 8;
|
|
break;
|
|
case 4: //редуктор
|
|
frq = 3 * GTFZ() + 4 * FREQ();
|
|
res = FREQ() / 8;
|
|
break;
|
|
case 5: //ременная передача
|
|
frq = 400;
|
|
res = BDFB() / 4;
|
|
break;
|
|
case 6: //зубчатый ремень
|
|
frq = 400;
|
|
res = CBDFB() / 4;
|
|
break;
|
|
case 7: //помпа
|
|
frq = 3 * PMFBLD() + 4 * FREQ();
|
|
res = FREQ() / 8;
|
|
break;
|
|
case 8: //планетарый редуктор
|
|
frq = 3 * PGFZ() + 4 * FREQ();
|
|
res = PGF2() / 8;
|
|
break;
|
|
case 9: //турбина
|
|
frq = 3 * TRFBLD() + 4 * FREQ();
|
|
res = FREQ() / 8;
|
|
break;
|
|
case 10: //электродвигатель
|
|
frq = 400;
|
|
res = FREQ() / 8;
|
|
break;
|
|
}; return {
|
|
frequency: getStandart(frq),
|
|
lines: getStandart(getStandart(frq) / res),
|
|
resolution: getStandart(frq) / getStandart(getStandart(frq) / res)
|
|
};
|
|
};
|
|
|
|
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_params().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;
|
|
}; //определение амплитудного коэффициента
|