all scropts were changed
parent
48644bf008
commit
b0b1c30bad
|
@ -95,6 +95,7 @@ rms_v.avg_cnt = 4; //количество усреднений
|
||||||
gtl.diagnostic.interval = freq.time * freq.avg_cnt;
|
gtl.diagnostic.interval = freq.time * freq.avg_cnt;
|
||||||
let state = record.tachoOptions.tachoState; //начальное состояние после выбора источника тахо сигнала
|
let state = record.tachoOptions.tachoState; //начальное состояние после выбора источника тахо сигнала
|
||||||
|
|
||||||
|
let canvas = gtl.plots.add("specs(A) dB");
|
||||||
function diagnose() {
|
function diagnose() {
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case 0: // считаем частоту вращения и настраиваем спектры
|
case 0: // считаем частоту вращения и настраиваем спектры
|
||||||
|
@ -157,6 +158,24 @@ function diagnose() {
|
||||||
let spen_df = def.bsDefs(spen_mx, true);
|
let spen_df = def.bsDefs(spen_mx, true);
|
||||||
let ausp_mx = mtx.bsMTX(ausp, 0, false);
|
let ausp_mx = mtx.bsMTX(ausp, 0, false);
|
||||||
|
|
||||||
|
canvas.add(
|
||||||
|
{
|
||||||
|
color: ausp.color,
|
||||||
|
name: ausp.name,
|
||||||
|
x: ausp.resolution,
|
||||||
|
y: ausp.data
|
||||||
|
}
|
||||||
|
); //рисуем спектр вибрации на плоскости
|
||||||
|
|
||||||
|
canvas.add(
|
||||||
|
{
|
||||||
|
color: spen.color,
|
||||||
|
name: spen.name,
|
||||||
|
x: spen.resolution,
|
||||||
|
y: spen.data
|
||||||
|
}
|
||||||
|
); //рисуем спектр огибающей на плоскости
|
||||||
|
|
||||||
var res = {
|
var res = {
|
||||||
RMSA: rms_spen.value,
|
RMSA: rms_spen.value,
|
||||||
RMSV: rms_v.value,
|
RMSV: rms_v.value,
|
||||||
|
|
|
@ -95,6 +95,7 @@ rms_v.avg_cnt = 4; //количество усреднений
|
||||||
gtl.diagnostic.interval = freq.time * freq.avg_cnt;
|
gtl.diagnostic.interval = freq.time * freq.avg_cnt;
|
||||||
let state = record.tachoOptions.tachoState; //начальное состояние после выбора источника тахо сигнала
|
let state = record.tachoOptions.tachoState; //начальное состояние после выбора источника тахо сигнала
|
||||||
|
|
||||||
|
let canvas = gtl.plots.add("specs(A) dB");
|
||||||
function diagnose() {
|
function diagnose() {
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case 0: // считаем частоту вращения и настраиваем спектры
|
case 0: // считаем частоту вращения и настраиваем спектры
|
||||||
|
@ -155,6 +156,24 @@ function diagnose() {
|
||||||
let spen_df = def.gtDefs(spen_mx, true);
|
let spen_df = def.gtDefs(spen_mx, true);
|
||||||
let ausp_mx = mtx.gtMTX(ausp, 0, false);
|
let ausp_mx = mtx.gtMTX(ausp, 0, false);
|
||||||
|
|
||||||
|
canvas.add(
|
||||||
|
{
|
||||||
|
color: ausp.color,
|
||||||
|
name: ausp.name,
|
||||||
|
x: ausp.resolution,
|
||||||
|
y: ausp.data
|
||||||
|
}
|
||||||
|
); //рисуем спектр вибрации на плоскости
|
||||||
|
|
||||||
|
canvas.add(
|
||||||
|
{
|
||||||
|
color: spen.color,
|
||||||
|
name: spen.name,
|
||||||
|
x: spen.resolution,
|
||||||
|
y: spen.data
|
||||||
|
}
|
||||||
|
); //рисуем спектр огибающей на плоскости
|
||||||
|
|
||||||
var res = {
|
var res = {
|
||||||
RMSA: rms_spen.value,
|
RMSA: rms_spen.value,
|
||||||
RMSV: rms_v.value,
|
RMSV: rms_v.value,
|
||||||
|
|
21
kNN/kNN.js
21
kNN/kNN.js
|
@ -87,6 +87,7 @@ rms_v.avg_cnt = 4; //количество усреднений
|
||||||
gtl.diagnostic.interval = freq.time * freq.avg_cnt;
|
gtl.diagnostic.interval = freq.time * freq.avg_cnt;
|
||||||
let state = record.tachoOptions.tachoState; //начальное состояние после выбора источника тахо сигнала
|
let state = record.tachoOptions.tachoState; //начальное состояние после выбора источника тахо сигнала
|
||||||
|
|
||||||
|
let canvas = gtl.plots.add("specs(A) dB");
|
||||||
function diagnose() {
|
function diagnose() {
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case 0: // считаем частоту вращения и настраиваем спектры
|
case 0: // считаем частоту вращения и настраиваем спектры
|
||||||
|
@ -111,6 +112,8 @@ function diagnose() {
|
||||||
filter_spen.width = fnc.bpWidth(); //определяем ширину фильтра
|
filter_spen.width = fnc.bpWidth(); //определяем ширину фильтра
|
||||||
spen.frequency = fnc.specParams().frequency;
|
spen.frequency = fnc.specParams().frequency;
|
||||||
spen.lines = fnc.specParams().lines;
|
spen.lines = fnc.specParams().lines;
|
||||||
|
ausp.frequency = fnc.specParams().frequency;
|
||||||
|
ausp.lines = fnc.specParams().lines;
|
||||||
|
|
||||||
//определение минимально необходимой длительности сигнала для проведения диагностики
|
//определение минимально необходимой длительности сигнала для проведения диагностики
|
||||||
let time = []; //массив по времени набора данных
|
let time = []; //массив по времени набора данных
|
||||||
|
@ -147,6 +150,24 @@ function diagnose() {
|
||||||
let spen_mx = mtx.knMTX(spen, filter_spen, true);
|
let spen_mx = mtx.knMTX(spen, filter_spen, true);
|
||||||
let spen_df = def.knDefs(spen_mx, true);
|
let spen_df = def.knDefs(spen_mx, true);
|
||||||
|
|
||||||
|
canvas.add(
|
||||||
|
{
|
||||||
|
color: ausp.color,
|
||||||
|
name: ausp.name,
|
||||||
|
x: ausp.resolution,
|
||||||
|
y: ausp.data
|
||||||
|
}
|
||||||
|
); //рисуем спектр вибрации на плоскости
|
||||||
|
|
||||||
|
canvas.add(
|
||||||
|
{
|
||||||
|
color: spen.color,
|
||||||
|
name: spen.name,
|
||||||
|
x: spen.resolution,
|
||||||
|
y: spen.data
|
||||||
|
}
|
||||||
|
); //рисуем спектр огибающей на плоскости
|
||||||
|
|
||||||
var res = {
|
var res = {
|
||||||
RMSA: rms_spen.value,
|
RMSA: rms_spen.value,
|
||||||
RMSV: rms_v.value,
|
RMSV: rms_v.value,
|
||||||
|
|
|
@ -95,6 +95,7 @@ rms_v.avg_cnt = 4; //количество усреднений
|
||||||
gtl.diagnostic.interval = freq.time * freq.avg_cnt;
|
gtl.diagnostic.interval = freq.time * freq.avg_cnt;
|
||||||
let state = record.tachoOptions.tachoState; //начальное состояние после выбора источника тахо сигнала
|
let state = record.tachoOptions.tachoState; //начальное состояние после выбора источника тахо сигнала
|
||||||
|
|
||||||
|
let canvas = gtl.plots.add("specs(A) dB");
|
||||||
function diagnose() {
|
function diagnose() {
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case 0: // считаем частоту вращения и настраиваем спектры
|
case 0: // считаем частоту вращения и настраиваем спектры
|
||||||
|
@ -158,6 +159,24 @@ function diagnose() {
|
||||||
let spen_df = def.rbDefs(spen_mx, true);
|
let spen_df = def.rbDefs(spen_mx, true);
|
||||||
let ausp_mx = mtx.rbMTX(ausp, 0, true);
|
let ausp_mx = mtx.rbMTX(ausp, 0, true);
|
||||||
|
|
||||||
|
canvas.add(
|
||||||
|
{
|
||||||
|
color: ausp.color,
|
||||||
|
name: ausp.name,
|
||||||
|
x: ausp.resolution,
|
||||||
|
y: ausp.data
|
||||||
|
}
|
||||||
|
); //рисуем спектр вибрации на плоскости
|
||||||
|
|
||||||
|
canvas.add(
|
||||||
|
{
|
||||||
|
color: spen.color,
|
||||||
|
name: spen.name,
|
||||||
|
x: spen.resolution,
|
||||||
|
y: spen.data
|
||||||
|
}
|
||||||
|
); //рисуем спектр огибающей на плоскости
|
||||||
|
|
||||||
var res = {
|
var res = {
|
||||||
RMSA: rms_spen.value,
|
RMSA: rms_spen.value,
|
||||||
RMSV: rms_v.value,
|
RMSV: rms_v.value,
|
||||||
|
|
|
@ -0,0 +1,99 @@
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var imp = gtl.import("user-functions.js");
|
||||||
|
|
||||||
|
export function defects() {
|
||||||
|
let frq = imp.FREQ(); //функциональная чатота
|
||||||
|
let num = 20; //количество отрисованных гармоник
|
||||||
|
|
||||||
|
//строим гармонические ряды на SPEN[A].
|
||||||
|
var spen_set = spen.add_harms_set(frq, num, 0xff990090, 1); //"фиолетовый"
|
||||||
|
spen_set.name = 'Частота вращения';
|
||||||
|
var spen_index = spen.index_of_harms_set(spen_set); //индекс набора гармоник в спектре огибающей
|
||||||
|
|
||||||
|
var spen_set1 = spen.add_harms_set(frq / 2, num, 0x30D5C8, 1); //"бирюзовый"
|
||||||
|
spen_set1.name = 'Автоколебания';
|
||||||
|
var spen_index1 = spen.index_of_harms_set(spen_set1); //индекс набора гармоник в спектре огибающей
|
||||||
|
|
||||||
|
var spen_set2 = spen.add_harms_set(frq / 3, num, 0x34C924, 1); //"Вердепомовый"
|
||||||
|
spen_set2.name = 'Автоколебания (треть)';
|
||||||
|
var spen_index2 = spen.index_of_harms_set(spen_set2); //индекс набора гармоник в спектре огибающей
|
||||||
|
|
||||||
|
//строим гармонические ряды на AUSP[A].
|
||||||
|
var ausp_set = ausp.add_harms_set(frq, num, 0xff990090, 2); //"фиолетовый"
|
||||||
|
ausp_set.name = 'Частота вращения';
|
||||||
|
var ausp_index = ausp.index_of_harms_set(ausp_set); //индекс набора гармоник в спектре вибрации
|
||||||
|
|
||||||
|
var ausp_set1 = ausp.add_harms_set(frq / 2, num, 0x30D5C8, 1); //"бирюзовый"
|
||||||
|
ausp_set1.name = 'Автоколебания';
|
||||||
|
var ausp_index1 = ausp.index_of_harms_set(ausp_set1); //индекс набора гармоник в спектре огибающей
|
||||||
|
|
||||||
|
var ausp_set2 = ausp.add_harms_set(frq / 3, num, 0x34C924, 1); //"Вердепомовый"
|
||||||
|
ausp_set2.name = 'Автоколебания (треть)';
|
||||||
|
var ausp_index2 = ausp.index_of_harms_set(ausp_set2); //индекс набора гармоник в спектре огибающей
|
||||||
|
|
||||||
|
//строим гармонические ряды на AUSP[V].
|
||||||
|
var auspv_set = ausp_v.add_harms_set(frq, num, 0xff990090, 2); //"фиолетовый"
|
||||||
|
auspv_set.name = 'Частота вращения';
|
||||||
|
var auspv_index = ausp_v.index_of_harms_set(auspv_set); //индекс набора гармоник в спектре вибрации
|
||||||
|
|
||||||
|
var defect = false;
|
||||||
|
var spen_signs = []; //массив признаков в спектрк огибающей
|
||||||
|
var ausp_signs = []; //массив признаков в спектре вибрации
|
||||||
|
var deep = 0; //глубина модуляции ВЧ составляющих
|
||||||
|
var ampl = 0; //амплитуда составляющих НЧ вибрации
|
||||||
|
var describe = ''; //описание степени развития дефекта
|
||||||
|
var result = ''; //результат диагностики
|
||||||
|
|
||||||
|
//вывод количества гармоник
|
||||||
|
//spen.harms_sets[0].get_count(1, 2, 1, true);
|
||||||
|
//1 - начало отсчета гармоники;
|
||||||
|
//2 - допуситмое количество пропущенных в ряду;
|
||||||
|
//3 - количество модулирующих с одной стороны;
|
||||||
|
//4 - модулирующие с двух сторон (true);
|
||||||
|
|
||||||
|
//раковины на внутреннем кольце
|
||||||
|
if (
|
||||||
|
spen.harms_sets[spen_index].get_count(0, 0, 1) >= 3 &&
|
||||||
|
ausp.harms_sets[ausp_index].get_count(0, 1, 1) >= 3
|
||||||
|
) {
|
||||||
|
defect = true;
|
||||||
|
for (let i = 0; i <= num - 1; i++) {
|
||||||
|
if (spen_set.harms[i].is_present == true) {
|
||||||
|
deep = imp.mod_factor(spen_set.harms[i].amplitude, spen_set.harms[i].base);
|
||||||
|
spen_signs.push(deep);
|
||||||
|
gtl.log.info("Дефекты подшипника скольжения. Признаки в ES " + (i + 1) + "Fв +/- Fвр", deep);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (let i = 0; i <= num - 1; i++) {
|
||||||
|
if (ausp_set.harms[i].is_present == true) {
|
||||||
|
ampl = ausp_set.harms[i].amplitude;
|
||||||
|
ausp_signs.push(ampl);
|
||||||
|
gtl.log.info("Дефекты подшипника скольжения. Признаки в AS " + (i + 1) + "Fв +/- Fвр", ampl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
gtl.log.info("Дефекты подшипника скольжения", "Признаков дефекта не обнаружено");
|
||||||
|
|
||||||
|
deep = Math.max(...spen_signs) * 100;
|
||||||
|
switch (true) {
|
||||||
|
case deep <= 4:
|
||||||
|
describe = "Слабый";
|
||||||
|
break;
|
||||||
|
case deep < 8:
|
||||||
|
describe = "Средний";
|
||||||
|
break;
|
||||||
|
case deep >= 8:
|
||||||
|
describe = "Сильный";
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
describe = "None";
|
||||||
|
};
|
||||||
|
|
||||||
|
if (defect == true) { result = "(" + deep + "%; " + describe + ")" } else { result = false };
|
||||||
|
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
|
|
@ -0,0 +1,266 @@
|
||||||
|
"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");
|
||||||
|
var def = gtl.import("sbDefs.js");
|
||||||
|
|
||||||
|
//настройки для датчика оборотов
|
||||||
|
var filter_freq = gtl.add_filter_iir(gtl.analog_inputs[record.tachoOptions.tachoChannel]); //объявление переменной фильтра
|
||||||
|
filter_freq.kind = gtl.filter_iir.butterworth; //тип окна
|
||||||
|
filter_freq.type = gtl.filter_iir.lowpass; //тип фильтра (ФНЧ)
|
||||||
|
filter_freq.order = 8; //порядок фильтра
|
||||||
|
filter_freq.frequency = 10; //граничная частота фильтра
|
||||||
|
|
||||||
|
//определение частоты вращения
|
||||||
|
var freq = gtl.add_value_freq(filter_freq);
|
||||||
|
freq.time = 1;
|
||||||
|
freq.avg_cnt = 6;
|
||||||
|
//gtl.diagnostic.interval = /*1*/10;
|
||||||
|
|
||||||
|
//[Блок настройки фильтрации]
|
||||||
|
//фильтр для формирования спектра огибающей
|
||||||
|
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 = 4; //порядок фильтра
|
||||||
|
filter_spen.frequency = 8000; //центральная частота полосового фильтра
|
||||||
|
filter_spen.width = 1840; //ширина полосы фильтра
|
||||||
|
|
||||||
|
//полосовой фильтр 10-10000 Гц
|
||||||
|
var band10_10k = gtl.add_filter_iir(gtl.analog_inputs[signals[0].portNumber]); //назначение переменной фильтра
|
||||||
|
band10_10k.kind = gtl.filter_iir.butterworth; //тип окна
|
||||||
|
band10_10k.type = gtl.filter_iir.bandpass; //тип фильтра (полосовой)
|
||||||
|
band10_10k.order = 10; //порядок фильтра
|
||||||
|
band10_10k.frequency = 5005; //центральная частота полосового фильтра
|
||||||
|
band10_10k.width = 9990; //ширина полосы фильтра
|
||||||
|
|
||||||
|
//полосовой фильтр 10-1000 Гц
|
||||||
|
var band10_1k = gtl.add_filter_iir(gtl.analog_inputs[signals[0].portNumber]); //назначение переменной фильтра
|
||||||
|
band10_1k.kind = gtl.filter_iir.butterworth; //тип окна
|
||||||
|
band10_1k.type = gtl.filter_iir.bandpass; //тип фильтра (полосовой)
|
||||||
|
band10_1k.order = 10; //порядок фильтра
|
||||||
|
band10_1k.frequency = 505; //центральная частота полосового фильтра
|
||||||
|
band10_1k.width = 990; //ширина полосы фильтра
|
||||||
|
|
||||||
|
//интегратор
|
||||||
|
var int = gtl.add_intg(band10_1k); //интегрирование сигнала виброускорения
|
||||||
|
int.taps = 1; //степень интегрирования (скорость из ускорения - 1-нарное интегрирование)
|
||||||
|
|
||||||
|
//дополнительный ФВЧ от 10 Гц
|
||||||
|
var hpf10 = gtl.add_filter_iir(int); //назначение переменной фильтра
|
||||||
|
hpf10.kind = gtl.filter_iir.butterworth; //тип окна
|
||||||
|
hpf10.type = gtl.filter_iir.highpass; //тип фильтра (полосовой)
|
||||||
|
hpf10.order = 10; //порядок фильтра
|
||||||
|
hpf10.frequency = 10; //граничная частота полосового фильтра
|
||||||
|
|
||||||
|
//ФВЧ от 5000 Гц (эксцесс)
|
||||||
|
var hpf5 = gtl.add_filter_iir(gtl.analog_inputs[signals[0].portNumber]); //назначение переменной фильтра
|
||||||
|
hpf5.kind = gtl.filter_iir.butterworth; //тип окна
|
||||||
|
hpf5.type = gtl.filter_iir.highpass; //тип фильтра (полосовой)
|
||||||
|
hpf5.order = 10; //порядок фильтра
|
||||||
|
hpf5.frequency = 5000; //граничная частота полосового фильтра
|
||||||
|
|
||||||
|
//[Блок настройки спектров]
|
||||||
|
//мониторинговый спектр виброускорения
|
||||||
|
var ausp2 = gtl.add_ausp(gtl.analog_inputs[signals[0].portNumber]); //назначение переменной спектра вибрации
|
||||||
|
ausp2.name = "AUSP[mon]"; //присвоение имени спектра
|
||||||
|
ausp2.color = 0x0000ffff; //цвет линии спектра
|
||||||
|
ausp2.frequency = 25600; //граничная частота спектра
|
||||||
|
ausp2.lines = 1600; //разрешение спектра (количество линий)
|
||||||
|
ausp2.average = 6; //количество усреднений
|
||||||
|
//ausp2.overlap = 30; //коэффициент перекрытия
|
||||||
|
ausp2.unit = gtl.spec.db; //отображение в дБ
|
||||||
|
gtl.log.info("AUSP[mon]: время", ausp2.acq_time + " сек.");
|
||||||
|
|
||||||
|
//спектр виброускорения
|
||||||
|
var ausp = gtl.add_ausp(gtl.analog_inputs[signals[0].portNumber]); //назначение переменной спектра вибрации
|
||||||
|
ausp.name = "AUSP[A]"; //присвоение имени спектра
|
||||||
|
ausp.color = 0x0000ff00; //цвет линии спектра
|
||||||
|
ausp.frequency = 400; //граничная частота спектра
|
||||||
|
ausp.lines = 400; //разрешение спектра (количество линий)
|
||||||
|
ausp.average = 6; //количество усреднений
|
||||||
|
ausp.overlap = .30; //коэффициент перекрытия
|
||||||
|
ausp.unit = gtl.spec.db; //отображение в дБ
|
||||||
|
ausp.smoothing_factor = 50; //коэффициент сглаживания (средней линии)
|
||||||
|
ausp.smoothed_line_color = 0x000000ff; //цвет линии сглаживания (средней линии)
|
||||||
|
ausp.peak_level = 20; //порог обнаружения гармоник
|
||||||
|
ausp.harm_tolerance = ausp.resolution * 4; //диапазон поиска гармоник +/-
|
||||||
|
gtl.log.info("AUSP[A]: время", ausp.acq_time + " сек.");
|
||||||
|
|
||||||
|
//спектр огибающей виброускорения
|
||||||
|
var spen = gtl.add_spen(filter_spen); //назначение переменной спектра огибающей
|
||||||
|
spen.name = "SPEN[A]"; //присвоение имени спектра огибающей
|
||||||
|
spen.color = 0x00ff0000; //цвет линии спектра огибающей
|
||||||
|
spen.frequency = 400; //граничная частота спектра огибающей
|
||||||
|
spen.lines = 400; //разрешение спектра огибающей (количество линий)
|
||||||
|
spen.average = 8; //количество усреднений
|
||||||
|
spen.overlap = .30; //коэффициент перекрытия
|
||||||
|
spen.unit = gtl.spec.db; //отображение в дБ
|
||||||
|
spen.window = gtl.spec.hann; //окно
|
||||||
|
spen.smoothing_factor = 50; //коэффициент сглаживания (средней линии)
|
||||||
|
spen.smoothed_line_color = 0x000000ff; //цвет средней линии
|
||||||
|
spen.peak_level = 10; //порог обнаружения гармоник
|
||||||
|
spen.harm_tolerance = spen.resolution * 4; //диапазон поиска гармоник +/-
|
||||||
|
gtl.log.info("SPEN[A]: время", spen.acq_time + " сек.");
|
||||||
|
|
||||||
|
//спектр виброскорости
|
||||||
|
var ausp_v = gtl.add_ausp(hpf10); //назначение переменной спектра вибрации
|
||||||
|
ausp_v.name = "AUSP[V]"; //присвоение имени спектра
|
||||||
|
ausp_v.color = 0x6A5ACD; //цвет линии спектра
|
||||||
|
ausp_v.frequency = 1000; //граничная частота спектра
|
||||||
|
ausp_v.lines = 500; //разрешение спектра (количество линий)
|
||||||
|
ausp_v.average = 6; //количество усреднений
|
||||||
|
//ausp_v.overlap = 30; //коэффициент перекрытия
|
||||||
|
ausp_v.unit = gtl.spec.unit; //отображение в дБ
|
||||||
|
ausp_v.smoothing_factor = 50; //коэффициент сглаживания (средней линии)
|
||||||
|
ausp_v.smoothed_line_color = 0x000000ff; //цвет линии сглаживания (средней линии)
|
||||||
|
ausp_v.peak_level = 0.0005; //порог обнаружения гармоник
|
||||||
|
ausp_v.harm_tolerance = ausp_v.resolution * 4; //диапазон поиска гармоник +/-
|
||||||
|
gtl.log.info("AUSP[V]: время", ausp_v.acq_time + " сек.");
|
||||||
|
|
||||||
|
//RMS виброускорения в диапазоне спектра огибающей (контроль работы сил трения)
|
||||||
|
var rms_spen = gtl.add_value_rms(filter_spen); //назначение переменной RMS (spen)
|
||||||
|
rms_spen.name = "RMS (spen)" //присвоение имени RMS (spen)
|
||||||
|
rms_spen.time = 0.5; //интервал расчета RMS (spen)
|
||||||
|
rms_spen.avg_cnt = 4; //количество усреднений RMS (spen)
|
||||||
|
|
||||||
|
//RMS виброускорения в диапазоне 10-1000 Гц
|
||||||
|
var rms_a = gtl.add_value_rms(band10_10k); //назначение переменной RMS (spen)
|
||||||
|
rms_a.name = "RMS (a)" //присвоение имени RMS (spen)
|
||||||
|
rms_a.time = 0.5; //интервал расчета RMS (spen)
|
||||||
|
rms_a.avg_cnt = 4; //количество усреднений RMS (spen)
|
||||||
|
|
||||||
|
//RMS виброскорости в диапазоне 10-1000 Гц
|
||||||
|
var rms_v = gtl.add_value_rms(hpf10); //объявление переменной СКЗ
|
||||||
|
rms_v.time = 0.5; //время выборки
|
||||||
|
rms_v.avg_cnt = 4; //количество усреднений
|
||||||
|
|
||||||
|
//коэффициент эксцесса в диапазоне от 5000 Гц
|
||||||
|
var kurt = gtl.add_value_kurt(hpf5); //объявление переменной частоты вращения
|
||||||
|
kurt.time = 0.5; //время выборки
|
||||||
|
kurt.avg_cnt = 4; //количество усреднений
|
||||||
|
|
||||||
|
//коэффициент эксцесса огибающей сигнала
|
||||||
|
var kurt_spen = gtl.get_kurt_value(spen.env);
|
||||||
|
|
||||||
|
//[Диагностика]
|
||||||
|
gtl.diagnostic.interval = freq.time * freq.avg_cnt;
|
||||||
|
let state = record.tachoOptions.tachoState; //начальное состояние после выбора источника тахо сигнала
|
||||||
|
|
||||||
|
let canvas = gtl.plots.add("specs(A) dB");
|
||||||
|
let canvas2 = gtl.plots.add("specs(V) мм/с");
|
||||||
|
function diagnose() {
|
||||||
|
switch (state) {
|
||||||
|
case 0: // считаем частоту вращения и настраиваем спектры
|
||||||
|
if (fnc.INSTABILITY() > fnc.tolerance()) {
|
||||||
|
gtl.log.info("Критическая нестабильность частоты вращения, %", fnc.INSTABILITY() * 100);
|
||||||
|
gtl.log.info("Результат:", "Диагностика прервана");
|
||||||
|
//gtl.diagnostic.stop(); //принудительная остановка диагностики
|
||||||
|
|
||||||
|
let __result = {
|
||||||
|
Result: false
|
||||||
|
};
|
||||||
|
gtl.results = __result;
|
||||||
|
};
|
||||||
|
|
||||||
|
if (fnc.FREQ() <= fnc.FREQNESS()) {
|
||||||
|
gtl.log.info("Частота вращения меньше минимально рекомендуемой", "Минимально рекомендуемая частота: " + fnc.FREQNESS());
|
||||||
|
};
|
||||||
|
|
||||||
|
case 1: //частота вращения фиксированная
|
||||||
|
case 2: //частота вращения из поля INFO (виброметр)
|
||||||
|
filter_spen.frequency = fnc.bpFreq(); //считаем фильтр для огибающей
|
||||||
|
filter_spen.width = fnc.bpWidth(); //определяем ширину фильтра
|
||||||
|
spen.frequency = fnc.specParams().frequency;
|
||||||
|
spen.lines = fnc.specParams().lines * 2;
|
||||||
|
ausp.frequency = fnc.specParams().frequency;
|
||||||
|
ausp.lines = fnc.specParams().lines * 2;
|
||||||
|
ausp_v.frequency = fnc.specParams().frequency;
|
||||||
|
ausp_v.lines = fnc.specParams().lines * 2;
|
||||||
|
|
||||||
|
//определение минимально необходимой длительности сигнала для проведения диагностики
|
||||||
|
let time = []; //массив времени набора данных
|
||||||
|
time.push(ausp2.acq_time);
|
||||||
|
time.push(ausp.acq_time);
|
||||||
|
time.push(spen.acq_time);
|
||||||
|
time.push(ausp_v.acq_time);
|
||||||
|
let max_acq = Math.max(...time);
|
||||||
|
gtl.diagnostic.interval = max_acq;
|
||||||
|
gtl.log.info("Массив времени набора данных:", time);
|
||||||
|
state = 3;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 3: //выполняем анализ спектов
|
||||||
|
ausp.clear_harms_sets(); //сброс отрисовки набора гармоник в спектре вибрации
|
||||||
|
spen.clear_harms_sets(); //сброс отрисовки набора гармоник в спектре огибающей
|
||||||
|
|
||||||
|
//Вывод информации в лог
|
||||||
|
//Расчет площади спектра вибрации: спектр, начало отсчета в Гц, граничная частота спектра
|
||||||
|
var SQR_spen = fnc.specSquare(spen.base, 0, spen.frequency);
|
||||||
|
|
||||||
|
gtl.log.info("Объект диагностики", options.rbModelName);
|
||||||
|
gtl.log.info("SPEN: Расчетная частота полосового фильтра", filter_spen.frequency);
|
||||||
|
gtl.log.info("SPEN: Ширина фильтра", filter_spen.width);
|
||||||
|
gtl.log.info("SPEN: Граничная частота", spen.frequency);
|
||||||
|
gtl.log.info("SPEN: Количество линий", spen.lines);
|
||||||
|
gtl.log.info("SPEN: Разрешение", spen.resolution);
|
||||||
|
gtl.log.info("AUSP: Граничная частота", ausp.frequency);
|
||||||
|
gtl.log.info("AUSP: Количество линий", ausp.lines);
|
||||||
|
gtl.log.info("AUSP: Разрешение", ausp.resolution);
|
||||||
|
|
||||||
|
gtl.log.info("RMS виброускорения в диапазоне огибающей", rms_spen.value);
|
||||||
|
gtl.log.info("RMS виброускорения в диапазоне 10-10000 Гц", rms_a.value);
|
||||||
|
gtl.log.info("RMS виброскорости в диапазоне 10-1000 Гц", 1000 * rms_v.value);
|
||||||
|
gtl.log.info("Площадь под огибающей", SQR_spen);
|
||||||
|
gtl.log.info("Эксцесс от 5 кГц", kurt.value);
|
||||||
|
gtl.log.info("Эксцесс по огибающей сигнала", kurt_spen.value);
|
||||||
|
|
||||||
|
var defects = def.defects();
|
||||||
|
|
||||||
|
canvas.add(
|
||||||
|
{
|
||||||
|
color: ausp.color,
|
||||||
|
name: ausp.name,
|
||||||
|
x: ausp.resolution,
|
||||||
|
y: ausp.data
|
||||||
|
}
|
||||||
|
); //рисуем спектр вибрации на плоскости
|
||||||
|
|
||||||
|
canvas.add(
|
||||||
|
{
|
||||||
|
color: spen.color,
|
||||||
|
name: spen.name,
|
||||||
|
x: spen.resolution,
|
||||||
|
y: spen.data
|
||||||
|
}
|
||||||
|
); //рисуем спектр огибающей на плоскости
|
||||||
|
|
||||||
|
canvas2.add(
|
||||||
|
{
|
||||||
|
color: ausp_v.color,
|
||||||
|
name: ausp_v.name,
|
||||||
|
x: ausp_v.resolution,
|
||||||
|
y: ausp_v.data
|
||||||
|
}
|
||||||
|
); //рисуем спектр виброскорости на плоскости
|
||||||
|
|
||||||
|
let __result = {
|
||||||
|
RMS: rms_spen.value,
|
||||||
|
RMSA: rms_a.value,
|
||||||
|
RMSV: 1000 * rms_v.value,
|
||||||
|
SQR: SQR_spen,
|
||||||
|
Kurt: kurt.value,
|
||||||
|
Kurt_spen: "Нет данных"
|
||||||
|
};
|
||||||
|
|
||||||
|
gtl.results = __result;
|
||||||
|
gtl.diagnostic.stop();
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue