"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_1_ = gtl.options.customOptions.m_test_1; // масса пробного груза плоскости 1 ** let 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_1_calc; // масса пробного груза расчётная плоскости 1 *** let n = gtl.options.customOptions.n; // частота вращения, об/мин */** (для вычисления массы пробного груза) let R1_ = gtl.options.customOptions.R1; // радиус установки грузов плоскости 1 ** (для вычисления массы пробного груза) let R1 = R1_; // радиус установки грузов плоскости 1 ** (для вычисления массы пробного груза) (конечное значение) let P_ = gtl.options.customOptions.P; // масса ротора, кг ** (для вычисления массы пробного груза) let P = P_; // масса ротора, кг ** (для вычисления массы пробного груза) (конечное значение) let A0_ = gtl.options.customOptions.A0; // модуль вектора начальной вибрации */** let A0 = A0_; // модуль вектора начальной вибрации */** (конечное значение) let A0_phase_ = gtl.options.customOptions.A0_phase; // фаза вектора начальной вибрации */** let A0_phase = A0_phase_; // фаза вектора начальной вибрации */** (конечное значение) // Переменные вспомогательные необходимые для расчётов 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 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 // ***** РАСЧЁТЫ ***** // gtl.diagnostic.interval = 15; gtl.diagnostic.interval = gtl.acq_time + 1; function diagnose() { // РАСЧЁТЫ (балансировочный калькулятор) // ШАГ 2 - выбор массы и положения пробного груза плоскости 1: // вычисление рекомендуемой массы пробного груза m_test_1_calc // ввод пользователем массы пробного груза и угла его установки m_test_1 плоскости 1 // построение графика расположения массы пробного груза плоскости 1 m_test_1 // из предыдущих шагов переносятся: частота вращения freq, радиус установки грузов плоскости 1 R1, масса ротора P, уровень начальной вибрации A0 // Вычисление массы пробного груза (если не введено своё значение и есть данные для формулы) // m_test_1 масса пробного груза if (P != 0 && R1 != 0) {m_test_1_calc = 804 * ((P * A0) / (R1/10 * n)); } else {m_test_1_calc = 0} if (m_test_1_ != 0) {m_test_1 = m_test_1_} // принимает значение из опций else {m_test_1 = 0} // значение не введено // определение угла наклона вектора 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)} // определение координат точек окружности обозначения массы пробного груза 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)*0.1 * (Math.sin((i) * Math.PI / 180)))); y_m_test_1_array.push(y0_m_test_1 + (Math.max(m_test_1)*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)+Math.max(m_test_1)*0.1) * (Math.sin((i) * Math.PI / 180))); yD_array.push(y0D + (Math.max(m_test_1)+Math.max(m_test_1)*0.1) * (Math.cos((i) * Math.PI / 180)));} plot_disb.add( { color: 0x0000ff, name: "Пробный груз плоскости 1", x: x_m_test_1_array, y: y_m_test_1_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)+Math.max(m_test_1)*0.2), -(Math.max(m_test_1)+Math.max(m_test_1)*0.2), (Math.max(m_test_1)+Math.max(m_test_1)*0.2), (Math.max(m_test_1)+Math.max(m_test_1)*0.2)], y: [(Math.max(m_test_1)+Math.max(m_test_1)*0.2), -(Math.max(m_test_1)+Math.max(m_test_1)*0.2), -(Math.max(m_test_1)+Math.max(m_test_1)*0.2), (Math.max(m_test_1)+Math.max(m_test_1)*0.2)] }); 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_1_calc (пробный груз плоскости 1 расчётный)",m_test_1_calc); gtl.log.info("Масса ротора, кг", P); gtl.log.info("Радиус установки грузов плоскости 1, мм", R1); gtl.log.info("Начальная вибрация A0",A0); // Выдача результата (results) let __result = { _001_Примен_пробный_груз_пл_1: m_test_1, _002_Угол_устан_пробн_груза_пл_1: m_test_1_corner, _003_Расч_пробный_груз_пл_1: m_test_1_calc }; gtl.results = {"result": __result}; gtl.diagnostic.stop(); }