there are new func in the mtx

develop
aleksey_k 2024-04-23 19:33:32 +09:00
parent feca9870bc
commit b872b27c70
8 changed files with 91 additions and 15 deletions

View File

@ -145,13 +145,15 @@ function diagnose() {
gtl.log.info("BSF", fnc.BSBAL()); gtl.log.info("BSF", fnc.BSBAL());
gtl.log.info("Коридор обнаружения гармоники", fnc.tolerance()); gtl.log.info("Коридор обнаружения гармоники", fnc.tolerance());
gtl.log.info("Полосовой фильтр (расчетный)", filter_spen.frequency); gtl.log.info("Полосовой фильтр (расчетный)", filter_spen.frequency);
gtl.log.info("Ширина фильтра", filter_spen.width);
gtl.log.info("Граничная частота SPEN", spen.frequency); gtl.log.info("Граничная частота SPEN", spen.frequency);
gtl.log.info("Количество линий SPEN", spen.lines); gtl.log.info("Количество линий SPEN", spen.lines);
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, true); let spen_mx = mtx.bs_mtx(spen, filter_spen, true);
let spen_df = def.bs_defs(spen_mx, true); let spen_df = def.bs_defs(spen_mx, true);
let ausp_mx = mtx.bs_mtx(ausp, false); let ausp_mx = mtx.bs_mtx(ausp, 0, false);
var res = { var res = {
RMSA: rms_spen.value, RMSA: rms_spen.value,

View File

@ -2,7 +2,7 @@
var ufc = gtl.import("user-functions.js"); var ufc = gtl.import("user-functions.js");
export function bs_mtx(spec, isDeep) { export function bs_mtx(spec, filter, isDeep) {
var num = 6; //глубина матрицы (количество гармоник) var num = 6; //глубина матрицы (количество гармоник)
var level = 0; //уровень развития дефекта var level = 0; //уровень развития дефекта
var res = {}; //результат var res = {}; //результат
@ -15,6 +15,23 @@ export function bs_mtx(spec, 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) {
let dl = (ampl - base); //разность уровней гармонической и случайной составляющей вибрации
let df = dSpec.resolution / dFilter.width; //отношение частотному разрешению спектра к ширине фильтра
let mod = Math.sqrt((10 ** (dl / 10) - 1) * df) * 100;
return mod;
}; //определение глубины модуляции ВЧ составляющих
function deep_factor(ampl, base) {
let deep = (ampl - base) / (ampl + base) * 100;
return deep;
}; //определение условной глубины модуляции
function ampl_factor(ampl, base) {
let crest = (ampl / base);
return crest;
}; //определение амплитудного коэффициента
var rows = Object.keys(set); //массив ключей объекта (наборов гармонических рядов) var rows = Object.keys(set); //массив ключей объекта (наборов гармонических рядов)
//присваиваем набору гармоник переменную, добавляем гармоники: частота, кол-во (default = 10), цвет, вес. //присваиваем набору гармоник переменную, добавляем гармоники: частота, кол-во (default = 10), цвет, вес.
for (let i = 0; i <= rows.length - 1; i++) { for (let i = 0; i <= rows.length - 1; i++) {
@ -35,7 +52,7 @@ export function bs_mtx(spec, 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(ufc.mod_factor(lines.harms[j].amplitude, lines.harms[j].base)); level = Math.round(mod_factor(spec, filter, lines.harms[j].amplitude, lines.harms[j].base));
break; break;
case false: case false:
level = Math.round(lines.harms[j].amplitude); level = Math.round(lines.harms[j].amplitude);

View File

@ -143,13 +143,15 @@ function diagnose() {
gtl.log.info("BPFO", fnc.GTFZ()); gtl.log.info("BPFO", fnc.GTFZ());
gtl.log.info("Коридор обнаружения гармоники", fnc.tolerance()); gtl.log.info("Коридор обнаружения гармоники", fnc.tolerance());
gtl.log.info("Полосовой фильтр (расчетный)", filter_spen.frequency); gtl.log.info("Полосовой фильтр (расчетный)", filter_spen.frequency);
gtl.log.info("Ширина фильтра", filter_spen.width);
gtl.log.info("Граничная частота SPEN", spen.frequency); gtl.log.info("Граничная частота SPEN", spen.frequency);
gtl.log.info("Количество линий SPEN", spen.lines); gtl.log.info("Количество линий SPEN", spen.lines);
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, true); let spen_mx = mtx.gt_mtx(spen, filter_spen, true);
let spen_df = def.gt_defs(spen_mx, true); let spen_df = def.gt_defs(spen_mx, true);
let ausp_mx = mtx.gt_mtx(ausp, false); let ausp_mx = mtx.gt_mtx(ausp, 0, false);
var res = { var res = {
RMSA: rms_spen.value, RMSA: rms_spen.value,

View File

@ -2,7 +2,7 @@
var ufc = gtl.import("user-functions.js"); var ufc = gtl.import("user-functions.js");
export function gt_mtx(spec, isDeep) { export function gt_mtx(spec, filter, isDeep) {
var num = 6; //глубина матрицы (количество гармоник) var num = 6; //глубина матрицы (количество гармоник)
var level = 0; //уровень развития дефекта var level = 0; //уровень развития дефекта
var res = {}; //результат var res = {}; //результат
@ -14,6 +14,23 @@ export function gt_mtx(spec, 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) {
let dl = (ampl - base); //разность уровней гармонической и случайной составляющей вибрации
let df = dSpec.resolution / dFilter.width; //отношение частотному разрешению спектра к ширине фильтра
let mod = Math.sqrt((10 ** (dl / 10) - 1) * df) * 100;
return mod;
}; //определение глубины модуляции ВЧ составляющих
function deep_factor(ampl, base) {
let deep = (ampl - base) / (ampl + base) * 100;
return deep;
}; //определение условной глубины модуляции
function ampl_factor(ampl, base) {
let crest = (ampl / base);
return crest;
}; //определение амплитудного коэффициента
var rows = Object.keys(set); //массив ключей объекта (наборов гармонических рядов) var rows = Object.keys(set); //массив ключей объекта (наборов гармонических рядов)
//присваиваем набору гармоник переменную, добавляем гармоники: частота, кол-во (default = 10), цвет, вес. //присваиваем набору гармоник переменную, добавляем гармоники: частота, кол-во (default = 10), цвет, вес.
for (let i = 0; i <= rows.length - 1; i++) { for (let i = 0; i <= rows.length - 1; i++) {
@ -34,7 +51,7 @@ export function gt_mtx(spec, 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(ufc.mod_factor(lines.harms[j].amplitude, lines.harms[j].base)); level = Math.round(mod_factor(spec, filter, lines.harms[j].amplitude, lines.harms[j].base));
break; break;
case false: case false:
level = Math.round(lines.harms[j].amplitude); level = Math.round(lines.harms[j].amplitude);

View File

@ -138,11 +138,13 @@ function diagnose() {
gtl.log.info("BSF", fnc.BSF()); gtl.log.info("BSF", fnc.BSF());
gtl.log.info("Коридор обнаружения гармоники", fnc.tolerance()); gtl.log.info("Коридор обнаружения гармоники", fnc.tolerance());
gtl.log.info("Полосовой фильтр (расчетный)", filter_spen.frequency); gtl.log.info("Полосовой фильтр (расчетный)", filter_spen.frequency);
gtl.log.info("Ширина фильтра", filter_spen.width);
gtl.log.info("Граничная частота SPEN", spen.frequency); gtl.log.info("Граничная частота SPEN", spen.frequency);
gtl.log.info("Количество линий SPEN", spen.lines); gtl.log.info("Количество линий SPEN", spen.lines);
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, true); let spen_mx = mtx.kn_mtx(spen, filter_spen, true);
let spen_df = def.kn_defs(spen_mx, true); let spen_df = def.kn_defs(spen_mx, true);
var res = { var res = {

View File

@ -2,7 +2,7 @@
var ufc = gtl.import("user-functions.js"); var ufc = gtl.import("user-functions.js");
export function kn_mtx(spec, isDeep) { export function kn_mtx(spec, filter, isDeep) {
var num = 6; //глубина матрицы (количество гармоник) var num = 6; //глубина матрицы (количество гармоник)
var level = 0; //уровень развития дефекта var level = 0; //уровень развития дефекта
var res = {}; //результат var res = {}; //результат
@ -15,6 +15,23 @@ export function kn_mtx(spec, 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) {
let dl = (ampl - base); //разность уровней гармонической и случайной составляющей вибрации
let df = dSpec.resolution / dFilter.width; //отношение частотному разрешению спектра к ширине фильтра
let mod = Math.sqrt((10 ** (dl / 10) - 1) * df) * 100;
return mod;
}; //определение глубины модуляции ВЧ составляющих
function deep_factor(ampl, base) {
let deep = (ampl - base) / (ampl + base) * 100;
return deep;
}; //определение условной глубины модуляции
function ampl_factor(ampl, base) {
let crest = (ampl / base);
return crest;
}; //определение амплитудного коэффициента
var rows = Object.keys(set); //массив ключей объекта (наборов гармонических рядов) var rows = Object.keys(set); //массив ключей объекта (наборов гармонических рядов)
//присваиваем набору гармоник переменную, добавляем гармоники: частота, кол-во (default = 10), цвет, вес. //присваиваем набору гармоник переменную, добавляем гармоники: частота, кол-во (default = 10), цвет, вес.
for (let i = 0; i <= rows.length - 1; i++) { for (let i = 0; i <= rows.length - 1; i++) {
@ -35,7 +52,7 @@ export function kn_mtx(spec, 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(ufc.mod_factor(lines.harms[j].amplitude, lines.harms[j].base)); level = Math.round(mod_factor(spec, filter, lines.harms[j].amplitude, lines.harms[j].base));
break; break;
case false: case false:
level = Math.round(lines.harms[j].amplitude); level = Math.round(lines.harms[j].amplitude);

View File

@ -2,7 +2,7 @@
var ufc = gtl.import("user-functions.js"); var ufc = gtl.import("user-functions.js");
export function rb_mtx(spec, isDeep) { export function rb_mtx(spec, filter, isDeep) {
var num = 6; //глубина матрицы (количество гармоник) var num = 6; //глубина матрицы (количество гармоник)
var level = 0; //уровень развития дефекта var level = 0; //уровень развития дефекта
var res = {}; //результат var res = {}; //результат
@ -15,6 +15,23 @@ export function rb_mtx(spec, 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) {
let dl = (ampl - base); //разность уровней гармонической и случайной составляющей вибрации
let df = dSpec.resolution / dFilter.width; //отношение частотному разрешению спектра к ширине фильтра
let mod = Math.sqrt((10 ** (dl / 10) - 1) * df) * 100;
return mod;
}; //определение глубины модуляции ВЧ составляющих
function deep_factor(ampl, base) {
let deep = (ampl - base) / (ampl + base) * 100;
return deep;
}; //определение условной глубины модуляции
function ampl_factor(ampl, base) {
let crest = (ampl / base);
return crest;
}; //определение амплитудного коэффициента
var rows = Object.keys(set); //массив ключей объекта (наборов гармонических рядов) var rows = Object.keys(set); //массив ключей объекта (наборов гармонических рядов)
//присваиваем набору гармоник переменную, добавляем гармоники: частота, кол-во (default = 10), цвет, вес. //присваиваем набору гармоник переменную, добавляем гармоники: частота, кол-во (default = 10), цвет, вес.
for (let i = 0; i <= rows.length - 1; i++) { for (let i = 0; i <= rows.length - 1; i++) {
@ -35,7 +52,7 @@ export function rb_mtx(spec, 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(ufc.mod_factor(lines.harms[j].amplitude, lines.harms[j].base)); level = Math.round(mod_factor(spec, filter, lines.harms[j].amplitude, lines.harms[j].base));
break; break;
case false: case false:
level = Math.round(lines.harms[j].amplitude); level = Math.round(lines.harms[j].amplitude);

View File

@ -146,13 +146,15 @@ function diagnose() {
gtl.log.info("BSF", fnc.BSF()); gtl.log.info("BSF", fnc.BSF());
gtl.log.info("Коридор обнаружения гармоники", fnc.tolerance()); gtl.log.info("Коридор обнаружения гармоники", fnc.tolerance());
gtl.log.info("Полосовой фильтр (расчетный)", filter_spen.frequency); gtl.log.info("Полосовой фильтр (расчетный)", filter_spen.frequency);
gtl.log.info("Ширина фильтра", filter_spen.width);
gtl.log.info("Граничная частота SPEN", spen.frequency); gtl.log.info("Граничная частота SPEN", spen.frequency);
gtl.log.info("Количество линий SPEN", spen.lines); gtl.log.info("Количество линий SPEN", spen.lines);
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, true); let spen_mx = mtx.rb_mtx(spen, filter_spen, true);
let spen_df = def.rb_defs(spen_mx, true); let spen_df = def.rb_defs(spen_mx, true);
let ausp_mx = mtx.rb_mtx(ausp, true); let ausp_mx = mtx.rb_mtx(ausp, 0, true);
var res = { var res = {
RMSA: rms_spen.value, RMSA: rms_spen.value,