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


Покадровый сбор данных E14-440M от секундного PPS GPS (Linux C++ )

Вы не вошли.

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

Рустам Каримов Хммм
19.01.2026 10:40:21
#1

Гость

Покадровый сбор данных E14-440M от секундного PPS GPS (Linux C++ )

Здравствуйте.
Покадровый сбор данных E14-440M от секундного PPS GPS (Linux C++ ):
Предоставьте, пожалуйста, пример покадрового сбора данных от секундного TTL, который подается на SYN-вход.

19.01.2026 18:36:49
#2

Сотрудник "Л Кард"
Здесь с 24.04.2014
Сообщений: 1,530

Re: Покадровый сбор данных E14-440M от секундного PPS GPS (Linux C++ )

1. Модуля E14-440M, строго говоря, в природе не существует. Есть только E14-440.
2. У модуля E14-440 на внешних разъёмах нет SYN-входа. Подробнее см. п.3.3 "Внешние разъёмы" руководства пользователя.
3. Про возможные типы синхронизации ввода данных для модуля E14-440 см. руководство программиста библиотеки LComp на стр. 87.
4. Для работы в режиме покадровой синхронизации следует, например, в штатном примере из библиотеки LComp изменить строчки (368 и 369):
         

 if(sl.BoardType==E440 || sl.BoardType==E140 || sl.BoardType==E154)
                    adcPar.t1.SynchroType = 0;

на
         

 if(sl.BoardType==E440 || sl.BoardType==E140 || sl.BoardType==E154)
                    adcPar.t1.SynchroType = 2;

При этом модуль E14-440 после прихода отрицательного фронта по линии TRIG аналогового разъёма DRB-37M осуществит сбор только одного кадра отсчётов. После чего модуль аппаратно перейдёт в состояние ожидания прихода очередного отрицательного фронта по линии TRIG.

Рустам Каримов Хммм
Вчера 13:23:36
#3

Гость

Re: Покадровый сбор данных E14-440M от секундного PPS GPS (Linux C++ )

Тихомиров Сергей пишет:

1. Модуля E14-440M, строго говоря, в природе не существует. Есть только E14-440.
2. У модуля E14-440 на внешних разъёмах нет SYN-входа. Подробнее см. п.3.3 "Внешние разъёмы" руководства пользователя.
3. Про возможные типы синхронизации ввода данных для модуля E14-440 см. руководство программиста библиотеки LComp на стр. 87.
4. Для работы в режиме покадровой синхронизации следует, например, в штатном примере из библиотеки LComp изменить строчки (368 и 369):
         

 if(sl.BoardType==E440 || sl.BoardType==E140 || sl.BoardType==E154)
                    adcPar.t1.SynchroType = 0;

на
         

 if(sl.BoardType==E440 || sl.BoardType==E140 || sl.BoardType==E154)
                    adcPar.t1.SynchroType = 2;

При этом модуль E14-440 после прихода отрицательного фронта по линии TRIG аналогового разъёма DRB-37M осуществит сбор только одного кадра отсчётов. После чего модуль аппаратно перейдёт в состояние ожидания прихода очередного отрицательного фронта по линии TRIG.

Всё почти понятно с терминами. Чем отличается TRIG от SYN? Может в этом проблема?:

GPS Trimble ResolutionT. Характеристики PPS (CMOS) - 3.3 Вольта + 1 мс длительность. Записал PPS на один из каналов с делителем - в общем около 2.8 Вольт получилось. Первый тест - только на канал АЦП (m_SynchroType=0). Второй тест - на тот же канал + на TRIG вход (m_SynchroType=0) - те же значения в результате. Но когда m_SynchroType=2, то "while (fl2==fl1){...}" уходит в "бесконечность". Тут либо проблема в штатном примере, либо проблема в PPS.

Теперь смотрим код с++ когда m_SynchroType=2 (Ваш выше ответ мне новой информации не предоставил, так как понятно из манула было изначально)
------------
    for(int i=0; i < m_Multi; i++)
    {
        printf("multi_halfbuffer_index = %d\n",i);
        //
        while (fl2==fl1)
        {
            fl2=(*m_pp<=halfbuffer) ? 0:1;
            usleep(10);
        }
        tmpl=m_p+(halfbuffer*fl1);
        memcpy(&tmp2[i*halfbuffer], tmpl, halfbuffer * sizeof(unsigned short));
        fl1=(*m_pp<=halfbuffer)? 0:1;
    }
--------------
т.е. этот тот же почти код как в штатном примере, и понятно, что размер halfbuffer для кадра должен быть равным 1секунда/2. Я halfbuffer сделал равным 100 миллисекунд для теста (т.е. это даже не половина, а размер по сути кадра, как я понимаю)
-----------------
Я много перепробовал с m_IrqStep, m_pages и m_Multi ("m_" - понятно что член класса, т.к. я так пишу коды) , чтобы были согласованы размеры массивов для реализации сбора данных для разных m_SynchroType (т.е. асинхронное чтение, и покадровое).

Например: (это для m_SynchroType=0 - всё супер работает):
    m_IrqStep=128;
    //
    m_SynchroType=0;
    m_DurationSec=10;
    m_pages=1000;
    m_FrequencyAdtHz=100000.0;
    //
    m_pages=m_pages/32*32;
    m_size=m_IrqStep*m_pages;
    //
    m_Multi=m_DurationSec*int(m_FrequencyAdtHz)/m_size*2;
------------

Теперь вопросы:
1) Какое CMOS TTL по амплитуде должен подаваться на TRIG Е14-440?
2) Есть у вас работающие коды c++ под Linux, где точно используется m_SynchroType=2 (в штатном примере ведь только m_SynchroType=0).

Подскажите, в каком мне направлении двигаться дальше?

Спасибо.

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4

Многоканальный телефон:+7 (495) 785-95-25

Письма и запросы: lcard@lcard.ru
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск