<?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.triggers_var</id>
	<title>Gtl.triggers var - История изменений</title>
	<link rel="self" type="application/atom+xml" href="http://docs.gtlab.pro/index.php?action=history&amp;feed=atom&amp;title=Gtl.triggers_var"/>
	<link rel="alternate" type="text/html" href="http://docs.gtlab.pro/index.php?title=Gtl.triggers_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.triggers_var&amp;diff=1346&amp;oldid=prev</id>
		<title>AlekseyCube: Новая страница: «== Определение направления вращения по сдвигу фазы двух источников импульсов с использованием триггера == &lt;pre&gt; &quot;use strict&quot;; let time = 0.5; //время записи для анализа let src1 = gtl.analog_inputs[0]; //первый источник сигнала src1.history = time; //выборка для построения графика первого сигн...»</title>
		<link rel="alternate" type="text/html" href="http://docs.gtlab.pro/index.php?title=Gtl.triggers_var&amp;diff=1346&amp;oldid=prev"/>
		<updated>2026-04-08T01:20:36Z</updated>

		<summary type="html">&lt;p&gt;Новая страница: «== Определение направления вращения по сдвигу фазы двух источников импульсов с использованием триггера == &amp;lt;pre&amp;gt; &amp;quot;use strict&amp;quot;; let time = 0.5; //время записи для анализа let src1 = gtl.analog_inputs[0]; //первый источник сигнала src1.history = time; //выборка для построения графика первого сигн...»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Определение направления вращения по сдвигу фазы двух источников импульсов с использованием триггера ==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;quot;use strict&amp;quot;;&lt;br /&gt;
let time = 0.5; //время записи для анализа&lt;br /&gt;
let src1 = gtl.analog_inputs[0]; //первый источник сигнала&lt;br /&gt;
src1.history = time; //выборка для построения графика первого сигнала импульсов&lt;br /&gt;
&lt;br /&gt;
//Искусственный сдвиг фазы с применением фильтра для реализации примера&lt;br /&gt;
let src2 = gtl.add_filter_iir(src1); //источник второго сигнала&lt;br /&gt;
src2.kind = gtl.filter_iir.bessel; //тип оконной функции&lt;br /&gt;
src2.type = gtl.filter_iir.lowpass; //тип фильтра (ФНЧ)&lt;br /&gt;
src2.order = 12; //порядок фильтра&lt;br /&gt;
src2.frequency = 30; //граничная частота фильтра&lt;br /&gt;
src2.history = time; //выборка для построения графика второгосигнала импульсов&lt;br /&gt;
 &lt;br /&gt;
let time_window = 0.02 //временное окно наблюдения для срабатывания триггера&lt;br /&gt;
let arr1 = []; //массив отсчетов триггера 1&lt;br /&gt;
let arr2 = []; //массив отсчетов триггера 2&lt;br /&gt;
gtl.diagnostic.interval = time; //интервал запуска функции диагностики&lt;br /&gt;
&lt;br /&gt;
let thresh1 = gtl.create_moving_thresh({&lt;br /&gt;
  src: src1, //источник сигнала&lt;br /&gt;
  name: &amp;quot;thresh1&amp;quot;, //наименивание&lt;br /&gt;
  time: time_window, //временное окно наблюдения&lt;br /&gt;
  level: 0 //уровень срабатывания триггера&lt;br /&gt;
}); //триггер 1&lt;br /&gt;
&lt;br /&gt;
let thresh2 = gtl.create_moving_thresh({&lt;br /&gt;
  src: src2, //источник сигнала&lt;br /&gt;
  name: &amp;quot;thresh2&amp;quot;, //наименивание&lt;br /&gt;
  time: time_window, //временное окно наблюдения&lt;br /&gt;
  level: 0 //уровень срабатывания триггера&lt;br /&gt;
}); //триггер 2&lt;br /&gt;
&lt;br /&gt;
thresh1.triggered.connect(thresh_triggered_event1);&lt;br /&gt;
thresh2.triggered.connect(thresh_triggered_event2);&lt;br /&gt;
&lt;br /&gt;
//функция обработки события при срабатывании триггера 1&lt;br /&gt;
function thresh_triggered_event1(flag, sample) {&lt;br /&gt;
  if (flag) {&lt;br /&gt;
    let start1 = sample / thresh1.rate; //время срабатывания триггера1&lt;br /&gt;
    arr1.push(start1);&lt;br /&gt;
    gtl.log.info(`trigger1 on time`, start1);&lt;br /&gt;
  };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
//функция обработки события при срабатывании триггера 1&lt;br /&gt;
function thresh_triggered_event2(flag, sample) {&lt;br /&gt;
  if (flag) {&lt;br /&gt;
    let start2 = sample / thresh2.rate; //время срабатывания триггера2&lt;br /&gt;
    arr2.push(start2);&lt;br /&gt;
    gtl.log.info(`trigger2 on time`, start2);&lt;br /&gt;
  };&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
let plot = gtl.plots.add(&amp;quot;Impulses&amp;quot;); //создаем координатную плоскость&lt;br /&gt;
function diagnose() {&lt;br /&gt;
  // Вычисляем разницу среднюю разницу фаз&lt;br /&gt;
  let difference = arr1.reduce((sum, item) =&amp;gt; sum + item, 0) - arr2.reduce((sum, item) =&amp;gt; sum + item, 0); &lt;br /&gt;
  &lt;br /&gt;
  // Определяем направление вращения&lt;br /&gt;
  let d = &amp;quot;Не определено&amp;quot;;&lt;br /&gt;
  if (difference &amp;lt; 0) { d = &amp;quot;Прямое&amp;quot; } else { d = &amp;quot;Обратное&amp;quot; };&lt;br /&gt;
&lt;br /&gt;
  plot.add({&lt;br /&gt;
    color: 0x0000ff, //цвет графика&lt;br /&gt;
    name: &amp;quot;src1&amp;quot;, //наименование графика&lt;br /&gt;
    x: 1 / src1.rate, //частотное разрешение&lt;br /&gt;
    y: src1.getHistoryArray() //получение данных выборки&lt;br /&gt;
  }); //рисуем сигнал 1 для контроля&lt;br /&gt;
&lt;br /&gt;
  plot.add({&lt;br /&gt;
    color: 0xff00ff, //цвет графика&lt;br /&gt;
    name: &amp;quot;src2&amp;quot;, //наименование графика&lt;br /&gt;
    x: 1 / src2.rate, //частотное разрешение&lt;br /&gt;
    y: src2.getHistoryArray() //получение данных выборки&lt;br /&gt;
  }); //рисуем сигнал 2 для контроля&lt;br /&gt;
&lt;br /&gt;
  // Добавляем данные в блок результата&lt;br /&gt;
  gtl.results = {&lt;br /&gt;
    arr1: arr1,&lt;br /&gt;
    arr2: arr2,&lt;br /&gt;
    dir: d&lt;br /&gt;
  }&lt;br /&gt;
  &lt;br /&gt;
  gtl.log.info(&amp;quot;Diagnostic&amp;quot;, &amp;#039;stop&amp;#039;);&lt;br /&gt;
  gtl.diagnostic.stop()&lt;br /&gt;
};&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>AlekseyCube</name></author>
	</entry>
</feed>