Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года


Расчётный плагин

Вы не вошли.

 Поиск | Регистрация | Вход 

Алексей Григорьевич
10.05.2015 12:42:48
#1

Гость

Расчётный плагин

Добрый день! Хотел бы узнать можно ли выдавать данные с плагина в LGraph с частотой 10 Гц? Если да, то какие соотношения надо выбирать вот в этих строках?

d_info->input_kadrs_min=100; // минимальное число кадров, которые надо дождаться перед вызовом плагина
d_info->input_kadrs_max=200;

и

// только для Расчётного Плагина
d_info->plugin_nch=1;		// число рассчётных каналов
d_info->plugin_channel_rate=10;	// частота расчётного канала (Гц) 10Гц == 100ms

т.е. как я понимаю, с частотой 10Гц плагин должен выдавать 2 кадра (при сборе при 10кГц), если пришло 200кадров? а если вдруг пришло 170 кадров, а у меня фиксировано стоит, что плагин должен выдавать два кадра, то что делать?
и что будет если сбор будет осуществляться с другой частотой? и вообще какая минимальная частота сбора данных?

Вот моя функция расчёта:

#define SIZE_TEMP 2
static double Tempa[SIZE_TEMP];
// главная функция обмена данными с рассчетом спектров                          
void __stdcall PluginDataExchange(struct PluginDataStr *data_str)
{
int i, chan, chan1, index, n;
double kadr1 = 0, kadr2 = 0;

chan1 = DataInfo.adc_channels[0]; // запомним номер первого канала (от 0 до 31)
n = data_str->n;                  // сколько пришло кадров
if(n & 1) n--;                    // сделаем n четным

// смещение внутри одного кадра для каналов АЦП
index = DataInfo.chan_kadr_offset[device_index][chan1];  
	
//заполняем LehaData данными
for(i=0; i < n; i++, index += DataInfo.nch[device_index]) // nch - число включенных каналова АЦП в настройках LGraph
{
	if(i < n/2)
	kadr1 += data_str->data_to_plugin[index]; // data_to_plugin - указатель на массив с данными для плагина (double)
	else
	kadr2 += data_str->data_to_plugin[index];
}

// среднее значение
kadr1 = kadr1/(n/2);	  
kadr2 = kadr2/(n/2);

// по этой фор-лу рассчитывается температура с нашей термопары
Tempa[0] = (((kadr1 * 1000)/186,8) - 0,164688)/0,015343;
Tempa[1] = (((kadr2 * 1000)/186,8) - 0,164688)/0,015343;

data_str->n_from_plugin = SIZE_TEMP;                        // сколько кадров сформировал плагин   

for(i=0; i < n; i++, index += DataInfo.nch[device_index])   // nch число включенных каналов на модулях АЦП
		data_str->data_from_plugin[index] = Tempa[i];   // указатель на массив с данными от плагина для ЛГрафа


}