181 lines
11 KiB
JavaScript
181 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_ = gtl.options.customOptions.m_test; // масса пробного груза **
|
||
let m_test; // масса пробного груза ** (конечное значение)
|
||
let m_test_corner_ = gtl.options.customOptions.m_test_corner; // угол установки пробного груза **
|
||
let m_test_corner = m_test_corner_; // угол установки пробного груза ** (конечное значение)
|
||
let m_test_calc; // масса пробного груза расчётная ***
|
||
let n = gtl.options.customOptions.n; // частота вращения, об/мин */** (для вычисления массы пробного груза)
|
||
let R_ = gtl.options.customOptions.R; // радиус установки грузов, мм ** (для вычисления массы пробного груза)
|
||
let R = R_; // радиус установки грузов, мм ** (для вычисления массы пробного груза) (конечное значение)
|
||
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_corner_X;// угол наклона вектора m_test к оси X
|
||
let m_test_corner_Y;// угол наклона вектора m_test к оси Y
|
||
let m_test_1_X; // начальная координата вектора m_test по оси X
|
||
let m_test_2_X; // конечная координата вектора m_test по оси X
|
||
let m_test_1_Y; // начальная координата вектора m_test по оси Y
|
||
let m_test_2_Y; // конечная координата вектора m_test по оси Y
|
||
|
||
|
||
// ***** РАСЧЁТЫ *****
|
||
// gtl.diagnostic.interval = 15;
|
||
gtl.diagnostic.interval = gtl.acq_time + 1;
|
||
|
||
function diagnose() {
|
||
|
||
// РАСЧЁТЫ (балансировочный калькулятор)
|
||
// ШАГ 2 - выбор массы и положения пробного груза:
|
||
// вычисление рекомендуемой массы пробного груза m_test_calc
|
||
// ввод пользователем массы пробного груза и угла его установки m_test
|
||
// построение графика расположения массы пробного груза m_test
|
||
// из предыдущих шагов переносятся: частота вращения freq, радиус установки грузов R,
|
||
// масса ротора P, уровень начальной вибрации A0
|
||
|
||
// Вычисление массы пробного груза (если не введено своё значение и есть данные для формулы)
|
||
// m_test масса пробного груза
|
||
if (P != 0 && R != 0)
|
||
{m_test_calc = 804 * ((P * A0) / (R/10 * n)); // R/10 - перевод мм в см
|
||
} else {m_test_calc = 0}
|
||
if (m_test_ != 0) {m_test = m_test_} // принимает значение из опций
|
||
else {m_test = 0} // значение не введено
|
||
|
||
// определение угла наклона вектора m_test к осям X и Y
|
||
if (m_test_corner <= 90) {
|
||
m_test_corner_X = 90 - m_test_corner}
|
||
if (m_test_corner <= 180) {
|
||
m_test_corner_X = m_test_corner - 90}
|
||
if (m_test_corner <= 270) {
|
||
m_test_corner_X = 270 - m_test_corner}
|
||
if (m_test_corner <= 360) {
|
||
m_test_corner_X = m_test_corner - 270}
|
||
if (m_test_corner <= 90) {
|
||
m_test_corner_Y = m_test_corner}
|
||
if (m_test_corner <= 180) {
|
||
m_test_corner_Y = 180 - m_test_corner}
|
||
if (m_test_corner <= 270) {
|
||
m_test_corner_Y = m_test_corner - 180}
|
||
if (m_test_corner <= 360) {
|
||
m_test_corner_Y = 360 - m_test_corner}
|
||
|
||
// определение координат вектора m_test
|
||
m_test_1_X = 0;
|
||
if (m_test_corner <= 180) {m_test_2_X = Math.abs(Math.cos(m_test_corner_X * 3.1415/180)) * m_test * (-1)
|
||
} else {m_test_2_X = Math.abs(Math.cos(m_test_corner_X * 3.1415/180)) * m_test}
|
||
m_test_1_Y = 0;
|
||
if (m_test_corner <= 90 || m_test_corner >= 270) {m_test_2_Y = Math.abs(Math.cos(m_test_corner_Y * 3.1415/180)) * m_test
|
||
} else {m_test_2_Y = Math.abs(Math.cos(m_test_corner_Y * 3.1415/180)) * m_test * (-1)}
|
||
// определение координат точек окружности обозначения массы пробного груза
|
||
var x_m_test_array = []; // массив координат точек окружности m_test по оси X
|
||
var y_m_test_array = []; // массив координат точек окружности m_test по оси Y
|
||
var x0_m_test = m_test_2_X; // центр по X
|
||
var y0_m_test = m_test_2_Y; // центр по Y
|
||
for (let i=0; i<=359; i++ ) {
|
||
x_m_test_array.push(x0_m_test + (Math.max(m_test)*0.1 * (Math.sin((i) * Math.PI / 180))));
|
||
y_m_test_array.push(y0_m_test + (Math.max(m_test)*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)+Math.max(m_test)*0.1) * (Math.sin((i) * Math.PI / 180)));
|
||
yD_array.push(y0D + (Math.max(m_test)+Math.max(m_test)*0.1) * (Math.cos((i) * Math.PI / 180)));}
|
||
|
||
|
||
plot_disb.add(
|
||
{
|
||
color: 0x0000ff,
|
||
name: "Пробный груз",
|
||
x: x_m_test_array,
|
||
y: y_m_test_array,
|
||
});
|
||
plot_disb.add(
|
||
{
|
||
color: 0x00ffffff,
|
||
name: "График расположения дисбаланса",
|
||
x: xD_array,
|
||
y: yD_array,
|
||
});
|
||
plot_disb.add(
|
||
{
|
||
color: 0x00ffffff,
|
||
name: "границы",
|
||
x: [-(Math.max(m_test)+Math.max(m_test)*0.2), -(Math.max(m_test)+Math.max(m_test)*0.2), (Math.max(m_test)+Math.max(m_test)*0.2), (Math.max(m_test)+Math.max(m_test)*0.2)],
|
||
y: [(Math.max(m_test)+Math.max(m_test)*0.2), -(Math.max(m_test)+Math.max(m_test)*0.2), -(Math.max(m_test)+Math.max(m_test)*0.2), (Math.max(m_test)+Math.max(m_test)*0.2)]
|
||
});
|
||
|
||
gtl.log.info("m_test (пробный груз введёный)",m_test);
|
||
gtl.log.info("m_test_corner (угол установки пробного груза)",m_test_corner);
|
||
gtl.log.info("m_test_calc (пробный груз расчётный)",m_test_calc);
|
||
gtl.log.info("Масса ротора, кг", P);
|
||
gtl.log.info("Радиус установки грузов, мм", R);
|
||
gtl.log.info("Начальная вибрация A0",A0);
|
||
gtl.log.info("Частота вращения, об/мин", n);
|
||
|
||
|
||
// Выдача результата (results)
|
||
let __result = {
|
||
_001_Примен_пробный_груз: m_test,
|
||
_002_Угол_устан_пробн_груза: m_test_corner,
|
||
_003_Расч_пробный_груз: m_test_calc,
|
||
_004_Част_вращ_обмин: n
|
||
};
|
||
|
||
gtl.results = {"result": __result};
|
||
|
||
gtl.diagnostic.stop();
|
||
|
||
} |