"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("Расположение дисбалансов"); // объект для дисбаланса // Переменные основные // параметр вибрации (модуль вектора) - виброскорость (мм/с) // угол (фаза) вектора - градусы // масса груза (модуль ветора) - граммы // DCI - Dynamic Coefficient of Influence (динамический коэффициент влияния) // * - значение получаем из измерительного блока при нажатии кнопки // ** - значение вводится пользователем // *** - значение получаем в результате расчёта программы балансировки // значение переменной с нижним подчёркиванием (..._) берётся из "дополнительных опций"; если оно не задано, то рассчитывается в скрипте let m_test_2_ = gtl.options.customOptions.m_test_2; // масса пробного груза плоскости 2 ** let 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 m_test_2_calc; // масса пробного груза расчётная плоскости 2 *** let n = gtl.options.customOptions.n; // частота вращения, об/мин */** (для вычисления массы пробного груза) let R2_ = gtl.options.customOptions.R2; // радиус установки грузов плоскости 2 ** (для вычисления массы пробного груза) let R2 = R2_; // радиус установки грузов плоскости 2 ** (для вычисления массы пробного груза) (конечное значение) let P_ = gtl.options.customOptions.P; // масса ротора, кг ** (для вычисления массы пробного груза) let P = P_; // масса ротора, кг ** (для вычисления массы пробного груза) (конечное значение) let B0_ = gtl.options.customOptions.B0; // модуль вектора начальной вибрации */** let B0 = B0_; // модуль вектора начальной вибрации */** (конечное значение) let B0_phase_ = gtl.options.customOptions.B0_phase; // фаза вектора начальной вибрации */** let B0_phase = B0_phase_; // фаза вектора начальной вибрации */** (конечное значение) // Переменные вспомогательные необходимые для расчётов 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 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 // ***** РАСЧЁТЫ ***** // gtl.diagnostic.interval = 15; gtl.diagnostic.interval = gtl.acq_time + 1; function diagnose() { // РАСЧЁТЫ (балансировочный калькулятор) // ШАГ 4 - выбор массы и положения пробного груза плоскости 2: // вычисление рекомендуемой массы пробного груза m_test_2_calc // ввод пользователем массы пробного груза и угла его установки m_test_2 плоскости 2 // построение графика расположения массы пробного груза плоскости 2 m_test_2 // из предыдущих шагов переносятся: частота вращения freq, радиус установки грузов плоскости 2 R2, масса ротора P, уровень начальной вибрации B0 // Вычисление массы пробного груза (если не введено своё значение и есть данные для формулы) // m_test_2 масса пробного груза if (P != 0 && R2 != 0) {m_test_2_calc = 804 * ((P * B0) / (R2/10 * n)); } else {m_test_2_calc = 0} if (m_test_2_ != 0) {m_test_2 = m_test_2_} // принимает значение из опций else {m_test_2 = 0} // значение не введено // определение угла наклона вектора 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 * 3.1415/180)) * m_test_2 * (-1) } else {m_test_2_2_X = Math.abs(Math.cos(m_test_2_corner_X * 3.1415/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 * 3.1415/180)) * m_test_2 } else {m_test_2_2_Y = Math.abs(Math.cos(m_test_2_corner_Y * 3.1415/180)) * m_test_2 * (-1)} // определение координат точек окружности обозначения массы пробного груза 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_2)*0.1 * (Math.sin((i) * Math.PI / 180)))); y_m_test_2_array.push(y0_m_test_2 + (Math.max(m_test_2)*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_2)+Math.max(m_test_2)*0.1) * (Math.sin((i) * Math.PI / 180))); yD_array.push(y0D + (Math.max(m_test_2)+Math.max(m_test_2)*0.1) * (Math.cos((i) * Math.PI / 180)));} plot_disb.add( { color: 0x0000ff, name: "Пробный груз плоскости 2", x: x_m_test_2_array, y: y_m_test_2_array, }); plot_disb.add( { color: 0x00ffffff, name: "График расположения дисбаланса", x: xD_array, y: yD_array, }); plot_disb.add( { color: 0x00ffffff, name: "границы", x: [-(Math.max(m_test_2)+Math.max(m_test_2)*0.2), -(Math.max(m_test_2)+Math.max(m_test_2)*0.2), (Math.max(m_test_2)+Math.max(m_test_2)*0.2), (Math.max(m_test_2)+Math.max(m_test_2)*0.2)], y: [(Math.max(m_test_2)+Math.max(m_test_2)*0.2), -(Math.max(m_test_2)+Math.max(m_test_2)*0.2), -(Math.max(m_test_2)+Math.max(m_test_2)*0.2), (Math.max(m_test_2)+Math.max(m_test_2)*0.2)] }); 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("m_test_2_calc (пробный груз плоскости 2 расчётный)",m_test_2_calc); gtl.log.info("Масса ротора, кг", P); gtl.log.info("Радиус установки грузов плоскости 2, мм", R2); gtl.log.info("Начальная вибрация B0",B0); // Выдача результата (results) let __result = { _001_Примен_пробный_груз_пл_2: m_test_2, _002_Угол_устан_пробн_груза_пл_2: m_test_2_corner, _003_Расч_пробный_груз_пл_2: m_test_2_calc }; gtl.results = {"result": __result}; gtl.diagnostic.stop(); }