100 lines
4.3 KiB
JavaScript
100 lines
4.3 KiB
JavaScript
|
"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();
|
|||
|
};
|