178 lines
11 KiB
JavaScript
178 lines
11 KiB
JavaScript
"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 * 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)}
|
||
// определение координат точек окружности обозначения массы пробного груза
|
||
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();
|
||
|
||
} |