diff --git a/separate/ir-defects.js b/separate/ir-defects.js deleted file mode 100644 index 273409e..0000000 --- a/separate/ir-defects.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; - -var imp = gtl.import("user-functions.js"); - -export function vk() { - var spen_BPFI2 = spen.add_harms_set(imp.BPFI(), spen.frequency / imp.BPFI(), 0xff990090, 1); //раковины на внутреннем кольце "фиолетовый" - for (let i = 0; i <= 2; i++) { spen_BPFI2.harms[i].tolerance = (1 + i) * imp.BPFI() * imp.tolerance() }; - spen_BPFI2.name = 'Раковины на внутреннем кольце'; - - var Defect = false; - - //биение вала - if ( - spen.harms_sets[1].get_count(0, 1) >= 1 - ) { - Defect = true; - for (let i = 0; i <= 2; i++) { - if (spen_BPFI2.harms[i].is_present == true) - gtl.log.info("Раковины на внутреннем кольце. Признаки в ES " + (i + 1) + "Fв +/- Fвр", imp.deep_factor(spen_BPFI2.harms[i].amplitude, spen_BPFI2.harms[i].base)); - } - } - else - gtl.log.info("Раковины на внутреннем кольце", "Признаков дефекта не обнаружено"); - - return Defect; -} diff --git a/separate/rolling-bearing.js b/separate/rolling-bearing.js deleted file mode 100644 index 3826610..0000000 --- a/separate/rolling-bearing.js +++ /dev/null @@ -1,249 +0,0 @@ -"use strict"; -var signals = gtl.options.record.signalsModel; -var options = gtl.options; -var record = gtl.options.record; -var point = gtl.options.point; - -var imp = gtl.import("user-functions.js"); -var val = gtl.import("shaft-defects.js"); -var vk = gtl.import("ir-defects.js"); - -//настройки для датчика оборотов -var filter_freq = gtl.add_filter_iir(gtl.analog_inputs[record.tachoOptions.tachoChannel]); //объявление переменной фильтра -filter_freq.kind = gtl.filter_iir.butterworth; //тип окна -filter_freq.type = gtl.filter_iir.lowpass; //тип фильтра (ФНЧ) -filter_freq.order = 8; //порядок фильтра -filter_freq.frequency = 10; //граничная частота фильтра - -//определение частоты вращения -var freq = gtl.add_value_freq(filter_freq); -freq.time = 1; -freq.avg_cnt = 6; -//gtl.diagnostic.interval = /*1*/10; - -//[Блок настройки параметров измерений] -//мониторинговый спектр вибрации -var ausp2 = gtl.add_ausp(gtl.analog_inputs[signals[0].signalChannel]); //назначение переменной спектра вибрации -ausp2.name = "AUSPm"; //присвоение имени спектра -ausp2.color = 0x0000ffff; //цвет линии спектра -ausp2.frequency = 1600; //граничная частота спектра -ausp2.lines = 1600; //разрешение спектра (количество линий) -ausp2.average = 6; //количество усреднений -ausp2.unit = gtl.spec.db; //отображение в дБ - -//спектр вибрации -var ausp = gtl.add_ausp(gtl.analog_inputs[signals[0].signalChannel]); //назначение переменной спектра вибрации -ausp.name = "AUSPd"; //присвоение имени спектра -ausp.color = 0x0000ff00; //цвет линии спектра -//ausp.frequency = 1600; //граничная частота спектра -ausp.lines = 1600; //разрешение спектра (количество линий) -ausp.average = 6; //количество усреднений -ausp.unit = gtl.spec.db; //отображение в дБ -ausp.smoothing_factor = 50; //коэффициент сглаживания спектра -ausp.smoothed_line_color = 0x000000ff; //цвет линии сглаживания (средней линии) -ausp.peak_level = 20; //порог обнаружения гармоник -ausp.harm_tolerance = ausp.resolution; //диапазон поиска гармоник +/- - -//фильтр для формирования спектра огибающей -var n = 3; //количество долей октавного фильтра -var kf = (2 ** (1 / n) - 1) / ((2 ** (1 / n)) ** (1 / 2));//коэффициент для полосового фильтра -var filter_spen = gtl.add_filter_iir(gtl.analog_inputs[signals[0].signalChannel]); //назначение переменной фильтра -filter_spen.kind = gtl.filter_iir.butterworth; //тип окна -filter_spen.type = gtl.filter_iir.bandpass; //тип фильтра (полосовой) -filter_spen.order = 10; //порядок фильтра -filter_spen.frequency = 6400; //центральная частота полосового фильтра -//filter_spen.frequency = 6013.41 * Math.log(0.266935 * imp.FREQ() + 1.1201); //расчетная центральная частота полосового фильтра -filter_spen.color = 255; -filter_spen.width = kf * filter_spen.frequency; //ширина полосы фильтра - -//спектр огибающей -var spen = gtl.add_spen(filter_spen); //назначение переменной спектра огибающей -spen.name = "SPEN"; //присвоение имени спектра огибающей -spen.color = 0x00ff0000; //цвет линии спектра огибающей -//spen.frequency = spen_frequency(); //граничная частота спектра огибающей -//spen.lines = spen_lines(); //разрешение спектра огибающей (количество линий) -spen.average = 8; //количество усреднений -spen.unit = gtl.spec.db; //отображение в дБ -spen.window = gtl.spec.hann; //окно -spen.smoothing_factor = 100; //коэффициент сглаживания спектра -spen.smoothed_line_color = 0xff004dff; //цвет средней линии -spen.peak_level = 10; //порог обнаружения гармоник -spen.harm_tolerance = spen.resolution; //диапазон поиска гармоник +/- - -//RMS и Amplitude в диапазоне спектра огибающей (контроль работы сил трения) -var rms_spen = gtl.add_value_rms(filter_spen); //назначение переменной RMS (spen) -var ampl_spen = gtl.add_value_ampl(filter_spen); //назначение переменной Amplitude (spen) -rms_spen.name = "RMS (spen)" //присвоение имени RMS (spen) -rms_spen.time = 0.5; //интервал расчета RMS (spen) -ampl_spen.time = 0.5; //интервал расчета Amplitude (spen) -rms_spen.avg_cnt = 4; //количество усреднений RMS (spen) -ampl_spen.avg_cnt = 4; //количество усреднений Amplitude (spen) - -//RMS и Amplitude в УВЧ диапазоне 10-25 кГц (контроль разрыва масляной пленки) -var filter_uhf = gtl.add_filter_iir(gtl.analog_inputs[signals[0].signalChannel]); //назначение переменной фильтра (предварительный) -filter_uhf.kind = gtl.filter_iir.butterworth; //тип окна -filter_uhf.type = gtl.filter_iir.bandpass; //тип фильтра (полосовой) -filter_uhf.order = 10; //порядок фильтра -filter_uhf.frequency = 17500; //центральная частота полосового фильтра -filter_uhf.width = 15000; //ширина полосы фильтра - -var rms_uhf = gtl.add_value_rms(filter_uhf); //назначение переменной RMS -var ampl_uhf = gtl.add_value_ampl(filter_uhf); //назначение переменной Amplitude -rms_uhf.name = "RMS (uhf)" //присвоение имени RMS (uhf) -rms_uhf.time = 0.5; //интервал расчета RMS (uhf) -ampl_uhf.time = 0.5; //интервал расчета Amplitude (uhf) -rms_uhf.avg_cnt = 4; //количество усреднений RMS (uhf) -ampl_uhf.avg_cnt = 4; //количество усреднений Amplitude (uhf) - -//Виброскорость в дипазоне 2-1000 Гц (вибромониторинг) -var filter2_1000 = gtl.add_filter_iir(gtl.analog_inputs[signals[0].signalChannel]); //назначение переменной фильтра (предварительный) -filter2_1000.kind = gtl.filter_iir.butterworth; //тип окна -filter2_1000.type = gtl.filter_iir.bandpass; //тип фильтра (полосовой) -filter2_1000.order = 10; //порядок фильтра -filter2_1000.frequency = 501; //центральная частота полосового фильтра -filter2_1000.width = 998; //ширина полосы фильтра -var filter2_1000v = gtl.add_intg(filter2_1000); // интегрирование -filter2_1000v.taps = 1; // степень интегрирования (скорость из ускорения - 1-нарное) - -var rms_v2 = gtl.add_value_rms(filter2_1000v); //назначение переменной RMS(V) -rms_v2.name = "RMS(V) 2-1000 Гц" //присвоение имени RMS(V) -rms_v2.time = 0.5; //интервал расчета RMS(V) -rms_v2.avg_cnt = 4; //количество усреднений RMS(V) - -//Виброскорость в дипазоне 10-1000 Гц (вибромониторинг) -var filter10_1000 = gtl.add_filter_iir(gtl.analog_inputs[signals[0].signalChannel]); //назначение переменной фильтра (предварительный) -filter10_1000.kind = gtl.filter_iir.butterworth; //тип окна -filter10_1000.type = gtl.filter_iir.bandpass; //тип фильтра (полосовой) -filter10_1000.order = 10; //порядок фильтра -filter10_1000.frequency = 505; //центральная частота полосового фильтра -filter10_1000.width = 990; //ширина полосы фильтра -var filter10_1000v = gtl.add_intg(filter10_1000); // интегрирование -filter10_1000v.taps = 1; // степень интегрирования (скорость из ускорения - 1-нарное) - -var rms_v10 = gtl.add_value_rms(filter10_1000v); //назначение переменной RMS(V) -rms_v10.name = "RMS(V) 10-1000 Гц" //присвоение имени RMS(V) -rms_v10.time = 0.5; //интервал расчета RMS(V) -rms_v10.avg_cnt = 4; //количество усреднений RMS(V) - -//[Диагностика] -gtl.diagnostic.interval = freq.time * freq.avg_cnt; -let state = record.tachoOptions.tachoState; //начальное состояние после выбора источника тахо сигнала -let acq_time = 0; - -function diagnose() { - switch (state) { - case 0: // считаем частоту вращения и настраиваем спектры - if (imp.INSTABILITY() > imp.tolerance()) { - gtl.log.info("Критическая нестабильность частоты вращения, %", imp.INSTABILITY() * 100); - gtl.log.info("Результат:", "Диагностика прервана"); - //gtl.diagnostic.stop(); //принудительная остановка диагностики - - let __result = { - Result: false - }; - gtl.results = __result; - }; - - if (imp.FREQ() <= imp.FREQNESS()) { - gtl.log.info("Частота вращения меньше минимально рекомендуемой", "Минимально рекомендуемая частота: " + imp.FREQNESS()); - }; - - //установка стандартной ширины спектра огибающей и количества линий спектра - spen.frequency = imp.standart_width(imp.spec_width().es); - spen.lines = imp.standart_lines(imp.spec_lines()); - filter_spen.frequency = imp.filter_frequency(); - ausp.frequency = imp.standart_width(imp.spec_width().as1); - //ausp.lines = imp.standart_lines(); - - //определение минимально необходимой длительности сигнала для проведения диагностики - var acq_times = []; - acq_times.push(ausp.acq_time); - acq_times.push(spen.acq_time); - acq_time = Math.max(...acq_times); - - gtl.diagnostic.interval = acq_time; - state = 3; - break; - - case 1: //частота вращения фиксированная - //установка стандартной ширины спектра огибающей и количества линий спектра - spen.frequency = imp.standart_width(imp.spec_width().es); - spen.lines = imp.standart_lines(imp.spec_lines()); - filter_spen.frequency = imp.filter_frequency(); - ausp.frequency = imp.standart_width(imp.spec_width().as1); - //ausp.lines = imp.standart_lines(); - - //определение минимально необходимой длительности сигнала для проведения диагностики - var acq_times = []; - acq_times.push(ausp.acq_time); - acq_times.push(spen.acq_time); - acq_time = Math.max(...acq_times); - - gtl.diagnostic.interval = acq_time; - state = 3; - break; - - case 2: //частота вращения из поля INFO (виброметр) - //установка стандартной ширины спектра огибающей и количества линий спектра - spen.frequency = imp.standart_width(imp.spec_width().es); - spen.lines = imp.standart_lines(imp.spec_lines()); - filter_spen.frequency = imp.filter_frequency(); - ausp.frequency = imp.standart_width(imp.spec_width().as1); - //ausp.lines = imp.standart_lines(); - - //определение минимально необходимой длительности сигнала для проведения диагностики - var acq_times = []; - acq_times.push(ausp.acq_time); - acq_times.push(spen.acq_time); - acq_time = Math.max(...acq_times); - - gtl.diagnostic.interval = acq_time; - state = 3; - break; - - case 3: //выполняем анализ спектов - ausp.clear_harms_sets(); //сброс отрисовки набора гармоник в спектре вибрации - spen.clear_harms_sets(); //сброс отрисовки набора гармоник в спектре огибающей - - //Вывод информации в лог - //Расчет площади спектра вибрации: спектр, начало отсчета в Гц, граничная частота спектра - var AQ = imp.spec_square(ausp2.data, 800, ausp2.frequency); - - gtl.log.info("Объект диагностики", "Подшипник качения " + options.rbModelName); - gtl.log.info("Минимально необходимая длительность сигнала", acq_time); - gtl.log.info("FREQ", imp.FREQ()); - gtl.log.info("Минимально необходимая частота вращения", imp.FREQNESS()); - gtl.log.info("Площадь спектра", AQ); - gtl.log.info("Нестабильность частоты вращения, %", imp.INSTABILITY() * 100); - gtl.log.info("FTF", imp.FTF()); - gtl.log.info("BPFO", imp.BPFO()); - gtl.log.info("BPFI", imp.BPFI()); - gtl.log.info("BSF", imp.BSF()); - gtl.log.info("Центральная частота полосового фильтра", filter_spen.frequency); - gtl.log.info("Количество долей октавного фильтра", n); - gtl.log.info("Коэффициент для октавного фильтра", kf); - gtl.log.info("Граничная частота спектра", imp.spec_width().es); - gtl.log.info("Расчетное количество линий", imp.spec_lines()); - gtl.log.info("Расчетное разрешение спектра", imp.spec_resolution()); - gtl.log.info("Расчетный коридор обнаружения, %", imp.tolerance() * 100); - gtl.log.info("Стандартная граничная частота", spen.frequency); - gtl.log.info("Стандартное кол-во линий", spen.lines); - gtl.log.info("СКЗ(A) ВЧ вибрации", rms_spen.value); - gtl.log.info("СКЗ(A) УВЧ вибрации", rms_uhf.value); - gtl.log.info("ПФ(A) в ВЧ диапазоне", ampl_spen.value / rms_spen.value); - gtl.log.info("ПФ(A) в УВЧ диапазоне", ampl_uhf.value / rms_uhf.value); - gtl.log.info("СКЗ(V) 2-1000 Гц", rms_v2.value); - gtl.log.info("СКЗ(V) 10-1000 Гц", rms_v10.value); - - let res = {}; - res["Биение вала"] = val.val(); - res["Раковины на внутреннем кольце"] = vk.vk(); - - gtl.results = res; - gtl.diagnostic.stop(); - break; - - default: - break; - } -} \ No newline at end of file diff --git a/separate/shaft-defects.js b/separate/shaft-defects.js deleted file mode 100644 index e4c5569..0000000 --- a/separate/shaft-defects.js +++ /dev/null @@ -1,32 +0,0 @@ -"use strict"; - -var imp = gtl.import("user-functions.js"); - -export function val() { - var spen_f0 = spen.add_harms_set(imp.FREQ(), 10, 0xff0000f0, 1); //биение вала - "синий" - for (let i = 0; i <= 9; i++) { spen_f0.harms[i].tolerance = (1 + i) * imp.FREQ() * imp.tolerance() }; //коридор обнаружения гармоник - spen_f0.name = 'Биение вала'; - - var Defect = false; - - //биение вала - if ( - spen.harms_sets[0].get_count(0, 2) >= 1 && spen.harms_sets[0].get_count(0, 2) <= 10 && - ausp.harms_sets[0].get_count(0, 2) >= 0 && harms_sets[0].get_count(0, 2) <= 10 - ) { - Defect = true; - for (let i = 0; i <= 9; i++) { - if (spen_f0.harms[i].is_present == true) - gtl.log.info("Биение вала. Признаки в ES " + (i + 1) + "Fвр", imp.deep_factor(rb.spen_f0.harms[i].amplitude, rb.spen_f0.harms[i].base)); - } - - for (let i = 0; i <= 9; i++) { - if (ausp_f0.harms[i].is_present == true) - gtl.log.info("Биение вала. Признаки в AS " + (i + 1) + "Fвр", ausp_f0.harms[i].amplitude); - } - } - else - gtl.log.info("Биение вала", "Признаков дефекта не обнаружено"); - - return Defect; -}