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();
|
||
};
|