balancer_calc/scripts/Две_плоскости_с_фазой(old).js

1129 lines
62 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 freq_default = 5; // предполагаемая частота вращения
var filter_freq = gtl.add_filter_iir(gtl.analog_inputs[record.tachoOptions.tachoChannel]); // объявление переменной фильтра
filter_freq.kind = gtl.filter_iir.butterworth; // тип окна
filter_freq.type = gtl.filter_iir.bandpass; // тип фильтра (полосовой)
filter_freq.order = 6; // порядок фильтра
filter_freq.width = freq_default * 0.2; // полоса пропускания 20%
filter_freq.frequency = freq_default; // центральная частота фильтра
// Определение частоты вращения по фильтру предполагаемой частоты
var FREQ = gtl.add_value_freq(filter_freq);
FREQ.time = 1; // длина отрезка сигнала
FREQ.avg_cnt = 3; // усреднение частоты вращения
// Определение частоты вращения по параметру freq.dc
var freq = gtl.add_value_freq(gtl.analog_inputs[record.tachoOptions.tachoChannel]);
freq.time = 1; // длина отрезка сигнала
freq.avg_cnt = 3; // усреднение
freq.dc = -0.05; // уровень, при переходе через который считаются периоды
// Канал 0
// ФИЛЬТР 2...1000 Гц, полосовой фильтр для СКЗ виброскорости и спектра
var filter0_2_1000 = gtl.add_filter_iir(gtl.analog_inputs[0]);
filter0_2_1000.kind = gtl.filter_iir.butterworth;
filter0_2_1000.type = gtl.filter_iir.bandpass;
filter0_2_1000.order = 6;
filter0_2_1000.frequency = 502; // центральная частота полосового фильтра
filter0_2_1000.width = 1000; // ширина полосы фильтра
var filter0_2_1000v = gtl.add_intg(filter0_2_1000); // интегрирование
filter0_2_1000v.taps = 1; // степень интегрирования (скорость из ускорения - 1-нарное)
// Спектр виброскорости для получения 1-й гармоники частоты вращения
var AUSPv0 = gtl.add_ausp(filter0_2_1000v); // объявление переменной спектра
AUSPv0.color = 0x00ff0000; // цвет спектра
AUSPv0.name = "AUSPv0"; // имя спектра
AUSPv0.frequency = 1000; // граничная частота спектра
AUSPv0.lines = AUSPv0.frequency * 2; // разрешение спектра (количество линий)
AUSPv0.average = 4; // количество усреднений
AUSPv0.unit = gtl.spec.unit; // отображение амплитуды в мм/с
AUSPv0.smoothing_factor = 100; // усреднение средней линии
AUSPv0.smoothed_line_color = 0xff004dff; // цвет средней линии
AUSPv0.peak_level = 0.000001; // порог обнаружения гармоник (необходим самый минимальный)
AUSPv0.tolerance = AUSPv0.resolution; // диапазон поиска гармоник +/-
// СКЗv
var RMSv0_2_1000 = gtl.add_value_rms(filter0_2_1000v);
RMSv0_2_1000.time = 1;
RMSv0_2_1000.avg_cnt = 3;
// Фаза 1-й гармоники частоты вращения (виброскорости)
var delta_phase_F1v0 = gtl.add_delta_phase_spec(filter0_2_1000v, gtl.analog_inputs[record.tachoOptions.tachoChannel]);
delta_phase_F1v0.max_frequency = 1000;
delta_phase_F1v0.resolution = AUSPv0.resolution;
delta_phase_F1v0.frequency = 5.5; // частота, на которой вычисляем дельта-фазу
// delta_phase_F1v0.frequency = FREQ.value; // частота, на которой вычисляем дельта-фазу
// delta_phase_F1v0.frequency = freq.value; //частота, на которой вычисляем дельта-фазу
// Формирование объекта apfc для получения амплитуды и фазы
var apfc0 = gtl.add_apfc(
{
"src1" : gtl.analog_inputs[0],
"src2" : gtl.analog_inputs[record.tachoOptions.tachoChannel],
"name" : "coh",
"color" : 0xff0000,
"visible" : true,
"freq" : AUSPv0.frequency,
"window" : gtl.spec.rectangular,
"resolution" : AUSPv0.frequency / AUSPv0.lines,
"average" : 1,
"overlap" : 0,
"afc" : gtl.apfc.magnitude,
"pfc" : gtl.apfc.deg
}
);
// Объявление переменных массивов
var level_AUSPv0 = []; // массив амплитуд гармоник канала 0
var delta_phase_AUSPv0 = []; // массив разностей фаз гармоник канала 0 относительно тахо
var index_AUSPv0 = []; // массив индексов гармоник канала 0
var frequency_AUSPv0 = []; // массив частот (перевод индексов) гармоник канала 0
var AUSPv_data0 = []; // массив спектра
var AUSPv_base0 = []; // массив средней линии спектра
// Канал 1
// ФИЛЬТР 2...1000 Гц, полосовой фильтр для СКЗ виброскорости и спектра
var filter1_2_1000 = gtl.add_filter_iir(gtl.analog_inputs[1]);
filter1_2_1000.kind = gtl.filter_iir.butterworth;
filter1_2_1000.type = gtl.filter_iir.bandpass;
filter1_2_1000.order = 6;
filter1_2_1000.frequency = 502; // центральная частота полосового фильтра
filter1_2_1000.width = 1000; // ширина полосы фильтра
var filter1_2_1000v = gtl.add_intg(filter1_2_1000); // интегрирование
filter1_2_1000v.taps = 1; // степень интегрирования (скорость из ускорения - 1-нарное)
// Спектр виброскорости для получения 1-й гармоники частоты вращения
var AUSPv1 = gtl.add_ausp(filter1_2_1000v); // объявление переменной спектра
AUSPv1.color = 0x00ff0000; // цвет спектра
AUSPv1.name = "AUSPv1"; // имя спектра
AUSPv1.frequency = 1000; // граничная частота спектра
AUSPv1.lines = AUSPv1.frequency * 2; // разрешение спектра (количество линий)
AUSPv1.average = 4; // количество усреднений
AUSPv1.unit = gtl.spec.unit; // отображение амплитуды в мм/с
AUSPv1.smoothing_factor = 100; // усреднение средней линии
AUSPv1.smoothed_line_color = 0xff004dff; // цвет средней линии
AUSPv1.peak_level = 0.000001; // порог обнаружения гармоник (необходим самый минимальный)
AUSPv1.tolerance = AUSPv1.resolution; // диапазон поиска гармоник +/-
// СКЗv
var RMSv1_2_1000 = gtl.add_value_rms(filter1_2_1000v);
RMSv1_2_1000.time = 1;
RMSv1_2_1000.avg_cnt = 3;
// Фаза 1-й гармоники частоты вращения (виброскорости)
var delta_phase_F1v1 = gtl.add_delta_phase_spec(filter1_2_1000v, gtl.analog_inputs[record.tachoOptions.tachoChannel]);
delta_phase_F1v1.max_frequency = 1000;
delta_phase_F1v1.resolution = AUSPv1.resolution;
delta_phase_F1v1.frequency = 5.5; // частота, на которой вычисляем дельта-фазу
// delta_phase_F1v1.frequency = FREQ.value; // частота, на которой вычисляем дельта-фазу
// delta_phase_F1v1.frequency = freq.value; //частота, на которой вычисляем дельта-фазу
// Формирование объекта apfc для получения амплитуды и фазы
var apfc1 = gtl.add_apfc(
{
"src1" : gtl.analog_inputs[1],
"src2" : gtl.analog_inputs[record.tachoOptions.tachoChannel],
"name" : "coh",
"color" : 0xff0000,
"visible" : true,
"freq" : AUSPv1.frequency,
"window" : gtl.spec.rectangular,
"resolution" : AUSPv1.frequency / AUSPv1.lines,
"average" : 1,
"overlap" : 0,
"afc" : gtl.apfc.magnitude,
"pfc" : gtl.apfc.deg
}
);
// Объявление переменных массивов
var level_AUSPv1 = []; // массив амплитуд гармоник канала 1
var delta_phase_AUSPv1 = []; // массив разностей фаз гармоник канала 1 относительно тахо
var index_AUSPv1 = []; // массив индексов гармоник канала 1
var frequency_AUSPv1 = []; // массив частот (перевод индексов) гармоник канала 1
var AUSPv_data1 = []; // массив спектра
var AUSPv_base1 = []; // массив средней линии спектра
// Переменные основные
// параметр вибрации (модуль вектора) - виброскорость (мм/с)
// угол (фаза) вектора - градусы
// масса груза (модуль ветора) - граммы
// * - значение получаем из измерительного блока при нажатии кнопки
// ** - значение вводится пользователем
// *** - значение получаем в результате расчёта программы балансировки
var A0 = 8; // модуль вектора начальной вибрации в точке A */**
var A0_phase = 150; // фаза вектора начальной вибрации в точке A */**
var B0 = 9; // модуль вектора начальной вибрации в точке B */**
var B0_phase = 40; // фаза вектора начальной вибрации в точке B */**
var m11_test = 60; // модуль вектора пробного груза при 1-ом пуске в плоскости 1*
var m11_test_corner = 250;// угол вектора пробного груза при 1-ом пуске в плоскости 1 *
var m22_test = 60; // модуль вектора пробного груза при 2-ом пуске в плоскости 2 *
var m22_test_corner = 250;// угол вектора пробного груза при 2-ом пуске в плоскости 2 *
var A1 = 9.1; // модуль вектора вибрации в точке A 1-го пробного пуска с грузом в плоскости 1 */**
var A1_phase = 120; // фаза вектора вибрации в точке A 1-го пробного пуска с грузом в плоскости 1 */**
var dA1; // модуль вектора дельты вибрации в точке A 1-го пробного пуска с грузом в плоскости 1 ***
var dA1_phase; // фаза вектора дельты вибрации в точке A 1-го пробного пуска с грузом в плоскости 1 ***
var B1 = 6.3; // модуль вектора вибрации в точке B 1-го пробного пуска с грузом в плоскости 1 */**
var B1_phase = 189; // фаза вектора вибрации в точке B 1-го пробного пуска с грузом в плоскости 1 */**
var dB1_phase; // фаза вектора дельты вибрации в точке B 1-го пробного пуска с грузом в плоскости 1 ***
var dB1; // модуль вектора дельты вибрации в точке B 1-го пробного пуска с грузом в плоскости 1 ***
var A2 = 8.1; // модуль вектора вибрации в точке A 2-го пробного пуска с грузом в плоскости 2 */**
var A2_phase = 95; // фаза вектора вибрации в точке A 2-го пробного пуска с грузом в плоскости 2 */**
var dA2; // модуль вектора дельты вибрации в точке A 2-го пробного пуска с грузом в плоскости 2 ***
var dA2_phase; // фаза вектора дельты вибрации в точке A 2-го пробного пуска с грузом в плоскости 2 ***
var B2 = 5.8; // модуль вектора вибрации в точке B 2-го пробного пуска с грузом в плоскости 2 */**
var B2_phase = 165; // фаза вектора вибрации в точке B 2-го пробного пуска с грузом в плоскости 2 */**
var dB2; // модуль вектора дельты вибрации в точке B 2-го пробного пуска с грузом в плоскости 2 ***
var dB2_phase; // фаза вектора дельты вибрации в точке B 2-го пробного пуска с грузом в плоскости 2 ***
var DCI_A1; // модуль (мм/с/граммы) ДКВ груза m11_test в плоскости 1 на вибрацию в точке A **/***
var DCI_A1_phase; // фаза ДКВ груза m11_test в плоскости 1 на вибрацию в точке A **/***
var DCI_B1; // модуль (мм/с/граммы) ДКВ груза m11_test в плоскости 1 на вибрацию в точке B **/***
var DCI_B1_phase; // фаза ДКВ груза m11_test в плоскости 1 на вибрацию в точке B **/***
var DCI_A2; // модуль (мм/с/граммы) ДКВ груза m22_test в плоскости 2 на вибрацию в точке A **/***
var DCI_A2_phase; // фаза ДКВ груза m22_test в плоскости 2 на вибрацию в точке A **/***
var DCI_B2; // модуль (мм/с/граммы) ДКВ груза m22_test в плоскости 2 на вибрацию в точке B **/***
var DCI_B2_phase; // фаза ДКВ груза m22_test в плоскости 2 на вибрацию в точке B **/***
var Mb1; // модуль вектора балансировочного груза в плоскости 1 ***
var Mb1_corner; // угол вектора балансировочного груза в плоскости 1 ***
var Mb2; // модуль вектора балансировочного груза в плоскости 2 ***
var Mb2_corner; // угол вектора балансировочного груза в плоскости 2 ***
// Переменные вспомогательные
var A0_phase_X; // угол наклона вектора A0 к оси X
var A0_phase_Y; // угол наклона вектора A0 к оси Y
var A0_1_X; // начальная координата вектора A0 по оси X
var A0_2_X; // конечная координата вектора A0 по оси X
var A0_1_Y; // начальная координата вектора A0 по оси Y
var A0_2_Y; // конечная координата вектора A0 по оси Y
var B0_phase_X; // угол наклона вектора B0 к оси X
var B0_phase_Y; // угол наклона вектора B0 к оси Y
var B0_1_X; // начальная координата вектора B0 по оси X
var B0_2_X; // конечная координата вектора B0 по оси X
var B0_1_Y; // начальная координата вектора B0 по оси Y
var B0_2_Y; // конечная координата вектора B0 по оси Y
var A1_phase_X; // угол наклона вектора A1 к оси X
var A1_phase_Y; // угол наклона вектора A1 к оси Y
var A1_1_X; // начальная координата вектора A1 по оси X
var A1_2_X; // конечная координата вектора A1 по оси X
var A1_1_Y; // начальная координата вектора A1 по оси Y
var A1_2_Y; // конечная координата вектора A1 по оси Y
var dA1_1_X; // начальная координата вектора dA1 по оси X
var dA1_2_X; // конечная координата вектора dA1 по оси X
var dA1_1_Y; // начальная координата вектора dA1 по оси Y
var dA1_2_Y; // конечная координата вектора dA1 по оси Y
var A2_phase_X; // угол наклона вектора A2 к оси X
var A2_phase_Y; // угол наклона вектора A2 к оси Y
var A2_1_X; // начальная координата вектора A2 по оси X
var A2_2_X; // конечная координата вектора A2 по оси X
var A2_1_Y; // начальная координата вектора A2 по оси Y
var A2_2_Y; // конечная координата вектора A2 по оси Y
var dA2_1_X; // начальная координата вектора dA2 по оси X
var dA2_2_X; // конечная координата вектора dA2 по оси X
var dA2_1_Y; // начальная координата вектора dA2 по оси Y
var dA2_2_Y; // конечная координата вектора dA2 по оси Y
var B1_phase_X; // угол наклона вектора A1 к оси X
var B1_phase_Y; // угол наклона вектора A1 к оси Y
var B1_1_X; // начальная координата вектора A1 по оси X
var B1_2_X; // конечная координата вектора A1 по оси X
var B1_1_Y; // начальная координата вектора A1 по оси Y
var B1_2_Y; // конечная координата вектора A1 по оси Y
var dB1_1_X; // начальная координата вектора dB1 по оси X
var dB1_2_X; // конечная координата вектора dB1 по оси X
var dB1_1_Y; // начальная координата вектора dB1 по оси Y
var dB1_2_Y; // конечная координата вектора dB1 по оси Y
var B2_phase_X; // угол наклона вектора A1 к оси X
var B2_phase_Y; // угол наклона вектора A1 к оси Y
var B2_1_X; // начальная координата вектора A1 по оси X
var B2_2_X; // конечная координата вектора A1 по оси X
var B2_1_Y; // начальная координата вектора A1 по оси Y
var B2_2_Y; // конечная координата вектора A1 по оси Y
var dB2_1_X; // начальная координата вектора dB2 по оси X
var dB2_2_X; // конечная координата вектора dB2 по оси X
var dB2_1_Y; // начальная координата вектора dB2 по оси Y
var dB2_2_Y; // конечная координата вектора dB2 по оси Y
var m11_test_corner_X; // угол наклона вектора m11_test к оси X
var m11_test_corner_Y; // угол наклона вектора m11_test к оси Y
var m11_test_1_X; // начальная координата вектора m11_test по оси X
var m11_test_2_X; // конечная координата вектора m11_test по оси X
var m11_test_1_Y; // начальная координата вектора m11_test по оси Y
var m11_test_2_Y; // конечная координата вектора m11_test по оси Y
var m22_test_corner_X; // угол наклона вектора m22_test к оси X
var m22_test_corner_Y; // угол наклона вектора m22_test к оси Y
var m22_test_1_X; // начальная координата вектора m22_test по оси X
var m22_test_2_X; // конечная координата вектора m22_test по оси X
var m22_test_1_Y; // начальная координата вектора m22_test по оси Y
var m22_test_2_Y; // конечная координата вектора m22_test по оси Y
// ***** РАСЧЁТЫ *****
// gtl.diagnostic.interval = 10;
gtl.diagnostic.interval = AUSPv0.acq_time;
let state = record.tachoOptions.tachoState; // начальное состояние после выбора источника тахо сигнала
function diagnose() {
// Нестабильность частоты вращения
var freq_max = Math.max(...freq.values);
var freq_min = Math.min(...freq.values);
var instability = ((freq_max - freq_min) / freq.value) * 100; // * 100%
switch (state) {
case 0: // считаем частоту вращения и настраиваем спектры
var freq_max = Math.max(...freq.values);
var freq_min = Math.min(...freq.values);
var instability = (freq_max - freq_min) / freq.value;
// if (instability > imp.tolerance()) {
if (instability > 0.3) {
gtl.log.info("Критическая нестабильность частоты вращения, %", instability * 100);
gtl.log.info("Результат:", "Диагностика прервана");
//gtl.diagnostic.stop(); //принудительная остановка диагностики
let __result = {
Result: false
};
gtl.results = __result;
};
// Определение минимально необходимой длительности сигнала для проведения диагностики
gtl.diagnostic.interval = AUSPv0.acq_time;
state = 3;
break;
case 1: // Частота вращения фиксированная
// Определение минимально необходимой длительности сигнала для проведения диагностики
gtl.diagnostic.interval = AUSPv0.acq_time;
state = 3;
break;
case 2: // Частота вращения из поля INFO (виброметр)
// Определение минимально необходимой длительности сигнала для проведения диагностики
gtl.diagnostic.interval = AUSPv0.acq_time;
state = 3;
break;
case 3: // Выполняем анализ спектов
// Очистка партретов спектров
AUSPv0.clear_harms_sets();
AUSPv1.clear_harms_sets();
// Спектр виброскорости
// Набор гармоник частоты вращения F1v0 (виброскорость) Канал 0
var F1v0_harms = AUSPv0.add_harms_set(freq.value, 1, 0x00ff0000, 1); // красный цвет
for (let i=0; i <= 0; i++)
{F1v0_harms.harms[i].tolerance = (1+i) * freq.value * 0.1}; // коридор обнаружения гармоник
F1v0_harms.name = "F1v0 (гарм. ряд част. вращ.)";
// Набор гармоник частоты вращения F1v1 (виброскорость) Канал 1
var F1v1_harms = AUSPv1.add_harms_set(freq.value, 1, 0x00ff0000, 1); // красный цвет
for (let i=0; i <= 0; i++)
{F1v1_harms.harms[i].tolerance = (1+i) * freq.value * 0.1}; // коридор обнаружения гармоник
F1v1_harms.name = "F1v1 (гарм. ряд част. вращ.)";
// 1-я гармоника F1v для каналов 0 и 1
// Проверка наличия оборотной гармоники необходимости проведения баалнсировки
if (F1v0_harms.harms[0].is_present == true) // обнаружения оборотной гармоники
{var F1v0 = F1v0_harms.harms[0].level;
var F1v0_test_ampl = "амплитуда частоты вращения определена";}
else {var F1v0_test_ampl = "амплитуда частоты вращения НЕ определена";}
if (F1v1_harms.harms[0].is_present == true) // обнаружения оборотной гармоники
{var F1v1 = F1v1_harms.harms[0].level;
var F1v1_test_ampl = "амплитуда частоты вращения определена";}
else {var F1v1_test_ampl = "амплитуда частоты вращения НЕ определена";}
if ((F1v0 >= RMSv0_2_1000.value * 0.4) || // вклад оборотной гармоники в СКЗv
(F1v1 >= RMSv1_2_1000.value * 0.4))
{var F1v_test_balance = "необходимо провести балансировку";}
else {var F1v_test_balance = "проведение балансировки не требуется или нецелесообразно";}
// ТЕСТИРОВАНИЕ (получение фазы и амплитуды оборотной гармоники из массивов)
// Запись в массив значений уровня спектра (канал 0)
for (let i = 0; i < AUSPv0.data.length; i++) {
// Массив уровней (старый метод)
// level_AUSPv0.push(AUSPv0.data[i] - AUSPv0.base[i]);
// Разница фаз гармоник
delta_phase_AUSPv0.push(apfc0.phase[i]);
// Амплитуда гармоник
level_AUSPv0.push(apfc0.data[i]);
// Индексы гармоник
index_AUSPv0.push(i);
// Частоты гармоник
frequency_AUSPv0.push(i * (AUSPv0.frequency / AUSPv0.lines));
// Запись массивов AUSPv.data и AUSPv.base
AUSPv_data0.push(AUSPv0.data[i]);
AUSPv_base0.push(AUSPv0.base[i]);
}
// Запись в массив значений уровня спектра (канал 1)
for (let i = 0; i < AUSPv1.data.length; i++) {
// Массив уровней (старый метод)
// level_AUSPv1.push(AUSPv1.data[i] - AUSPv1.base[i]);
// Разница фаз гармоник
delta_phase_AUSPv1.push(apfc1.phase[i]);
// Амплитуда гармоник
level_AUSPv1.push(apfc1.data[i]);
// Индексы гармоник
index_AUSPv1.push(i);
// Частоты гармоник
frequency_AUSPv1.push(i * (AUSPv1.frequency / AUSPv1.lines));
// Запись массивов AUSPv.data и AUSPv.base
AUSPv_data1.push(AUSPv1.data[i]);
AUSPv_base1.push(AUSPv1.base[i]);
}
var F_find = freq.value; // искомая частота
var F_find_round_min = Math.round(F_find); // округление значения искомой частоты до ближайшего
var F_find_round_max = Math.round(F_find) + AUSPv0.resolution; // округление значения искомой частоты в большую сторону
var F_find_round0;
if (level_AUSPv0[frequency_AUSPv0.indexOf(F_find_round_min)] >= level_AUSPv0[frequency_AUSPv0.indexOf(F_find_round_max)])
{F_find_round0 = F_find_round_min;}
else {F_find_round0 = F_find_round_max;}
var F_find_round1;
if (level_AUSPv1[frequency_AUSPv0.indexOf(F_find_round_min)] >= level_AUSPv1[frequency_AUSPv0.indexOf(F_find_round_max)])
{F_find_round1 = F_find_round_min;}
else {F_find_round1 = F_find_round_max;}
var ind_F_find0 = frequency_AUSPv0.indexOf(F_find_round0); // индекс искомой частоты (канал 0)
var ind_F_find1 = frequency_AUSPv1.indexOf(F_find_round1); // индекс искомой частоты (канал 1)
gtl.log.info("искомая частота, Гц", F_find);
gtl.log.info("верхняя граница поиска частоты, Гц", F_find_round_max);
gtl.log.info("нижняя граница поиска частоты, Гц", F_find_round_min);
gtl.log.info("AUSPv.lines", AUSPv0.lines);
gtl.log.info("AUSPv.frequency", AUSPv0.frequency);
// лог канала 0
gtl.log.info("искомая частота округлённая до ближ (канал 0), Гц", F_find_round0);
gtl.log.info("индекс искомой частоты (канал 0)", ind_F_find0);
gtl.log.info("уровень искомой частоты (канал 0)", level_AUSPv0[ind_F_find0]);
gtl.log.info("фаза искомой частоты (канал 0)", delta_phase_AUSPv0[ind_F_find0]);
gtl.log.info("проверка уровня AUSPv.data (канал 0)", AUSPv_data0[ind_F_find0] - AUSPv_base0[ind_F_find0]);
gtl.log.info("размер массива frequency_AUSPv (канал 0)", frequency_AUSPv0.length);
// лог канала 1
gtl.log.info("искомая частота округлённая до ближ (канал 1), Гц", F_find_round1);
gtl.log.info("индекс искомой частоты (канал 1)", ind_F_find1);
gtl.log.info("уровень искомой частоты (канал 1)", level_AUSPv1[ind_F_find1]);
gtl.log.info("фаза искомой частоты (канал 1)", delta_phase_AUSPv1[ind_F_find1]);
gtl.log.info("проверка уровня AUSPv.data (канал 1)", AUSPv_data1[ind_F_find1] - AUSPv_base1[ind_F_find1]);
gtl.log.info("размер массива frequency_AUSPv (канал 1)", frequency_AUSPv1.length);
//РАСЧЁТЫ
// определение угла наклона вектора 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
A0_1_X = 0;
if (A0_phase <= 180) {A0_2_X = Math.abs(Math.cos(A0_phase_X * 3.1415/180)) * A0
} else {A0_2_X = Math.abs(Math.cos(A0_phase_X * 3.1415/180)) * A0 * (-1)}
A0_1_Y = 0;
if (A0_phase <= 90 || A0_phase >= 270) {A0_2_Y = Math.abs(Math.cos(A0_phase_Y * 3.1415/180)) * A0
} else {A0_2_Y = Math.abs(Math.cos(A0_phase_Y * 3.1415/180)) * A0 * (-1)}
// определение угла наклона вектора 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
B0_1_X = 0;
if (B0_phase <= 180) {B0_2_X = Math.abs(Math.cos(B0_phase_X * 3.1415/180)) * B0
} else {B0_2_X = Math.abs(Math.cos(B0_phase_X * 3.1415/180)) * B0 * (-1)}
B0_1_Y = 0;
if (B0_phase <= 90 || B0_phase >= 270) {B0_2_Y = Math.abs(Math.cos(B0_phase_Y * 3.1415/180)) * B0
} else {B0_2_Y = Math.abs(Math.cos(B0_phase_Y * 3.1415/180)) * B0 * (-1)}
// определение угла наклона вектора m11_test к осям X и Y
if (m11_test_corner <= 90) {
m11_test_corner_X = 90 - m11_test_corner}
if (m11_test_corner <= 180) {
m11_test_corner_X = m11_test_corner - 90}
if (m11_test_corner <= 270) {
m11_test_corner_X = 270 - m11_test_corner}
if (m11_test_corner <= 360) {
m11_test_corner_X = m11_test_corner - 270}
if (m11_test_corner <= 90) {
m11_test_corner_Y = m11_test_corner}
if (m11_test_corner <= 180) {
m11_test_corner_Y = 180 - m11_test_corner}
if (m11_test_corner <= 270) {
m11_test_corner_Y = m11_test_corner - 180}
if (m11_test_corner <= 360) {
m11_test_corner_Y = 360 - m11_test_corner}
// определение координат вектора m11_test
m11_test_1_X = 0;
if (m11_test_corner <= 180) {m11_test_2_X = Math.abs(Math.cos(m11_test_corner_X * 3.1415/180)) * m11_test * (-1)
} else {m11_test_2_X = Math.abs(Math.cos(m11_test_corner_X * 3.1415/180)) * m11_test}
m11_test_1_Y = 0;
if (m11_test_corner <= 90 || m11_test_corner >= 270) {m11_test_2_Y = Math.abs(Math.cos(m11_test_corner_Y * 3.1415/180)) * m11_test
} else {m11_test_2_Y = Math.abs(Math.cos(m11_test_corner_Y * 3.1415/180)) * m11_test * (-1)}
// определение угла наклона вектора 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
A1_1_X = 0;
if (A1_phase <= 180) {A1_2_X = Math.abs(Math.cos(A1_phase_X * 3.1415/180)) * A1
} else {A1_2_X = Math.abs(Math.cos(A1_phase_X * 3.1415/180)) * A1 * (-1)}
A1_1_Y = 0;
if (A1_phase <= 90 || A1_phase >= 270) {A1_2_Y = Math.abs(Math.cos(A1_phase_Y * 3.1415/180)) * A1
} else {A1_2_Y = Math.abs(Math.cos(A1_phase_Y * 3.1415/180)) * A1 * (-1)}
// определение угла наклона вектора 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
B1_1_X = 0;
if (B1_phase <= 180) {B1_2_X = Math.abs(Math.cos(B1_phase_X * 3.1415/180)) * B1
} else {B1_2_X = Math.abs(Math.cos(B1_phase_X * 3.1415/180)) * B1 * (-1)}
B1_1_Y = 0;
if (B1_phase <= 90 || B1_phase >= 270) {B1_2_Y = Math.abs(Math.cos(B1_phase_Y * 3.1415/180)) * B1
} else {B1_2_Y = Math.abs(Math.cos(B1_phase_Y * 3.1415/180)) * B1 * (-1)}
// определение модуля вектора dA1
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));
// определение фазы вектора 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 ) / 3.1415)}
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 ) / 3.1415)}
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 ) / 3.1415)}
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 ) / 3.1415)}
if (dA1_phase > 360) {dA1_phase = dA1_phase - 360}
// определение модуля вектора dB1
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));
// определение фазы вектора 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 ) / 3.1415)}
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 ) / 3.1415)}
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 ) / 3.1415)}
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 ) / 3.1415)}
if (dB1_phase > 360) {dB1_phase = dB1_phase - 360}
// определение угла наклона вектора m22_test к осям X и Y
if (m22_test_corner <= 90) {
m22_test_corner_X = 90 - m22_test_corner}
if (m22_test_corner <= 180) {
m22_test_corner_X = m22_test_corner - 90}
if (m22_test_corner <= 270) {
m22_test_corner_X = 270 - m22_test_corner}
if (m22_test_corner <= 360) {
m22_test_corner_X = m22_test_corner - 270}
if (m22_test_corner <= 90) {
m22_test_corner_Y = m22_test_corner}
if (m22_test_corner <= 180) {
m22_test_corner_Y = 180 - m22_test_corner}
if (m22_test_corner <= 270) {
m22_test_corner_Y = m22_test_corner - 180}
if (m22_test_corner <= 360) {
m22_test_corner_Y = 360 - m22_test_corner}
// определение координат вектора m22_test
m22_test_1_X = 0;
if (m22_test_corner <= 180) {m22_test_2_X = Math.abs(Math.cos(m22_test_corner_X * 3.1415/180)) * m22_test * (-1)
} else {m22_test_2_X = Math.abs(Math.cos(m22_test_corner_X * 3.1415/180)) * m22_test}
m22_test_1_Y = 0;
if (m22_test_corner <= 90 || m22_test_corner >= 270) {m22_test_2_Y = Math.abs(Math.cos(m22_test_corner_Y * 3.1415/180)) * m22_test
} else {m22_test_2_Y = Math.abs(Math.cos(m22_test_corner_Y * 3.1415/180)) * m22_test * (-1)}
// определение угла наклона вектора A2 к осям X и Y
if (A2_phase <= 90) {
A2_phase_X = 90 - A2_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
A2_1_X = 0;
if (A2_phase <= 180) {A2_2_X = Math.abs(Math.cos(A2_phase_X * 3.1415/180)) * A2
} else {A2_2_X = Math.abs(Math.cos(A2_phase_X * 3.1415/180)) * A2 * (-1)}
A2_1_Y = 0;
if (A2_phase <= 90 || A2_phase >= 270) {A2_2_Y = Math.abs(Math.cos(A2_phase_Y * 3.1415/180)) * A2
} else {A2_2_Y = Math.abs(Math.cos(A2_phase_Y * 3.1415/180)) * A2 * (-1)}
// определение угла наклона вектора 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 (B1_phase <= 360) {
B2_phase_Y = 360 - B2_phase}
// определение координат вектора B2
B2_1_X = 0;
if (B2_phase <= 180) {B2_2_X = Math.abs(Math.cos(B2_phase_X * 3.1415/180)) * B2
} else {B2_2_X = Math.abs(Math.cos(B2_phase_X * 3.1415/180)) * B2 * (-1)}
B2_1_Y = 0;
if (B2_phase <= 90 || B2_phase >= 270) {B2_2_Y = Math.abs(Math.cos(B2_phase_Y * 3.1415/180)) * B2
} else {B2_2_Y = Math.abs(Math.cos(B2_phase_Y * 3.1415/180)) * B2 * (-1)}
// определение модуля вектора dA2
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));
// определение фазы вектора 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 ) / 3.1415)}
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 ) / 3.1415)}
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 ) / 3.1415)}
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 ) / 3.1415)}
if (dA2_phase > 360) {dA2_phase = dA2_phase - 360}
// определение модуля вектора dB2
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));
// определение фазы вектора 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 ) / 3.1415)}
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 ) / 3.1415)}
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 ) / 3.1415)}
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 ) / 3.1415)}
if (dB2_phase > 360) {dB2_phase = dB2_phase - 360}
// определение модуля вектора DCI_A1
DCI_A1 = dA1 / m11_test;
// опредение фаза вектора DCI_A1
if ((dA1_phase - m11_test_corner) < 0) {
DCI_A1_phase = (dA1_phase - m11_test_corner) + 360}
else if ((dA1_phase - m11_test_corner) > 360) {
DCI_A1_phase = (dA1_phase - m11_test_corner) - 360}
else {DCI_A1_phase = (dA1_phase - m11_test_corner)}
// определение модуля вектора DCI_B1
DCI_B1 = dB1 / m11_test;
// опредение фаза вектора DCI_B1
if ((dB1_phase - m11_test_corner) < 0) {
DCI_B1_phase = (dB1_phase - m11_test_corner) + 360}
else if ((dB1_phase - m11_test_corner) > 360) {
DCI_B1_phase = (dB1_phase - m11_test_corner) - 360}
else {DCI_B1_phase = (dB1_phase - m11_test_corner)}
// определение модуля вектора DCI_A2
DCI_A2 = dA2 / m22_test;
// опредение фаза вектора DCI_A2
if ((dA2_phase - m22_test_corner) < 0) {
DCI_A2_phase = (dA2_phase - m22_test_corner) + 360}
else if ((dA2_phase - m22_test_corner) > 360) {
DCI_A2_phase = (dA2_phase - m22_test_corner) - 360}
else {DCI_A2_phase = (dA2_phase - m22_test_corner)}
// определение модуля вектора DCI_B2
DCI_B2 = dB2 / m22_test;
// опредение фаза вектора DCI_B2
if ((dB2_phase - m22_test_corner) < 0) {
DCI_B2_phase = (dB2_phase - m22_test_corner) + 360}
else if ((dB2_phase - m22_test_corner) > 360) {
DCI_B2_phase = (dB2_phase - m22_test_corner) - 360}
else {DCI_B2_phase = (dB2_phase - m22_test_corner)}
// формулы для определение векторов балансировочных грузов
// Mb1 = (B0 * DCI_A2 - A0 * DCI_B2) / (DCI_A1 * DCI_B2 - DCI_B1 * DCI_A2)
// Mb2 = (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 * 3.1415/180)) * B0_DCI_A2
} else {B0_DCI_A2_2_X = Math.abs(Math.cos(B0_DCI_A2_phase_X * 3.1415/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 * 3.1415/180)) * B0_DCI_A2
} else {B0_DCI_A2_2_Y = Math.abs(Math.cos(B0_DCI_A2_phase_Y * 3.1415/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 * 3.1415/180)) * A0_DCI_B2
} else {A0_DCI_B2_2_X = Math.abs(Math.cos(A0_DCI_B2_phase_X * 3.1415/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 * 3.1415/180)) * A0_DCI_B2
} else {A0_DCI_B2_2_Y = Math.abs(Math.cos(A0_DCI_B2_phase_Y * 3.1415/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 * 3.1415/180)) * A0_DCI_B1
} else {A0_DCI_B1_2_X = Math.abs(Math.cos(A0_DCI_B1_phase_X * 3.1415/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 * 3.1415/180)) * A0_DCI_B1
} else {A0_DCI_B1_2_Y = Math.abs(Math.cos(A0_DCI_B1_phase_Y * 3.1415/180)) * A0_DCI_B1 * (-1)}
// определение модуля вектора B0 * DCI_A1
var B0_DCI_A1 = B0 * DCI_A1;
// определение фазы вектора A0 * DCI_B1
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 * 3.1415/180)) * B0_DCI_A1
} else {B0_DCI_A1_2_X = Math.abs(Math.cos(B0_DCI_A1_phase_X * 3.1415/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 * 3.1415/180)) * B0_DCI_A1
} else {B0_DCI_A1_2_Y = Math.abs(Math.cos(B0_DCI_A1_phase_Y * 3.1415/180)) * B0_DCI_A1 * (-1)}
// определение фазы вектора 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 * 3.1415/180)) * B0_DCI_A1
} else {B0_DCI_A1_2_X = Math.abs(Math.cos(B0_DCI_A1_phase_X * 3.1415/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 * 3.1415/180)) * B0_DCI_A1
} else {B0_DCI_A1_2_Y = Math.abs(Math.cos(B0_DCI_A1_phase_Y * 3.1415/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 ) / 3.1415)}
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 ) / 3.1415) + 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 ) / 3.1415)}
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 ) / 3.1415)}
// определение модуля вектора 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 ) / 3.1415)}
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 ) / 3.1415) + 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 ) / 3.1415)}
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 ) / 3.1415)}
// определение модуля вектора 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 * 3.1415/180)) * DCIA1_DCIB2
} else {DCIA1_DCIB2_2_X = Math.abs(Math.cos(DCIA1_DCIB2_phase_X * 3.1415/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 * 3.1415/180)) * DCIA1_DCIB2
} else {DCIA1_DCIB2_2_Y = Math.abs(Math.cos(DCIA1_DCIB2_phase_Y * 3.1415/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 * 3.1415/180)) * DCIB1_DCIA2
} else {DCIB1_DCIA2_2_X = Math.abs(Math.cos(DCIB1_DCIA2_phase_X * 3.1415/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 * 3.1415/180)) * DCIB1_DCIA2
} else {DCIB1_DCIA2_2_Y = Math.abs(Math.cos(DCIB1_DCIA2_phase_Y * 3.1415/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 ) / 3.1415)}
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 ) / 3.1415) + 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 ) / 3.1415)}
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 ) / 3.1415)}
// определение массы корректирующей массы Mb1 (плоскость 1)
Mb1 = B0_DCIA2_A0_DCIB2 / DCIA1_DCIB2_DCIB1_DCIA2;
// опредение угла установки корректирующей массы Mb1 (плоскость 1)
if ((B0_DCIA2_A0_DCIB2_phase - DCIA1_DCIB2_DCIB1_DCIA2_phase) < 0) {
Mb1_corner = (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 = (B0_DCIA2_A0_DCIB2_phase - DCIA1_DCIB2_DCIB1_DCIA2_phase) - 360}
else {Mb1_corner = (B0_DCIA2_A0_DCIB2_phase - DCIA1_DCIB2_DCIB1_DCIA2_phase)}
// определение массы корректирующей массы Mb2 (плоскость 2)
Mb2 = A0_DCIB1_B0_DCIA1 / DCIA1_DCIB2_DCIB1_DCIA2;
// опредение угла установки корректирующей массы Mb2 (плоскость 2)
if ((A0_DCIB1_B0_DCIA1_phase - DCIA1_DCIB2_DCIB1_DCIA2_phase) < 0) {
Mb2_corner = (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 = (A0_DCIB1_B0_DCIA1_phase - DCIA1_DCIB2_DCIB1_DCIA2_phase) - 360}
else {Mb2_corner = (A0_DCIB1_B0_DCIA1_phase - DCIA1_DCIB2_DCIB1_DCIA2_phase)}
gtl.log.info("Mb1",Mb1);
gtl.log.info("Mb1_corner",Mb1_corner);
gtl.log.info("Mb2",Mb2);
gtl.log.info("Mb2_corner",Mb2_corner);
gtl.log.info("FREQ.value",FREQ.value);
gtl.log.info("freq.value (по dc)",freq.value);
gtl.log.info("F1v0.level",F1v0);
gtl.log.info("RMSv0_2_1000",RMSv0_2_1000.value);
gtl.log.info("F1v1.level",F1v1);
gtl.log.info("RMSv1_2_1000",RMSv1_2_1000.value);
gtl.log.info("F1v0_test_ampl",F1v0_test_ampl);
gtl.log.info("F1v1_test_ampl",F1v1_test_ampl);
gtl.log.info("F1v_test_balance",F1v_test_balance);
gtl.log.info("F1v_harms.harms[0].tolerance",F1v0_harms.harms[0].tolerance);
gtl.log.info("delta_phase_F1v0",delta_phase_F1v0.value);
gtl.log.info("delta_phase_F1v1",delta_phase_F1v1.value);
gtl.log.info("delta_phase_F1v.acq_time",delta_phase_F1v0.acq_time);
gtl.log.info("AUSPv0.acq_time",AUSPv0.acq_time);
// Выдача результата (results)
let __result = {
Частотаращения_F1_0: F_find_round0,
Канал_вибрацииатчика1: "канал [0]",
Амплитуда_гармоники_F1атчика1: level_AUSPv0[ind_F_find0],
Фаза_гармоники_F1атчика1: delta_phase_AUSPv0[ind_F_find0],
проверка_амплитуды_F1vатчика1: AUSPv_data0[ind_F_find0] - AUSPv_base0[ind_F_find0],
амплитуды_F1vатчика1: F1v0,
дельтаазаатчика1: delta_phase_F1v0.value,
_:"-",
Частотаращения_F1_1: F_find_round1,
Канал_вибрацииатчика2: "канал [1]",
Амплитуда_гармоники_F1атчика2: level_AUSPv1[ind_F_find1],
Фаза_гармоники_F1атчика2: delta_phase_AUSPv1[ind_F_find1],
проверка_амплитуды_F1vатчика2: AUSPv_data1[ind_F_find1] - AUSPv_base1[ind_F_find1],
амплитуды_F1vатчика2: F1v1,
дельтаазаатчика2: delta_phase_F1v1.value,
};
gtl.results = __result;
gtl.diagnostic.stop();
break;
default:
break;
}
}