Gtld freq(): различия между версиями

Материал из GTL-wiki
Перейти к навигации Перейти к поиску
Строка 23: Строка 23:
== Содержание функции ==
== Содержание функции ==
<pre>
<pre>
function getFreq(args) {
class freqClass {
    let FR = {}; //объект данных по частоте вращения
    constructor(args) {
    switch (record.tachoOptions.tachoState) {
        this.width = args.width; //диапазон разброса частоты, Гц
        case 0:
        this.time = args.time; //интервал измерений, сек
            if (args != undefined) {
        this.avg = args.avg; //количество усреднений
                let __src = args.src;  
        switch (tacho.tachoState) {
                 let __frq = args.freq;
            case 0:
                 let __time = args.time;  
                let __min = tacho.minTacho;
                 let __avg = args.avg;
                let __max = tacho.maxTacho;
                let __dc = 0; //порог срабатывания счетчика
                if (args.src != undefined) { this.src = args.src } else { this.src = gtl.analog_inputs[tacho.tachoChannel] };
                 if (args.dc != undefined) { __dc = args.dc };      
                 if (args.freq != undefined) { this.freq = args.freq } else { this.freq = (__max - __min) / 2 + __min };
                 this.width = __max - __min;
                break;
            case 1:
                 if (args.src != undefined) { this.src = args.src } else { this.src = gtl.analog_inputs[signals[0].portNumber] };
                 if (args.freq != undefined) { this.freq = args.freq } else { this.freq = tacho.tachoValue };
                this.freq = tacho.tachoValue;
                this.width = this.width;
                break;
            case 2:


                 let __fltr = gtl.add_filter_iir(__src);
                 break;
                __fltr.kind = gtl.filter_iir.butterworth;
        };
                __fltr.type = gtl.filter_iir.lowpass;
                __fltr.order = 10;
                __fltr.frequency = __frq;


                let __freq = gtl.add_value_freq(__fltr);
        this.filter = gtl.add_filter_iir(this.src);
                __freq.time = __time;
        this.filter.kind = gtl.filter_iir.butterworth;
                __freq.avg_cnt = __avg;
        this.filter.type = gtl.filter_iir.bandpass;
                __freq.dc = __dc;
        this.filter.order = 10;
                FR["value"] = __freq.value * options.tachoRatio;
        this.filter.frequency = this.freq;
                FR["values"] = __freq.values;
        this.filter.width = this.width;
                FR["time"] = args.time * args.avg;
 
            } else {
        this.frequency = gtl.add_value_freq(this.filter);
                FR["value"] = 0;
        this.frequency.time = this.time;
                FR["values"] = [0];
         this.frequency.avg_cnt = this.avg;
                FR["time"] = 0;
 
            };
        this.result = {
            break;
             "value": 0,
         case 1:
             "values": [0],
            FR["value"] = record.tachoOptions.tachoValue * options.tachoRatio;
             "time": 0
            FR["values"] = [0];
        }; //объект данных по частоте вращения
            FR["time"] = 0;
     }
            break;
        case 2:
             FR["value"] = record.tachoOptions.tachoFromInfo * options.tachoRatio;
             FR["values"] = [0];
             FR["time"] = 0;
            break;
    };
     return FR;
}; //определение частоты вращения в зависимости от источника тахо сигнала
</pre>
</pre>

Версия от 01:32, 12 декабря 2024

Краткое описание

Функция используется для определения значения частоты вращения. В качестве входного сигнала подается объект, содержащий параметры формирования результата. Если аргумент не передается, то в результате принимается значение, установленное в блоке настроек записи GTLd.

Синтаксис

Стандартная конструкция выглядит таким образом:

var __freq = new freqClass(
    {
        src: gtl.analog_inputs[tacho.tachoChannel], //источник сигнала
        freq: 15, //центральная частота
        width: 10, //диапазон разброса частоты, Гц
        time: 2, //интервал измерения, сек
        avg: 10 //количество усреднений
    }
); //определяем частоту вращения

Результат

__frq.value - среднее значение частоты вращения с учетом передаточного коэффициента;
__frq.values - массив измеренных частот вращения (по количеству отсчетов);
__frq.time - время, затраченное на измерение параметра, сек;

Содержание функции

class freqClass {
    constructor(args) {
        this.width = args.width; //диапазон разброса частоты, Гц
        this.time = args.time; //интервал измерений, сек
        this.avg = args.avg; //количество усреднений
        switch (tacho.tachoState) {
            case 0:
                let __min = tacho.minTacho;
                let __max = tacho.maxTacho;
                if (args.src != undefined) { this.src = args.src } else { this.src = gtl.analog_inputs[tacho.tachoChannel] };
                if (args.freq != undefined) { this.freq = args.freq } else { this.freq = (__max - __min) / 2 + __min };
                this.width = __max - __min;
                break;
            case 1:
                if (args.src != undefined) { this.src = args.src } else { this.src = gtl.analog_inputs[signals[0].portNumber] };
                if (args.freq != undefined) { this.freq = args.freq } else { this.freq = tacho.tachoValue };
                this.freq = tacho.tachoValue;
                this.width = this.width;
                break;
            case 2:

                break;
        };

        this.filter = gtl.add_filter_iir(this.src);
        this.filter.kind = gtl.filter_iir.butterworth;
        this.filter.type = gtl.filter_iir.bandpass;
        this.filter.order = 10;
        this.filter.frequency = this.freq;
        this.filter.width = this.width;

        this.frequency = gtl.add_value_freq(this.filter);
        this.frequency.time = this.time;
        this.frequency.avg_cnt = this.avg;

        this.result = {
            "value": 0,
            "values": [0],
            "time": 0
        }; //объект данных по частоте вращения
    }