balancer_calc/scripts/2 пл - шаг 6 - стенд.js

1459 lines
86 KiB
JavaScript
Raw 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 R1 = gtl.options.customOptions.R1; // радиус установки грузов на плоскости 1 ** (для вычисления массы пробного груза)
let R2 = gtl.options.customOptions.R2; // радиус установки грузов на плоскости 2 ** (для вычисления массы пробного груза)
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_res1; // остаточный дисбаланс плоскости 1 *** (ГОСТ 1940)
let U_res2; // остаточный дисбаланс плоскости 2 *** (ГОСТ 1940)
let U_res; // остаточный дисбаланс суммарный *** (ГОСТ 1940)
let L_A = gtl.options.customOptions.L_A;// расстояние от центра масс до плоскости подшипника A
let L_B = gtl.options.customOptions.L_B;// расстояние от центра масс до плоскости подшипника B
let L = gtl.options.customOptions.L; // расстояние между подшипниковыми опорами
let b = gtl.options.customOptions.b; // расстояние между плоскостями коррекции
let b_A = gtl.options.customOptions.b_A;// расстояние от плоскости коррекции 1 до подшипниковой опоры A
let b_B = gtl.options.customOptions.b_B;// расстояние от плоскости коррекции 2 до подшипниковой опоры B
let m_test_1_ = gtl.options.customOptions.m_test_1; // масса пробного груза плоскости 1 **
let m_test_1 = m_test_1_; // масса пробного груза плоскости 1 ** (конечное значение)
let m_test_1_corner_ = gtl.options.customOptions.m_test_1_corner; // угол установки пробного груза плоскости 1 **
let m_test_1_corner = m_test_1_corner_; // угол установки пробного груза плоскости 1 ** (конечное значение)
let m_test_2_ = gtl.options.customOptions.m_test_2; // масса пробного груза плоскости 2 **
let m_test_2 = m_test_2_; // масса пробного груза плоскости 2 ** (конечное значение)
let m_test_2_corner_ = gtl.options.customOptions.m_test_2_corner; // угол установки пробного груза плоскости 2 **
let m_test_2_corner = m_test_2_corner_; // угол установки пробного груза плоскости 2 ** (конечное значение)
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; // модуль вектора вибрации точки A после установки пробного груза в плоскость 1 */**
let A1 = A1_; // модуль вектора вибрации точки A после установки пробного груза в плоскость 1 */** (конечное значение)
let A1_phase_ = gtl.options.customOptions.A1_phase; // фаза вектора вибрации точки A после установки пробного груза в плоскость 1 */**
let A1_phase = A1_phase_; // фаза вектора вибрации точки A после установки пробного груза в плоскость 1 */** (конечное значение)
let dA1; // модуль вектора дельты вибрации точки A после установки пробного груза в плоскость 1 ***
let dA1_phase; // фаза вектора дельты вибрации точки A после установки пробного груза в плоскость 1 ***
let A2_ = gtl.options.customOptions.A2; // модуль вектора вибрации точки A после установки пробного груза в плоскость 2 */**
let A2 = A2_; // модуль вектора вибрации точки A после установки пробного груза в плоскость 2 */** (конечное значение)
let A2_phase_ = gtl.options.customOptions.A2_phase; // фаза вектора вибрации точки A после установки пробного груза в плоскость 2 */**
let A2_phase = A2_phase_; // фаза вектора вибрации точки A после установки пробного груза в плоскость 2 */** (конечное значение)
let dA2; // модуль вектора дельты вибрации точки A после установки пробного груза в плоскость 2 ***
let dA2_phase; // фаза вектора дельты вибрации точки A после установки пробного груза в плоскость 2 ***
let B0_ = gtl.options.customOptions.B0; // модуль вектора начальной вибрации */**
let B0 = B0_; // модуль вектора начальной вибрации */** (конечное значение)
let B0_phase_ = gtl.options.customOptions.B0_phase; // фаза вектора начальной вибрации */**
let B0_phase = B0_phase_; // фаза вектора начальной вибрации */** (конечное значение)
let B1_ = gtl.options.customOptions.B1; // модуль вектора вибрации точки B после установки пробного груза в плоскость 1 */**
let B1 = B1_; // модуль вектора вибрации точки B после установки пробного груза в плоскость 1 */** (конечное значение)
let B1_phase_ = gtl.options.customOptions.B1_phase; // фаза вектора вибрации точки B после установки пробного груза в плоскость 1 */**
let B1_phase = B1_phase_; // фаза вектора вибрации точки B после установки пробного груза в плоскость 1 */** (конечное значение)
let dB1; // модуль вектора дельты вибрации точки B после установки пробного груза в плоскость 1 ***
let dB1_phase; // фаза вектора дельты вибрации точки B после установки пробного груза в плоскость 1 ***
let B2_ = gtl.options.customOptions.B2; // модуль вектора вибрации точки B после установки пробного груза в плоскость 2 */**
let B2 = B2_; // модуль вектора вибрации точки B после установки пробного груза в плоскость 2*/** (конечное значение)
let B2_phase_ = gtl.options.customOptions.B2_phase; // фаза вектора вибрации точки B после установки пробного груза в плоскость 2 */**
let B2_phase = B2_phase_; // фаза вектора вибрации точки B после установки пробного груза в плоскость 2 */** (конечное значение)
let dB2 // модуль вектора дельты вибрации точки B после установки пробного груза в плоскость 2 ***
let dB2_phase; // фаза вектора дельты вибрации точки B после установки пробного груза в плоскость 2 ***
let DCI_A1; // модуль (мм/с/граммы) ДКВ груза m_test_1 в плоскости 1 на вибрацию в точке A **/*** (конечное значение)
let DCI_A1_phase; // фаза ДКВ груза m_test_1 в плоскости 1 на вибрацию в точке A **/*** (конечное значение)
let DCI_B1; // модуль (мм/с/граммы) ДКВ груза m_test_1 в плоскости 1 на вибрацию в точке B **/*** (конечное значение)
let DCI_B1_phase; // фаза ДКВ груза m_test_1 в плоскости 1 на вибрацию в точке B **/*** (конечное значение)
let DCI_A2; // модуль (мм/с/граммы) ДКВ груза m_test_2 в плоскости 2 на вибрацию в точке A **/*** (конечное значение)
let DCI_A2_phase; // фаза ДКВ груза m_test_2 в плоскости 2 на вибрацию в точке A **/*** (конечное значение)
let DCI_B2; // модуль (мм/с/граммы) ДКВ груза m_test_2 в плоскости 2 на вибрацию в точке B **/*** (конечное значение)
let DCI_B2_phase; // фаза ДКВ груза m_test_2 в плоскости 2 на вибрацию в точке B **/*** (конечное значение)
let Mb1 = gtl.options.customOptions.Mb1; // модуль введённого вектора балансировочного груза в плоскости 1 ** (конечное значение)
let Mb1_calc; // модуль расчётного вектора балансировочного груза в плоскости 1 ***
let Mb1_corner = gtl.options.customOptions.Mb1_corner; // угол введённого вектора балансировочного груза в плоскости 1 ** (конечное значение)
let Mb1_corner_calc; // угол расчётного вектора балансировочного груза в плоскости 1 ***
let Mb2 = gtl.options.customOptions.Mb2; // модуль введённого вектора балансировочного груза в плоскости 2 ** (конечное значение)
let Mb2_calc; // модуль расчётного вектора балансировочного груза в плоскости 2 ***
let Mb2_corner = gtl.options.customOptions.Mb2_corner; // угол введённого вектора балансировочного груза в плоскости 2 ** (конечное значение)
let Mb2_corner_calc; // угол расчётного вектора балансировочного груза в плоскости 2 ***
let Mdisb1; // масса дисбаланса в плоскости 1 ***
let Mdisb1_corner; // угол расположения дисбаланса в плоскости 1 ***
let Mdisb2; // масса дисбаланса в плоскости 2 ***
let Mdisb2_corner; // угол расположения дисбаланса в плоскости 2 ***
// Переменные вспомогательные необходимые для расчётов и визуализации
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 A2_phase_X; // угол наклона вектора A2 к оси X
let A2_phase_Y; // угол наклона вектора A2 к оси Y
let A2_1_X; // начальная координата вектора A2 по оси X
let A2_2_X; // конечная координата вектора A2 по оси X
let A2_1_Y; // начальная координата вектора A2 по оси Y
let A2_2_Y; // конечная координата вектора A2 по оси Y
let dA2_1_X; // начальная координата вектора dA2 по оси X
let dA2_2_X; // конечная координата вектора dA2 по оси X
let dA2_1_Y; // начальная координата вектора dA2 по оси Y
let dA2_2_Y; // конечная координата вектора dA2 по оси Y
let B0_phase_X; // угол наклона вектора B0 к оси X
let B0_phase_Y; // угол наклона вектора B0 к оси Y
let B0_1_X; // начальная координата вектора B0 по оси X
let B0_2_X; // конечная координата вектора B0 по оси X
let B0_1_Y; // начальная координата вектора B0 по оси Y
let B0_2_Y; // конечная координата вектора B0 по оси Y
let B1_phase_X; // угол наклона вектора B1 к оси X
let B1_phase_Y; // угол наклона вектора B1 к оси Y
let B1_1_X; // начальная координата вектора B1 по оси X
let B1_2_X; // конечная координата вектора B1 по оси X
let B1_1_Y; // начальная координата вектора B1 по оси Y
let B1_2_Y; // конечная координата вектора B1 по оси Y
let dB1_1_X; // начальная координата вектора dB1 по оси X
let dB1_2_X; // конечная координата вектора dB1 по оси X
let dB1_1_Y; // начальная координата вектора dB1 по оси Y
let dB1_2_Y; // конечная координата вектора dB1 по оси Y
let B2_phase_X; // угол наклона вектора B2 к оси X
let B2_phase_Y; // угол наклона вектора B2 к оси Y
let B2_1_X; // начальная координата вектора B2 по оси X
let B2_2_X; // конечная координата вектора B2 по оси X
let B2_1_Y; // начальная координата вектора B2 по оси Y
let B2_2_Y; // конечная координата вектора B2 по оси Y
let dB2_1_X; // начальная координата вектора dB2 по оси X
let dB2_2_X; // конечная координата вектора dB2 по оси X
let dB2_1_Y; // начальная координата вектора dB2 по оси Y
let dB2_2_Y; // конечная координата вектора dB2 по оси Y
let m_test_1_corner_X; // угол наклона вектора m_test_1 к оси X
let m_test_1_corner_Y; // угол наклона вектора m_test_1 к оси Y
let m_test_1_1_X; // начальная координата вектора m_test_1 по оси X
let m_test_1_2_X; // конечная координата вектора m_test_1 по оси X
let m_test_1_1_Y; // начальная координата вектора m_test_1 по оси Y
let m_test_1_2_Y; // конечная координата вектора m_test_1 по оси Y
let m_test_2_corner_X; // угол наклона вектора m_test_2 к оси X
let m_test_2_corner_Y; // угол наклона вектора m_test_2 к оси Y
let m_test_2_1_X; // начальная координата вектора m_test_2 по оси X
let m_test_2_2_X; // конечная координата вектора m_test_2 по оси X
let m_test_2_1_Y; // начальная координата вектора m_test_2 по оси Y
let m_test_2_2_Y; // конечная координата вектора m_test_2 по оси Y
let Mb1_corner_calc_X; // угол наклона расчётного вектора Mb1_calc к оси X
let Mb1_corner_calc_Y; // угол наклона расчётного вектора Mb1_calc к оси Y
let Mb1_1_calc_X; // начальная координата расчётного вектора Mb1_calc по оси X
let Mb1_2_calc_X; // конечная координата расчётного вектора Mb1_calc по оси X
let Mb1_1_calc_Y; // начальная координата расчётного вектора Mb1_calc по оси Y
let Mb1_2_calc_Y; // конечная координата расчётного вектора Mb1_calc по оси Y
let Mb1_corner_X; // угол наклона вектора Mb1 к оси X
let Mb1_corner_Y; // угол наклона вектора Mb1 к оси Y
let Mb1_1_X; // начальная координата вектора Mb1 по оси X
let Mb1_2_X; // конечная координата вектора Mb1 по оси X
let Mb1_1_Y; // начальная координата вектора Mb1 по оси Y
let Mb1_2_Y; // конечная координата вектора Mb1 по оси Y
let Mdisb1_corner_X; // угол наклона вектора Mdisb1 к оси X
let Mdisb1_corner_Y; // угол наклона вектора Mdisb1 к оси Y
let Mdisb1_1_X; // начальная координата вектора Mdisb1 по оси X
let Mdisb1_2_X; // конечная координата вектора Mdisb1 по оси X
let Mdisb1_1_Y; // начальная координата вектора Mdisb1 по оси Y
let Mdisb1_2_Y; // конечная координата вектора Mdisb1 по оси Y
let Mb2_corner_calc_X; // угол наклона расчётного вектора Mb2_calc к оси X
let Mb2_corner_calc_Y; // угол наклона расчётного вектора Mb2_calc к оси Y
let Mb2_1_calc_X; // начальная координата расчётного вектора Mb2_calc по оси X
let Mb2_2_calc_X; // конечная координата расчётного вектора Mb2_calc по оси X
let Mb2_1_calc_Y; // начальная координата расчётного вектора Mb2_calc по оси Y
let Mb2_2_calc_Y; // конечная координата расчётного вектора Mb2_calc по оси Y
let Mb2_corner_X; // угол наклона вектора Mb2 к оси X
let Mb2_corner_Y; // угол наклона вектора Mb2 к оси Y
let Mb2_1_X; // начальная координата вектора Mb2 по оси X
let Mb2_2_X; // конечная координата вектора Mb2 по оси X
let Mb2_1_Y; // начальная координата вектора Mb2 по оси Y
let Mb2_2_Y; // конечная координата вектора Mb2 по оси Y
let Mdisb2_corner_X; // угол наклона вектора Mdisb2 к оси X
let Mdisb2_corner_Y; // угол наклона вектора Mdisb2 к оси Y
let Mdisb2_1_X; // начальная координата вектора Mdisb2 по оси X
let Mdisb2_2_X; // конечная координата вектора Mdisb2 по оси X
let Mdisb2_1_Y; // начальная координата вектора Mdisb2 по оси Y
let Mdisb2_2_Y; // конечная координата вектора Mdisb2 по оси 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() {
// РАСЧЁТЫ (балансировочный калькулятор)
// ШАГ 6 - расположение дисбалансов:
// вычисление положения дисбалансов Mdisb1, Mdisb2 и рекомендуемых балансировочных грузов Mb1_calc, Mb2_calc
// ввод масс и углов установки балансировочных грузов Mb1 и Mb2
// построение графиков расположения: пробных грузов m_test_1 и m_test_2, дисбалансов Mdisb1 и Mdisb2,
// расчётных Mb1_calc и Mb2_calc и введённых Mb1 и Mb2 балансировочных грузов
// из предыдущих шагов переносятся: вибрации A0, A1, A2, B0, B1, B2, пробные грузы m_test_1 и m_test_2
// построение графиков вибрации A0, A1, dA1, A2, dA2, B0, B1, dB1, B2, dB2
// определение угла наклона вектора 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}
// определение угла наклона вектора A2 к осям X и Y
if (A2_phase <= 90) {
A2_phase_X = 90 - A1_phase}
if (A2_phase <= 180) {
A2_phase_X = A2_phase - 90}
if (A2_phase <= 270) {
A2_phase_X = 270 - A2_phase}
if (A2_phase <= 360) {
A2_phase_X = A2_phase - 270}
if (A2_phase <= 90) {
A2_phase_Y = A2_phase}
if (A2_phase <= 180) {
A2_phase_Y = 180 - A2_phase}
if (A2_phase <= 270) {
A2_phase_Y = A2_phase - 180}
if (A2_phase <= 360) {
A2_phase_Y = 360 - A2_phase}
// определение координат вектора A2
var xA2_array = []; // массив координат точек вектора A2 по оси X
var yA2_array = []; // массив координат точек вектора A2 по оси Y
A2_1_X = 0;
if (A2_phase <= 180) {A2_2_X = Math.abs(Math.cos(A2_phase_X * Math.PI/180)) * A2
} else {A2_2_X = Math.abs(Math.cos(A2_phase_X * Math.PI/180)) * A2 * (-1)}
A2_1_Y = 0;
if (A2_phase <= 90 || A2_phase >= 270) {A2_2_Y = Math.abs(Math.cos(A2_phase_Y * Math.PI/180)) * A2
} else {A2_2_Y = Math.abs(Math.cos(A2_phase_Y * Math.PI/180)) * A2 * (-1)}
xA2_array[0] = A2_1_X;
xA2_array[1] = A2_2_X;
yA2_array[0] = A2_1_Y;
yA2_array[1] = A2_2_Y;
// определение модуля вектора dA2
var xdA2_array = []; // массив координат точек вектора dA2 по оси X
var ydA2_array = []; // массив координат точек вектора dA2 по оси Y
dA2_1_X = A0_2_X;
dA2_2_X = A2_2_X;
dA2_1_Y = A0_2_Y;
dA2_2_Y = A2_2_Y;
dA2 = Math.sqrt(Math.pow(dA2_2_X - dA2_1_X, 2) + Math.pow(dA2_2_Y - dA2_1_Y, 2))
xdA2_array[0] = dA2_1_X;
xdA2_array[1] = dA2_2_X;
ydA2_array[0] = dA2_1_Y;
ydA2_array[1] = dA2_2_Y;
// определение фазы вектора dA2
if ((dA2_2_Y < dA2_1_Y) && (dA2_2_X < dA2_1_X)) {
dA2_phase = 180 + (((Math.acos((Math.abs(dA2_2_Y - dA2_1_Y)) / dA2)) * 180 ) / Math.PI)}
if ((dA2_2_Y > dA2_1_Y) && (dA2_2_X > dA2_1_X)) {
dA2_phase = (((Math.acos((Math.abs(dA2_2_Y - dA2_1_Y)) / dA2)) * 180 ) / Math.PI)}
if ((dA2_2_Y > dA2_1_Y) && (dA2_2_X < dA2_1_X)) {
dA2_phase = 360 - (((Math.acos((Math.abs(dA2_2_Y - dA2_1_Y)) / dA2)) * 180 ) / Math.PI)}
if ((dA2_2_Y < dA2_1_Y) && (dA2_2_X > dA2_1_X)) {
dA2_phase = 180 - (((Math.acos((Math.abs(dA2_2_Y - dA2_1_Y)) / dA2)) * 180 ) / Math.PI)}
if (dA2_phase > 360) {dA2_phase = dA2_phase - 360}
// определение угла наклона вектора B0 к осям X и Y
if (B0_phase <= 90) {
B0_phase_X = 90 - B0_phase}
if (B0_phase <= 180) {
B0_phase_X = B0_phase - 90}
if (B0_phase <= 270) {
B0_phase_X = 270 - B0_phase}
if (B0_phase <= 360) {
B0_phase_X = B0_phase - 270}
if (B0_phase <= 90) {
B0_phase_Y = B0_phase}
if (B0_phase <= 180) {
B0_phase_Y = 180 - B0_phase}
if (B0_phase <= 270) {
B0_phase_Y = B0_phase - 180}
if (B0_phase <= 360) {
B0_phase_Y = 360 - B0_phase}
// определение координат вектора B0
var xB0_array = []; // массив координат точек вектора B0 по оси X
var yB0_array = []; // массив координат точек вектора B0 по оси Y
B0_1_X = 0;
if (B0_phase <= 180) {B0_2_X = Math.abs(Math.cos(B0_phase_X * Math.PI/180)) * B0
} else {B0_2_X = Math.abs(Math.cos(B0_phase_X * Math.PI/180)) * B0 * (-1)}
B0_1_Y = 0;
if (B0_phase <= 90 || B0_phase >= 270) {B0_2_Y = Math.abs(Math.cos(B0_phase_Y * Math.PI/180)) * B0
} else {B0_2_Y = Math.abs(Math.cos(B0_phase_Y * Math.PI/180)) * B0 * (-1)}
xB0_array[0] = B0_1_X;
xB0_array[1] = B0_2_X;
yB0_array[0] = B0_1_Y;
yB0_array[1] = B0_2_Y;
// определение угла наклона вектора B1 к осям X и Y
if (B1_phase <= 90) {
B1_phase_X = 90 - B1_phase}
if (B1_phase <= 180) {
B1_phase_X = B1_phase - 90}
if (B1_phase <= 270) {
B1_phase_X = 270 - B1_phase}
if (B1_phase <= 360) {
B1_phase_X = B1_phase - 270}
if (B1_phase <= 90) {
B1_phase_Y = B1_phase}
if (B1_phase <= 180) {
B1_phase_Y = 180 - B1_phase}
if (B1_phase <= 270) {
B1_phase_Y = B1_phase - 180}
if (B1_phase <= 360) {
B1_phase_Y = 360 - B1_phase}
// определение координат вектора B1
var xB1_array = []; // массив координат точек вектора B1 по оси X
var yB1_array = []; // массив координат точек вектора B1 по оси Y
B1_1_X = 0;
if (B1_phase <= 180) {B1_2_X = Math.abs(Math.cos(B1_phase_X * Math.PI/180)) * B1
} else {B1_2_X = Math.abs(Math.cos(B1_phase_X * Math.PI/180)) * B1 * (-1)}
B1_1_Y = 0;
if (B1_phase <= 90 || B1_phase >= 270) {B1_2_Y = Math.abs(Math.cos(B1_phase_Y * Math.PI/180)) * B1
} else {B1_2_Y = Math.abs(Math.cos(B1_phase_Y * Math.PI/180)) * B1 * (-1)}
xB1_array[0] = B1_1_X;
xB1_array[1] = B1_2_X;
yB1_array[0] = B1_1_Y;
yB1_array[1] = B1_2_Y;
// определение модуля вектора dB1
var xdB1_array = []; // массив координат точек вектора dB1 по оси X
var ydB1_array = []; // массив координат точек вектора dB1 по оси Y
dB1_1_X = B0_2_X;
dB1_2_X = B1_2_X;
dB1_1_Y = B0_2_Y;
dB1_2_Y = B1_2_Y;
dB1 = Math.sqrt(Math.pow(dB1_2_X - dB1_1_X, 2) + Math.pow(dB1_2_Y - dB1_1_Y, 2))
xdB1_array[0] = dB1_1_X;
xdB1_array[1] = dB1_2_X;
ydB1_array[0] = dB1_1_Y;
ydB1_array[1] = dB1_2_Y;
// определение фазы вектора dB1
if ((dB1_2_Y < dB1_1_Y) && (dB1_2_X < dB1_1_X)) {
dB1_phase = 180 + (((Math.acos((Math.abs(dB1_2_Y - dB1_1_Y)) / dB1)) * 180 ) / Math.PI)}
if ((dB1_2_Y > dB1_1_Y) && (dB1_2_X > dB1_1_X)) {
dB1_phase = (((Math.acos((Math.abs(dB1_2_Y - dB1_1_Y)) / dB1)) * 180 ) / Math.PI)}
if ((dB1_2_Y > dB1_1_Y) && (dB1_2_X < dB1_1_X)) {
dB1_phase = 360 - (((Math.acos((Math.abs(dB1_2_Y - dB1_1_Y)) / dB1)) * 180 ) / Math.PI)}
if ((dB1_2_Y < dB1_1_Y) && (dB1_2_X > dB1_1_X)) {
dB1_phase = 180 - (((Math.acos((Math.abs(dB1_2_Y - dB1_1_Y)) / dB1)) * 180 ) / Math.PI)}
if (dB1_phase > 360) {dB1_phase = dB1_phase - 360}
// определение угла наклона вектора B2 к осям X и Y
if (B2_phase <= 90) {
B2_phase_X = 90 - B2_phase}
if (B2_phase <= 180) {
B2_phase_X = B2_phase - 90}
if (B2_phase <= 270) {
B2_phase_X = 270 - B2_phase}
if (B2_phase <= 360) {
B2_phase_X = B2_phase - 270}
if (B2_phase <= 90) {
B2_phase_Y = B2_phase}
if (B2_phase <= 180) {
B2_phase_Y = 180 - B2_phase}
if (B2_phase <= 270) {
B2_phase_Y = B2_phase - 180}
if (B2_phase <= 360) {
B2_phase_Y = 360 - B2_phase}
// определение координат вектора B2
var xB2_array = []; // массив координат точек вектора B2 по оси X
var yB2_array = []; // массив координат точек вектора B2 по оси Y
B2_1_X = 0;
if (B2_phase <= 180) {B2_2_X = Math.abs(Math.cos(B2_phase_X * Math.PI/180)) * B2
} else {B2_2_X = Math.abs(Math.cos(B2_phase_X * Math.PI/180)) * B2 * (-1)}
B2_1_Y = 0;
if (B2_phase <= 90 || B2_phase >= 270) {B2_2_Y = Math.abs(Math.cos(B2_phase_Y * Math.PI/180)) * B2
} else {B2_2_Y = Math.abs(Math.cos(B2_phase_Y * Math.PI/180)) * B2 * (-1)}
xB2_array[0] = B2_1_X;
xB2_array[1] = B2_2_X;
yB2_array[0] = B2_1_Y;
yB2_array[1] = B2_2_Y;
// определение модуля вектора dB2
var xdB2_array = []; // массив координат точек вектора dB2 по оси X
var ydB2_array = []; // массив координат точек вектора dB2 по оси Y
dB2_1_X = B0_2_X;
dB2_2_X = B2_2_X;
dB2_1_Y = B0_2_Y;
dB2_2_Y = B2_2_Y;
dB2 = Math.sqrt(Math.pow(dB2_2_X - dB2_1_X, 2) + Math.pow(dB2_2_Y - dB2_1_Y, 2))
xdB2_array[0] = dB2_1_X;
xdB2_array[1] = dB2_2_X;
ydB2_array[0] = dB2_1_Y;
ydB2_array[1] = dB2_2_Y;
// определение фазы вектора dB2
if ((dB2_2_Y < dB2_1_Y) && (dB2_2_X < dB2_1_X)) {
dB2_phase = 180 + (((Math.acos((Math.abs(dB2_2_Y - dB2_1_Y)) / dB2)) * 180 ) / Math.PI)}
if ((dB2_2_Y > dB2_1_Y) && (dB2_2_X > dB2_1_X)) {
dB2_phase = (((Math.acos((Math.abs(dB2_2_Y - dB2_1_Y)) / dB2)) * 180 ) / Math.PI)}
if ((dB2_2_Y > dB2_1_Y) && (dB2_2_X < dB2_1_X)) {
dB2_phase = 360 - (((Math.acos((Math.abs(dB2_2_Y - dB2_1_Y)) / dB2)) * 180 ) / Math.PI)}
if ((dB2_2_Y < dB2_1_Y) && (dB2_2_X > dB2_1_X)) {
dB2_phase = 180 - (((Math.acos((Math.abs(dB2_2_Y - dB2_1_Y)) / dB2)) * 180 ) / Math.PI)}
if (dB2_phase > 360) {dB2_phase = dB2_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,A2,dA2,B0,B1,dB1,B2,dB2)+Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)*0.1) * (Math.sin((i) * Math.PI / 180)));
yV_array.push(y0V + (Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)+Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)*0.1) * (Math.cos((i) * Math.PI / 180)));}
// Координаты пробных грузов
// определение угла наклона вектора m_test_1 к осям X и Y
if (m_test_1_corner <= 90) {
m_test_1_corner_X = 90 - m_test_1_corner}
if (m_test_1_corner <= 180) {
m_test_1_corner_X = m_test_1_corner - 90}
if (m_test_1_corner <= 270) {
m_test_1_corner_X = 270 - m_test_1_corner}
if (m_test_1_corner <= 360) {
m_test_1_corner_X = m_test_1_corner - 270}
if (m_test_1_corner <= 90) {
m_test_1_corner_Y = m_test_1_corner}
if (m_test_1_corner <= 180) {
m_test_1_corner_Y = 180 - m_test_1_corner}
if (m_test_1_corner <= 270) {
m_test_1_corner_Y = m_test_1_corner - 180}
if (m_test_1_corner <= 360) {
m_test_1_corner_Y = 360 - m_test_1_corner}
// определение координат вектора m_test_1
m_test_1_1_X = 0;
if (m_test_1_corner <= 180) {m_test_1_2_X = Math.abs(Math.cos(m_test_1_corner_X * Math.PI/180)) * m_test_1 * (-1)
} else {m_test_1_2_X = Math.abs(Math.cos(m_test_1_corner_X * Math.PI/180)) * m_test_1}
m_test_1_1_Y = 0;
if (m_test_1_corner <= 90 || m_test_1_corner >= 270) {m_test_1_2_Y = Math.abs(Math.cos(m_test_1_corner_Y * Math.PI/180)) * m_test_1
} else {m_test_1_2_Y = Math.abs(Math.cos(m_test_1_corner_Y * Math.PI/180)) * m_test_1 * (-1)}
// определение угла наклона вектора m_test_2 к осям X и Y
if (m_test_2_corner <= 90) {
m_test_2_corner_X = 90 - m_test_2_corner}
if (m_test_2_corner <= 180) {
m_test_2_corner_X = m_test_2_corner - 90}
if (m_test_2_corner <= 270) {
m_test_2_corner_X = 270 - m_test_2_corner}
if (m_test_2_corner <= 360) {
m_test_2_corner_X = m_test_2_corner - 270}
if (m_test_2_corner <= 90) {
m_test_2_corner_Y = m_test_2_corner}
if (m_test_2_corner <= 180) {
m_test_2_corner_Y = 180 - m_test_2_corner}
if (m_test_2_corner <= 270) {
m_test_2_corner_Y = m_test_2_corner - 180}
if (m_test_2_corner <= 360) {
m_test_2_corner_Y = 360 - m_test_2_corner}
// определение координат вектора m_test_2
m_test_2_1_X = 0;
if (m_test_2_corner <= 180) {m_test_2_2_X = Math.abs(Math.cos(m_test_2_corner_X * Math.PI/180)) * m_test_2 * (-1)
} else {m_test_2_2_X = Math.abs(Math.cos(m_test_2_corner_X * Math.PI/180)) * m_test_2}
m_test_2_1_Y = 0;
if (m_test_2_corner <= 90 || m_test_2_corner >= 270) {m_test_2_2_Y = Math.abs(Math.cos(m_test_2_corner_Y * Math.PI/180)) * m_test_2
} else {m_test_2_2_Y = Math.abs(Math.cos(m_test_2_corner_Y * Math.PI/180)) * m_test_2 * (-1)}
// Вычисления дисбалансов и балансировочных грузов
// DCI_A1 - ДКВ груза m_test_1 в плоскости 1 на вибрацию в точке A
// определение модуля вектора DCI_A1
DCI_A1 = dA1 / m_test_1
// определение фазы вектора DCI_A1
if ((dA1_phase - m_test_1_corner) < 0) {
DCI_A1_phase = (dA1_phase - m_test_1_corner) + 360}
else if ((dA1_phase - m_test_1_corner) > 360) {
DCI_A1_phase = (dA1_phase - m_test_1_corner) - 360}
else {DCI_A1_phase = (dA1_phase - m_test_1_corner)} // вычисляется в скрипте
// DCI_B1 - ДКВ груза m_test_1 в плоскости 1 на вибрацию в точке B
// определение модуля вектора DCI_B1
DCI_B1 = dB1 / m_test_1
// определение фазы вектора DCI_B1
if ((dB1_phase - m_test_1_corner) < 0) {
DCI_B1_phase = (dB1_phase - m_test_1_corner) + 360}
else if ((dB1_phase - m_test_1_corner) > 360) {
DCI_B1_phase = (dB1_phase - m_test_1_corner) - 360}
else {DCI_B1_phase = (dB1_phase - m_test_1_corner)} // вычисляется в скрипте
// DCI_A2 - ДКВ груза m_test_2 в плоскости 2 на вибрацию в точке A
// определение модуля вектора DCI_A2
DCI_A2 = dA2 / m_test_2
// определение фаза вектора DCI_A2
if ((dA2_phase - m_test_2_corner) < 0) {
DCI_A2_phase = (dA2_phase - m_test_2_corner) + 360}
else if ((dA2_phase - m_test_2_corner) > 360) {
DCI_A2_phase = (dA2_phase - m_test_2_corner) - 360}
else {DCI_A2_phase = (dA2_phase - m_test_2_corner)} // вычисляется в скрипте
// DCI_B2 - ДКВ груза m_test_2 в плоскости 2 на вибрацию в точке B
// определение модуля вектора DCI_B2
DCI_B2 = dB2 / m_test_2
// определение фазы вектора DCI_B2
if ((dB2_phase - m_test_2_corner) < 0) {
DCI_B2_phase = (dB2_phase - m_test_2_corner) + 360}
else if ((dB2_phase - m_test_2_corner) > 360) {
DCI_B2_phase = (dB2_phase - m_test_2_corner) - 360}
else {DCI_B2_phase = (dB2_phase - m_test_2_corner)} // вычисляется в скрипте
// формулы для определение векторов балансировочных грузов
// Mb1_calc = (B0 * DCI_A2 - A0 * DCI_B2) / (DCI_A1 * DCI_B2 - DCI_B1 * DCI_A2)
// Mb2_calc = (A0 * DCI_B1 - B0 * DCI_A1) / (DCI_A1 * DCI_B2 - DCI_B1 * DCI_A2)
// ... вычисления этих формул делим на этапы
// 1) В0 * DCI_A2
// 2) A0 * DCI_B2
// 3) A0 * DCI_B1
// 4) B0 * DCI_A1
// 5) В0 * DCI_A2 - A0 * DCI_B2
// 6) A0 * DCI_B1 - B0 * DCI_A1
// 7) DCI_A1 * DCI_B2
// 8) DCI_B1 * DCI_A2
// 9) DCI_A1 * DCI_B2 - DCI_B1 * DCI_A2
// определение модуля вектора B0 * DCI_A2
var B0_DCI_A2 = B0 * DCI_A2;
// определение фазы вектора В0 * DCI_A2
var B0_DCI_A2_phase;
if ((B0_phase + DCI_A2_phase) >360) {
B0_DCI_A2_phase = B0_phase + DCI_A2_phase - 360
} else {B0_DCI_A2_phase = B0_phase + DCI_A2_phase}
// определение угла наклона вектора В0 * DCI_A2 к осям X и Y
var B0_DCI_A2_phase_X;
var B0_DCI_A2_phase_Y;
if (B0_DCI_A2_phase <= 90) {
B0_DCI_A2_phase_X = 90 - B0_DCI_A2_phase}
if (B0_DCI_A2_phase <= 180) {
B0_DCI_A2_phase_X = B0_DCI_A2_phase - 90}
if (B0_DCI_A2_phase <= 270) {
B0_DCI_A2_phase_X = 270 - B0_DCI_A2_phase}
if (B0_DCI_A2_phase <= 360) {
B0_DCI_A2_phase_X = B0_DCI_A2_phase - 270}
if (B0_DCI_A2_phase <= 90) {
B0_DCI_A2_phase_Y = B0_DCI_A2_phase}
if (B0_DCI_A2_phase <= 180) {
B0_DCI_A2_phase_Y = 180 - B0_DCI_A2_phase}
if (B0_DCI_A2_phase <= 270) {
B0_DCI_A2_phase_Y = B0_DCI_A2_phase - 180}
if (B0_DCI_A2_phase <= 360) {
B0_DCI_A2_phase_Y = 360 - B0_DCI_A2_phase}
// определение координат вектора В0 * DCI_A2
var B0_DCI_A2_1_X = 0;
var B0_DCI_A2_2_X;
if (B0_DCI_A2_phase <= 180) {B0_DCI_A2_2_X = Math.abs(Math.cos(B0_DCI_A2_phase_X * Math.PI/180)) * B0_DCI_A2
} else {B0_DCI_A2_2_X = Math.abs(Math.cos(B0_DCI_A2_phase_X * Math.PI/180)) * B0_DCI_A2 * (-1)}
var B0_DCI_A2_1_Y = 0;
var B0_DCI_A2_2_Y;
if (B0_DCI_A2_phase <= 90 || B0_DCI_A2_phase >= 270) {B0_DCI_A2_2_Y = Math.abs(Math.cos(B0_DCI_A2_phase_Y * Math.PI/180)) * B0_DCI_A2
} else {B0_DCI_A2_2_Y = Math.abs(Math.cos(B0_DCI_A2_phase_Y * Math.PI/180)) * B0_DCI_A2 * (-1)}
// определение модуля вектора A0 * DCI_B2
var A0_DCI_B2 = A0 * DCI_B2;
// определение фазы вектора A0 * DCI_B2
var A0_DCI_B2_phase;
if ((A0_phase + DCI_B2_phase) >360) {
A0_DCI_B2_phase = A0_phase + DCI_B2_phase - 360
} else {A0_DCI_B2_phase = A0_phase + DCI_B2_phase}
// определение угла наклона вектора A0 * DCI_B2 к осям X и Y
var A0_DCI_B2_phase_X;
var A0_DCI_B2_phase_Y;
if (A0_DCI_B2_phase <= 90) {
A0_DCI_B2_phase_X = 90 - A0_DCI_B2_phase}
if (A0_DCI_B2_phase <= 180) {
A0_DCI_B2_phase_X = A0_DCI_B2_phase - 90}
if (A0_DCI_B2_phase <= 270) {
A0_DCI_B2_phase_X = 270 - A0_DCI_B2_phase}
if (A0_DCI_B2_phase <= 360) {
A0_DCI_B2_phase_X = A0_DCI_B2_phase - 270}
if (A0_DCI_B2_phase <= 90) {
A0_DCI_B2_phase_Y = A0_DCI_B2_phase}
if (A0_DCI_B2_phase <= 180) {
A0_DCI_B2_phase_Y = 180 - A0_DCI_B2_phase}
if (A0_DCI_B2_phase <= 270) {
A0_DCI_B2_phase_Y = A0_DCI_B2_phase - 180}
if (A0_DCI_B2_phase <= 360) {
A0_DCI_B2_phase_Y = 360 - A0_DCI_B2_phase}
// определение координат вектора A0 * DCI_B2
var A0_DCI_B2_1_X = 0;
var A0_DCI_B2_2_X;
if (A0_DCI_B2_phase <= 180) {A0_DCI_B2_2_X = Math.abs(Math.cos(A0_DCI_B2_phase_X * Math.PI/180)) * A0_DCI_B2
} else {A0_DCI_B2_2_X = Math.abs(Math.cos(A0_DCI_B2_phase_X * Math.PI/180)) * A0_DCI_B2 * (-1)}
var A0_DCI_B2_1_Y = 0;
var A0_DCI_B2_2_Y;
if (A0_DCI_B2_phase <= 90 || A0_DCI_B2_phase >= 270) {A0_DCI_B2_2_Y = Math.abs(Math.cos(A0_DCI_B2_phase_Y * Math.PI/180)) * A0_DCI_B2
} else {A0_DCI_B2_2_Y = Math.abs(Math.cos(A0_DCI_B2_phase_Y * Math.PI/180)) * A0_DCI_B2 * (-1)}
// определение модуля вектора A0 * DCI_B1
var A0_DCI_B1 = A0 * DCI_B1;
// определение фазы вектора A0 * DCI_B1
var A0_DCI_B1_phase;
if ((A0_phase + DCI_B1_phase) >360) {
A0_DCI_B1_phase = A0_phase + DCI_B1_phase - 360
} else {A0_DCI_B1_phase = A0_phase + DCI_B1_phase}
// определение угла наклона вектора A0 * DCI_B1 к осям X и Y
var A0_DCI_B1_phase_X;
var A0_DCI_B1_phase_Y;
if (A0_DCI_B1_phase <= 90) {
A0_DCI_B1_phase_X = 90 - A0_DCI_B1_phase}
if (A0_DCI_B1_phase <= 180) {
A0_DCI_B1_phase_X = A0_DCI_B1_phase - 90}
if (A0_DCI_B1_phase <= 270) {
A0_DCI_B1_phase_X = 270 - A0_DCI_B1_phase}
if (A0_DCI_B1_phase <= 360) {
A0_DCI_B1_phase_X = A0_DCI_B1_phase - 270}
if (A0_DCI_B1_phase <= 90) {
A0_DCI_B1_phase_Y = A0_DCI_B1_phase}
if (A0_DCI_B1_phase <= 180) {
A0_DCI_B1_phase_Y = 180 - A0_DCI_B1_phase}
if (A0_DCI_B1_phase <= 270) {
A0_DCI_B1_phase_Y = A0_DCI_B1_phase - 180}
if (A0_DCI_B1_phase <= 360) {
A0_DCI_B1_phase_Y = 360 - A0_DCI_B1_phase}
// определение координат вектора A0 * DCI_B1
var A0_DCI_B1_1_X = 0;
var A0_DCI_B1_2_X;
if (A0_DCI_B1_phase <= 180) {A0_DCI_B1_2_X = Math.abs(Math.cos(A0_DCI_B1_phase_X * Math.PI/180)) * A0_DCI_B1
} else {A0_DCI_B1_2_X = Math.abs(Math.cos(A0_DCI_B1_phase_X * Math.PI/180)) * A0_DCI_B1 * (-1)}
var A0_DCI_B1_1_Y = 0;
var A0_DCI_B1_2_Y;
if (A0_DCI_B1_phase <= 90 || A0_DCI_B1_phase >= 270) {A0_DCI_B1_2_Y = Math.abs(Math.cos(A0_DCI_B1_phase_Y * Math.PI/180)) * A0_DCI_B1
} else {A0_DCI_B1_2_Y = Math.abs(Math.cos(A0_DCI_B1_phase_Y * Math.PI/180)) * A0_DCI_B1 * (-1)}
// определение модуля вектора B0 * DCI_A1
var B0_DCI_A1 = B0 * DCI_A1;
// определение фазы вектора B0 * DCI_A1
var B0_DCI_A1_phase;
if ((B0_phase + DCI_A1_phase) >360) {
B0_DCI_A1_phase = B0_phase + DCI_A1_phase - 360
} else {B0_DCI_A1_phase = B0_phase + DCI_A1_phase}
// определение угла наклона вектора B0 * DCI_A1 к осям X и Y
var B0_DCI_A1_phase_X;
var B0_DCI_A1_phase_Y;
if (B0_DCI_A1_phase <= 90) {
B0_DCI_A1_phase_X = 90 - B0_DCI_A1_phase}
if (B0_DCI_A1_phase <= 180) {
B0_DCI_A1_phase_X = B0_DCI_A1_phase - 90}
if (B0_DCI_A1_phase <= 270) {
B0_DCI_A1_phase_X = 270 - B0_DCI_A1_phase}
if (B0_DCI_A1_phase <= 360) {
B0_DCI_A1_phase_X = B0_DCI_A1_phase - 270}
if (B0_DCI_A1_phase <= 90) {
B0_DCI_A1_phase_Y = B0_DCI_A1_phase}
if (B0_DCI_A1_phase <= 180) {
B0_DCI_A1_phase_Y = 180 - B0_DCI_A1_phase}
if (B0_DCI_A1_phase <= 270) {
B0_DCI_A1_phase_Y = B0_DCI_A1_phase - 180}
if (B0_DCI_A1_phase <= 360) {
B0_DCI_A1_phase_Y = 360 - B0_DCI_A1_phase}
// определение координат вектора B0 * DCI_A1
var B0_DCI_A1_1_X = 0;
var B0_DCI_A1_2_X;
if (B0_DCI_A1_phase <= 180) {B0_DCI_A1_2_X = Math.abs(Math.cos(B0_DCI_A1_phase_X * Math.PI/180)) * B0_DCI_A1
} else {B0_DCI_A1_2_X = Math.abs(Math.cos(B0_DCI_A1_phase_X * Math.PI/180)) * B0_DCI_A1 * (-1)}
var B0_DCI_A1_1_Y = 0;
var B0_DCI_A1_2_Y;
if (B0_DCI_A1_phase <= 90 || B0_DCI_A1_phase >= 270) {B0_DCI_A1_2_Y = Math.abs(Math.cos(B0_DCI_A1_phase_Y * Math.PI/180)) * B0_DCI_A1
} else {B0_DCI_A1_2_Y = Math.abs(Math.cos(B0_DCI_A1_phase_Y * Math.PI/180)) * B0_DCI_A1 * (-1)}
// определение модуля вектора B0 * DCI_A2 - A0 * DCI_B2
var B0_DCIA2_A0_DCIB2;
var B0_DCIA2_A0_DCIB2_1_X = A0_DCI_B2_2_X;
var B0_DCIA2_A0_DCIB2_1_Y = A0_DCI_B2_2_Y;
var B0_DCIA2_A0_DCIB2_2_X = B0_DCI_A2_2_X;
var B0_DCIA2_A0_DCIB2_2_Y = B0_DCI_A2_2_Y;
B0_DCIA2_A0_DCIB2 = Math.sqrt(Math.pow(B0_DCIA2_A0_DCIB2_2_X - B0_DCIA2_A0_DCIB2_1_X, 2) + Math.pow(B0_DCIA2_A0_DCIB2_2_Y - B0_DCIA2_A0_DCIB2_1_Y, 2));
// определение фазы вектора B0 * DCI_A2 - A0 * DCI_B2
var B0_DCIA2_A0_DCIB2_phase;
if ((B0_DCIA2_A0_DCIB2_2_X > B0_DCIA2_A0_DCIB2_1_X) && (B0_DCIA2_A0_DCIB2_2_Y >= B0_DCIA2_A0_DCIB2_1_Y)) {
B0_DCIA2_A0_DCIB2_phase = (((Math.acos((Math.abs(B0_DCIA2_A0_DCIB2_2_Y - B0_DCIA2_A0_DCIB2_1_Y)) / B0_DCIA2_A0_DCIB2)) * 180 ) / Math.PI)}
if ((B0_DCIA2_A0_DCIB2_2_X <= B0_DCIA2_A0_DCIB2_1_X) && (B0_DCIA2_A0_DCIB2_2_Y < B0_DCIA2_A0_DCIB2_1_Y)) {
B0_DCIA2_A0_DCIB2_phase = (((Math.acos((Math.abs(B0_DCIA2_A0_DCIB2_2_Y - B0_DCIA2_A0_DCIB2_1_Y)) / B0_DCIA2_A0_DCIB2)) * 180 ) / Math.PI) + 180}
if ((B0_DCIA2_A0_DCIB2_2_X < B0_DCIA2_A0_DCIB2_1_X) && (B0_DCIA2_A0_DCIB2_2_Y >= B0_DCIA2_A0_DCIB2_1_Y)) {
B0_DCIA2_A0_DCIB2_phase = 360 - (((Math.acos((Math.abs(B0_DCIA2_A0_DCIB2_2_Y - B0_DCIA2_A0_DCIB2_1_Y)) / B0_DCIA2_A0_DCIB2)) * 180 ) / Math.PI)}
if ((B0_DCIA2_A0_DCIB2_2_X >= B0_DCIA2_A0_DCIB2_1_X) && (B0_DCIA2_A0_DCIB2_2_Y < B0_DCIA2_A0_DCIB2_1_Y)) {
B0_DCIA2_A0_DCIB2_phase = 180 - (((Math.acos((Math.abs(B0_DCIA2_A0_DCIB2_2_Y - B0_DCIA2_A0_DCIB2_1_Y)) / B0_DCIA2_A0_DCIB2)) * 180 ) / Math.PI)}
// определение модуля вектора A0 * DCI_B1 - B0 * DCI_A1
var A0_DCIB1_B0_DCIA1;
var A0_DCIB1_B0_DCIA1_1_X = B0_DCI_A1_2_X;
var A0_DCIB1_B0_DCIA1_1_Y = B0_DCI_A1_2_Y;
var A0_DCIB1_B0_DCIA1_2_X = A0_DCI_B1_2_X;
var A0_DCIB1_B0_DCIA1_2_Y = A0_DCI_B1_2_Y;
A0_DCIB1_B0_DCIA1 = Math.sqrt(Math.pow(A0_DCIB1_B0_DCIA1_2_X - A0_DCIB1_B0_DCIA1_1_X, 2) + Math.pow(A0_DCIB1_B0_DCIA1_2_Y - A0_DCIB1_B0_DCIA1_1_Y, 2));
// определение фазы вектора A0 * DCI_B1 - B0 * DCI_A1
var A0_DCIB1_B0_DCIA1_phase;
if ((A0_DCIB1_B0_DCIA1_2_X > A0_DCIB1_B0_DCIA1_1_X) && (A0_DCIB1_B0_DCIA1_2_Y >= A0_DCIB1_B0_DCIA1_1_Y)) {
A0_DCIB1_B0_DCIA1_phase = (((Math.acos((Math.abs(A0_DCIB1_B0_DCIA1_2_Y - A0_DCIB1_B0_DCIA1_1_Y)) / A0_DCIB1_B0_DCIA1)) * 180 ) / Math.PI)}
if ((A0_DCIB1_B0_DCIA1_2_X <= A0_DCIB1_B0_DCIA1_1_X) && (A0_DCIB1_B0_DCIA1_2_Y < A0_DCIB1_B0_DCIA1_1_Y)) {
A0_DCIB1_B0_DCIA1_phase = (((Math.acos((Math.abs(A0_DCIB1_B0_DCIA1_2_Y - A0_DCIB1_B0_DCIA1_1_Y)) / A0_DCIB1_B0_DCIA1)) * 180 ) / Math.PI) + 180}
if ((A0_DCIB1_B0_DCIA1_2_X < A0_DCIB1_B0_DCIA1_1_X) && (A0_DCIB1_B0_DCIA1_2_Y >= A0_DCIB1_B0_DCIA1_1_Y)) {
A0_DCIB1_B0_DCIA1_phase = 360 - (((Math.acos((Math.abs(A0_DCIB1_B0_DCIA1_2_Y - A0_DCIB1_B0_DCIA1_1_Y)) / A0_DCIB1_B0_DCIA1)) * 180 ) / Math.PI)}
if ((A0_DCIB1_B0_DCIA1_2_X >= A0_DCIB1_B0_DCIA1_1_X) && (A0_DCIB1_B0_DCIA1_2_Y < A0_DCIB1_B0_DCIA1_1_Y)) {
A0_DCIB1_B0_DCIA1_phase = 180 - (((Math.acos((Math.abs(A0_DCIB1_B0_DCIA1_2_Y - A0_DCIB1_B0_DCIA1_1_Y)) / A0_DCIB1_B0_DCIA1)) * 180 ) / Math.PI)}
// определение модуля вектора DCI_A1 * DCI_B2
var DCIA1_DCIB2 = DCI_A1 * DCI_B2;
// определение фазы вектора DCI_A1 * DCI_B2
var DCIA1_DCIB2_phase;
if ((DCI_A1_phase + DCI_B2_phase) >360) {
DCIA1_DCIB2_phase = DCI_A1_phase + DCI_B2_phase - 360
} else {DCIA1_DCIB2_phase = DCI_A1_phase + DCI_B2_phase}
// определение угла наклона вектора DCI_A1 * DCI_B2 к осям X и Y
var DCIA1_DCIB2_phase_X;
var DCIA1_DCIB2_phase_Y;
if (DCIA1_DCIB2_phase <= 90) {
DCIA1_DCIB2_phase_X = 90 - DCIA1_DCIB2_phase}
if (DCIA1_DCIB2_phase <= 180) {
DCIA1_DCIB2_phase_X = DCIA1_DCIB2_phase - 90}
if (DCIA1_DCIB2_phase <= 270) {
DCIA1_DCIB2_phase_X = 270 - DCIA1_DCIB2_phase}
if (DCIA1_DCIB2_phase <= 360) {
DCIA1_DCIB2_phase_X = DCIA1_DCIB2_phase - 270}
if (DCIA1_DCIB2_phase <= 90) {
DCIA1_DCIB2_phase_Y = DCIA1_DCIB2_phase}
if (DCIA1_DCIB2_phase <= 180) {
DCIA1_DCIB2_phase_Y = 180 - DCIA1_DCIB2_phase}
if (DCIA1_DCIB2_phase <= 270) {
DCIA1_DCIB2_phase_Y = DCIA1_DCIB2_phase - 180}
if (DCIA1_DCIB2_phase <= 360) {
DCIA1_DCIB2_phase_Y = 360 - DCIA1_DCIB2_phase}
// определение координат вектора DCI_A1 * DCI_B2
var DCIA1_DCIB2_1_X = 0;
var DCIA1_DCIB2_2_X;
if (DCIA1_DCIB2_phase <= 180) {DCIA1_DCIB2_2_X = Math.abs(Math.cos(DCIA1_DCIB2_phase_X * Math.PI/180)) * DCIA1_DCIB2
} else {DCIA1_DCIB2_2_X = Math.abs(Math.cos(DCIA1_DCIB2_phase_X * Math.PI/180)) * DCIA1_DCIB2 * (-1)}
var DCIA1_DCIB2_1_Y = 0;
var DCIA1_DCIB2_2_Y;
if (DCIA1_DCIB2_phase <= 90 || DCIA1_DCIB2_phase >= 270) {DCIA1_DCIB2_2_Y = Math.abs(Math.cos(DCIA1_DCIB2_phase_Y * Math.PI/180)) * DCIA1_DCIB2
} else {DCIA1_DCIB2_2_Y = Math.abs(Math.cos(DCIA1_DCIB2_phase_Y * Math.PI/180)) * DCIA1_DCIB2 * (-1)}
// определение модуля вектора DCI_B1 * DCI_A2
var DCIB1_DCIA2 = DCI_B1 * DCI_A2;
// определение фазы вектора DCI_B1 * DCI_A2
var DCIB1_DCIA2_phase;
if ((DCI_B1_phase + DCI_A2_phase) >360) {
DCIB1_DCIA2_phase = DCI_B1_phase + DCI_A2_phase - 360
} else {DCIB1_DCIA2_phase = DCI_B1_phase + DCI_A2_phase}
// определение угла наклона вектора DCI_B1 * DCI_A2 к осям X и Y
var DCIB1_DCIA2_phase_X;
var DCIB1_DCIA2_phase_Y;
if (DCIB1_DCIA2_phase <= 90) {
DCIB1_DCIA2_phase_X = 90 - DCIB1_DCIA2_phase}
if (DCIB1_DCIA2_phase <= 180) {
DCIB1_DCIA2_phase_X = DCIB1_DCIA2_phase - 90}
if (DCIB1_DCIA2_phase <= 270) {
DCIB1_DCIA2_phase_X = 270 - DCIB1_DCIA2_phase}
if (DCIB1_DCIA2_phase <= 360) {
DCIB1_DCIA2_phase_X = DCIB1_DCIA2_phase - 270}
if (DCIB1_DCIA2_phase <= 90) {
DCIB1_DCIA2_phase_Y = DCIB1_DCIA2_phase}
if (DCIB1_DCIA2_phase <= 180) {
DCIB1_DCIA2_phase_Y = 180 - DCIB1_DCIA2_phase}
if (DCIB1_DCIA2_phase <= 270) {
DCIB1_DCIA2_phase_Y = DCIB1_DCIA2_phase - 180}
if (DCIB1_DCIA2_phase <= 360) {
DCIB1_DCIA2_phase_Y = 360 - DCIB1_DCIA2_phase}
// определение координат вектора DCI_B1 * DCI_A2
var DCIB1_DCIA2_1_X = 0;
var DCIB1_DCIA2_2_X;
if (DCIB1_DCIA2_phase <= 180) {DCIB1_DCIA2_2_X = Math.abs(Math.cos(DCIB1_DCIA2_phase_X * Math.PI/180)) * DCIB1_DCIA2
} else {DCIB1_DCIA2_2_X = Math.abs(Math.cos(DCIB1_DCIA2_phase_X * Math.PI/180)) * DCIB1_DCIA2 * (-1)}
var DCIB1_DCIA2_1_Y = 0;
var DCIB1_DCIA2_2_Y;
if (DCIB1_DCIA2_phase <= 90 || DCIB1_DCIA2_phase >= 270) {DCIB1_DCIA2_2_Y = Math.abs(Math.cos(DCIB1_DCIA2_phase_Y * Math.PI/180)) * DCIB1_DCIA2
} else {DCIB1_DCIA2_2_Y = Math.abs(Math.cos(DCIB1_DCIA2_phase_Y * Math.PI/180)) * DCIB1_DCIA2 * (-1)}
// определение модуля вектора DCI_A1 * DCI_B2 - DCI_B1 * DCI_A2
var DCIA1_DCIB2_DCIB1_DCIA2;
var DCIA1_DCIB2_DCIB1_DCIA2_1_X = DCIB1_DCIA2_2_X;
var DCIA1_DCIB2_DCIB1_DCIA2_1_Y = DCIB1_DCIA2_2_Y;
var DCIA1_DCIB2_DCIB1_DCIA2_2_X = DCIA1_DCIB2_2_X;
var DCIA1_DCIB2_DCIB1_DCIA2_2_Y = DCIA1_DCIB2_2_Y;
DCIA1_DCIB2_DCIB1_DCIA2 = Math.sqrt(Math.pow(DCIA1_DCIB2_DCIB1_DCIA2_2_X - DCIA1_DCIB2_DCIB1_DCIA2_1_X, 2) + Math.pow(DCIA1_DCIB2_DCIB1_DCIA2_2_Y - DCIA1_DCIB2_DCIB1_DCIA2_1_Y, 2));
// определение фазы вектора DCI_A1 * DCI_B2 - DCI_B1 * DCI_A2
var DCIA1_DCIB2_DCIB1_DCIA2_phase;
if ((DCIA1_DCIB2_DCIB1_DCIA2_2_X > DCIA1_DCIB2_DCIB1_DCIA2_1_X) && (DCIA1_DCIB2_DCIB1_DCIA2_2_Y >= DCIA1_DCIB2_DCIB1_DCIA2_1_Y)) {
DCIA1_DCIB2_DCIB1_DCIA2_phase = (((Math.acos((Math.abs(DCIA1_DCIB2_DCIB1_DCIA2_2_Y - DCIA1_DCIB2_DCIB1_DCIA2_1_Y)) / DCIA1_DCIB2_DCIB1_DCIA2)) * 180 ) / Math.PI)}
if ((DCIA1_DCIB2_DCIB1_DCIA2_2_X <= DCIA1_DCIB2_DCIB1_DCIA2_1_X) && (DCIA1_DCIB2_DCIB1_DCIA2_2_Y < DCIA1_DCIB2_DCIB1_DCIA2_1_Y)) {
DCIA1_DCIB2_DCIB1_DCIA2_phase = (((Math.acos((Math.abs(DCIA1_DCIB2_DCIB1_DCIA2_2_Y - DCIA1_DCIB2_DCIB1_DCIA2_1_Y)) / DCIA1_DCIB2_DCIB1_DCIA2)) * 180 ) / Math.PI) + 180}
if ((DCIA1_DCIB2_DCIB1_DCIA2_2_X < DCIA1_DCIB2_DCIB1_DCIA2_1_X) && (DCIA1_DCIB2_DCIB1_DCIA2_2_Y >= DCIA1_DCIB2_DCIB1_DCIA2_1_Y)) {
DCIA1_DCIB2_DCIB1_DCIA2_phase = 360 - (((Math.acos((Math.abs(DCIA1_DCIB2_DCIB1_DCIA2_2_Y - DCIA1_DCIB2_DCIB1_DCIA2_1_Y)) / DCIA1_DCIB2_DCIB1_DCIA2)) * 180 ) / Math.PI)}
if ((DCIA1_DCIB2_DCIB1_DCIA2_2_X >= DCIA1_DCIB2_DCIB1_DCIA2_1_X) && (DCIA1_DCIB2_DCIB1_DCIA2_2_Y < DCIA1_DCIB2_DCIB1_DCIA2_1_Y)) {
DCIA1_DCIB2_DCIB1_DCIA2_phase = 180 - (((Math.acos((Math.abs(DCIA1_DCIB2_DCIB1_DCIA2_2_Y - DCIA1_DCIB2_DCIB1_DCIA2_1_Y)) / DCIA1_DCIB2_DCIB1_DCIA2)) * 180 ) / Math.PI)}
// определение корректирующей массы Mb1_calc (плоскость 1)
Mb1_calc = B0_DCIA2_A0_DCIB2 / DCIA1_DCIB2_DCIB1_DCIA2;
// опредение угла установки корректирующей массы Mb1_corner_calc (плоскость 1)
if ((B0_DCIA2_A0_DCIB2_phase - DCIA1_DCIB2_DCIB1_DCIA2_phase) < 0) {
Mb1_corner_calc = (B0_DCIA2_A0_DCIB2_phase - DCIA1_DCIB2_DCIB1_DCIA2_phase) + 360}
else if ((B0_DCIA2_A0_DCIB2_phase - DCIA1_DCIB2_DCIB1_DCIA2_phase) > 360) {
Mb1_corner_calc = (B0_DCIA2_A0_DCIB2_phase - DCIA1_DCIB2_DCIB1_DCIA2_phase) - 360}
else {Mb1_corner_calc = (B0_DCIA2_A0_DCIB2_phase - DCIA1_DCIB2_DCIB1_DCIA2_phase)}
// определение массы дисбаланса Mdisb1 плоскости 1
Mdisb1 = Mb1_calc; // равен массе балансировочного груза
// определение угла расположения дисбаланса Mdisb1 плоскости 1
if ((Mb1_corner_calc + 180) > 360) {
Mdisb1_corner = (Mb1_corner_calc + 180) - 360}
else if ((Mb1_corner_calc + 180) < 0) {
Mdisb1_corner = (Mb1_corner_calc + 180) + 360}
else {Mdisb1_corner = (Mb1_corner_calc + 180)}
// определение корректирующей массы Mb2_calc (плоскость 2)
Mb2_calc = A0_DCIB1_B0_DCIA1 / DCIA1_DCIB2_DCIB1_DCIA2;
// опредение угла установки корректирующей массы Mb2_corner_calc (плоскость 2)
if ((A0_DCIB1_B0_DCIA1_phase - DCIA1_DCIB2_DCIB1_DCIA2_phase) < 0) {
Mb2_corner_calc = (A0_DCIB1_B0_DCIA1_phase - DCIA1_DCIB2_DCIB1_DCIA2_phase) + 360}
else if ((A0_DCIB1_B0_DCIA1_phase - DCIA1_DCIB2_DCIB1_DCIA2_phase) > 360) {
Mb2_corner_calc = (A0_DCIB1_B0_DCIA1_phase - DCIA1_DCIB2_DCIB1_DCIA2_phase) - 360}
else {Mb2_corner_calc = (A0_DCIB1_B0_DCIA1_phase - DCIA1_DCIB2_DCIB1_DCIA2_phase)}
// определение массы дисбаланса Mdisb2 плоскости 2
Mdisb2 = Mb2_calc; // равен массе балансировочного груза
// определение угла расположения дисбаланса Mdisb2_corner плоскости 2
if ((Mb2_corner_calc + 180) > 360) {
Mdisb2_corner = (Mb2_corner_calc + 180) - 360}
else if ((Mb2_corner_calc + 180) < 0) {
Mdisb2_corner = (Mb2_corner_calc + 180) + 360}
else {Mdisb2_corner = (Mb2_corner_calc + 180)}
// Координаты дисбалансов и балансировочных грузов
// определение угла наклона вектора Mb1_calc к осям X и Y
if (Mb1_corner_calc <= 90) {
Mb1_corner_calc_X = 90 - Mb1_corner_calc}
if (Mb1_corner_calc <= 180) {
Mb1_corner_calc_X = Mb1_corner_calc - 90}
if (Mb1_corner_calc <= 270) {
Mb1_corner_calc_X = 270 - Mb1_corner_calc}
if (Mb1_corner_calc <= 360) {
Mb1_corner_calc_X = Mb1_corner_calc - 270}
if (Mb1_corner_calc <= 90) {
Mb1_corner_calc_Y = Mb1_corner_calc}
if (Mb1_corner_calc <= 180) {
Mb1_corner_calc_Y = 180 - Mb1_corner_calc}
if (Mb1_corner_calc <= 270) {
Mb1_corner_calc_Y = Mb1_corner_calc - 180}
if (Mb1_corner_calc <= 360) {
Mb1_corner_calc_Y = 360 - Mb1_corner_calc}
// определение координат вектора Mb1_calc
Mb1_1_calc_X = 0;
if (Mb1_corner_calc <= 180) {Mb1_2_calc_X = Math.abs(Math.cos(Mb1_corner_calc_X * Math.PI/180)) * Mb1_calc * (-1)
} else {Mb1_2_calc_X = Math.abs(Math.cos(Mb1_corner_calc_X * Math.PI/180)) * Mb1_calc}
Mb1_1_calc_Y = 0;
if (Mb1_corner_calc <= 90 || Mb1_corner_calc >= 270) {Mb1_2_calc_Y = Math.abs(Math.cos(Mb1_corner_calc_Y * Math.PI/180)) * Mb1_calc
} else {Mb1_2_calc_Y = Math.abs(Math.cos(Mb1_corner_calc_Y * Math.PI/180)) * Mb1_calc * (-1)}
// определение угла наклона вектора Mb2_calc к осям X и Y
if (Mb2_corner_calc <= 90) {
Mb2_corner_calc_X = 90 - Mb2_corner_calc}
if (Mb2_corner_calc <= 180) {
Mb2_corner_calc_X = Mb2_corner_calc - 90}
if (Mb2_corner_calc <= 270) {
Mb2_corner_calc_X = 270 - Mb2_corner_calc}
if (Mb2_corner_calc <= 360) {
Mb2_corner_calc_X = Mb2_corner_calc - 270}
if (Mb2_corner_calc <= 90) {
Mb2_corner_calc_Y = Mb2_corner_calc}
if (Mb2_corner_calc <= 180) {
Mb2_corner_calc_Y = 180 - Mb2_corner_calc}
if (Mb2_corner_calc <= 270) {
Mb2_corner_calc_Y = Mb2_corner_calc - 180}
if (Mb2_corner_calc <= 360) {
Mb2_corner_calc_Y = 360 - Mb2_corner_calc}
// определение координат вектора Mb2_calc
Mb2_1_calc_X = 0;
if (Mb2_corner_calc <= 180) {Mb2_2_calc_X = Math.abs(Math.cos(Mb2_corner_calc_X * Math.PI/180)) * Mb2_calc * (-1)
} else {Mb2_2_calc_X = Math.abs(Math.cos(Mb2_corner_calc_X * Math.PI/180)) * Mb2_calc}
Mb2_1_calc_Y = 0;
if (Mb2_corner_calc <= 90 || Mb2_corner_calc >= 270) {Mb2_2_calc_Y = Math.abs(Math.cos(Mb2_corner_calc_Y * Math.PI/180)) * Mb2_calc
} else {Mb2_2_calc_Y = Math.abs(Math.cos(Mb2_corner_calc_Y * Math.PI/180)) * Mb2_calc * (-1)}
// определение угла наклона вектора Mb1 к осям X и Y
if (Mb1_corner <= 90) {
Mb1_corner_X = 90 - Mb1_corner}
if (Mb1_corner <= 180) {
Mb1_corner_X = Mb1_corner - 90}
if (Mb1_corner <= 270) {
Mb1_corner_X = 270 - Mb1_corner}
if (Mb1_corner <= 360) {
Mb1_corner_X = Mb1_corner - 270}
if (Mb1_corner <= 90) {
Mb1_corner_Y = Mb1_corner}
if (Mb1_corner <= 180) {
Mb1_corner_Y = 180 - Mb1_corner}
if (Mb1_corner <= 270) {
Mb1_corner_Y = Mb1_corner - 180}
if (Mb1_corner <= 360) {
Mb1_corner_Y = 360 - Mb1_corner}
// определение координат вектора Mb1
Mb1_1_X = 0;
if (Mb1_corner <= 180) {Mb1_2_X = Math.abs(Math.cos(Mb1_corner_X * Math.PI/180)) * Mb1 * (-1)
} else {Mb1_2_X = Math.abs(Math.cos(Mb1_corner_X * Math.PI/180)) * Mb1}
Mb1_1_Y = 0;
if (Mb1_corner <= 90 || Mb1_corner >= 270) {Mb1_2_Y = Math.abs(Math.cos(Mb1_corner_Y * Math.PI/180)) * Mb1
} else {Mb1_2_Y = Math.abs(Math.cos(Mb1_corner_Y * Math.PI/180)) * Mb1 * (-1)}
// определение угла наклона вектора Mb2 к осям X и Y
if (Mb2_corner <= 90) {
Mb2_corner_X = 90 - Mb2_corner}
if (Mb2_corner <= 180) {
Mb2_corner_X = Mb2_corner - 90}
if (Mb2_corner <= 270) {
Mb2_corner_X = 270 - Mb2_corner}
if (Mb2_corner <= 360) {
Mb2_corner_X = Mb2_corner - 270}
if (Mb2_corner <= 90) {
Mb2_corner_Y = Mb2_corner}
if (Mb2_corner <= 180) {
Mb2_corner_Y = 180 - Mb2_corner}
if (Mb2_corner <= 270) {
Mb2_corner_Y = Mb2_corner - 180}
if (Mb2_corner <= 360) {
Mb2_corner_Y = 360 - Mb2_corner}
// определение координат вектора Mb2
Mb2_1_X = 0;
if (Mb2_corner <= 180) {Mb2_2_X = Math.abs(Math.cos(Mb2_corner_X * Math.PI/180)) * Mb2 * (-1)
} else {Mb2_2_X = Math.abs(Math.cos(Mb2_corner_X * Math.PI/180)) * Mb2}
Mb2_1_Y = 0;
if (Mb2_corner <= 90 || Mb2_corner >= 270) {Mb2_2_Y = Math.abs(Math.cos(Mb2_corner_Y * Math.PI/180)) * Mb2
} else {Mb2_2_Y = Math.abs(Math.cos(Mb2_corner_Y * Math.PI/180)) * Mb2 * (-1)}
// определение угла наклона вектора Mdisb1 к осям X и Y
if (Mdisb1_corner <= 90) {
Mdisb1_corner_X = 90 - Mdisb1_corner}
if (Mdisb1_corner <= 180) {
Mdisb1_corner_X = Mdisb1_corner - 90}
if (Mdisb1_corner <= 270) {
Mdisb1_corner_X = 270 - Mdisb1_corner}
if (Mdisb1_corner <= 360) {
Mdisb1_corner_X = Mdisb1_corner - 270}
if (Mdisb1_corner <= 90) {
Mdisb1_corner_Y = Mdisb1_corner}
if (Mdisb1_corner <= 180) {
Mdisb1_corner_Y = 180 - Mdisb1_corner}
if (Mdisb1_corner <= 270) {
Mdisb1_corner_Y = Mdisb1_corner - 180}
if (Mdisb1_corner <= 360) {
Mdisb1_corner_Y = 360 - Mdisb1_corner}
// определение координат вектора Mdisb1
Mdisb1_1_X = 0;
if (Mdisb1_corner <= 180) {Mdisb1_2_X = Math.abs(Math.cos(Mdisb1_corner_X * Math.PI/180)) * Mdisb1 * (-1)
} else {Mdisb1_2_X = Math.abs(Math.cos(Mdisb1_corner_X * Math.PI/180)) * Mdisb1}
Mdisb1_1_Y = 0;
if (Mdisb1_corner <= 90 || Mdisb1_corner >= 270) {Mdisb1_2_Y = Math.abs(Math.cos(Mdisb1_corner_Y * Math.PI/180)) * Mdisb1
} else {Mdisb1_2_Y = Math.abs(Math.cos(Mdisb1_corner_Y * Math.PI/180)) * Mdisb1 * (-1)}
// определение угла наклона вектора Mdisb2 к осям X и Y
if (Mdisb2_corner <= 90) {
Mdisb2_corner_X = 90 - Mdisb2_corner}
if (Mdisb2_corner <= 180) {
Mdisb2_corner_X = Mdisb2_corner - 90}
if (Mdisb2_corner <= 270) {
Mdisb2_corner_X = 270 - Mdisb2_corner}
if (Mdisb2_corner <= 360) {
Mdisb2_corner_X = Mdisb2_corner - 270}
if (Mdisb2_corner <= 90) {
Mdisb2_corner_Y = Mdisb2_corner}
if (Mdisb2_corner <= 180) {
Mdisb2_corner_Y = 180 - Mdisb2_corner}
if (Mdisb2_corner <= 270) {
Mdisb2_corner_Y = Mdisb2_corner - 180}
if (Mdisb2_corner <= 360) {
Mdisb2_corner_Y = 360 - Mdisb2_corner}
// определение координат вектора Mdisb2
Mdisb2_1_X = 0;
if (Mdisb2_corner <= 180) {Mdisb2_2_X = Math.abs(Math.cos(Mdisb2_corner_X * Math.PI/180)) * Mdisb2 * (-1)
} else {Mdisb2_2_X = Math.abs(Math.cos(Mdisb2_corner_X * Math.PI/180)) * Mdisb2}
Mdisb2_1_Y = 0;
if (Mdisb2_corner <= 90 || Mdisb2_corner >= 270) {Mdisb2_2_Y = Math.abs(Math.cos(Mdisb2_corner_Y * Math.PI/180)) * Mdisb2
} else {Mdisb2_2_Y = Math.abs(Math.cos(Mdisb2_corner_Y * Math.PI/180)) * Mdisb2 * (-1)}
// Координаты графиков масс
// определение координат точек окружности обозначения массы пробного груза
var x_m_test_1_array = []; // массив координат точек окружности m_test_1 по оси X
var y_m_test_1_array = []; // массив координат точек окружности m_test_1 по оси Y
var x0_m_test_1 = m_test_1_2_X; // центр по X
var y0_m_test_1 = m_test_1_2_Y; // центр по Y
for (let i=0; i<=359; i++ ) {
x_m_test_1_array.push(x0_m_test_1 + (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.1 * (Math.sin((i) * Math.PI / 180))));
y_m_test_1_array.push(y0_m_test_1 + (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.1 * (Math.cos((i) * Math.PI / 180))));}
// определение координат точек окружности обозначения массы пробного груза
var x_m_test_2_array = []; // массив координат точек окружности m_test_2 по оси X
var y_m_test_2_array = []; // массив координат точек окружности m_test_2 по оси Y
var x0_m_test_2 = m_test_2_2_X; // центр по X
var y0_m_test_2 = m_test_2_2_Y; // центр по Y
for (let i=0; i<=359; i++ ) {
x_m_test_2_array.push(x0_m_test_2 + (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.1 * (Math.sin((i) * Math.PI / 180))));
y_m_test_2_array.push(y0_m_test_2 + (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.1 * (Math.cos((i) * Math.PI / 180))));}
// определение координат точек окружности обозначения расчётного балансировочного груза Mb1_calc плоскости 1
var x_Mb1_calc_array = []; // массив координат точек окружности Mb1_calc по оси X
var y_Mb1_calc_array = []; // массив координат точек окружности Mb1_calc по оси Y
var x0_Mb1_calc = Mb1_2_calc_X; // центр по X
var y0_Mb1_calc = Mb1_2_calc_Y; // центр по Y
for (let i=0; i<=359; i++ ) {
x_Mb1_calc_array.push(x0_Mb1_calc + (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.1 * (Math.sin((i) * Math.PI / 180))));
y_Mb1_calc_array.push(y0_Mb1_calc + (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.1 * (Math.cos((i) * Math.PI / 180))));}
// определение координат точек окружности обозначения расчётного балансировочного груза Mb2_calc плоскости 2
var x_Mb2_calc_array = []; // массив координат точек окружности Mb2_calc по оси X
var y_Mb2_calc_array = []; // массив координат точек окружности Mb2_calc по оси Y
var x0_Mb2_calc = Mb2_2_calc_X; // центр по X
var y0_Mb2_calc = Mb2_2_calc_Y; // центр по Y
for (let i=0; i<=359; i++ ) {
x_Mb2_calc_array.push(x0_Mb2_calc + (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.1 * (Math.sin((i) * Math.PI / 180))));
y_Mb2_calc_array.push(y0_Mb2_calc + (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.1 * (Math.cos((i) * Math.PI / 180))));}
// определение координат точек окружности обозначения введённого балансировочного груза Mb1 плоскости 1
var x_Mb1_array = []; // массив координат точек окружности Mb1 по оси X
var y_Mb1_array = []; // массив координат точек окружности Mb1 по оси Y
var x0_Mb1 = Mb1_2_X; // центр по X
var y0_Mb1 = Mb1_2_Y; // центр по Y
for (let i=0; i<=359; i++ ) {
x_Mb1_array.push(x0_Mb1 + (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.1 * (Math.sin((i) * Math.PI / 180))));
y_Mb1_array.push(y0_Mb1 + (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.1 * (Math.cos((i) * Math.PI / 180))));}
// определение координат точек окружности обозначения введённого балансировочного груза Mb2 плоскости 2
var x_Mb2_array = []; // массив координат точек окружности Mb2 по оси X
var y_Mb2_array = []; // массив координат точек окружности Mb2 по оси Y
var x0_Mb2 = Mb2_2_X; // центр по X
var y0_Mb2 = Mb2_2_Y; // центр по Y
for (let i=0; i<=359; i++ ) {
x_Mb2_array.push(x0_Mb2 + (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.1 * (Math.sin((i) * Math.PI / 180))));
y_Mb2_array.push(y0_Mb2 + (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.1 * (Math.cos((i) * Math.PI / 180))));}
// определение координат точек окружности обозначения дисбаалнса Mdisb1 плоскости 1
var x_Mdisb1_array = []; // массив координат точек окружности Mdisb1 по оси X
var y_Mdisb1_array = []; // массив координат точек окружности Mdisb1 по оси Y
var x0_Mdisb1 = Mdisb1_2_X; // центр по X
var y0_Mdisb1 = Mdisb1_2_Y; // центр по Y
for (let i=0; i<=359; i++ ) {
x_Mdisb1_array.push(x0_Mdisb1 + (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.1 * (Math.sin((i) * Math.PI / 180))));
y_Mdisb1_array.push(y0_Mdisb1 + (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.1 * (Math.cos((i) * Math.PI / 180))));}
// определение координат точек окружности обозначения дисбаланса Mdisb2 плоскости 2
var x_Mdisb2_array = []; // массив координат точек окружности Mdisb2 по оси X
var y_Mdisb2_array = []; // массив координат точек окружности Mdisb2 по оси Y
var x0_Mdisb2 = Mdisb2_2_X; // центр по X
var y0_Mdisb2 = Mdisb2_2_Y; // центр по Y
for (let i=0; i<=359; i++ ) {
x_Mdisb2_array.push(x0_Mdisb2 + (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.1 * (Math.sin((i) * Math.PI / 180))));
y_Mdisb2_array.push(y0_Mdisb2 + (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*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_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)+Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.1) * (Math.sin((i) * Math.PI / 180)));
yD_array.push(y0D + (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)+Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.1) * (Math.cos((i) * Math.PI / 180)));}
// Вычисление допустимого остаточного дисбаланса
U_per = (1000 * (G * P)) / (Math.PI * n / 30);
// Остаточный дисбаланс
U_res1 = Mdisb1 * R1;
U_res2 = Mdisb2 * R2;
U_res = U_res1 + U_res2;
// Графики вибрации
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: 0x0fae1a,
name: "Вибрация_A2",
x: xA2_array,
y: yA2_array,
});
plot_vibr.add(
{
color: 0xff0000,
name: "Вибрация_dA1",
x: xdA1_array,
y: ydA1_array,
});
plot_vibr.add(
{
color: 0xff3dcc,
name: "Вибрация_dA2",
x: xdA2_array,
y: ydA2_array,
});
plot_vibr.add(
{
color: 0x0000ff,
name: "Вибрация_B0",
x: xB0_array,
y: yB0_array,
});
plot_vibr.add(
{
color: 0x00ff00,
name: "Вибрация_B1",
x: xB1_array,
y: yB1_array,
});
plot_vibr.add(
{
color: 0x0fae1a,
name: "Вибрация_B2",
x: xB2_array,
y: yB2_array,
});
plot_vibr.add(
{
color: 0xff0000,
name: "Вибрация_dB1",
x: xdB1_array,
y: ydB1_array,
});
plot_vibr.add(
{
color: 0xff3dcc,
name: "Вибрация_dB2",
x: xdB2_array,
y: ydB2_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,A2,dA2,B0,B1,dB1,B2,dB2)+Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)*0.2), -(Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)+Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)*0.2), (Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)+Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)*0.2), (Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)+Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)*0.2)],
y: [(Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)+Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)*0.2), -(Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)+Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)*0.2), -(Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)+Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)*0.2), (Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)+Math.max(A0,A1,dA1,A2,dA2,B0,B1,dB1,B2,dB2)*0.2)]
});
plot_disb.add(
{
color: 0x0000ff,
name: "Пробный груз m_test_1 плоскости 1",
x: x_m_test_1_array,
y: y_m_test_1_array,
});
plot_disb.add(
{
color: 0x0000ff,
name: "Пробный груз m_test_2 плоскости 2",
x: x_m_test_2_array,
y: y_m_test_2_array,
});
plot_disb.add(
{
color: 0x00ff00,
name: "Балансировочный груз расчётный Mb1_calc плоскости 1",
x: x_Mb1_calc_array,
y: y_Mb1_calc_array,
});
plot_disb.add(
{
color: 0x00ff00,
name: "Балансировочный груз расчётный Mb2_calc плоскости 2",
x: x_Mb2_calc_array,
y: y_Mb2_calc_array,
});
plot_disb.add(
{
color: 0x0fae1a,
name: "Балансировочный груз введённый Mb1 плоскости 1",
x: x_Mb1_array,
y: y_Mb1_array,
});
plot_disb.add(
{
color: 0x0fae1a,
name: "Балансировочный груз введённый Mb2 плоскости 2",
x: x_Mb2_array,
y: y_Mb2_array,
});
plot_disb.add(
{
color: 0xff0000,
name: "Дисбаланс Mdisb1 плоскости 1",
x: x_Mdisb1_array,
y: y_Mdisb1_array,
});
plot_disb.add(
{
color: 0xff0000,
name: "Дисбаланс Mdisb2 плоскости 2",
x: x_Mdisb2_array,
y: y_Mdisb2_array,
});
plot_disb.add(
{
color: 0x00ffffff,
name: "График расположения дисбаланса",
x: xD_array,
y: yD_array,
});
plot_disb.add(
{
color: 0x00ffffff,
name: "границы",
x: [-(Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)+Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.2), -(Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)+Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.2), (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)+Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.2), (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)+Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.2)],
y: [(Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)+Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.2), -(Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)+Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.2), -(Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)+Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.2), (Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)+Math.max(m_test_1,m_test_2,Mb1_calc,Mb2_calc,Mb1,Mb2,Mdisb1,Mdisb2)*0.2)]
});
gtl.log.info("Mb1_calc (масса балансировочного груза плоскости 1 расчёт)",Mb1_calc);
gtl.log.info("Mb1_corner_calc (угол установки балансировочного груза плоскости 1 расчёт)",Mb1_corner_calc);
gtl.log.info("Mb1 (масса балансировочного груза плоскости 1 введён)",Mb1);
gtl.log.info("Mb1_corner (угол установки балансировочного груза плоскости 1 введён)",Mb1_corner);
gtl.log.info("Mdisb1 (дисбаланс плоскости 1)",Mdisb1);
gtl.log.info("Mdisb1_corner (угол расположения дисбаланса плоскости 1)",Mdisb1_corner);
gtl.log.info("Mb2_calc (масса балансировочного груза плоскости 2 расчёт)",Mb2_calc);
gtl.log.info("Mb2_corner_calc (угол установки балансировочного груза плоскости 2 расчёт)",Mb2_corner_calc);
gtl.log.info("Mb2 (масса балансировочного груза плоскости 2 введён)",Mb2);
gtl.log.info("Mb2_corner (угол установки балансировочного груза плоскости 2 введён)",Mb2_corner);
gtl.log.info("Mdisb2 (дисбаланс плоскости 2)",Mdisb2);
gtl.log.info("Mdisb2_corner (угол расположения дисбаланса плоскости 2)",Mdisb2_corner);
gtl.log.info("m_test_1 (пробный груз плоскости 1 введён)",m_test_1);
gtl.log.info("m_test_1_corner (угол установки пробного груза плоскости 1 введён)",m_test_1_corner);
gtl.log.info("m_test_2 (пробный груз плоскости 2 введён)",m_test_2);
gtl.log.info("m_test_2_corner (угол установки пробного груза плоскости 2 введён)",m_test_2_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("A2",A2);
gtl.log.info("A2_phase",A2_phase);
gtl.log.info("B0",B0);
gtl.log.info("B0_phase",B0_phase);
gtl.log.info("B1",B1);
gtl.log.info("B1_phase",B1_phase);
gtl.log.info("B2",B2);
gtl.log.info("B2_phase",B2_phase);
gtl.log.info("модуль ДКВ DCI_A1 плоскости 1 на вибрацию в точке A", DCI_A1);
gtl.log.info("фаза ДКВ DCI_A1 плоскости 1 на вибрацию в точке A", DCI_A1_phase);
gtl.log.info("модуль ДКВ DCI_A2 плоскости 2 на вибрацию в точке A", DCI_A2);
gtl.log.info("фаза ДКВ DCI_A2 плоскости 2 на вибрацию в точке A", DCI_A2_phase);
gtl.log.info("модуль ДКВ DCI_B1 плоскости 1 на вибрацию в точке B", DCI_B1);
gtl.log.info("фаза ДКВ DCI_B1 плоскости 1 на вибрацию в точке B", DCI_B1_phase);
gtl.log.info("модуль ДКВ DCI_B2 плоскости 2 на вибрацию в точке B", DCI_B2);
gtl.log.info("фаза ДКВ DCI_B2 плоскости 2 на вибрацию в точке B", DCI_B2_phase);
gtl.log.info("Допустимый остаточный дисбаланс", U_per);
gtl.log.info("Остаточный дисбаланс плоскости 1", U_res1);
gtl.log.info("Остаточный дисбаланс плоскости 2", U_res2);
// Выдача результата (results)
let __result = {
_001_Ампл_вибр_пуска_A0: A0,
_002аза_вибр_пуска_A0: A0_phase,
_003_Ампл_вибр_пуска_A1: A1,
_004аза_вибр_пуска_A1: A1_phase,
_005_Ампл_вибр_пуска_A2: A2,
_006аза_вибр_пуска_A2: A2_phase,
_007_Ампл_вибр_пуска_B0: B0,
_008аза_вибр_пуска_B0: B0_phase,
_009_Ампл_вибр_пуска_B1: B1,
_010аза_вибр_пуска_B1: B1_phase,
_011_Ампл_вибр_пуска_B2: B2,
_012аза_вибр_пуска_B2: B2_phase,
_013_Масса_дисбаланса_пл_1: Mdisb1,
_014_Угол_дисбаланса_пл_1: Mdisb1_corner,
_015_Масса_дисбаланса_пл_2: Mdisb2,
_015_Угол_дисбаланса_пл_2: Mdisb2_corner,
_016_Масса_баланс_груза_расч_пл_1: Mb1_calc,
_017_Угол_баланс_груза_расч_пл_1: Mb1_corner_calc,
_018_Масса_баланс_груза_введён_пл_1: Mb1,
_019_Угол_баланс_груза_введён_пл_1: Mb1_corner,
_020_Масса_баланс_груза_расч_пл_2: Mb2_calc,
_021_Угол_баланс_груза_расч_пл_2: Mb2_corner_calc,
_022_Масса_баланс_груза_введён_пл_2: Mb2,
_023_Угол_баланс_груза_введён_пл_2: Mb2_corner,
_024_МодульКВ_DCI_A1: DCI_A1,
_025азаКВ_DCI_A1: DCI_A1_phase,
_026_МодульКВ_DCI_A2: DCI_A2,
_027азаКВ_DCI_A2: DCI_A2_phase,
_028_МодульКВ_DCI_B1: DCI_B1,
_029азаКВ_DCI_B1: DCI_B1_phase,
_030_МодульКВ_DCI_B2: DCI_B2,
_031азаКВ_DCI_B2: DCI_B2_phase,
_032опуст_ост_дисб_г_мм: U_per,
_033_Остат_дисб_пл1_г_мм: U_res1,
_034_Остат_дисб_пл2_г_мм: U_res2,
_035_Остат_дисб_сумм_г_мм: U_res
};
gtl.results = {"result": __result};
gtl.diagnostic.stop();
// break;
// default:
// break;
// }
}