Gtl.round var

Материал из GTL-wiki
Перейти к навигации Перейти к поиску

Построение круговой диаграммы временного сигнала вибрации

"use strict";
let signals = gtl.options.record.signalsModel;
let tacho = gtl.options.record.tachoOptions;

let __src = gtl.analog_inputs[signals[0].portNumber]; // источник сигнала
let __frq = tacho.tachoValue; //частота вращения
let __prd = 1 / __frq //период колебаний
__src.history = __prd; //размер сохраняемых данных (время запроса) для сигнала, сек;

function create_round(data) {
  let x_array = []; // массив координат точек по оси X
  let y_array = []; // массив координат точек по оси Y
  let x0_stat = 0; // координата x центра окружности
  let y0_stat = 0; // координата y центра окружности
  let r0 = 40 // радиус

  const { sin, cos, PI } = Math; //разложение объекта Math только для удобства
  const length = data.length; //длина массива данных
  const factor = 2 * PI / length; //выведено за цикл, чтобы не считать каждый раз
  for (let i = 0; i < length; i++) {
    const angle = i * factor; //расчет угла
    const radius = r0 + data[i]; //натягиваем амплитуду сигнала на радиус окружности
    x_array.push(x0_stat + radius * sin(angle));
    y_array.push(y0_stat + radius * cos(angle));
  }

  return {
    x_data: x_array,
    y_data: y_array
  }
}

let round_plot = gtl.plots.add("Round Diagram"); // объект для визуализации зазоров
let wave_plot = gtl.plots.add("Waveworm"); // объект для визуализации зазоров

gtl.diagnostic.interval = gtl.acq_time
//[Диагностика]
function diagnose() {
    let __src_data = __src.getHistoryArray(); //получение массива значений
    let __rnd = create_round(__src_data); //строим круговую диаграмму
    
    //круговая диаграмма
    round_plot.add({
        color: 0x55ff7f,
        name: "Signal",
        x: __rnd.x_data,
        y: __rnd.y_data
    });

    //временной сигнал
    wave_plot.add({
        color: 0x2B6CC4,
        name: "Signal",
        x: 1 / __src.rate,
        y: __src_data
    })

    //рамка для отображения границ осей
    round_plot.add({
        color: 0x00ffffff,
        name: "frame",
        x: [-100, -100, 100, 100],
        y: [100, -100, -100, 100]
    })
    
    // Добавляем в блок результата
    gtl.results = {
        'freq': __frq,
        'period': __prd,
        'data array': __src_data.length,
        'sample rate': __src.rate
    }

    gtl.diagnostic.stop();
};