balancer_calc/scripts/2 пл - шаг 2.js

177 lines
11 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("Расположение дисбалансов"); // объект для дисбаланса
// Переменные основные
// параметр вибрации (модуль вектора) - виброскорость (мм/с)
// угол (фаза) вектора - градусы
// масса груза (модуль ветора) - граммы
// 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();
}