<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>http://docs.gtlab.pro/index.php?action=history&amp;feed=atom&amp;title=Gtl.trendspec_var</id>
	<title>Gtl.trendspec var - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://docs.gtlab.pro/index.php?action=history&amp;feed=atom&amp;title=Gtl.trendspec_var"/>
	<link rel="alternate" type="text/html" href="http://docs.gtlab.pro/index.php?title=Gtl.trendspec_var&amp;action=history"/>
	<updated>2026-05-25T02:18:41Z</updated>
	<subtitle>История изменений этой страницы в вики</subtitle>
	<generator>MediaWiki 1.40.0</generator>
	<entry>
		<id>http://docs.gtlab.pro/index.php?title=Gtl.trendspec_var&amp;diff=1349&amp;oldid=prev</id>
		<title>AlekseyCube: /* Построение тренда изменения СКЗ виброскорости в диапазоне 40-400 Гц и построение спектра вибрации при превышении порогового значения СКЗ */</title>
		<link rel="alternate" type="text/html" href="http://docs.gtlab.pro/index.php?title=Gtl.trendspec_var&amp;diff=1349&amp;oldid=prev"/>
		<updated>2026-04-09T01:14:27Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Построение тренда изменения СКЗ виброскорости в диапазоне 40-400 Гц и построение спектра вибрации при превышении порогового значения СКЗ&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Предыдущая версия&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Версия от 01:14, 9 апреля 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Строка 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Строка 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Построение тренда изменения СКЗ виброскорости в диапазоне 40-400 Гц и построение спектра вибрации при превышении порогового значения СКЗ==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;== Построение тренда изменения СКЗ виброскорости в диапазоне 40-400 Гц &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;по всем каналам записи &lt;/ins&gt;и построение спектра вибрации при превышении порогового значения СКЗ==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;pre&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;quot;use strict&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;quot;use strict&amp;quot;;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>AlekseyCube</name></author>
	</entry>
	<entry>
		<id>http://docs.gtlab.pro/index.php?title=Gtl.trendspec_var&amp;diff=1348&amp;oldid=prev</id>
		<title>AlekseyCube: Новая страница: «== Построение тренда изменения СКЗ виброскорости в диапазоне 40-400 Гц и построение спектра вибрации при превышении порогового значения СКЗ== &lt;pre&gt; &quot;use strict&quot;; let signals = gtl.options.record.signalsModel; let record_time = gtl.options.record.playerTime; //указанная длительность записи или полная длина g...»</title>
		<link rel="alternate" type="text/html" href="http://docs.gtlab.pro/index.php?title=Gtl.trendspec_var&amp;diff=1348&amp;oldid=prev"/>
		<updated>2026-04-09T01:13:44Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «== Построение тренда изменения СКЗ виброскорости в диапазоне 40-400 Гц и построение спектра вибрации при превышении порогового значения СКЗ== &amp;lt;pre&amp;gt; &amp;quot;use strict&amp;quot;; let signals = gtl.options.record.signalsModel; let record_time = gtl.options.record.playerTime; //указанная длительность записи или полная длина g...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Построение тренда изменения СКЗ виброскорости в диапазоне 40-400 Гц и построение спектра вибрации при превышении порогового значения СКЗ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
let signals = gtl.options.record.signalsModel;&lt;br /&gt;
let record_time = gtl.options.record.playerTime; //указанная длительность записи или полная длина gtl.options.record.playerTime; &lt;br /&gt;
&lt;br /&gt;
let time = 1; //период расчета СКЗ&lt;br /&gt;
let counter = 0; //счетчик&lt;br /&gt;
let thres = 14; //предельный уровень СКЗ&lt;br /&gt;
let rms_arr = []; //массив значений СКЗ &lt;br /&gt;
for (let i = 0; i &amp;lt; signals.length; i++) { rms_arr.push([]) }; //формируем вложенные массивы по количеству каналов&lt;br /&gt;
&lt;br /&gt;
function create_rms(src) {&lt;br /&gt;
  // Фильтр ФНЧ&lt;br /&gt;
  let __lpf = gtl.add_filter_iir(src); //объявление переменной фильтра&lt;br /&gt;
  __lpf.kind = gtl.filter_iir.butterworth; //тип окна&lt;br /&gt;
  __lpf.type = gtl.filter_iir.lowpass; //тип фильтра (ФНЧ)&lt;br /&gt;
  __lpf.order = 6; //порядок фильтра&lt;br /&gt;
  __lpf.frequency = 400; //граничная частота фильтра&lt;br /&gt;
&lt;br /&gt;
  // Интегрирование сигнала виброускорения (преобразуем в виброскорость)&lt;br /&gt;
  let __int = gtl.add_intg(__lpf); //интегрирование&lt;br /&gt;
  __int.taps = 1; //степень интегрирования (скорость из ускорения - 1-нарное интегрирование)&lt;br /&gt;
  __int.scale = 1000; //переводим метры в миллиметры&lt;br /&gt;
&lt;br /&gt;
  // Фильтр ФВЧ&lt;br /&gt;
  let __hpf = gtl.add_filter_iir(__int); //объявление переменной фильтра&lt;br /&gt;
  __hpf.kind = gtl.filter_iir.butterworth; //тип окна&lt;br /&gt;
  __hpf.type = gtl.filter_iir.highpass; //тип фильтра (ФВЧ)&lt;br /&gt;
  __hpf.order = 6; //порядок фильтра&lt;br /&gt;
  __hpf.frequency = 40; //граничная частота фильтра&lt;br /&gt;
&lt;br /&gt;
  let __rms = gtl.add_value_rms(__hpf); //объявление переменной СКЗ&lt;br /&gt;
  __rms.time = time; //время выборки&lt;br /&gt;
&lt;br /&gt;
  return __rms&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
let rmss = []; //массив объектов СКЗ&lt;br /&gt;
let specs = []; //массив объектов спектра&lt;br /&gt;
&lt;br /&gt;
//формируем объекты для расчета СКЗ и построения спектров&lt;br /&gt;
for (let i = 0; i &amp;lt; signals.length; i++) {&lt;br /&gt;
  let __rmsv = create_rms(gtl.analog_inputs[signals[i].portNumber]); //формируем объект СКЗ по каждому каналу&lt;br /&gt;
  let __ausp = gtl.create_ausp({&lt;br /&gt;
    src: gtl.analog_inputs[signals[i].portNumber], //источник сигнала&lt;br /&gt;
    frequency: 40000, //граничная частота&lt;br /&gt;
    resolution: 10, //частотное разрешение&lt;br /&gt;
    average: 1, //количество усреднений&lt;br /&gt;
    overlap: 0, //коэффициент перекрытия&lt;br /&gt;
    window: gtl.spec.hann, //оконная функция&lt;br /&gt;
    view: gtl.spec.unit //единицы отображения амплитуды&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
  rmss.push(__rmsv); //добавляем объект RMS в массив&lt;br /&gt;
  specs.push(__ausp); //добавляем объект спектра в массив&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
let plot0 = gtl.plots.add(&amp;quot;Тренды СКЗ&amp;quot;);&lt;br /&gt;
let plot2 = gtl.plots.add(&amp;quot;Спектры&amp;quot;);&lt;br /&gt;
let __result = {}; //результат анализа составляющих спектра&lt;br /&gt;
&lt;br /&gt;
gtl.diagnostic.interval = gtl.acq_time; //интервал запуска функции диагностики&lt;br /&gt;
gtl.log.info(&amp;quot;Интервал запуска диагностики&amp;quot;, gtl.diagnostic.interval);&lt;br /&gt;
gtl.log.info(&amp;quot;Длительность сигнала&amp;quot;, gtl.options.record.playerTime);&lt;br /&gt;
gtl.log.info(&amp;#039;Количество каналов в записи&amp;#039;, signals.length);&lt;br /&gt;
&lt;br /&gt;
function diagnose() {&lt;br /&gt;
  for (let i = 0; i &amp;lt; signals.length; i++) {&lt;br /&gt;
    let value = rmss[i].value;&lt;br /&gt;
    rms_arr[i].push(value);&lt;br /&gt;
    gtl.log.info(`${signals[i].name} - RMS`, value);&lt;br /&gt;
&lt;br /&gt;
    if (value &amp;gt;= thres) {&lt;br /&gt;
      gtl.log.info(&amp;quot;Внимание! Превышение порога по СКЗ(V)&amp;quot;, `В канале ${signals[i].name} на ${counter} секунде записи`)&lt;br /&gt;
      plot2.add({&lt;br /&gt;
        color: 0x55aa00,&lt;br /&gt;
        name: `${signals[i].name} - AUSP`,&lt;br /&gt;
        x: specs[i].resolution,&lt;br /&gt;
        y: specs[i].data&lt;br /&gt;
      }); //рисуем тренд СКЗ виброскорости на plot для каждого канала&lt;br /&gt;
    }&lt;br /&gt;
  };&lt;br /&gt;
&lt;br /&gt;
  //отображаем накопленные данные на plot&lt;br /&gt;
  if (counter &amp;gt;= Math.round(record_time / gtl.diagnostic.interval)) {&lt;br /&gt;
    for (let i = 0; i &amp;lt; signals.length; i++) {&lt;br /&gt;
      plot0.add({&lt;br /&gt;
        color: 0x55aaff,&lt;br /&gt;
        name: `${signals[i].name} - RMS`,&lt;br /&gt;
        x: gtl.diagnostic.interval,&lt;br /&gt;
        y: rms_arr[i]&lt;br /&gt;
      }); //рисуем тренд СКЗ виброскорости на plot для каждого канала&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
    gtl.results = __result;&lt;br /&gt;
    gtl.diagnostic.stop()&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  // gtl.log.info(&amp;#039;Счетчик&amp;#039;, counter);&lt;br /&gt;
  counter++;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AlekseyCube</name></author>
	</entry>
</feed>