|
- Участник
- Здесь с 04.10.2022
- Сообщений: 9
|
E-502, запуск старта измерений по PPM сигналу с внешнего устройства
Добрый день! Необходимо: Производить измерения АЦП, запускаемые по сигналу PPM метки на вход DI_SYN1. Имеется: L-card E-502-P-EU-D-I, Lab View 2019. Как я понимаю, нужно как в этой ветке форума https://www.lcard.ru/forums/viewtopic.p … 8q52346228 редактировать код/или создать новый DLL файл. Или все таки можно легко отделаться и каким либо образом в Lab View заменить кнопку старта на старт по сигналу PPM с внешнего прибора? Может подскажите где можно найти описание всех классов и методов, которые содержаться в lpcieNet.dll? Заранее спасибо!
|
|
- Сотрудник "Л Кард"
- Здесь с 17.04.2014
- Сообщений: 1,291
|
Re: E-502, запуск старта измерений по PPM сигналу с внешнего устройства
Добрый день. Полное описание дается на типы и функции библиотеки на С в (https://www.lcard.ru/download/x502api.pdf), там же в разделе 2.3 дается соответствие функций и типов С и классов lpcieNet, а в 2.4 особенности использования в LabView. В указанной теме форума речь идет не об изменении или создании DLL, а просто о правильном месте вызова функции. Для LabView это означает, что в схеме примера нужно добавить блок вызова метода SetSyncStartMode с нужным параметром до вызова Configure.
|
|
- Участник
- Здесь с 04.10.2022
- Сообщений: 9
|
Re: E-502, запуск старта измерений по PPM сигналу с внешнего устройства
Добрый день! Добавил блок вызова метода SyncStartMode до вызова блока Configure. https://www.lcard.ru/forums/img/members/708/1.png При запуске программы на лицевой панели выставляю SyncStartMode=DI_SYN1_RISE (на который подключен источник сигнала PPM метки) (https://www.lcard.ru/forums/img/members/708/2.png) нажимаю кнопку START в надежде, что запись начнется с приходом сигнала. А ничего не происходит! Как я понимаю надо где-то в конструкции Event Structure, там, где ожидание кнопки Start, добавить Source=DI_SYN1? https://www.lcard.ru/forums/img/members/708/3.png
|
|
- Сотрудник "Л Кард"
- Здесь с 17.04.2014
- Сообщений: 1,291
|
Re: E-502, запуск старта измерений по PPM сигналу с внешнего устройства
Добрый день! В первую очередь наверное стоит проверить на штатной программе X502Studio (https://lcard.ru/download/x502studio.zip), чтобы убедиться в правильности подключения и т.п. Попробуйте там выставить этот режим и убедится, что без подключения к PPS данные идти не будут, а при подключении PPS - пойдут данные. Если в X502Studio это работать не будет, то опишите подробнее к каким конкретно контактам что подключаете, что конкретно является источником сигнала и т.д. Если же в X502Studio будет работать нормально, то значит проблема в программе. Тогда либо пришлите скриншоты параметров этого поля выбора (в Properties закладка Edit Items для понимания соответствия названий и кодов, может там есть проблема) и это подключено в схему, либо можете просто измененный пример прислать на почту техподдержки.
|
|
- Участник
- Здесь с 04.10.2022
- Сообщений: 9
|
Re: E-502, запуск старта измерений по PPM сигналу с внешнего устройства
Добрый день! Имеется: • L-card E-502-P-EU-D-I. • Mini Precision GPS Reference Clock, как внешний источник опорной частоты. • Устройство выдающее PPS и PPM си гнал от ГНСС, через подключённую антенну Garmin GPS16x-HVS. • Lab View 2019 + ваш пример программы. Рис.1. Блок-схема https://www.lcard.ru/forums/img/members … nnykh.jpeg Начал изменять программу, предложенную в качестве примера. Было добавлено: Убрал все, что относилось снятие данных с DIN. Добавлена возможность выбирать источник опорной частоты, источник события старта и задавать время старта записи (T_start), время остановки записи(T_stop). Создан ВИ для проверки попадает ли системное время в диапазон (T_start, T_stop), и если попадает в заданный интервал, то АЦП ждет сигнала PPM и начинает запись данных в файл формата TDMS. Так же этот ВИ формирует название файла исходя из даты и времени и останавливает запись файла. Но этот ВИ для стопа работает параллельно со снятием данных с АПЦ, что дает ошибку, время уползает… Как я понимаю надо реализовывать остановку записи по количеству снятых точек или по кол-ву итераций? Кол-во итераций N=(T_stop-T_start)/T_отобр. Подскажите в правильном ли направлении мыслю? Или как лучше реализовать стоп? Архив с прогой: https://www.lcard.ru/forums/img/members … roject.rar
|
|
- Сотрудник "Л Кард"
- Здесь с 17.04.2014
- Сообщений: 1,291
|
Re: E-502, запуск старта измерений по PPM сигналу с внешнего устройства
Если честно не очень понял, что Вы хотите сделать. Можете подробно описать: - какие сигналы с какой частотой подаются на SYN1, SYN2 и X1/Y1 E-502 - какие настройки E-502 используются - подробно пошагово алгоритм работы программы, что с чем сравниваете и чего хотите добится
|
|
- Участник
- Здесь с 04.10.2022
- Сообщений: 9
|
Re: E-502, запуск старта измерений по PPM сигналу с внешнего устройства
Здравствуйте Алексей! Согласно руководству по эксплуатации Е502, можно использовать внешний источник опорной частоты(с частотой 1.5 МГц). Как было написано выше в качестве источника опорной частоты используется Mini Precision GPS Reference Clock,подключеный к входу DI_SYN2. В качестве источника события старта, был выбран вариант по сигналу с входа DI_SYN1. Сигналом является PPM сигнал(1/60 Гц). На х1,y1 подключены сигналы PPS (1 Гц). Настройки: SyncMode=DI_SYN2_RISE, SyncStartMode=DI_SYN1_RISE, DigInPullup=DI_SYN1. Как реализовать остановку записи/отображения данных? Если изначально T_start и T_stop мы задаем.
|
|
- Сотрудник "Л Кард"
- Здесь с 17.04.2014
- Сообщений: 1,291
|
Re: E-502, запуск старта измерений по PPM сигналу с внешнего устройства
1. если нужно запустить запуск во время T_start от внешнего PPM, то команду StreamStarts нужно выполнить заранее (после начала предыдущей минуты), чтобы к моменту нужной метки PPM (но после предыдущей) модуль уже был запущен в режиме старта от PPM 2. Аппаратного останова сбора по времени или числу отсчетов в модуле нет, но его можно реализовать программно. Вы исходя из заданных настроек частоты АЦП/частоты вычисляете количество отсчетов соответствующих разнице между Tstart и Tstop, и вызываете Recv с размерами, чтобы за раз или за несколько раз принять именно это количество отсчетов, после чего вызываете StreamsStop() (N = количество каналов в кадре * частота кадра * (Tstop - Tstart), где разница Tstart и Tstop в секундах, а частота в Гц) . Выполнение останова потребует время и будет с задержкой, но если у Вас запуск от минутной метки, то вряд ли это может иметь значение, даже если сбор нужно запустить на следующей минуте время останова и перезапуска будет намного меньше. 3. Также если Вы используете внешнюю опорную частоту синхронизации, то для корректного расчета настроек частоты АЦП до вызова функции настройки частоты АЦП (X502_SetAdcFreq()) нужно вызывать X502_SetExtRefFreqValue(), указав частоту Вашего внешнего сигнала (также X502_SetSyncMode() должна быть вызвана до X502_SetAdcFreq()). 4. Надо учитывать, что эти отсчеты на аппаратном уровне снимаются по заданному сигналу и соответствуют моменту указанных фронтов сигнала. Но в ПК они конечно же придут с задержкой передачи и реакции Windows, которая не является системой реального времени. Поэтому время выполнения функции Recv не соответствует времени, к которому реально относятся отсчеты. 5. Также вопрос синхронизации времени самого ПК, синхронизированно ли оно с GPS и если да, по какому интерфейсу и с какой точностью, т.к. в любом случае исто программно за счет задержек передачи и Windows будут расхождения. По поводу того, какие именно времена Вы с чем сравниваете, время чего у Вас уползает, какой порядок расхождения и т.д., я честно говоря по первому сообщению не понял и во втором также Вы не раскрыли этот вопрос.
|
|
- Участник
- Здесь с 04.10.2022
- Сообщений: 9
|
Re: E-502, запуск старта измерений по PPM сигналу с внешнего устройства
Здравствуйте Алексей! 1,3 пункт: Все сделал. Единственное, что называется не X502_SetExtRefFreqValue(), а просто ExtRefFreqValue()? По 2 пункту: Под частотой кадра Вы имели ввиду установленную частоту на канал? Сделал вроде как написано, вот на скриншоте по ссылке можно посмотреть: https://www.lcard.ru/forums/img/members … -progi.png Как я понимаю, чтобы произошла остановка нужно нажать на кнопку стоп, которая находится в цикле где вызывается Recv. Не подскажите как это сделать?
|
|
- Участник
- Здесь с 04.10.2022
- Сообщений: 9
|
Re: E-502, запуск старта измерений по PPM сигналу с внешнего устройства
И еще по второму пункту, разве не надо после Recv вызывать ProcessAdcData? а уже после StreamsStop()?
|
|
- Сотрудник "Л Кард"
- Здесь с 17.04.2014
- Сообщений: 1,291
|
Re: E-502, запуск старта измерений по PPM сигналу с внешнего устройства
1,3 пункт: Все сделал. Единственное, что называется не X502_SetExtRefFreqValue(), а просто ExtRefFreqValue()?
Да, я просто написал имя из C-библиотеки, функции в LabView идут без префикса X502_ (т.к. уже сгруппированы внутри класса). По 2 пункту: Под частотой кадра Вы имели ввиду установленную частоту на канал?
Да И еще по второму пункту, разве не надо после Recv вызывать ProcessAdcData? а уже после StreamsStop()?
Да, правильно, принятые данные с помощью Recv нужно всегда обрабатывать ProcessAdcData для получения значений в Вольтах. Действительно в моем описании я это не написал, но по сути везде, где идет Recv, подразумевается, что это вызовы Rev + ProcessAdcData. Как я понимаю, чтобы произошла остановка нужно нажать на кнопку стоп, которая находится в цикле где вызывается Recv. Не подскажите как это сделать?
Ну это в примере в качестве условия выхода используется кнопка (точнее там сделан выход или по нажатию кнопки или по ошибке - логика в правом верхнем углу цикла в примере), аналогично Вы можете вместо кнопки или дополнительно к кнопке (просто новым входом в "или") сделать условие по завершению приема заданного числа отсчетов. Т.е. например создать переменную вне цикла для хранения оставшегося числа отсчетов, присвоить ей перед циклом количество отсчетов, которое нужно принять (исходя из времени, размера кадра, и частоты на канал). Далее в цикл ее завести как shift regiseter (https://www.ni.com/docs/en-US/bundle/la … cepts.html), чтобы в новом цикле использовалось значение, полученное на предыдущем, а не сбрасывалось каждую итерацию в начальное. В самом цикле в качестве size на Recv можно передавать MIN(размер массива на вход, количество оставшихся отсчетов), чтобы не принимать лишний данных, при некратном соотношении блока приема и общего требуемого числа отсчетов, и после Recv вычитать из этой переменной (с количеством оставшихся отсчетов) результат Recv, если он больше 0, и в качестве условия выхода из цикла использовать, что значение этой переменной равно 0.
|