name corrections
parent
22bf85c8f8
commit
70d05e8726
|
@ -4,9 +4,9 @@ var options = gtl.options;
|
||||||
var record = gtl.options.record;
|
var record = gtl.options.record;
|
||||||
var point = gtl.options.point;
|
var point = gtl.options.point;
|
||||||
|
|
||||||
var fnc = gtl.import("user-functions.js");
|
var fnc = gtl.import("userFunctions.js");
|
||||||
var mtx = gtl.import("bs_mtx.js");
|
var mtx = gtl.import("bsMTX.js");
|
||||||
var def = gtl.import("bs_defs.js");
|
var def = gtl.import("bsDefs.js");
|
||||||
|
|
||||||
//настройки для датчика оборотов
|
//настройки для датчика оборотов
|
||||||
var filter_freq = gtl.add_filter_iir(gtl.analog_inputs[record.tachoOptions.tachoChannel]); //объявление переменной фильтра
|
var filter_freq = gtl.add_filter_iir(gtl.analog_inputs[record.tachoOptions.tachoChannel]); //объявление переменной фильтра
|
||||||
|
@ -115,12 +115,12 @@ function diagnose() {
|
||||||
|
|
||||||
case 1: //частота вращения фиксированная
|
case 1: //частота вращения фиксированная
|
||||||
case 2: //частота вращения из поля INFO (виброметр)
|
case 2: //частота вращения из поля INFO (виброметр)
|
||||||
filter_spen.frequency = fnc.filter_frequency(); //считаме фильтр для огибающей
|
filter_spen.frequency = fnc.bpFreq(); //считаме фильтр для огибающей
|
||||||
filter_spen.width = fnc.filter_width(); //определяем ширину фильтра
|
filter_spen.width = fnc.bpWidth(); //определяем ширину фильтра
|
||||||
spen.frequency = fnc.spec_params().frequency;
|
spen.frequency = fnc.specParams().frequency;
|
||||||
spen.lines = fnc.spec_params().lines;
|
spen.lines = fnc.specParams().lines;
|
||||||
ausp.frequency = fnc.spec_params().frequency;
|
ausp.frequency = fnc.specParams().frequency;
|
||||||
ausp.lines = fnc.spec_params().lines;
|
ausp.lines = fnc.specParams().lines;
|
||||||
|
|
||||||
//определение минимально необходимой длительности сигнала для проведения диагностики
|
//определение минимально необходимой длительности сигнала для проведения диагностики
|
||||||
let time = []; //массив по времени набора данных
|
let time = []; //массив по времени набора данных
|
||||||
|
@ -137,7 +137,7 @@ function diagnose() {
|
||||||
|
|
||||||
//Вывод информации в лог
|
//Вывод информации в лог
|
||||||
//Расчет площади спектра вибрации: спектр, начало отсчета в Гц, граничная частота спектра
|
//Расчет площади спектра вибрации: спектр, начало отсчета в Гц, граничная частота спектра
|
||||||
var AQ = fnc.spec_square(ausp.data, ausp.frequency / 2, ausp.frequency);
|
var AQ = fnc.specSquare(ausp.data, ausp.frequency / 2, ausp.frequency);
|
||||||
|
|
||||||
gtl.log.info("Объект диагностики", options.rbModelName);
|
gtl.log.info("Объект диагностики", options.rbModelName);
|
||||||
gtl.log.info("FREQ", fnc.FREQ());
|
gtl.log.info("FREQ", fnc.FREQ());
|
||||||
|
@ -153,9 +153,9 @@ function diagnose() {
|
||||||
gtl.log.info("Разрешение SPEN", spen.resolution);
|
gtl.log.info("Разрешение SPEN", spen.resolution);
|
||||||
gtl.log.info("Ширина AUSP", ausp.frequency);
|
gtl.log.info("Ширина AUSP", ausp.frequency);
|
||||||
|
|
||||||
let spen_mx = mtx.bs_mtx(spen, filter_spen, true);
|
let spen_mx = mtx.bsMTX(spen, filter_spen, true);
|
||||||
let spen_df = def.bs_defs(spen_mx, true);
|
let spen_df = def.bsDefs(spen_mx, true);
|
||||||
let ausp_mx = mtx.bs_mtx(ausp, 0, false);
|
let ausp_mx = mtx.bsMTX(ausp, 0, false);
|
||||||
|
|
||||||
var res = {
|
var res = {
|
||||||
RMSA: rms_spen.value,
|
RMSA: rms_spen.value,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
export function bs_defs(mtx, isDeep) {
|
export function bsDefs(mtx, isDeep) {
|
||||||
var res = {}; //результат
|
var res = {}; //результат
|
||||||
if (isDeep = true) { var key = "dp" } else { var key = "lv" };
|
if (isDeep = true) { var key = "dp" } else { var key = "lv" };
|
||||||
var des = {
|
var des = {
|
||||||
|
@ -11,7 +11,7 @@ export function bs_defs(mtx, isDeep) {
|
||||||
BPFI: { ds: "винта", dp: 8, lv: 20 },
|
BPFI: { ds: "винта", dp: 8, lv: 20 },
|
||||||
}; //описание функциональных частот
|
}; //описание функциональных частот
|
||||||
|
|
||||||
function get_note(harmsArr) {
|
function getNote(harmsArr) {
|
||||||
let note = "Износ"; //описание характера колебаний
|
let note = "Износ"; //описание характера колебаний
|
||||||
let cnt = 0; //количество значений в массиве
|
let cnt = 0; //количество значений в массиве
|
||||||
for (let i = 0; i <= harmsArr.length - 1; i++) { if (harmsArr[i] > 0) { cnt++ }; };
|
for (let i = 0; i <= harmsArr.length - 1; i++) { if (harmsArr[i] > 0) { cnt++ }; };
|
||||||
|
@ -21,7 +21,7 @@ export function bs_defs(mtx, isDeep) {
|
||||||
return note;
|
return note;
|
||||||
};
|
};
|
||||||
|
|
||||||
function get_level(lvl, thres) {
|
function getLevel(lvl, thres) {
|
||||||
let level = "Сильный";
|
let level = "Сильный";
|
||||||
switch (true) {
|
switch (true) {
|
||||||
case lvl < 0.5 * thres:
|
case lvl < 0.5 * thres:
|
||||||
|
@ -41,8 +41,8 @@ export function bs_defs(mtx, isDeep) {
|
||||||
let lvl = Math.max(...arr); //определяем максимальное значение параметра из массива
|
let lvl = Math.max(...arr); //определяем максимальное значение параметра из массива
|
||||||
let sum = arr.reduce(function (a, b) { return a + b }, 0); //сумма элементов массива
|
let sum = arr.reduce(function (a, b) { return a + b }, 0); //сумма элементов массива
|
||||||
if (sum > 0) {
|
if (sum > 0) {
|
||||||
let note = get_note(arr);
|
let note = getNote(arr);
|
||||||
res[rows[i]] = note + ' ' + des[rows[i]].ds + ': ' + get_level(lvl, des[rows[i]][key]) + ' (' + lvl + ')';
|
res[rows[i]] = note + ' ' + des[rows[i]].ds + ': ' + getLevel(lvl, des[rows[i]][key]) + ' (' + lvl + ')';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
return res;
|
return res;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var ufc = gtl.import("user-functions.js");
|
var ufc = gtl.import("userFunctions.js");
|
||||||
|
|
||||||
export function bs_mtx(spec, filter, isDeep) {
|
export function bsMTX(spec, filter, isDeep) {
|
||||||
var num = 6; //глубина матрицы (количество гармоник)
|
var num = 6; //глубина матрицы (количество гармоник)
|
||||||
var level = 0; //уровень развития дефекта
|
var level = 0; //уровень развития дефекта
|
||||||
var res = {}; //результат
|
var res = {}; //результат
|
||||||
|
@ -15,7 +15,7 @@ export function bs_mtx(spec, filter, isDeep) {
|
||||||
BPFI: { nm: "Частота перекатывания тел качения по винту", fn: ufc.BSSCR(), md: 0, cl: 0xff990090 }
|
BPFI: { nm: "Частота перекатывания тел качения по винту", fn: ufc.BSSCR(), md: 0, cl: 0xff990090 }
|
||||||
}; //набор функциональных частот
|
}; //набор функциональных частот
|
||||||
|
|
||||||
function mod_factor(dSpec, dFilter, ampl, base) {
|
function modFactor(dSpec, dFilter, ampl, base) {
|
||||||
let dl = (ampl - base); //разность уровней гармонической и случайной составляющей вибрации
|
let dl = (ampl - base); //разность уровней гармонической и случайной составляющей вибрации
|
||||||
let df = dSpec.frequency / dFilter.width; //отношение частотному разрешению спектра к ширине фильтра
|
let df = dSpec.frequency / dFilter.width; //отношение частотному разрешению спектра к ширине фильтра
|
||||||
let mod = Math.sqrt((10 ** (dl / 10) - 1) * df);
|
let mod = Math.sqrt((10 ** (dl / 10) - 1) * df);
|
||||||
|
@ -42,7 +42,7 @@ export function bs_mtx(spec, filter, isDeep) {
|
||||||
if (lines.harms[j].is_present == true) {
|
if (lines.harms[j].is_present == true) {
|
||||||
switch (isDeep) {
|
switch (isDeep) {
|
||||||
case true:
|
case true:
|
||||||
level = Math.round(mod_factor(spec, filter, lines.harms[j].amplitude, lines.harms[j].base));
|
level = Math.round(modFactor(spec, filter, lines.harms[j].amplitude, lines.harms[j].base));
|
||||||
break;
|
break;
|
||||||
case false:
|
case false:
|
||||||
level = Math.round(lines.harms[j].level);
|
level = Math.round(lines.harms[j].level);
|
||||||
|
|
|
@ -4,9 +4,9 @@ var options = gtl.options;
|
||||||
var record = gtl.options.record;
|
var record = gtl.options.record;
|
||||||
var point = gtl.options.point;
|
var point = gtl.options.point;
|
||||||
|
|
||||||
var fnc = gtl.import("user-functions.js");
|
var fnc = gtl.import("userFunctions.js");
|
||||||
var mtx = gtl.import("gt_mtx.js");
|
var mtx = gtl.import("gtMTX.js");
|
||||||
var def = gtl.import("gt_defs.js");
|
var def = gtl.import("gtDefs.js");
|
||||||
|
|
||||||
//настройки для датчика оборотов
|
//настройки для датчика оборотов
|
||||||
var filter_freq = gtl.add_filter_iir(gtl.analog_inputs[record.tachoOptions.tachoChannel]); //объявление переменной фильтра
|
var filter_freq = gtl.add_filter_iir(gtl.analog_inputs[record.tachoOptions.tachoChannel]); //объявление переменной фильтра
|
||||||
|
@ -115,12 +115,12 @@ function diagnose() {
|
||||||
|
|
||||||
case 1: //частота вращения фиксированная
|
case 1: //частота вращения фиксированная
|
||||||
case 2: //частота вращения из поля INFO (виброметр)
|
case 2: //частота вращения из поля INFO (виброметр)
|
||||||
filter_spen.frequency = fnc.filter_frequency(); //считаме фильтр для огибающей
|
filter_spen.frequency = fnc.bpFreq(); //считаме фильтр для огибающей
|
||||||
filter_spen.width = fnc.filter_width(); //определяем ширину фильтра
|
filter_spen.width = fnc.bpWidth(); //определяем ширину фильтра
|
||||||
spen.frequency = fnc.spec_params().frequency;
|
spen.frequency = fnc.specParams().frequency;
|
||||||
spen.lines = fnc.spec_params().lines;
|
spen.lines = fnc.specParams().lines;
|
||||||
ausp.frequency = fnc.spec_params().frequency;
|
ausp.frequency = fnc.specParams().frequency;
|
||||||
ausp.lines = fnc.spec_params().lines;
|
ausp.lines = fnc.specParams().lines;
|
||||||
|
|
||||||
//определение минимально необходимой длительности сигнала для проведения диагностики
|
//определение минимально необходимой длительности сигнала для проведения диагностики
|
||||||
let time = []; //массив по времени набора данных
|
let time = []; //массив по времени набора данных
|
||||||
|
@ -137,7 +137,7 @@ function diagnose() {
|
||||||
|
|
||||||
//Вывод информации в лог
|
//Вывод информации в лог
|
||||||
//Расчет площади спектра вибрации: спектр, начало отсчета в Гц, граничная частота спектра
|
//Расчет площади спектра вибрации: спектр, начало отсчета в Гц, граничная частота спектра
|
||||||
var AQ = fnc.spec_square(ausp.data, ausp.frequency / 2, ausp.frequency);
|
var AQ = fnc.specSquare(ausp.data, ausp.frequency / 2, ausp.frequency);
|
||||||
|
|
||||||
gtl.log.info("Объект диагностики", options.rbModelName);
|
gtl.log.info("Объект диагностики", options.rbModelName);
|
||||||
gtl.log.info("FREQ", fnc.FREQ());
|
gtl.log.info("FREQ", fnc.FREQ());
|
||||||
|
@ -151,9 +151,9 @@ function diagnose() {
|
||||||
gtl.log.info("Разрешение SPEN", spen.resolution);
|
gtl.log.info("Разрешение SPEN", spen.resolution);
|
||||||
gtl.log.info("Ширина AUSP", ausp.frequency);
|
gtl.log.info("Ширина AUSP", ausp.frequency);
|
||||||
|
|
||||||
let spen_mx = mtx.gt_mtx(spen, filter_spen, true);
|
let spen_mx = mtx.gtMTX(spen, filter_spen, true);
|
||||||
let spen_df = def.gt_defs(spen_mx, true);
|
let spen_df = def.gtDefs(spen_mx, true);
|
||||||
let ausp_mx = mtx.gt_mtx(ausp, 0, false);
|
let ausp_mx = mtx.gtMTX(ausp, 0, false);
|
||||||
|
|
||||||
var res = {
|
var res = {
|
||||||
RMSA: rms_spen.value,
|
RMSA: rms_spen.value,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
export function gt_defs(mtx, isDeep) {
|
export function gtDefs(mtx, isDeep) {
|
||||||
var res = {}; //результат
|
var res = {}; //результат
|
||||||
if (isDeep = true) { var key = "dp" } else { var key = "lv" };
|
if (isDeep = true) { var key = "dp" } else { var key = "lv" };
|
||||||
var des = {
|
var des = {
|
||||||
|
@ -10,7 +10,7 @@ export function gt_defs(mtx, isDeep) {
|
||||||
GTFZ2: { ds: "зацепления зубчатого колеса", dp: 20, lv: 20 }
|
GTFZ2: { ds: "зацепления зубчатого колеса", dp: 20, lv: 20 }
|
||||||
}; //описание функциональных частот
|
}; //описание функциональных частот
|
||||||
|
|
||||||
function get_note(harmsArr) {
|
function getNote(harmsArr) {
|
||||||
let note = "Биение"; //описание характера колебаний
|
let note = "Биение"; //описание характера колебаний
|
||||||
let cnt = 0; //количество значений в массиве
|
let cnt = 0; //количество значений в массиве
|
||||||
for (let i = 0; i <= harmsArr.length - 1; i++) { if (harmsArr[i] > 0) { cnt++ }; };
|
for (let i = 0; i <= harmsArr.length - 1; i++) { if (harmsArr[i] > 0) { cnt++ }; };
|
||||||
|
@ -20,7 +20,7 @@ export function gt_defs(mtx, isDeep) {
|
||||||
return note;
|
return note;
|
||||||
};
|
};
|
||||||
|
|
||||||
function get_level(lvl, thres) {
|
function getLevel(lvl, thres) {
|
||||||
let level = "Сильный";
|
let level = "Сильный";
|
||||||
switch (true) {
|
switch (true) {
|
||||||
case lvl < 0.5 * thres:
|
case lvl < 0.5 * thres:
|
||||||
|
@ -40,8 +40,8 @@ export function gt_defs(mtx, isDeep) {
|
||||||
let lvl = Math.max(...arr); //определяем максимальное значение параметра из массива
|
let lvl = Math.max(...arr); //определяем максимальное значение параметра из массива
|
||||||
let sum = arr.reduce(function (a, b) { return a + b }, 0); //сумма элементов массива
|
let sum = arr.reduce(function (a, b) { return a + b }, 0); //сумма элементов массива
|
||||||
if (sum > 0) {
|
if (sum > 0) {
|
||||||
let note = get_note(arr);
|
let note = getNote(arr);
|
||||||
res[rows[i]] = note + ' ' + des[rows[i]].ds + ': ' + get_level(lvl, des[rows[i]][key]) + ' (' + lvl + ')';
|
res[rows[i]] = note + ' ' + des[rows[i]].ds + ': ' + getLevel(lvl, des[rows[i]][key]) + ' (' + lvl + ')';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
return res;
|
return res;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var ufc = gtl.import("user-functions.js");
|
var ufc = gtl.import("userFunctions.js");
|
||||||
|
|
||||||
export function gt_mtx(spec, filter, isDeep) {
|
export function gtMTX(spec, filter, isDeep) {
|
||||||
var num = 6; //глубина матрицы (количество гармоник)
|
var num = 6; //глубина матрицы (количество гармоник)
|
||||||
var level = 0; //уровень развития дефекта
|
var level = 0; //уровень развития дефекта
|
||||||
var res = {}; //результат
|
var res = {}; //результат
|
||||||
|
@ -14,7 +14,7 @@ export function gt_mtx(spec, filter, isDeep) {
|
||||||
GTFZ2: { nm: "Зубцовая частота по второму валу", fn: ufc.GTFZ(), md: ufc.GTF2(), cl: 0xff990090 }
|
GTFZ2: { nm: "Зубцовая частота по второму валу", fn: ufc.GTFZ(), md: ufc.GTF2(), cl: 0xff990090 }
|
||||||
}; //набор функциональных частот
|
}; //набор функциональных частот
|
||||||
|
|
||||||
function mod_factor(dSpec, dFilter, ampl, base) {
|
function modFactor(dSpec, dFilter, ampl, base) {
|
||||||
let dl = (ampl - base); //разность уровней гармонической и случайной составляющей вибрации
|
let dl = (ampl - base); //разность уровней гармонической и случайной составляющей вибрации
|
||||||
let df = dSpec.frequency / dFilter.width; //отношение частотному разрешению спектра к ширине фильтра
|
let df = dSpec.frequency / dFilter.width; //отношение частотному разрешению спектра к ширине фильтра
|
||||||
let mod = Math.sqrt((10 ** (dl / 10) - 1) * df);
|
let mod = Math.sqrt((10 ** (dl / 10) - 1) * df);
|
||||||
|
@ -41,7 +41,7 @@ export function gt_mtx(spec, filter, isDeep) {
|
||||||
if (lines.harms[j].is_present == true) {
|
if (lines.harms[j].is_present == true) {
|
||||||
switch (isDeep) {
|
switch (isDeep) {
|
||||||
case true:
|
case true:
|
||||||
level = Math.round(mod_factor(spec, filter, lines.harms[j].amplitude, lines.harms[j].base));
|
level = Math.round(modFactor(spec, filter, lines.harms[j].amplitude, lines.harms[j].base));
|
||||||
break;
|
break;
|
||||||
case false:
|
case false:
|
||||||
level = Math.round(lines.harms[j].level);
|
level = Math.round(lines.harms[j].level);
|
||||||
|
|
30
getMask.js
30
getMask.js
|
@ -1,7 +1,7 @@
|
||||||
|
|
||||||
export function spec_model(spec, tol, color, visible) {
|
export function specModel(spec, tol, color, visible) {
|
||||||
let result = {}; //результат
|
let result = {}; //результат
|
||||||
let model = spec.base; //исходный массив точек для построения упрощенной модели спектра
|
let model = spec.base; //массив точек базовой линии для построения упрощенной модели спектра
|
||||||
let imin = 0; //левая граница коридора
|
let imin = 0; //левая граница коридора
|
||||||
let imax = 0; //правая граница коридора
|
let imax = 0; //правая граница коридора
|
||||||
for (let i = 0; i < spec.peaks.length; i++) {
|
for (let i = 0; i < spec.peaks.length; i++) {
|
||||||
|
@ -33,19 +33,21 @@ export function spec_model(spec, tol, color, visible) {
|
||||||
return result;
|
return result;
|
||||||
}; //построение упрощенной модели спектра
|
}; //построение упрощенной модели спектра
|
||||||
|
|
||||||
export function mask(obj) {
|
export function getMask(obj) {
|
||||||
let result = {}; //результат
|
let result = {}; //результат
|
||||||
let data = obj.src1.data; //массив точек спектра для сравнения с портретом
|
let data = obj.src1.data; //массив точек спектра для сравнения с портретом
|
||||||
let mask = obj.src2.base; //исходный массив точек для построения портрета дефекта
|
let mask = obj.src2.base; //массив точек базовой линии для построения портрета дефекта
|
||||||
let harms = obj.harms; //гармоник портрета
|
let harms = obj.harms; //кол-во гармоник портрета
|
||||||
if (obj.freq * harms > obj.src2.frequency) { harms = Math.trunc(obj.src2.frequency / obj.freq) }; //проверяем максимальное кол-во гармоник в портрете
|
if (obj.freq * harms > obj.src2.frequency) { harms = Math.trunc(obj.src2.frequency / obj.freq) }; //проверяем максимальное кол-во гармоник в портрете
|
||||||
let df = 0; //отношение ширины фильтра частотному разрешению спектра
|
let df = 0; //отношение ширины фильтра частотному разрешению спектра
|
||||||
let dl = obj.lvl; //разность уровней гармонической и случайной составляющей вибрации
|
let dl = obj.lvl; //разность уровней гармонической и случайной составляющей вибрации
|
||||||
if (obj.filter != 0) {
|
if (obj.filter != 0) {
|
||||||
df = obj.filter.width / obj.src2.resolution;
|
df = obj.src2.frequency / obj.filter.width;
|
||||||
dl = 10 * Math.log10((obj.lvl ** 2) * df + 1);
|
dl = 10 * Math.log10((obj.lvl ** 2) / df + 1);
|
||||||
};
|
};
|
||||||
let k = obj.coef; //коэффициент затухания
|
let k = obj.coef; //коэффициент затухания
|
||||||
|
let x = 0; //индекс элемента массива для гармоники
|
||||||
|
let dx = 0; //коридор индексов
|
||||||
let xmin = 0; //левая граница коридора
|
let xmin = 0; //левая граница коридора
|
||||||
let xmax = 0; //правая граница коридора
|
let xmax = 0; //правая граница коридора
|
||||||
let correlation = 0; //коэффициент корреляции
|
let correlation = 0; //коэффициент корреляции
|
||||||
|
@ -75,8 +77,11 @@ export function mask(obj) {
|
||||||
switch (obj.type) {
|
switch (obj.type) {
|
||||||
case 0: //обычный ряд
|
case 0: //обычный ряд
|
||||||
for (let i = 1; i <= harms; i++) {
|
for (let i = 1; i <= harms; i++) {
|
||||||
xmin = Math.round(i * (obj.freq - obj.freq * 0.5 * obj.tol / 100) / obj.src2.resolution); //определяем индекс левой границы коридора
|
x = Math.trunc(i * obj.freq / obj.src2.resolution); //определяем инднекс элемента массива для гармоники
|
||||||
xmax = Math.round(i * (obj.freq + obj.freq * 0.5 * obj.tol / 100) / obj.src2.resolution); //определяем индекс правой границы коридора
|
dx = Math.trunc(i * (obj.freq * obj.tol / 100) / obj.src2.resolution); //коридор индексов массива для гармоники
|
||||||
|
xmin = x - Math.round(dx / 2); //определяем индекс левой границы коридора
|
||||||
|
xmax = x + Math.round(dx / 2); //определяем индекс правой границы коридора
|
||||||
|
|
||||||
if (xmax > obj.src2.base.length) { xmax = obj.src2.base.length - 2 }; //проверяем выход границы за размер массива
|
if (xmax > obj.src2.base.length) { xmax = obj.src2.base.length - 2 }; //проверяем выход границы за размер массива
|
||||||
for (let j = xmin; j <= xmax; j++) { mask[j] = obj.src2.base[j] + dl }; //записываем значение глубины модуляции для коридора
|
for (let j = xmin; j <= xmax; j++) { mask[j] = obj.src2.base[j] + dl }; //записываем значение глубины модуляции для коридора
|
||||||
dl = dl - (k * dl); //снижаем глубину модуляции с коэффициентом затухания
|
dl = dl - (k * dl); //снижаем глубину модуляции с коэффициентом затухания
|
||||||
|
@ -90,8 +95,11 @@ export function mask(obj) {
|
||||||
break;
|
break;
|
||||||
case 1: //четные составляющие
|
case 1: //четные составляющие
|
||||||
for (let i = 1; i <= harms; i++) {
|
for (let i = 1; i <= harms; i++) {
|
||||||
xmin = Math.round(i * (obj.freq - obj.freq * 0.5 * obj.tol / 100) / obj.src2.resolution); //определяем индекс левой границы коридора
|
x = Math.trunc(i * obj.freq / obj.src2.resolution); //инднекс элемента массива для гармоники
|
||||||
xmax = Math.round(i * (obj.freq + obj.freq * 0.5 * obj.tol / 100) / obj.src2.resolution); //определяем индекс правой границы коридора
|
dx = Math.trunc(i * (obj.freq * obj.tol / 100) / obj.src2.resolution); //коридор индексов массива для гармоники
|
||||||
|
xmin = x - Math.round(dx / 2); //определяем индекс левой границы коридора
|
||||||
|
xmax = x + Math.round(dx / 2); //определяем индекс правой границы коридора
|
||||||
|
|
||||||
if (xmax > obj.src2.base.length) { xmax = obj.src2.base.length - 2 }; //проверяем выход границы за размер массива
|
if (xmax > obj.src2.base.length) { xmax = obj.src2.base.length - 2 }; //проверяем выход границы за размер массива
|
||||||
if (i % 2 > 0) {
|
if (i % 2 > 0) {
|
||||||
for (let j = xmin; j <= xmax; j++) { mask[j] = obj.src2.base[j] + k * dl }; //записываем значение глубины модуляции для коридора (нечетная гармоника)
|
for (let j = xmin; j <= xmax; j++) { mask[j] = obj.src2.base[j] + k * dl }; //записываем значение глубины модуляции для коридора (нечетная гармоника)
|
||||||
|
|
|
@ -0,0 +1,28 @@
|
||||||
|
|
||||||
|
export function getStdMeasure(src) {
|
||||||
|
let __result = {}; //результат
|
||||||
|
|
||||||
|
//фильтрация диапазона в сигнале для определения СКЗ вибрации
|
||||||
|
var __filter = gtl.add_filter_iir(src);
|
||||||
|
__filter.kind = gtl.filter_iir.butterworth;
|
||||||
|
__filter.type = gtl.filter_iir.lowpass;
|
||||||
|
__filter.order = 8;
|
||||||
|
__filter.frequency = 1000;
|
||||||
|
|
||||||
|
//определение среднего квадратического значения в диапазоне фильтра до 1000 Гц
|
||||||
|
var __rms = gtl.add_value_rms(__filter);
|
||||||
|
__rms.time = 0.1;
|
||||||
|
__rms.avg_cnt = 4;
|
||||||
|
|
||||||
|
//определение амплитудного значения в диапазоне фильтра до 1000 Гц
|
||||||
|
var __ampl = gtl.add_value_ampl(__filter);
|
||||||
|
__ampl.time = 0.1;
|
||||||
|
__ampl.avg_cnt = 4;
|
||||||
|
|
||||||
|
__result = {
|
||||||
|
rms1000: __rms,
|
||||||
|
ampl1000: __ampl
|
||||||
|
};
|
||||||
|
|
||||||
|
return __result;
|
||||||
|
}; //измерение стандартных параметров
|
20
kNN/kNN.js
20
kNN/kNN.js
|
@ -5,9 +5,9 @@ var options = gtl.options;
|
||||||
var record = gtl.options.record;
|
var record = gtl.options.record;
|
||||||
var point = gtl.options.point;
|
var point = gtl.options.point;
|
||||||
|
|
||||||
var fnc = gtl.import("user-functions.js");
|
var fnc = gtl.import("userFunctions.js");
|
||||||
var mtx = gtl.import("kn_mtx.js");
|
var mtx = gtl.import("knMTX.js");
|
||||||
var def = gtl.import("kn_defs.js");
|
var def = gtl.import("knDefs.js");
|
||||||
|
|
||||||
//настройки для датчика оборотов
|
//настройки для датчика оборотов
|
||||||
var filter_freq = gtl.add_filter_iir(gtl.analog_inputs[record.tachoOptions.tachoChannel]); //объявление переменной фильтра
|
var filter_freq = gtl.add_filter_iir(gtl.analog_inputs[record.tachoOptions.tachoChannel]); //объявление переменной фильтра
|
||||||
|
@ -107,10 +107,10 @@ function diagnose() {
|
||||||
|
|
||||||
case 1: //частота вращения фиксированная
|
case 1: //частота вращения фиксированная
|
||||||
case 2: //частота вращения из поля INFO (виброметр)
|
case 2: //частота вращения из поля INFO (виброметр)
|
||||||
filter_spen.frequency = fnc.filter_frequency(); //считаме фильтр для огибающей
|
filter_spen.frequency = fnc.bpFreq(); //считаме фильтр для огибающей
|
||||||
filter_spen.width = fnc.filter_width(); //определяем ширину фильтра
|
filter_spen.width = fnc.bpWidth(); //определяем ширину фильтра
|
||||||
spen.frequency = fnc.spec_params().frequency;
|
spen.frequency = fnc.specParams().frequency;
|
||||||
spen.lines = fnc.spec_params().lines;
|
spen.lines = fnc.specParams().lines;
|
||||||
|
|
||||||
//определение минимально необходимой длительности сигнала для проведения диагностики
|
//определение минимально необходимой длительности сигнала для проведения диагностики
|
||||||
let time = []; //массив по времени набора данных
|
let time = []; //массив по времени набора данных
|
||||||
|
@ -127,7 +127,7 @@ function diagnose() {
|
||||||
|
|
||||||
//Вывод информации в лог
|
//Вывод информации в лог
|
||||||
//Расчет площади спектра вибрации: спектр, начало отсчета в Гц, граничная частота спектра
|
//Расчет площади спектра вибрации: спектр, начало отсчета в Гц, граничная частота спектра
|
||||||
var AQ = fnc.spec_square(ausp.data, ausp.frequency / 2, ausp.frequency);
|
var AQ = fnc.specSquare(ausp.data, ausp.frequency / 2, ausp.frequency);
|
||||||
|
|
||||||
gtl.log.info("Объект диагностики", + options.rbModelName);
|
gtl.log.info("Объект диагностики", + options.rbModelName);
|
||||||
gtl.log.info("Минимально необходимая частота вращения", fnc.FREQNESS());
|
gtl.log.info("Минимально необходимая частота вращения", fnc.FREQNESS());
|
||||||
|
@ -144,8 +144,8 @@ function diagnose() {
|
||||||
gtl.log.info("Разрешение SPEN", spen.resolution);
|
gtl.log.info("Разрешение SPEN", spen.resolution);
|
||||||
gtl.log.info("Ширина AUSP", ausp.frequency);
|
gtl.log.info("Ширина AUSP", ausp.frequency);
|
||||||
|
|
||||||
let spen_mx = mtx.kn_mtx(spen, filter_spen, true);
|
let spen_mx = mtx.knMTX(spen, filter_spen, true);
|
||||||
let spen_df = def.kn_defs(spen_mx, true);
|
let spen_df = def.knDefs(spen_mx, true);
|
||||||
|
|
||||||
var res = {
|
var res = {
|
||||||
RMSA: rms_spen.value,
|
RMSA: rms_spen.value,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
export function kn_defs(mtx, isDeep) {
|
export function knDefs(mtx, isDeep) {
|
||||||
var res = {}; //результат
|
var res = {}; //результат
|
||||||
if (isDeep = true) { var key = "dp" } else { var key = "lv" };
|
if (isDeep = true) { var key = "dp" } else { var key = "lv" };
|
||||||
var des = {
|
var des = {
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var ufc = gtl.import("user-functions.js");
|
var ufc = gtl.import("userFunctions.js");
|
||||||
|
|
||||||
export function kn_mtx(spec, filter, isDeep) {
|
export function knMTX(spec, filter, isDeep) {
|
||||||
var num = 6; //глубина матрицы (количество гармоник)
|
var num = 6; //глубина матрицы (количество гармоник)
|
||||||
var level = 0; //уровень развития дефекта
|
var level = 0; //уровень развития дефекта
|
||||||
var res = {}; //результат
|
var res = {}; //результат
|
||||||
|
@ -15,7 +15,7 @@ export function kn_mtx(spec, filter, isDeep) {
|
||||||
BPFI: { nm: "Частота перекатывания тел качения по внутреннему кольцу", fn: ufc.BPFI(), md: ufc.FREQ(), cl: 0xff990090 }
|
BPFI: { nm: "Частота перекатывания тел качения по внутреннему кольцу", fn: ufc.BPFI(), md: ufc.FREQ(), cl: 0xff990090 }
|
||||||
}; //набор функциональных частот
|
}; //набор функциональных частот
|
||||||
|
|
||||||
function mod_factor(dSpec, dFilter, ampl, base) {
|
function modFactor(dSpec, dFilter, ampl, base) {
|
||||||
let dl = (ampl - base); //разность уровней гармонической и случайной составляющей вибрации
|
let dl = (ampl - base); //разность уровней гармонической и случайной составляющей вибрации
|
||||||
let df = dSpec.frequency / dFilter.width; //отношение частотному разрешению спектра к ширине фильтра
|
let df = dSpec.frequency / dFilter.width; //отношение частотному разрешению спектра к ширине фильтра
|
||||||
let mod = Math.sqrt((10 ** (dl / 10) - 1) * df);
|
let mod = Math.sqrt((10 ** (dl / 10) - 1) * df);
|
||||||
|
@ -42,7 +42,7 @@ export function kn_mtx(spec, filter, isDeep) {
|
||||||
if (lines.harms[j].is_present == true) {
|
if (lines.harms[j].is_present == true) {
|
||||||
switch (isDeep) {
|
switch (isDeep) {
|
||||||
case true:
|
case true:
|
||||||
level = Math.round(mod_factor(spec, filter, lines.harms[j].amplitude, lines.harms[j].base));
|
level = Math.round(modFactor(spec, filter, lines.harms[j].amplitude, lines.harms[j].base));
|
||||||
break;
|
break;
|
||||||
case false:
|
case false:
|
||||||
level = Math.round(lines.harms[j].level);
|
level = Math.round(lines.harms[j].level);
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
export function rb_defs(mtx, isDeep) {
|
export function rbDefs(mtx, isDeep) {
|
||||||
var res = {}; //результат
|
var res = {}; //результат
|
||||||
if (isDeep = true) { var key = "dp" } else { var key = "lv" };
|
if (isDeep = true) { var key = "dp" } else { var key = "lv" };
|
||||||
var des = {
|
var des = {
|
||||||
|
@ -11,7 +11,7 @@ export function rb_defs(mtx, isDeep) {
|
||||||
BPFI: { ds: "внутреннего кольца", dp: 8, lv: 20 },
|
BPFI: { ds: "внутреннего кольца", dp: 8, lv: 20 },
|
||||||
}; //описание функциональных частот
|
}; //описание функциональных частот
|
||||||
|
|
||||||
function get_note(harmsArr) {
|
function getNote(harmsArr) {
|
||||||
let note = "Износ"; //описание характера колебаний
|
let note = "Износ"; //описание характера колебаний
|
||||||
let cnt = 0; //количество значений в массиве
|
let cnt = 0; //количество значений в массиве
|
||||||
for (let i = 0; i <= harmsArr.length - 1; i++) { if (harmsArr[i] > 0) { cnt++ }; };
|
for (let i = 0; i <= harmsArr.length - 1; i++) { if (harmsArr[i] > 0) { cnt++ }; };
|
||||||
|
@ -21,7 +21,7 @@ export function rb_defs(mtx, isDeep) {
|
||||||
return note;
|
return note;
|
||||||
};
|
};
|
||||||
|
|
||||||
function get_level(lvl, thres) {
|
function getLevel(lvl, thres) {
|
||||||
let level = "Сильный";
|
let level = "Сильный";
|
||||||
switch (true) {
|
switch (true) {
|
||||||
case lvl < 0.5 * thres:
|
case lvl < 0.5 * thres:
|
||||||
|
@ -41,8 +41,8 @@ export function rb_defs(mtx, isDeep) {
|
||||||
let lvl = Math.max(...arr); //определяем максимальное значение параметра из массива
|
let lvl = Math.max(...arr); //определяем максимальное значение параметра из массива
|
||||||
let sum = arr.reduce(function (a, b) { return a + b }, 0); //сумма элементов массива
|
let sum = arr.reduce(function (a, b) { return a + b }, 0); //сумма элементов массива
|
||||||
if (sum > 0) {
|
if (sum > 0) {
|
||||||
let note = get_note(arr);
|
let note = getNote(arr);
|
||||||
res[rows[i]] = note + ' ' + des[rows[i]].ds + ': ' + get_level(lvl, des[rows[i]][key]) + ' (' + lvl + ')';
|
res[rows[i]] = note + ' ' + des[rows[i]].ds + ': ' + getLevel(lvl, des[rows[i]][key]) + ' (' + lvl + ')';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
return res;
|
return res;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
var ufc = gtl.import("user-functions.js");
|
var ufc = gtl.import("userFunctions.js");
|
||||||
|
|
||||||
export function rb_mtx(spec, filter, isDeep) {
|
export function rbMTX(spec, filter, isDeep) {
|
||||||
var num = 6; //глубина матрицы (количество гармоник)
|
var num = 6; //глубина матрицы (количество гармоник)
|
||||||
var level = 0; //уровень развития дефекта
|
var level = 0; //уровень развития дефекта
|
||||||
var res = {}; //результат
|
var res = {}; //результат
|
||||||
|
@ -15,7 +15,7 @@ export function rb_mtx(spec, filter, isDeep) {
|
||||||
BPFI: { nm: "Частота перекатывания тел качения по внутреннему кольцу", fn: ufc.BPFI(), md: ufc.FREQ(), cl: 0xff990090 }
|
BPFI: { nm: "Частота перекатывания тел качения по внутреннему кольцу", fn: ufc.BPFI(), md: ufc.FREQ(), cl: 0xff990090 }
|
||||||
}; //набор функциональных частот
|
}; //набор функциональных частот
|
||||||
|
|
||||||
function mod_factor(dSpec, dFilter, ampl, base) {
|
function modFactor(dSpec, dFilter, ampl, base) {
|
||||||
let dl = (ampl - base); //разность уровней гармонической и случайной составляющей вибрации
|
let dl = (ampl - base); //разность уровней гармонической и случайной составляющей вибрации
|
||||||
let df = dSpec.frequency / dFilter.width; //отношение частотному разрешению спектра к ширине фильтра
|
let df = dSpec.frequency / dFilter.width; //отношение частотному разрешению спектра к ширине фильтра
|
||||||
let mod = Math.sqrt((10 ** (dl / 10) - 1) * df);
|
let mod = Math.sqrt((10 ** (dl / 10) - 1) * df);
|
||||||
|
@ -42,7 +42,7 @@ export function rb_mtx(spec, filter, isDeep) {
|
||||||
if (lines.harms[j].is_present == true) {
|
if (lines.harms[j].is_present == true) {
|
||||||
switch (isDeep) {
|
switch (isDeep) {
|
||||||
case true:
|
case true:
|
||||||
level = Math.round(mod_factor(spec, filter, lines.harms[j].amplitude, lines.harms[j].base));
|
level = Math.round(modFactor(spec, filter, lines.harms[j].amplitude, lines.harms[j].base));
|
||||||
break;
|
break;
|
||||||
case false:
|
case false:
|
||||||
level = Math.round(lines.harms[j].level);
|
level = Math.round(lines.harms[j].level);
|
||||||
|
|
|
@ -4,9 +4,9 @@ var options = gtl.options;
|
||||||
var record = gtl.options.record;
|
var record = gtl.options.record;
|
||||||
var point = gtl.options.point;
|
var point = gtl.options.point;
|
||||||
|
|
||||||
var fnc = gtl.import("user-functions.js");
|
var fnc = gtl.import("userFunctions.js");
|
||||||
var mtx = gtl.import("rb_mtx.js");
|
var mtx = gtl.import("rbMTX.js");
|
||||||
var def = gtl.import("rb_defs.js");
|
var def = gtl.import("rbDefs.js");
|
||||||
|
|
||||||
//настройки для датчика оборотов
|
//настройки для датчика оборотов
|
||||||
var filter_freq = gtl.add_filter_iir(gtl.analog_inputs[record.tachoOptions.tachoChannel]); //объявление переменной фильтра
|
var filter_freq = gtl.add_filter_iir(gtl.analog_inputs[record.tachoOptions.tachoChannel]); //объявление переменной фильтра
|
||||||
|
@ -115,12 +115,12 @@ function diagnose() {
|
||||||
|
|
||||||
case 1: //частота вращения фиксированная
|
case 1: //частота вращения фиксированная
|
||||||
case 2: //частота вращения из поля INFO (виброметр)
|
case 2: //частота вращения из поля INFO (виброметр)
|
||||||
filter_spen.frequency = fnc.filter_frequency(); //считаме фильтр для огибающей
|
filter_spen.frequency = fnc.bpFreq(); //считаме фильтр для огибающей
|
||||||
filter_spen.width = fnc.filter_width(); //определяем ширину фильтра
|
filter_spen.width = fnc.pbWidth(); //определяем ширину фильтра
|
||||||
spen.frequency = fnc.spec_params().frequency;
|
spen.frequency = fnc.specParams().frequency;
|
||||||
spen.lines = fnc.spec_params().lines;
|
spen.lines = fnc.specParams().lines;
|
||||||
ausp.frequency = fnc.spec_params().frequency;
|
ausp.frequency = fnc.specParams().frequency;
|
||||||
ausp.lines = fnc.spec_params().lines;
|
ausp.lines = fnc.specParams().lines;
|
||||||
|
|
||||||
//определение минимально необходимой длительности сигнала для проведения диагностики
|
//определение минимально необходимой длительности сигнала для проведения диагностики
|
||||||
let time = []; //массив времени набора данных
|
let time = []; //массив времени набора данных
|
||||||
|
@ -137,7 +137,7 @@ function diagnose() {
|
||||||
|
|
||||||
//Вывод информации в лог
|
//Вывод информации в лог
|
||||||
//Расчет площади спектра вибрации: спектр, начало отсчета в Гц, граничная частота спектра
|
//Расчет площади спектра вибрации: спектр, начало отсчета в Гц, граничная частота спектра
|
||||||
var AQ = fnc.spec_square(ausp.data, ausp.frequency / 2, ausp.frequency);
|
var AQ = fnc.specSquare(ausp.data, ausp.frequency / 2, ausp.frequency);
|
||||||
|
|
||||||
gtl.log.info("Объект диагностики", options.rbModelName);
|
gtl.log.info("Объект диагностики", options.rbModelName);
|
||||||
gtl.log.info("Минимально необходимая частота вращения", fnc.FREQNESS());
|
gtl.log.info("Минимально необходимая частота вращения", fnc.FREQNESS());
|
||||||
|
@ -154,9 +154,9 @@ function diagnose() {
|
||||||
gtl.log.info("Разрешение SPEN", spen.resolution);
|
gtl.log.info("Разрешение SPEN", spen.resolution);
|
||||||
gtl.log.info("Ширина AUSP", ausp.frequency);
|
gtl.log.info("Ширина AUSP", ausp.frequency);
|
||||||
|
|
||||||
let spen_mx = mtx.rb_mtx(spen, filter_spen, true);
|
let spen_mx = mtx.rbMTX(spen, filter_spen, true);
|
||||||
let spen_df = def.rb_defs(spen_mx, true);
|
let spen_df = def.rbDefs(spen_mx, true);
|
||||||
let ausp_mx = mtx.rb_mtx(ausp, 0, true);
|
let ausp_mx = mtx.rbMTX(ausp, 0, true);
|
||||||
|
|
||||||
var res = {
|
var res = {
|
||||||
RMSA: rms_spen.value,
|
RMSA: rms_spen.value,
|
||||||
|
|
|
@ -109,17 +109,17 @@ export function PGFZ() { return pgZ2 * PGFSAT() }; //зубцовая часто
|
||||||
|
|
||||||
export function TRFBLD() { return FREQ() * trBlades; }; //лопастная частота
|
export function TRFBLD() { return FREQ() * trBlades; }; //лопастная частота
|
||||||
|
|
||||||
export function filter_frequency() {
|
export function bpFreq() {
|
||||||
//let filter = 6013.41 * Math.log(0.266935 * FREQ() + 1.1201);
|
//let filter = 6013.41 * Math.log(0.266935 * FREQ() + 1.1201);
|
||||||
let filter = 1850 * Math.sqrt(FREQ());
|
let filter = 1850 * Math.sqrt(FREQ());
|
||||||
return filter;
|
return filter;
|
||||||
}; //расчетная центральная частота полосового фильтра для спектра огибающей
|
}; //расчетная центральная частота полосового фильтра для спектра огибающей
|
||||||
|
|
||||||
export function filter_width(number) {
|
export function bpWidth(number) {
|
||||||
let n = 3;
|
let n = 3;
|
||||||
if (number != null) { n = number };
|
if (number != null) { n = number };
|
||||||
let kf = (2 ** (1 / n) - 1) / ((2 ** (1 / n)) ** (1 / 2)); //коэффициент для полосового фильтра
|
let kf = (2 ** (1 / n) - 1) / ((2 ** (1 / n)) ** (1 / 2)); //коэффициент для полосового фильтра
|
||||||
let width = kf * filter_frequency();
|
let width = kf * bpFreq();
|
||||||
return width;
|
return width;
|
||||||
}; //ширина фильтра спектра огибающей
|
}; //ширина фильтра спектра огибающей
|
||||||
|
|
||||||
|
@ -155,7 +155,7 @@ export function tolerance() {
|
||||||
}; return tol;
|
}; return tol;
|
||||||
}; //максимальный коридор обнаружения гармоник (tolerance)
|
}; //максимальный коридор обнаружения гармоник (tolerance)
|
||||||
|
|
||||||
export function spec_params() {
|
export function specParams() {
|
||||||
let frq = 200; //ширина спектра
|
let frq = 200; //ширина спектра
|
||||||
let res = 400; //частотное разрешение
|
let res = 400; //частотное разрешение
|
||||||
function getStandart(value) {
|
function getStandart(value) {
|
||||||
|
@ -218,7 +218,7 @@ export function spec_params() {
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export function spec_square(data, bnd, frq) {
|
export function specSquare(data, bnd, frq) {
|
||||||
let lines = data.length; //определение количества линий спектра вибрации
|
let lines = data.length; //определение количества линий спектра вибрации
|
||||||
let res = frq / lines; //определение частотного разрешения спектра вибрации (основание прямоугольной трапеции)
|
let res = frq / lines; //определение частотного разрешения спектра вибрации (основание прямоугольной трапеции)
|
||||||
let start = 1; //переменная для определения стартового индекса в массиве
|
let start = 1; //переменная для определения стартового индекса в массиве
|
||||||
|
@ -228,19 +228,19 @@ export function spec_square(data, bnd, frq) {
|
||||||
return S;
|
return S;
|
||||||
}; //определение площади спектра
|
}; //определение площади спектра
|
||||||
|
|
||||||
export function mod_factor(ampl, base) {
|
export function modFactor(ampl, base) {
|
||||||
let dl = (ampl - base); //разность уровней гармонической и случайной составляющей вибрации
|
let dl = (ampl - base); //разность уровней гармонической и случайной составляющей вибрации
|
||||||
let df = spec_params().resolution / filter_width(); //отношение частотному разрешению спектра к ширине фильтра
|
let df = specParams().resolution / bpWidth(); //отношение частотному разрешению спектра к ширине фильтра
|
||||||
let mod = Math.sqrt((10 ** (dl / 10) - 1) * df) * 100;
|
let mod = Math.sqrt((10 ** (dl / 10) - 1) * df) * 100;
|
||||||
return mod;
|
return mod;
|
||||||
}; //определение условной глубины модуляции
|
}; //определение условной глубины модуляции
|
||||||
|
|
||||||
export function deep_factor(ampl, base) {
|
export function deepFactor(ampl, base) {
|
||||||
let deep = (ampl - base) / (ampl + base) * 100;
|
let deep = (ampl - base) / (ampl + base) * 100;
|
||||||
return deep;
|
return deep;
|
||||||
}; //определение условной глубины модуляции
|
}; //определение условной глубины модуляции
|
||||||
|
|
||||||
export function ampl_factor(ampl, base) {
|
export function amplFactor(ampl, base) {
|
||||||
let crest = (ampl / base);
|
let crest = (ampl / base);
|
||||||
return crest;
|
return crest;
|
||||||
}; //определение амплитудного коэффициента
|
}; //определение амплитудного коэффициента
|
||||||
|
|
Loading…
Reference in New Issue