214 lines
8.7 KiB
JavaScript
214 lines
8.7 KiB
JavaScript
export function getFreq(args) {
|
||
let FR = {}; //объект данных по частоте вращения
|
||
switch (record.tachoOptions.tachoState) {
|
||
case 0:
|
||
if (args != undefined) {
|
||
let __src = args.src; //источник сигнала частоты вращения
|
||
let __frq = args.freq; //граничная частота фильтрации сигнала
|
||
let __time = args.time; //интервал измерения частоты вращения
|
||
let __avg = args.avg; //количество отсчетов для усреднения
|
||
let __dc = args.dc; //порог срабатывания счетчика
|
||
|
||
let __fltr = gtl.add_filter_iir(__src);
|
||
__fltr.kind = gtl.filter_iir.butterworth;
|
||
__fltr.type = gtl.filter_iir.lowpass;
|
||
__fltr.order = 10;
|
||
__fltr.frequency = __frq;
|
||
|
||
let __freq = gtl.add_value_freq(__fltr);
|
||
__freq.time = __time;
|
||
__freq.avg_cnt = __avg;
|
||
__freq.dc = __dc;
|
||
FR["value"] = __freq.value * options.tachoRatio;
|
||
FR["values"] = __freq.values;
|
||
FR["time"] = args.time * args.avg;
|
||
} else {
|
||
FR["value"] = 0;
|
||
FR["values"] = [0];
|
||
FR["time"] = 0;
|
||
};
|
||
break;
|
||
case 1:
|
||
FR["value"] = record.tachoOptions.tachoValue * options.tachoRatio;
|
||
FR["values"] = [0];
|
||
FR["time"] = 0;
|
||
break;
|
||
case 2:
|
||
FR["value"] = record.tachoOptions.tachoFromInfo * options.tachoRatio;
|
||
FR["values"] = [0];
|
||
FR["time"] = 0;
|
||
break;
|
||
};
|
||
return FR;
|
||
}; //определение частоты вращения в зависимости от источника тахо сигнала
|
||
|
||
export function getAusp(args) {
|
||
let __ausp = gtl.add_ausp(args.src);
|
||
__ausp.name = args.name;
|
||
__ausp.frequency = args.frequency;
|
||
__ausp.resolution = args.resolution;
|
||
__ausp.average = args.average;
|
||
__ausp.unit = args.view;
|
||
if (args.level != undefined) { __ausp.peak_level = args.level }; //порог обнаружения гармоник
|
||
|
||
__ausp.overlap = 0.5; //коэффициент перекрытия
|
||
__ausp.window = gtl.spec.rectangular; //тип окна
|
||
__ausp.smoothing_factor = 50; //коэффициент сглаживания спектра
|
||
__ausp.smoothed_line_color = 0x0000FF; //цвет средней линии
|
||
__ausp.harm_tolerance = __ausp.resolution; //диапазон поиска гармоник +/-
|
||
return __ausp;
|
||
}; //построение спектра вибрации
|
||
|
||
export function getSpen(args) {
|
||
let __spen = gtl.add_spen(args.src);
|
||
__spen.name = args.name;
|
||
__spen.frequency = args.frequency;
|
||
__spen.resolution = args.resolution;
|
||
__spen.average = args.average;
|
||
__spen.unit = args.view;
|
||
__spen.peak_level = args.level; //порог обнаружения гармоник
|
||
|
||
__spen.overlap = 0.5; //коэффициент перекрытия
|
||
__spen.window = gtl.spec.rectangular; //тип окна
|
||
__spen.smoothing_factor = 50; //коэффициент сглаживания спектра
|
||
__spen.smoothed_line_color = 0x0000FF; //цвет средней линии
|
||
__spen.harm_tolerance = __spen.resolution; //диапазон поиска гармоник +/-
|
||
return __spen;
|
||
}; //построение спектра огибающей
|
||
|
||
export function getStdMeasures(options) {
|
||
let __source = options.src;
|
||
let __time = 0.1;
|
||
let __avg = 5;
|
||
|
||
if (options.time != undefined) { __time = options.time };
|
||
if (options.avg != undefined) { __avg = options.avg };
|
||
|
||
function getFilter(L, R) {
|
||
let __filter = gtl.add_filter_iir(__source);
|
||
__filter.kind = gtl.filter_iir.butterworth;
|
||
__filter.order = 10;
|
||
|
||
switch (L) {
|
||
case "lowpass":
|
||
__filter.type = gtl.filter_iir.lowpass;
|
||
__filter.frequency = R;
|
||
break;
|
||
|
||
case "highpass":
|
||
__filter.type = gtl.filter_iir.highpass;
|
||
__filter.frequency = R;
|
||
break;
|
||
|
||
default:
|
||
__filter.type = gtl.filter_iir.bandpass;
|
||
__filter.frequency = (R - L) / 2 + L;
|
||
__filter.width = R - L;
|
||
break;
|
||
};
|
||
|
||
return __filter;
|
||
}; //формирование фильтра
|
||
|
||
function getIntg(src, taps, scale) {
|
||
let __intg = gtl.add_intg(src);
|
||
__intg.taps = taps;
|
||
__intg.scale = scale;
|
||
|
||
return __intg;
|
||
}; //интегрирование сигнала
|
||
|
||
function getRMS(src) {
|
||
let __rms = gtl.add_value_rms(src);
|
||
__rms.time = __time;
|
||
__rms.avg_cnt = __avg;
|
||
|
||
return __rms;
|
||
}; //получение СКЗ
|
||
|
||
function getAmpl(src) {
|
||
let __ampl = gtl.add_value_ampl(src);
|
||
__ampl.time = __time;
|
||
__ampl.avg_cnt = __avg;
|
||
|
||
return __ampl;
|
||
}; //получение амплитуды
|
||
|
||
function getKurt(src) {
|
||
let __kurt = gtl.add_value_kurt(src);
|
||
__kurt.time = __time;
|
||
__kurt.avg_cnt = __avg;
|
||
|
||
return __kurt;
|
||
}; //получение эксцесса
|
||
|
||
//[Набор фильтров]
|
||
let __filter_2_200 = getFilter(2, 200);
|
||
let __filter_2_1000 = getFilter(2, 1000);
|
||
let __filter_10_1000 = getFilter(10, 1000);
|
||
let __filter_2_3000 = getFilter(2, 3000);
|
||
let __filter_2_10000 = getFilter(2, 10000);
|
||
let __filter_100_10000 = getFilter(100, 10000);
|
||
let __filter_2_5k = getFilter(2500, 5000);
|
||
let __filter_5_10k = getFilter(5000, 10000);
|
||
let __filter_10_20k = getFilter(10000, 20000);
|
||
let __filter_30_40k = getFilter(30000, 40000);
|
||
let __filter_40_80k = getFilter(40000, 80000);
|
||
|
||
//[Набор интеграторов]
|
||
let __pre_int1 = getIntg(__filter_2_1000, 1, 1000);
|
||
let __pre_int2 = getIntg(__filter_10_1000, 1, 1000);
|
||
let __pre_int3 = getIntg(__filter_2_200, 2, 1);
|
||
|
||
|
||
/*let __int1 = gtl.add_filter_iir(__pre_int1);
|
||
__int1.kind = gtl.filter_iir.butterworth;
|
||
__int1.type = gtl.filter_iir.highpass;
|
||
__int1.order = 10;
|
||
__int1.frequency = 2;*/
|
||
|
||
/*let __int2 = gtl.add_filter_iir(__pre_int2);
|
||
__int2.kind = gtl.filter_iir.butterworth;
|
||
__int2.type = gtl.filter_iir.highpass;
|
||
__int2.order = 10;
|
||
__int2.frequency = 2;*/
|
||
|
||
//[Расчет набора параметров]
|
||
let __rms_A2_3000 = getRMS(__filter_2_3000); //СКЗ виброускорения в диапазоне 2-3000 Гц
|
||
let __rms_A2_10000 = getRMS(__filter_2_10000); //СКЗ виброускорения в диапазоне 2-10000 Гц
|
||
let __rms_A100_10000 = getRMS(__filter_100_10000); //СКЗ виброускорения в диапазоне 100-10000 Гц
|
||
|
||
let __ampl_A100_10000 = getAmpl(__filter_100_10000); //амплитуда виброускорения в диапазоне 100-10000 Гц
|
||
let __ampl_full = getAmpl(__source); //амплитуда виброускорения во всем диапазоне измерения
|
||
|
||
let __rms_V2_1000 = getRMS(__pre_int1); //СКЗ виброскорости в диапазоне 2-1000 Гц
|
||
let __rms_V10_1000 = getRMS(__pre_int2); //СКЗ виброскорости в диапазоне 10-1000 Гц
|
||
let __rms_S2_200 = getRMS(__pre_int3); //СКЗ виброперемещения в диапазоне 2-200 Гц
|
||
|
||
let __kurt_full = getKurt(__source); //эксцесс во всем диапазоне измерения
|
||
let __kurt_2_5k = getKurt(__filter_2_5k); //эксцесс в полосе 2.5-5 кГц
|
||
let __kurt_5_10k = getKurt(__filter_5_10k); //эксцесс в полосе 5-10 кГц
|
||
let __kurt_10_20k = getKurt(__filter_10_20k); //эксцесс в полосе 10-20 кГц
|
||
let __kurt_30_40k = getKurt(__filter_30_40k); //эксцесс в полосе 30-40 кГц
|
||
let __kurt_40_80k = getKurt(__filter_40_80k); //эксцесс в полосе 40-80 кГц
|
||
|
||
let __result = {
|
||
rms_A2_3000: __rms_A2_3000,
|
||
rms_A2_10000: __rms_A2_10000,
|
||
rms_A100_10000: __rms_A100_10000,
|
||
ampl_A100_10000: __ampl_A100_10000,
|
||
ampl_full: __ampl_full,
|
||
rms_V2_1000: __rms_V2_1000,
|
||
rms_V10_1000: __rms_V10_1000,
|
||
rms_S2_200: __rms_S2_200,
|
||
kurt_full: __kurt_full,
|
||
kurt_2_5k: __kurt_2_5k,
|
||
kurt_5_10k: __kurt_5_10k,
|
||
kurt_10_20k: __kurt_10_20k,
|
||
kurt_30_40k: __kurt_30_40k,
|
||
kurt_40_80k: __kurt_40_80k
|
||
};
|
||
|
||
return __result;
|
||
}; //измерение стандартных параметров
|