balancer_calc/scripts/1 пл - шаг 4.js

536 lines
30 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"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;
// }
}