145 lines
6.9 KiB
JavaScript
145 lines
6.9 KiB
JavaScript
|
"use strict";
|
||
|
var signals = gtl.options.record.signalsModel;
|
||
|
var options = gtl.options;
|
||
|
var record = gtl.options.record;
|
||
|
var point = gtl.options.point;
|
||
|
|
||
|
var fnc = gtl.import("userFunctions.js");
|
||
|
let maskClass = gtl.import("maskClass.js").maskClass;
|
||
|
|
||
|
var __frq = fnc.getFreq(
|
||
|
/*{
|
||
|
src: gtl.analog_inputs[signals[0].portNumber], //источник сигнала частоты вращения
|
||
|
freq: 10, //граничная частота фильтрации сигнала
|
||
|
time: 1, //интервал измерения частоты вращения
|
||
|
avg: 4, //количество отсчетов для усреднения
|
||
|
dc: -0.05 //порог срабатывания счетчика
|
||
|
}*/
|
||
|
).value; //получаем частоту вращения
|
||
|
|
||
|
let canvas0 = gtl.plots.add("Мониторинговый спектр");
|
||
|
let canvas1 = gtl.plots.add("Спектр вибраци");
|
||
|
let canvas2 = gtl.plots.add("Спектр огибающей");
|
||
|
|
||
|
var ausp2 = fnc.getAusp(
|
||
|
{
|
||
|
src: gtl.analog_inputs[signals[0].portNumber], //источник сигнала
|
||
|
name: "AUSPm", //имя спектра
|
||
|
color: 0x001E90FF, //цвет в формате HEX
|
||
|
frequency: 25600, //граничная частота
|
||
|
resolution: 16, //частотное разрешение
|
||
|
average: 6, //количество усреднений
|
||
|
view: gtl.spec.db, //единицы отображения (дБ)
|
||
|
}
|
||
|
); //мониторинговый спектр
|
||
|
|
||
|
var ausp = fnc.getAusp(
|
||
|
{
|
||
|
src: gtl.analog_inputs[signals[0].portNumber], //источник сигнала
|
||
|
name: "AUSPd", //имя спектра
|
||
|
color: 0x0000FF00, //цвет в формате HEX
|
||
|
frequency: 800, //граничная частота
|
||
|
resolution: 1, //частотное разрешение
|
||
|
average: 6, //количество усреднений
|
||
|
view: gtl.spec.db, //единицы отображения (дБ)
|
||
|
level: 20 //уровень обнаружения гармоник
|
||
|
}
|
||
|
); //диагностический спектр вибрации
|
||
|
|
||
|
//фильтр для формирования спектра огибающей
|
||
|
var filter_spen = gtl.add_filter_iir(gtl.analog_inputs[signals[0].portNumber]); //назначение переменной фильтра
|
||
|
filter_spen.kind = gtl.filter_iir.butterworth; //тип окна
|
||
|
filter_spen.type = gtl.filter_iir.bandpass; //тип фильтра (полосовой)
|
||
|
filter_spen.order = 10; //порядок фильтра
|
||
|
filter_spen.frequency = 6400; //центральная частота полосового фильтра
|
||
|
filter_spen.width = 1482; //ширина полосы фильтра
|
||
|
|
||
|
var spen = fnc.getSpen(
|
||
|
{
|
||
|
src: filter_spen, //источник сигнала
|
||
|
name: "SPEN", //имя спектра
|
||
|
color: 0x00ff0000, //цвет в формате HEX
|
||
|
frequency: 200, //граничная частота
|
||
|
resolution: 0.25, //частотное разрешение
|
||
|
average: 8, //количество усреднений
|
||
|
view: gtl.spec.db, //единицы отображения (дБ)
|
||
|
level: 10 //уровень обнаружения гармоник
|
||
|
}
|
||
|
); //спектр огибающей
|
||
|
|
||
|
//[Диагностика]
|
||
|
gtl.diagnostic.interval = gtl.acq_time;
|
||
|
let __result = {}; //объект для формирования результата
|
||
|
|
||
|
function diagnose() {
|
||
|
|
||
|
var __set = {
|
||
|
"Износ наружного кольца": [0x42AAFF, fnc.BPFO(__frq), 6, 13, 0, 0.3],
|
||
|
"Перекос наружного кольца": [0x4285B4, fnc.BPFO(__frq), 4, 12, 1, 0.1],
|
||
|
"Дефект наружного кольца": [0x6A5ACD, fnc.BPFO(__frq), 6, 13, 0, 0.07],
|
||
|
"Износ внутреннего кольца": [0x89AC76, fnc.FREQ(__frq), 6, 13, 0, 0.3],
|
||
|
"Перекос внутреннего кольца": [0x34C924, fnc.FREQ(__frq), 6, 12, 1, 0.1],
|
||
|
"Дефект внутреннего кольца": [0x008000, fnc.BPFI(__frq), 6, 8, 0, 0.07],
|
||
|
"Дефект тел качения": [0xFFA000, fnc.BSF(__frq), 5, 10, 0, 0.3],
|
||
|
"Износ тел качения и сепаратора": [0xFF2400, fnc.FTF(__frq), 4, 6, 0, 0.5]
|
||
|
}; //набор портретов предполагаемых дефектов [цвет, частота, кол-во, уровень, тип ряда, коэфф затухания]
|
||
|
|
||
|
canvas0.add(
|
||
|
{
|
||
|
color: ausp2.color,
|
||
|
name: ausp2.name,
|
||
|
x: ausp2.resolution,
|
||
|
y: ausp2.data
|
||
|
}
|
||
|
); //рисуем мониторинговый спектр вибрации на plot
|
||
|
|
||
|
canvas1.add(
|
||
|
{
|
||
|
color: ausp.color,
|
||
|
name: ausp.name,
|
||
|
x: ausp.resolution,
|
||
|
y: ausp.data
|
||
|
}
|
||
|
); //рисуем спектр вибрации на plot*/
|
||
|
|
||
|
let __spen_tools = fnc.createTools(
|
||
|
{
|
||
|
spec: spen, //спектр для построения модели (объект)
|
||
|
set: __set, //источник данных для построения частотных линий
|
||
|
tol: 1 //коридор обнаружения гармоники на портрете, %
|
||
|
}
|
||
|
); //формируем компоненты и частотные линии на спектре огибающей
|
||
|
|
||
|
canvas2.add(
|
||
|
{
|
||
|
color: spen.color,
|
||
|
name: spen.name,
|
||
|
x: spen.resolution,
|
||
|
y: spen.data,
|
||
|
spec_tools: __spen_tools.to_json()
|
||
|
}
|
||
|
); //рисуем спектр огибающей на plot
|
||
|
|
||
|
let __mask = new maskClass(
|
||
|
{
|
||
|
spec: spen, //спектр для построения модели (объект)
|
||
|
set: __set, //источник данных для построения портретов дефектов
|
||
|
filter: filter_spen, //полосовой фильтр (для определения разницы амплитуд гармонической и случайной составляющей)
|
||
|
tol: 1, //коридор обнаружения гармоники на портрете, %
|
||
|
color: 0xFF0000, //цвет отрисовки модели спектра в формате HEX
|
||
|
visible: true //отображение графиков
|
||
|
}
|
||
|
)
|
||
|
|
||
|
gtl.log.info("FREQ", fnc.FREQ(__frq));
|
||
|
gtl.log.info("FTF", fnc.FTF(__frq));
|
||
|
gtl.log.info("BPFO", fnc.BPFO(__frq));
|
||
|
gtl.log.info("BPFI", fnc.BPFI(__frq));
|
||
|
gtl.log.info("BSF", fnc.BSF(__frq));
|
||
|
|
||
|
__result["Дефекты"] = __mask.getResult(); //обнаруженные дефекты
|
||
|
__result["const"] = spen.data[0]; //постоянная составляющая спектра огибающей
|
||
|
gtl.results = __result;
|
||
|
|
||
|
gtl.diagnostic.stop();
|
||
|
};
|