536 lines
30 KiB
JavaScript
536 lines
30 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 imp = gtl.import("functions_for_balance.js");
|
||
var fnc = gtl.import("user-functions.js");
|
||
|
||
// Цвета (для справки)
|
||
// #ff0000 - красный
|
||
// #00ff00 - салатовый
|
||
// #0fae1a - зелёный
|
||
// #0000ff - синий
|
||
// #00ddff - голубой
|
||
// #ff3dcc - фиолетовый
|
||
// #ffff00 - жёлтый
|
||
|
||
// ***** БАЛАНСИРОВОЧНЫЙ КАЛЬКУЛЯТОР. ОДНА ПЛОСКОСТЬ с фазой *****
|
||
// ***************************************************************
|
||
|
||
// Объявление графических плоскостей для построения графиков
|
||
let plot_pfc = gtl.plots.add("ФЧХ"); // фазо-частотная характеристика
|
||
let plot_ausp = gtl.plots.add("Спектр виброскорости"); // объект для спектра
|
||
let plot_vibr = gtl.plots.add("Векторы вибрации"); // объект для векторов вибрации
|
||
let plot_disb = gtl.plots.add("Расположение дисбаланса"); // объект для дисбаланса
|
||
|
||
// gtl.log.info("размер массива AUSPv_pl", AUSPv_pl.data.length);
|
||
// gtl.log.info("размер массива pfc_pl", pfc_pl.data.length);
|
||
|
||
// Переменные основные
|
||
// параметр вибрации (модуль вектора) - виброскорость (мм/с)
|
||
// угол (фаза) вектора - градусы
|
||
// масса груза (модуль ветора) - граммы
|
||
// DCI - Dynamic Coefficient of Influence (динамический коэффициент влияния)
|
||
// * - значение получаем из измерительного блока при нажатии кнопки
|
||
// ** - значение вводится пользователем
|
||
// *** - значение получаем в результате расчёта программы балансировки
|
||
// значение переменной с нижним подчёркиванием (..._) берётся из "дополнительных опций"; если оно не задано, то рассчитывается в скрипте
|
||
|
||
let R = gtl.options.customOptions.R; // радиус установки грузов, мм ** (для вычисления массы пробного груза)
|
||
let P = gtl.options.customOptions.P; // масса ротора, кг ** (для вычисления массы пробного груза)
|
||
let G = gtl.options.customOptions.G; // класс точности балансировки, мм/с ** (ГОСТ 1940)
|
||
let n = gtl.options.customOptions.n; // скорость вращения, об/мин ** (для вычисления массы пробного груза и допустимого остаточного дисбаланса)
|
||
let U_per; // допустимый остаточный дисбаланс *** (ГОСТ 1940)
|
||
let U_res; // остаточный дисбаланс *** (ГОСТ 1940)
|
||
|
||
let m_test_ = gtl.options.customOptions.m_test; // масса пробного груза **
|
||
let m_test = m_test_; // масса пробного груза ** (конечное значение)
|
||
let m_test_corner_ = gtl.options.customOptions.m_test_corner; // угол установки пробного груза **
|
||
let m_test_corner = m_test_corner_; // угол установки пробного груза ** (конечное значение)
|
||
|
||
let A0_ = gtl.options.customOptions.A0; // модуль вектора начальной вибрации */**
|
||
let A0 = A0_; // модуль вектора начальной вибрации */** (конечное значение)
|
||
let A0_phase_ = gtl.options.customOptions.A0_phase; // фаза вектора начальной вибрации */**
|
||
let A0_phase = A0_phase_; // фаза вектора начальной вибрации */** (конечное значение)
|
||
let A1_ = gtl.options.customOptions.A1; // модуль вектора вибрации после установки пробного груза */**
|
||
let A1 = A1_; // модуль вектора вибрации после установки пробного груза */** (конечное значение)
|
||
let A1_phase_ = gtl.options.customOptions.A1_phase; // фаза вектора вибрации после установки пробного груза */**
|
||
let A1_phase = A1_phase_; // фаза вектора вибрации после установки пробного груза */** (конечное значение)
|
||
let dA1; // модуль вектора дельты вибрации после установки пробного груза ***
|
||
let dA1_phase; // фаза вектора дельты вибрации после установки пробного груза ***
|
||
let DCI; // модуль (мм/с/граммы) динамического коэффициента влияния **/***
|
||
let DCI_phase; // фаза динамического коэффициента влияния **/***
|
||
let Mb = gtl.options.customOptions.Mb; // масса применённого балансировочного груза **/*** (конечное значение)
|
||
let Mb_corner = gtl.options.customOptions.Mb_corner; // угол применённого балансировочного груза **/*** (конечное значение)
|
||
let Mb_calc; // модуль расчётного вектора балансировочного груза ***
|
||
let Mb_corner_calc; // угол расчётного вектора балансировочного груза ***
|
||
let Mdisb; // модуль вектора дисбаланса ***
|
||
let Mdisb_corner; // угол вектора дисбаланса ***
|
||
|
||
// Переменные вспомогательные необходимые для расчётов и визуализации
|
||
let A0_phase_X; // угол наклона вектора A0 к оси X
|
||
let A0_phase_Y; // угол наклона вектора A0 к оси Y
|
||
let A0_1_X; // начальная координата вектора A0 по оси X
|
||
let A0_2_X; // конечная координата вектора A0 по оси X
|
||
let A0_1_Y; // начальная координата вектора A0 по оси Y
|
||
let A0_2_Y; // конечная координата вектора A0 по оси Y
|
||
|
||
let A1_phase_X; // угол наклона вектора A1 к оси X
|
||
let A1_phase_Y; // угол наклона вектора A1 к оси Y
|
||
let A1_1_X; // начальная координата вектора A1 по оси X
|
||
let A1_2_X; // конечная координата вектора A1 по оси X
|
||
let A1_1_Y; // начальная координата вектора A1 по оси Y
|
||
let A1_2_Y; // конечная координата вектора A1 по оси Y
|
||
|
||
let dA1_1_X; // начальная координата вектора dA1 по оси X
|
||
let dA1_2_X; // конечная координата вектора dA1 по оси X
|
||
let dA1_1_Y; // начальная координата вектора dA1 по оси Y
|
||
let dA1_2_Y; // конечная координата вектора dA1 по оси Y
|
||
|
||
let m_test_corner_X;// угол наклона вектора m_test к оси X
|
||
let m_test_corner_Y;// угол наклона вектора m_test к оси Y
|
||
let m_test_1_X; // начальная координата вектора m_test по оси X
|
||
let m_test_2_X; // конечная координата вектора m_test по оси X
|
||
let m_test_1_Y; // начальная координата вектора m_test по оси Y
|
||
let m_test_2_Y; // конечная координата вектора m_test по оси Y
|
||
|
||
let Mb_corner_calc_X; // угол наклона расчётного вектора Mb_calc к оси X
|
||
let Mb_corner_calc_Y; // угол наклона расчётного вектора Mb_calc к оси Y
|
||
let Mb_1_calc_X; // начальная координата расчётного вектора Mb_calc по оси X
|
||
let Mb_2_calc_X; // конечная координата расчётного вектора Mb_calc по оси X
|
||
let Mb_1_calc_Y; // начальная координата расчётного вектора Mb_calc по оси Y
|
||
let Mb_2_calc_Y; // конечная координата расчётного вектора Mb_calc по оси Y
|
||
|
||
let Mb_corner_X; // угол наклона вектора Mb к оси X
|
||
let Mb_corner_Y; // угол наклона вектора Mb к оси Y
|
||
let Mb_1_X; // начальная координата вектора Mb по оси X
|
||
let Mb_2_X; // конечная координата вектора Mb по оси X
|
||
let Mb_1_Y; // начальная координата вектора Mb по оси Y
|
||
let Mb_2_Y; // конечная координата вектора Mb по оси Y
|
||
|
||
let Mdisb_corner_X; // угол наклона вектора Mdisb к оси X
|
||
let Mdisb_corner_Y; // угол наклона вектора Mdisb к оси Y
|
||
let Mdisb_1_X; // начальная координата вектора Mdisb по оси X
|
||
let Mdisb_2_X; // конечная координата вектора Mdisb по оси X
|
||
let Mdisb_1_Y; // начальная координата вектора Mdisb по оси Y
|
||
let Mdisb_2_Y; // конечная координата вектора Mdisb по оси Y
|
||
|
||
|
||
|
||
// ***** РАСЧЁТЫ *****
|
||
// gtl.diagnostic.interval = 15;
|
||
// gtl.diagnostic.interval = Math.max(AUSPv.acq_time, AUSPv_pl.acq_time) + 0.1;
|
||
gtl.diagnostic.interval = gtl.acq_time + 1;
|
||
|
||
function diagnose() {
|
||
|
||
// РАСЧЁТЫ (балансировочный калькулятор)
|
||
// ШАГ 4 - расположение дисбаланса:
|
||
// вычисление положения дисбаланса Mdisb и рекомендуемого балансировочного груза Mb_calc
|
||
// ввод массы и угла установки балансировочного груза Mb
|
||
// построение графиков расположения пробного груза m_test, дисбаланса Mdisb, расчётного Mb_calc и введённого Mb балансировочного груза
|
||
// из предыдущих шагов переносятся: амплитуда и фаза вибрации A0 и A1, масса и угол установки пробного груза
|
||
// построение графиков вибрации A0, A1, dA1
|
||
|
||
|
||
// определение угла наклона вектора A0 к осям X и Y
|
||
if (A0_phase <= 90) {
|
||
A0_phase_X = 90 - A0_phase}
|
||
if (A0_phase <= 180) {
|
||
A0_phase_X = A0_phase - 90}
|
||
if (A0_phase <= 270) {
|
||
A0_phase_X = 270 - A0_phase}
|
||
if (A0_phase <= 360) {
|
||
A0_phase_X = A0_phase - 270}
|
||
if (A0_phase <= 90) {
|
||
A0_phase_Y = A0_phase}
|
||
if (A0_phase <= 180) {
|
||
A0_phase_Y = 180 - A0_phase}
|
||
if (A0_phase <= 270) {
|
||
A0_phase_Y = A0_phase - 180}
|
||
if (A0_phase <= 360) {
|
||
A0_phase_Y = 360 - A0_phase}
|
||
// определение координат вектора A0
|
||
var xA0_array = []; // массив координат точек вектора A0 по оси X
|
||
var yA0_array = []; // массив координат точек вектора A0 по оси Y
|
||
A0_1_X = 0;
|
||
if (A0_phase <= 180) {A0_2_X = Math.abs(Math.cos(A0_phase_X * Math.PI/180)) * A0
|
||
} else {A0_2_X = Math.abs(Math.cos(A0_phase_X * Math.PI/180)) * A0 * (-1)}
|
||
A0_1_Y = 0;
|
||
if (A0_phase <= 90 || A0_phase >= 270) {A0_2_Y = Math.abs(Math.cos(A0_phase_Y * Math.PI/180)) * A0
|
||
} else {A0_2_Y = Math.abs(Math.cos(A0_phase_Y * Math.PI/180)) * A0 * (-1)}
|
||
xA0_array[0] = A0_1_X;
|
||
xA0_array[1] = A0_2_X;
|
||
yA0_array[0] = A0_1_Y;
|
||
yA0_array[1] = A0_2_Y;
|
||
|
||
// определение угла наклона вектора A1 к осям X и Y
|
||
if (A1_phase <= 90) {
|
||
A1_phase_X = 90 - A1_phase}
|
||
if (A1_phase <= 180) {
|
||
A1_phase_X = A1_phase - 90}
|
||
if (A1_phase <= 270) {
|
||
A1_phase_X = 270 - A1_phase}
|
||
if (A1_phase <= 360) {
|
||
A1_phase_X = A1_phase - 270}
|
||
if (A1_phase <= 90) {
|
||
A1_phase_Y = A1_phase}
|
||
if (A1_phase <= 180) {
|
||
A1_phase_Y = 180 - A1_phase}
|
||
if (A1_phase <= 270) {
|
||
A1_phase_Y = A1_phase - 180}
|
||
if (A1_phase <= 360) {
|
||
A1_phase_Y = 360 - A1_phase}
|
||
// определение координат вектора A1
|
||
var xA1_array = []; // массив координат точек вектора A1 по оси X
|
||
var yA1_array = []; // массив координат точек вектора A1 по оси Y
|
||
A1_1_X = 0;
|
||
if (A1_phase <= 180) {A1_2_X = Math.abs(Math.cos(A1_phase_X * Math.PI/180)) * A1
|
||
} else {A1_2_X = Math.abs(Math.cos(A1_phase_X * Math.PI/180)) * A1 * (-1)}
|
||
A1_1_Y = 0;
|
||
if (A1_phase <= 90 || A1_phase >= 270) {A1_2_Y = Math.abs(Math.cos(A1_phase_Y * Math.PI/180)) * A1
|
||
} else {A1_2_Y = Math.abs(Math.cos(A1_phase_Y * Math.PI/180)) * A1 * (-1)}
|
||
xA1_array[0] = A1_1_X;
|
||
xA1_array[1] = A1_2_X;
|
||
yA1_array[0] = A1_1_Y;
|
||
yA1_array[1] = A1_2_Y;
|
||
|
||
// определение модуля вектора dA1
|
||
var xdA1_array = []; // массив координат точек вектора dA1 по оси X
|
||
var ydA1_array = []; // массив координат точек вектора dA1 по оси Y
|
||
dA1_1_X = A0_2_X;
|
||
dA1_2_X = A1_2_X;
|
||
dA1_1_Y = A0_2_Y;
|
||
dA1_2_Y = A1_2_Y;
|
||
dA1 = Math.sqrt(Math.pow(dA1_2_X - dA1_1_X, 2) + Math.pow(dA1_2_Y - dA1_1_Y, 2))
|
||
xdA1_array[0] = dA1_1_X;
|
||
xdA1_array[1] = dA1_2_X;
|
||
ydA1_array[0] = dA1_1_Y;
|
||
ydA1_array[1] = dA1_2_Y;
|
||
// определение фазы вектора dA1
|
||
if ((dA1_2_Y < dA1_1_Y) && (dA1_2_X < dA1_1_X)) {
|
||
dA1_phase = 180 + (((Math.acos((Math.abs(dA1_2_Y - dA1_1_Y)) / dA1)) * 180 ) / Math.PI)}
|
||
if ((dA1_2_Y > dA1_1_Y) && (dA1_2_X > dA1_1_X)) {
|
||
dA1_phase = (((Math.acos((Math.abs(dA1_2_Y - dA1_1_Y)) / dA1)) * 180 ) / Math.PI)}
|
||
if ((dA1_2_Y > dA1_1_Y) && (dA1_2_X < dA1_1_X)) {
|
||
dA1_phase = 360 - (((Math.acos((Math.abs(dA1_2_Y - dA1_1_Y)) / dA1)) * 180 ) / Math.PI)}
|
||
if ((dA1_2_Y < dA1_1_Y) && (dA1_2_X > dA1_1_X)) {
|
||
dA1_phase = 180 - (((Math.acos((Math.abs(dA1_2_Y - dA1_1_Y)) / dA1)) * 180 ) / Math.PI)}
|
||
if (dA1_phase > 360) {dA1_phase = dA1_phase - 360}
|
||
|
||
// определение координат точек окружности графика для отображения векторов вибрации
|
||
var xV_array = []; // массив координат точек окружности V по оси X
|
||
var yV_array = []; // массив координат точек окружности V по оси Y
|
||
var x0V = 0; // центр в начале координат
|
||
var y0V = 0; // центр в начале координат
|
||
for (let i=0; i<=359; i++ ) {
|
||
xV_array.push(x0V + (Math.max(A0,A1,dA1)+Math.max(A0,A1,dA1)*0.1) * (Math.sin((i) * Math.PI / 180)));
|
||
yV_array.push(y0V + (Math.max(A0,A1,dA1)+Math.max(A0,A1,dA1)*0.1) * (Math.cos((i) * Math.PI / 180)));}
|
||
|
||
|
||
// определение угла наклона вектора m_test к осям X и Y
|
||
if (m_test_corner <= 90) {
|
||
m_test_corner_X = 90 - m_test_corner}
|
||
if (m_test_corner <= 180) {
|
||
m_test_corner_X = m_test_corner - 90}
|
||
if (m_test_corner <= 270) {
|
||
m_test_corner_X = 270 - m_test_corner}
|
||
if (m_test_corner <= 360) {
|
||
m_test_corner_X = m_test_corner - 270}
|
||
if (m_test_corner <= 90) {
|
||
m_test_corner_Y = m_test_corner}
|
||
if (m_test_corner <= 180) {
|
||
m_test_corner_Y = 180 - m_test_corner}
|
||
if (m_test_corner <= 270) {
|
||
m_test_corner_Y = m_test_corner - 180}
|
||
if (m_test_corner <= 360) {
|
||
m_test_corner_Y = 360 - m_test_corner}
|
||
// определение координат вектора m_test
|
||
m_test_1_X = 0;
|
||
if (m_test_corner <= 180) {m_test_2_X = Math.abs(Math.cos(m_test_corner_X * Math.PI/180)) * m_test * (-1)
|
||
} else {m_test_2_X = Math.abs(Math.cos(m_test_corner_X * Math.PI/180)) * m_test}
|
||
m_test_1_Y = 0;
|
||
if (m_test_corner <= 90 || m_test_corner >= 270) {m_test_2_Y = Math.abs(Math.cos(m_test_corner_Y * Math.PI/180)) * m_test
|
||
} else {m_test_2_Y = Math.abs(Math.cos(m_test_corner_Y * Math.PI/180)) * m_test * (-1)}
|
||
|
||
|
||
// определение модуля вектора DCI (ДКВ)
|
||
DCI = dA1 / m_test; // a в экселе
|
||
|
||
// определение фазы вектора DCI
|
||
DCI_phase = dA1_phase - m_test_corner;
|
||
|
||
// определение модуля расчётного вектора Mb
|
||
Mb_calc = A0 / DCI; // Pур в экселе
|
||
// Mb_calc = (m_test * A0) / dA1;
|
||
// определение угла расчётного вектора Mb
|
||
if ((A0_phase - DCI_phase + 180) < 360) {
|
||
Mb_corner_calc = (A0_phase - DCI_phase + 180)
|
||
} else {Mb_corner_calc = (A0_phase - DCI_phase + 180) - 360}
|
||
// if ((m_test_corner + A0_phase - dA1_phase + 180) < 360) {
|
||
// Mb_corner_calc = (m_test_corner + A0_phase - dA1_phase + 180)
|
||
// } else {Mb_corner_calc = (m_test_corner + A0_phase - dA1_phase + 180) - 360}
|
||
// определение угла наклона расчётного вектора балансировочного груза Mb_calc к осям X и Y
|
||
if (Mb_corner_calc <= 90) {
|
||
Mb_corner_calc_X = 90 - Mb_corner_calc}
|
||
if (Mb_corner_calc <= 180) {
|
||
Mb_corner_calc_X = Mb_corner_calc - 90}
|
||
if (Mb_corner_calc <= 270) {
|
||
Mb_corner_calc_X = 270 - Mb_corner_calc}
|
||
if (Mb_corner_calc <= 360) {
|
||
Mb_corner_calc_X = Mb_corner_calc - 270}
|
||
if (Mb_corner_calc <= 90) {
|
||
Mb_corner_calc_Y = Mb_corner_calc}
|
||
if (Mb_corner_calc <= 180) {
|
||
Mb_corner_calc_Y = 180 - Mb_corner_calc}
|
||
if (Mb_corner_calc <= 270) {
|
||
Mb_corner_calc_Y = Mb_corner_calc - 180}
|
||
if (Mb_corner_calc <= 360) {
|
||
Mb_corner_calc_Y = 360 - Mb_corner_calc}
|
||
// определение координат расчётного вектора балансировочного груза Mb_calc
|
||
Mb_1_calc_X = 0;
|
||
if (Mb_corner_calc <= 180) {Mb_2_calc_X = Math.abs(Math.cos(Mb_corner_calc_X * Math.PI/180)) * Mb_calc * (-1)
|
||
} else {Mb_2_calc_X = Math.abs(Math.cos(Mb_corner_calc_X * Math.PI/180)) * Mb_calc}
|
||
Mb_1_calc_Y = 0;
|
||
if (Mb_corner_calc <= 90 || Mb_corner_calc >= 270) {Mb_2_calc_Y = Math.abs(Math.cos(Mb_corner_calc_Y * Math.PI/180)) * Mb_calc
|
||
} else {Mb_2_calc_Y = Math.abs(Math.cos(Mb_corner_calc_Y * Math.PI/180)) * Mb_calc * (-1)}
|
||
|
||
// определение угла наклона вектора балансировочного груза Mb к осям X и Y
|
||
if (Mb_corner <= 90) {
|
||
Mb_corner_X = 90 - Mb_corner}
|
||
if (Mb_corner <= 180) {
|
||
Mb_corner_X = Mb_corner - 90}
|
||
if (Mb_corner <= 270) {
|
||
Mb_corner_X = 270 - Mb_corner}
|
||
if (Mb_corner <= 360) {
|
||
Mb_corner_X = Mb_corner - 270}
|
||
if (Mb_corner <= 90) {
|
||
Mb_corner_Y = Mb_corner}
|
||
if (Mb_corner <= 180) {
|
||
Mb_corner_Y = 180 - Mb_corner}
|
||
if (Mb_corner <= 270) {
|
||
Mb_corner_Y = Mb_corner - 180}
|
||
if (Mb_corner <= 360) {
|
||
Mb_corner_Y = 360 - Mb_corner}
|
||
// определение координат вектора балансировочного груза Mb
|
||
Mb_1_X = 0;
|
||
if (Mb_corner <= 180) {Mb_2_X = Math.abs(Math.cos(Mb_corner_X * Math.PI/180)) * Mb * (-1)
|
||
} else {Mb_2_X = Math.abs(Math.cos(Mb_corner_X * Math.PI/180)) * Mb}
|
||
Mb_1_Y = 0;
|
||
if (Mb_corner <= 90 || Mb_corner >= 270) {Mb_2_Y = Math.abs(Math.cos(Mb_corner_Y * Math.PI/180)) * Mb
|
||
} else {Mb_2_Y = Math.abs(Math.cos(Mb_corner_Y * Math.PI/180)) * Mb * (-1)}
|
||
|
||
|
||
// определение массы дисбаланса
|
||
Mdisb = Mb_calc; // равен массе балансировочного груз P в экселе
|
||
// определение угла расположения дисбаланса
|
||
if ((Mb_corner_calc + 180) > 360) {
|
||
Mdisb_corner = (Mb_corner_calc + 180) - 360}
|
||
else if ((Mb_corner_calc + 180) < 0) {
|
||
Mdisb_corner = (Mb_corner_calc + 180) + 360}
|
||
else {Mdisb_corner = (Mb_corner_calc + 180)}
|
||
// определение угла наклона вектора дисбаланса Mdisb к осям X и Y
|
||
if (Mdisb_corner <= 90) {
|
||
Mdisb_corner_X = 90 - Mdisb_corner}
|
||
if (Mdisb_corner <= 180) {
|
||
Mdisb_corner_X = Mdisb_corner - 90}
|
||
if (Mdisb_corner <= 270) {
|
||
Mdisb_corner_X = 270 - Mdisb_corner}
|
||
if (Mdisb_corner <= 360) {
|
||
Mdisb_corner_X = Mdisb_corner - 270}
|
||
if (Mdisb_corner <= 90) {
|
||
Mdisb_corner_Y = Mdisb_corner}
|
||
if (Mdisb_corner <= 180) {
|
||
Mdisb_corner_Y = 180 - Mdisb_corner}
|
||
if (Mdisb_corner <= 270) {
|
||
Mdisb_corner_Y = Mdisb_corner - 180}
|
||
if (Mdisb_corner <= 360) {
|
||
Mdisb_corner_Y = 360 - Mdisb_corner}
|
||
// определение координат вектора дисбаланса Mdisb
|
||
Mdisb_1_X = 0;
|
||
if (Mdisb_corner <= 180) {Mdisb_2_X = Math.abs(Math.cos(Mdisb_corner_X * Math.PI/180)) * Mdisb * (-1)
|
||
} else {Mdisb_2_X = Math.abs(Math.cos(Mdisb_corner_X * Math.PI/180)) * Mdisb}
|
||
Mdisb_1_Y = 0;
|
||
if (Mdisb_corner <= 90 || Mdisb_corner >= 270) {Mdisb_2_Y = Math.abs(Math.cos(Mdisb_corner_Y * Math.PI/180)) * Mdisb
|
||
} else {Mdisb_2_Y = Math.abs(Math.cos(Mdisb_corner_Y * Math.PI/180)) * Mdisb * (-1)}
|
||
|
||
|
||
// Координаты масс для визуализации
|
||
// определение координат точек окружности обозначения массы дисбаланса Mdisb
|
||
var x_Mdisb_array = []; // массив координат точек окружности Mdisb по оси X
|
||
var y_Mdisb_array = []; // массив координат точек окружности Mdisb по оси Y
|
||
var x0_Mdisb = Mdisb_2_X; // центр по X
|
||
var y0_Mdisb = Mdisb_2_Y; // центр по Y
|
||
for (let i=0; i<=359; i++ ) {
|
||
x_Mdisb_array.push(x0_Mdisb + (Math.max(m_test,Mb_calc,Mb,Mdisb)*0.1 * (Math.sin((i) * Math.PI / 180))));
|
||
y_Mdisb_array.push(y0_Mdisb + (Math.max(m_test,Mb_calc,Mb,Mdisb)*0.1 * (Math.cos((i) * Math.PI / 180))));}
|
||
// определение координат точек окружности обозначения массы расчётного балансировочного груза Mb_calc
|
||
var x_Mb_calc_array = []; // массив координат точек окружности расчётного Mb по оси X
|
||
var y_Mb_calc_array = []; // массив координат точек окружности расчётного Mb по оси Y
|
||
var x0_Mb_calc = Mb_2_calc_X; // центр по X
|
||
var y0_Mb_calc = Mb_2_calc_Y; // центр по Y
|
||
for (let i=0; i<=359; i++ ) {
|
||
x_Mb_calc_array.push(x0_Mb_calc + (Math.max(m_test,Mb_calc,Mb,Mdisb)*0.1 * (Math.sin((i) * Math.PI / 180))));
|
||
y_Mb_calc_array.push(y0_Mb_calc + (Math.max(m_test,Mb_calc,Mb,Mdisb)*0.1 * (Math.cos((i) * Math.PI / 180))));}
|
||
// определение координат точек окружности обозначения массы введённого балансировочного груза Mb
|
||
var x_Mb_array = []; // массив координат точек окружности расчётного Mb по оси X
|
||
var y_Mb_array = []; // массив координат точек окружности расчётного Mb по оси Y
|
||
var x0_Mb = Mb_2_X; // центр по X
|
||
var y0_Mb = Mb_2_Y; // центр по Y
|
||
for (let i=0; i<=359; i++ ) {
|
||
x_Mb_array.push(x0_Mb + (Math.max(m_test,Mb_calc,Mb,Mdisb)*0.1 * (Math.sin((i) * Math.PI / 180))));
|
||
y_Mb_array.push(y0_Mb + (Math.max(m_test,Mb_calc,Mb,Mdisb)*0.1 * (Math.cos((i) * Math.PI / 180))));}
|
||
// определение координат точек окружности графика для отображения расположения дисбаланса
|
||
var xD_array = []; // массив координат точек окружности D по оси X
|
||
var yD_array = []; // массив координат точек окружности D по оси Y
|
||
var x0D = 0; // центр в начале координат
|
||
var y0D = 0; // центр в начале координат
|
||
for (let i=0; i<=359; i++ ) {
|
||
xD_array.push(x0D + (Math.max(m_test,Mb_calc,Mb,Mdisb)+Math.max(m_test,Mb_calc,Mb,Mdisb)*0.1) * (Math.sin((i) * Math.PI / 180)));
|
||
yD_array.push(y0D + (Math.max(m_test,Mb_calc,Mb,Mdisb)+Math.max(m_test,Mb_calc,Mb,Mdisb)*0.1) * (Math.cos((i) * Math.PI / 180)));}
|
||
// определение координат точек окружности обозначения массы пробного груза
|
||
var x_m_test_array = []; // массив координат точек окружности m_test по оси X
|
||
var y_m_test_array = []; // массив координат точек окружности m_test по оси Y
|
||
var x0_m_test = m_test_2_X; // центр по X
|
||
var y0_m_test = m_test_2_Y; // центр по Y
|
||
for (let i=0; i<=359; i++ ) {
|
||
x_m_test_array.push(x0_m_test + (Math.max(m_test,Mb_calc,Mb,Mdisb)*0.1 * (Math.sin((i) * Math.PI / 180))));
|
||
y_m_test_array.push(y0_m_test + (Math.max(m_test,Mb_calc,Mb,Mdisb)*0.1 * (Math.cos((i) * Math.PI / 180))));}
|
||
|
||
// Вычисление допустимого остаточного дисбаланса
|
||
U_per = (1000 * (G * P)) / (Math.PI * n / 30);
|
||
// Остаточный дисбаланс
|
||
U_res = Mdisb * R;
|
||
|
||
|
||
|
||
// Графики вибрации
|
||
plot_vibr.add(
|
||
{
|
||
color: 0x0000ff,
|
||
name: "Вибрация_A0",
|
||
x: xA0_array,
|
||
y: yA0_array,
|
||
});
|
||
plot_vibr.add(
|
||
{
|
||
color: 0x00ff00,
|
||
name: "Вибрация_A1",
|
||
x: xA1_array,
|
||
y: yA1_array,
|
||
});
|
||
plot_vibr.add(
|
||
{
|
||
color: 0xff0000,
|
||
name: "Вибрация_dA",
|
||
x: xdA1_array,
|
||
y: ydA1_array,
|
||
});
|
||
plot_vibr.add(
|
||
{
|
||
color: 0x00ffffff,
|
||
name: "График векторов вибрации",
|
||
x: xV_array,
|
||
y: yV_array,
|
||
});
|
||
plot_vibr.add(
|
||
{
|
||
color: 0x00ffffff,
|
||
name: "границы",
|
||
x: [-(Math.max(A0,A1,dA1)+Math.max(A0,A1,dA1)*0.2), -(Math.max(A0,A1,dA1)+Math.max(A0,A1,dA1)*0.2), (Math.max(A0,A1,dA1)+Math.max(A0,A1,dA1)*0.2), (Math.max(A0,A1,dA1)+Math.max(A0,A1,dA1)*0.2)],
|
||
y: [(Math.max(A0,A1,dA1)+Math.max(A0,A1,dA1)*0.2), -(Math.max(A0,A1,dA1)+Math.max(A0,A1,dA1)*0.2), -(Math.max(A0,A1,dA1)+Math.max(A0,A1,dA1)*0.2), (Math.max(A0,A1,dA1)+Math.max(A0,A1,dA1)*0.2)]
|
||
});
|
||
|
||
plot_disb.add(
|
||
{
|
||
color: 0x0000ff,
|
||
name: "Пробный груз",
|
||
x: x_m_test_array,
|
||
y: y_m_test_array,
|
||
});
|
||
plot_disb.add(
|
||
{
|
||
color: 0x00ff00,
|
||
name: "Балансировочный груз расчётный",
|
||
x: x_Mb_calc_array,
|
||
y: y_Mb_calc_array,
|
||
});
|
||
plot_disb.add(
|
||
{
|
||
color: 0x0fae1a,
|
||
name: "Балансировочный груз введённый",
|
||
x: x_Mb_array,
|
||
y: y_Mb_array,
|
||
});
|
||
plot_disb.add(
|
||
{
|
||
color: 0xff0000,
|
||
name: "Дисбаланс",
|
||
x: x_Mdisb_array,
|
||
y: y_Mdisb_array,
|
||
});
|
||
plot_disb.add(
|
||
{
|
||
color: 0x00ffffff,
|
||
name: "График расположения дисбаланса",
|
||
x: xD_array,
|
||
y: yD_array,
|
||
});
|
||
plot_disb.add(
|
||
{
|
||
color: 0x00ffffff,
|
||
name: "границы",
|
||
x: [-(Math.max(m_test,Mb_calc,Mb,Mdisb)+Math.max(m_test,Mb_calc,Mb,Mdisb)*0.2), -(Math.max(m_test,Mb_calc,Mb,Mdisb)+Math.max(m_test,Mb_calc,Mb,Mdisb)*0.2), (Math.max(m_test,Mb_calc,Mb,Mdisb)+Math.max(m_test,Mb_calc,Mb,Mdisb)*0.2), (Math.max(m_test,Mb_calc,Mb,Mdisb)+Math.max(m_test,Mb_calc,Mb,Mdisb)*0.2)],
|
||
y: [(Math.max(m_test,Mb_calc,Mb,Mdisb)+Math.max(m_test,Mb_calc,Mb,Mdisb)*0.2), -(Math.max(m_test,Mb_calc,Mb,Mdisb)+Math.max(m_test,Mb_calc,Mb,Mdisb)*0.2), -(Math.max(m_test,Mb_calc,Mb,Mdisb)+Math.max(m_test,Mb_calc,Mb,Mdisb)*0.2), (Math.max(m_test,Mb_calc,Mb,Mdisb)+Math.max(m_test,Mb_calc,Mb,Mdisb)*0.2)]
|
||
});
|
||
|
||
gtl.log.info("Mb_calc (масса балансировочного груза расчёт)",Mb_calc);
|
||
gtl.log.info("Mb_corner_calc (угол установки балансировочного груза расчёт)",Mb_corner_calc);
|
||
gtl.log.info("Mb (масса балансировочного груза введён)",Mb);
|
||
gtl.log.info("Mb_corner (угол установки балансировочного груза введён)",Mb_corner);
|
||
gtl.log.info("Mdisb (дисбаланс)",Mdisb);
|
||
gtl.log.info("Mdisb_corner (угол расположения дисбаланса)",Mdisb_corner);
|
||
gtl.log.info("m_test (пробный груз введёный)",m_test);
|
||
gtl.log.info("m_test_corner (угол установки пробного груза)",m_test_corner);
|
||
gtl.log.info("A0",A0);
|
||
gtl.log.info("A0_phase",A0_phase);
|
||
gtl.log.info("A1",A1);
|
||
gtl.log.info("A1_phase",A1_phase);
|
||
gtl.log.info("модуль ДКВ", DCI);
|
||
gtl.log.info("фаза ДКВ", DCI_phase);
|
||
|
||
gtl.log.info("Допустимый остаточный дисбаланс", U_per);
|
||
gtl.log.info("Остаточный дисбаланс", U_res);
|
||
|
||
// Выдача результата (results)
|
||
let __result = {
|
||
_001_Ампл_вибр_пуска_A0: A0,
|
||
_002_Фаза_вибр_пуска_A0: A0_phase,
|
||
_003_Ампл_вибр_пуска_A1: A1,
|
||
_004_Фаза_вибр_пуска_A1: A1_phase,
|
||
_005_Масса_дисбаланса: Mdisb,
|
||
_006_Угол_дисбаланса: Mdisb_corner,
|
||
_007_Масса_баланс_груза_расч: Mb_calc,
|
||
_008_Угол_баланс_груза_расч: Mb_corner_calc,
|
||
_009_Масса_баланс_груза_введён: Mb,
|
||
_010_Угол_баланс_груза_введён: Mb_corner,
|
||
_011_Модуль_ДКВ: DCI,
|
||
_012_Фаза_ДКВ: DCI_phase,
|
||
_013_Допуст_ост_дисб_г_мм: U_per,
|
||
_014_Остат_дисб_г_мм: U_res
|
||
};
|
||
|
||
gtl.results = {"result": __result};
|
||
|
||
gtl.diagnostic.stop();
|
||
|
||
// break;
|
||
|
||
// default:
|
||
// break;
|
||
// }
|
||
} |