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; if (args.level != undefined) { __ausp.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; }; //измерение стандартных параметров