"use strict"; var signals = gtl.options.record.signalsModel; var options = gtl.options; var record = gtl.options.record; var point = gtl.options.point; let __mes = gtl.import("userFunctions.js"); let spmClass = gtl.import("spmClass.js").spmClass; let __frq = __mes.getFreq( /*{ src: gtl.analog_inputs[signals[0].portNumber], //источник сигнала частоты вращения freq: 10, //граничная частота фильтрации сигнала time: 1, //интервал измерения частоты вращения avg: 4, //количество отсчетов для усреднения dc: -0.05 //порог срабатывания счетчика }*/ ).value; //получаем частоту вращения //фильтр для формирования сигнала let __fltr = gtl.add_filter_iir(gtl.analog_inputs[signals[0].portNumber]); __fltr.kind = gtl.filter_iir.butterworth; //тип окна __fltr.type = gtl.filter_iir.bandpass; //тип фильтра (ФНЧ) __fltr.order = 10; //порядок фильтра __fltr.frequency = 32000; //центральная частота полосового фильтра __fltr.width = 7360; //ширина полосового фильтра //формирование амплитуд для расчета коврового уровня dBc (за 200 импульсов в сек) let __cpt = gtl.add_value_ampl(__fltr); __cpt.name = "Ковровый уровень"; __cpt.color = 0x2B6CC4; __cpt.time = 0.005; //время выборки __cpt.avg_cnt = 200; //количество отсчетов //формирование амплитуд для расчета максимального уровня dBm (максимум за 2 сек) let __max = gtl.add_value_ampl(__fltr); __max.name = "SPM импульсы"; __max.color = 0x2B6CC4; __max.time = 0.001; //время выборки __max.avg_cnt = 2000; //количество отсчетов let __imp = gtl.create_moving_max( { src: __fltr, name: "SPM форма", time: 0.001 } ); //формируем сигнал максимальных амплитуд для построения спектра let spen = __mes.getSpen( { src: __imp, //источник сигнала name: "SPM спектр огибающей", //имя спектра color: 0x00ff0000, //цвет в формате HEX frequency: 200, //граничная частота resolution: 0.25, //частотное разрешение average: 8, //количество усреднений view: gtl.spec.db, //единицы отображения (дБ) level: 5 //уровень обнаружения гармоник в дБ } ); //вычисляем спектр огибающей пиковой формы let canvas1 = gtl.plots.add("Spectral"); //[Диагностика] gtl.diagnostic.interval = gtl.acq_time; function diagnose() { let __spm = new spmClass( { src1: __cpt, //объект с массивом данных для расчета коврового уровня src2: __max, //объект с массивом данных определения маскимума импульсов freq: __frq, //частота вращения d_inner: options.rbInnerD, //диаметр внутреннего кольца подшипника visible: true } ); let __spen_tools = __mes.createTools( { spec: spen, //спектр для построения модели (объект) //set: __set, //источник данных для построения частотных линий tol: 1 //коридор обнаружения гармоники на портрете, % } ); //формируем компоненты и частотные линии на спектре огибающей canvas1.add( { color: spen.color, name: spen.name, x: spen.resolution, y: spen.data, spec_tools: __spen_tools.to_json() } ); //рисуем спектр огибающей spm gtl.results = __spm.getResult(); gtl.diagnostic.stop(); };