gtld2-diag-scripts/spmMethod.js

100 lines
4.3 KiB
JavaScript
Raw Normal View History

2024-08-26 05:12:30 +03:00
"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();
};