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

E502 внешняя синхронизацмя

Вы не вошли.

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

10.07.2017 13:57:35
#1

Участник
Здесь с 19.01.2017
Сообщений: 82

E502 внешняя синхронизацмя

День добрый
Понадобилось снимать данные АЦП с внешней синхронизацией
X502_SYNC_DI_SYN2_RISE = 6, < По фронту сигнала DI_SYN2 */

	// Устанавливаем частоту синхронного сбора  для цифровых
	err = X502_SetDinFreq(workX502.hndX502, &x502DinFreq);
	// пропускаем каждый 2 такт
	err = X502_SetAdcFreqDivider(workX502.hndX502, 2);
	// Разрешение синхронных потоков на ввод/вывод.
	err = X502_StreamsEnable(workX502.hndX502, X502_STREAM_ADC);
	// Записываем настройки в модуль
	err = X502_Configure(workX502.hndX502, 0);
//Затем стартуем внешнее устройство и тут же запускаем сбор данных
err = workX502.SetAsyncDigOut(512, _msg);
	err = X502_StreamsStart(workX502.hndX502);

Внешнее устройство после запуска ждет секунду и выдает 20 импульсов
Но с АЦП с буфер попадает только 9 (а при делителе X502_SetAdcFreqDivider 1) 19
Куда 1 отчет пропадает?

10.07.2017 17:12:22
#2

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

Re: E502 внешняя синхронизацмя

Добрый день.
А какие версии прошивки ПЛИС, прошивки ARM (можно посмотреть в LQMeasStudio) и SDK у Вас?

10.07.2017 18:39:19
#3

Участник
Здесь с 19.01.2017
Сообщений: 82

Re: E502 внешняя синхронизацмя

Алексей L Card пишет:

Добрый день.
А какие версии прошивки ПЛИС, прошивки ARM (можно посмотреть в LQMeasStudio) и SDK у Вас?

Прошивка, как вы в свое время рекомендовали 0.13
Как, кстати узнавать, что необходимо переписать?
SDK гляну.

Да, Алексей, если я запустил синхронный сбор с АЦП, то асинхронно вывести на цифровые выходы уже не могу? Ошибку выдает.

10.07.2017 21:15:30
#4

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

Re: E502 внешняя синхронизацмя

я правильно понимаю, что эта ошибка происходит не просто при запуске синхронного сбора с АЦП, а при запуске синхронного сбора от внешней частоты, которая как я понимаю у Вас не постоянно, а выдается несколько импульсов?

Проблема  может быть в том, что используется одна частота для ввода и вывода, а асинхронный вывод эмулируется через синхронный, поэтому при запуске сбора от внешней частоты и ее отсутствии вывод сделать действительно не получится...

Если нужен вывод на фоне ввода, то наверное только если использовать постоянную частоту и сбор выполнять с АЦП и цифровых входов и уже синхронизацию делать программно селекцией данных по нахождению нужного фронта, если частоты позволяют...

По поводу 19 отсчетов несколько странно, можете выложить все настройки модуля (кол-во каналов АЦП и т.п.)

11.07.2017 08:45:19
#5

Участник
Здесь с 19.01.2017
Сообщений: 82

Re: E502 внешняя синхронизацмя

Алексей L Card пишет:

Добрый день.
А какие версии прошивки ПЛИС, прошивки ARM (можно посмотреть в LQMeasStudio) и SDK у Вас?

Не понял, где там в LQMeasStudio смотреть.
Включаю галку Панели устройств, но в программе ничего нового не проявляется
Пункты
Конфигурация ...
Изменить настройки ...
Обновить прошивку ....
Недоступны

Но устройство видит
E502-X-U-D 2T253133
, к сожалению из грида про правой кнопке не копирует

ОС Вин10/32

11.07.2017 08:48:56
#6

Участник
Здесь с 19.01.2017
Сообщений: 82

Re: E502 внешняя синхронизацмя

Итого:
SDK 1.1.12 - из информации установщика
Эти данные из вашей тестовой программы взял:
Прошивка ПЛИС 0.13
Прошивка ПЛДА 0
Прошивка АРМ 1.0.11.0

11.07.2017 09:22:57
#7

Участник
Здесь с 19.01.2017
Сообщений: 82

Re: E502 внешняя синхронизацмя

ставлю 10 лог каналов,X502_SYNC_DI_SYN2_FALL =7 По спаду сигнала DI_SYN2
// 10 каналов, внешняя синхронизация по спаду
err = workX502.SetupParams(10, 7, 7);
// Установка значения внешней опорной частоты синхронизации
X502_SetExtRefFreqValue(workX502.hndX502, 180000);
// Устанавливаем частоту синхронного сбора  для АЦП 1МГц
err = X502_SetAdcFreq(workX502.hndX502, &x502AdcFreq, &x502AdcFreqLch)
// Устанавливаем частоту синхронного сбора  для цифровых x502DinFreq = 2000
err = X502_SetDinFreq(workX502.hndX502, &x502DinFreq);
// пропускаем каждый 2 такт
err = X502_SetAdcFreqDivider(workX502.hndX502, 2);
// Разрешение синхронных потоков на ввод/вывод. берем синхронно только с АЦП
err = X502_StreamsEnable(workX502.hndX502, X502_STREAM_ADC);
// Записываем настройки в модуль
err = X502_Configure(workX502.hndX502, 0);
//запускаем внешнее устройство (выставляем 1 на определенном цифровом выходе)
err = X502_AsyncOutDig(hndX502, _AsyncDigOut, mask);
//устройство принимает сигнал и выжидает 1 сек для выдачи пачки импульсов длительность импульса в пакете из 20 - 3 мкс (частота около 180 кГц)
// запустим поток сбора
err = X502_StreamsStart(workX502.hndX502);
// Поспим 3 сек
Sleep(3000);
// заберем, что пришло
rcvSizeRealStep = X502_Recv(workX502.hndX502, rcv_buf, 200, 200);
rcvSizeRealStep ... 9 вместо 10

при err = X502_SetAdcFreqDivider(workX502.hndX502, 1);
без пропуска
rcvSizeRealStep ... 19 вместо 20

11.07.2017 11:57:16
#8

Участник
Здесь с 19.01.2017
Сообщений: 82

Re: E502 внешняя синхронизацмя

err = workX502.SetupParams(10, 7, 7); - это собственно

	// устанавливаем кол-во логических каналов, lch_cnt=10
	err = X502_SetLChannelCount(workX502.hndX502, lch_cnt);
	_msg = X502_GetErrorString(err);
	// настраиваем лог каналы
	for (int i = 0; i < lch_cnt; i++) {
	  err = X502_SetLChannel (workX502.hndX502, i, i, X502_LCH_MODE_COMM, X502_ADC_RANGE_10, 1);
	  _msg = X502_GetErrorString(err);
	}
	// режим синхронизации
	err = X502_SetSyncMode(workX502.hndX502, X502_SYNC_DI_SYN2_FALL);
	_msg = X502_GetErrorString(err);
	//  условие запуска синхронного ввода/вывода данных.
	err = X502_SetSyncStartMode(workX502.hndX502, X502_SYNC_DI_SYN2_FALL);
	_msg = X502_GetErrorString(err);
11.07.2017 12:30:32
#9

Участник
Здесь с 19.01.2017
Сообщений: 82

Re: E502 внешняя синхронизацмя

Данные по каналам записанные в файл:
после закрытия потока синхронного сбора данных с АЦП

	// сброс сигнала старта
	err = workX502.SetAsyncDigOut(0, _msg);
	_msg = X502_GetErrorString(err);
	AnsiString str = "";
	for (int i = 0; i < rcvSizeRealStep; i++) {
		str += "adcData: " + IntToStr(i) + " Value: " + FloatToStrF(adcData[i], ffFixed, 2, 4) + "\n";
	}
	TLog::SaveStrTxtFile("ButtonTstClick.txt", str);

На выходе при первом запуске функции имеем:

adcData: 0 Value: -0,0020
adcData: 1 Value: 0,0024
adcData: 2 Value: -0,0130
adcData: 3 Value: 0,0020
adcData: 4 Value: 1,1000
adcData: 5 Value: 0,0024
adcData: 6 Value: -0,0110
adcData: 7 Value: 0,0032
adcData: 8 Value: -0,2500
adcData: 9 Value: 0,0032
adcData: 10 Value: -0,0130
adcData: 11 Value: 0,0020
adcData: 12 Value: 0,0024
adcData: 13 Value: 0,0016
adcData: 14 Value: 1,1000
adcData: 15 Value: 0,0028
adcData: 16 Value: 0,0024
adcData: 17 Value: 0,0024
adcData: 18 Value: -0,0440

При втором и последующем:

adcData: 0 Value: -0,0028
adcData: 1 Value: 0,0016
adcData: 2 Value: -0,0140
adcData: 3 Value: 0,0020
adcData: 4 Value: 1,1000
adcData: 5 Value: 0,0020
adcData: 6 Value: -0,0110
adcData: 7 Value: 0,0032
adcData: 8 Value: -0,2300
adcData: 9 Value: 0,0024
adcData: 10 Value: -0,0130
adcData: 11 Value: 0,0020
adcData: 12 Value: 0,0020
adcData: 13 Value: 0,0020
adcData: 14 Value: 1,1000
adcData: 15 Value: 0,0016
adcData: 16 Value: 0,0028
adcData: 17 Value: 0,0032
adcData: 18 Value: -0,0700

Физ канале 4 у меня висит постоянка 1,1 и это есть
Но на физ канале 0 висит 0.5 В
а на физ канале 2 1,8 В
Но их нет. В чем загадка?

11.07.2017 14:53:12
#10

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: E502 внешняя синхронизацмя

stix_s пишет:

Понадобилось снимать данные АЦП с внешней синхронизацией
....Куда 1 отчет пропадает?

При поданных N импульсах внешней первичной синхронизации преобразования, действительно, будете получать N-1 отсчётов  данных, из-за того, что последний отсчёт остаётся в конвейере в тракте передачи данных от АЦП (в логике CPLD-FPGA).
Логика опустошения конвейера (в ситуации асинхронного прихода внешней синхронизации) не очевидна, поэтому не была реализована. 

Действительно, данная особенность не была описана в руководстве пользователя. -  Добавим.

11.07.2017 14:54:27
#11

Участник
Здесь с 19.01.2017
Сообщений: 82

Re: E502 внешняя синхронизацмя

Алексей L Card пишет:

я правильно понимаю, что эта ошибка происходит не просто при запуске синхронного сбора с АЦП, а при запуске синхронного сбора от внешней частоты, которая как я понимаю у Вас не постоянно,

Ошибку получаю, если уже запускаю синхронный сбор с АЦП
и пытаюсь асинхронно выставить выходы
типа:
   

// запустим поток сбора
    err = X502_StreamsStart(workX502.hndX502);
    // выставим 1 на DO10
     err = workX502.SetAsyncDigOut(512, _msg);

ошибка -1004
{ "Ошибка Cortex-M4: Обращение к регистру ПЛИС вернуло ответ NACK" }

11.07.2017 15:05:11
#12

Участник
Здесь с 19.01.2017
Сообщений: 82

Re: E502 внешняя синхронизацмя

Гарманов Александр пишет:
stix_s пишет:

Понадобилось снимать данные АЦП с внешней синхронизацией
....Куда 1 отчет пропадает?

При поданных N импульсах внешней первичной синхронизации преобразования, действительно, будете получать N-1 отсчётов  данных, из-за того, что последний отсчёт остаётся в конвейере в тракте передачи данных от АЦП (в логике CPLD-FPGA).
Логика опустошения конвейера (в ситуации асинхронного прихода внешней синхронизации) не очевидна, поэтому не была реализована. 

Действительно, данная особенность не была описана в руководстве пользователя. -  Добавим.

То есть, что бы мне получить 20 отчетов - надо выдать 21 импульс?
А как потом сбросить ненужный отчет в конвейере? При следующей пачке импульсов?
Кстати, при первом запуске выдает только 18 отчетов, а при все последующих 19 при 20 импульсах. Это я уже сообщение не смог отредактировать sad
первый запуск

adcData: 0 Value: -0,0032
adcData: 1 Value: 0,0024
adcData: 2 Value: -0,0130
adcData: 3 Value: 0,0024
adcData: 4 Value: 1,1000
adcData: 5 Value: 0,0028
adcData: 6 Value: -0,0080
adcData: 7 Value: 0,0028
adcData: 8 Value: -0,1900
adcData: 9 Value: 0,0032
adcData: 10 Value: -0,0190
adcData: 11 Value: 0,0024
adcData: 12 Value: 0,0016
adcData: 13 Value: 0,0020
adcData: 14 Value: 1,1000
adcData: 15 Value: 0,0020
adcData: 16 Value: 0,0024
adcData: 17 Value: 0,0020

и далее

adcData: 0 Value: -0,0028
adcData: 1 Value: 0,0016
adcData: 2 Value: -0,0140
adcData: 3 Value: 0,0020
adcData: 4 Value: 1,1000
adcData: 5 Value: 0,0020
adcData: 6 Value: -0,0110
adcData: 7 Value: 0,0032
adcData: 8 Value: -0,2300
adcData: 9 Value: 0,0024
adcData: 10 Value: -0,0130
adcData: 11 Value: 0,0020
adcData: 12 Value: 0,0020
adcData: 13 Value: 0,0020
adcData: 14 Value: 1,1000
adcData: 15 Value: 0,0016
adcData: 16 Value: 0,0028
adcData: 17 Value: 0,0032
adcData: 18 Value: -0,0700

11.07.2017 15:40:21
#13

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

Re: E502 внешняя синхронизацмя

В каком смысле "первый" запуск? первый после подачи питания на модуль, первый при запуске программы? Чем первый отличается от не первого?

11.07.2017 15:41:15
#14

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

Re: E502 внешняя синхронизацмя

По поводу же значений с каналов, то сперва нужно проверить на штатном софте, соответствуют ли сигналы ожидаемым, и если нет, то проблема в первую очередь проверить соответствие подключения настройкам

11.07.2017 15:43:19
#15

Участник
Здесь с 19.01.2017
Сообщений: 82

Re: E502 внешняя синхронизацмя

Алексей L Card пишет:

В каком смысле "первый" запуск? первый после подачи питания на модуль, первый при запуске программы? Чем первый отличается от не первого?

первый клик на кнопке при запуске программы до ее, программы перезапуска.
А остальные - кнопку просто повторно кликаю
там одна тестовая функция в обработчике

11.07.2017 15:44:05
#16

Участник
Здесь с 19.01.2017
Сообщений: 82

Re: E502 внешняя синхронизацмя

Алексей L Card пишет:

По поводу же значений с каналов, то сперва нужно проверить на штатном софте, соответствуют ли сигналы ожидаемым, и если нет, то проблема в первую очередь проверить соответствие подключения настройкам

Когда собираю сигналы с внутренней синхронизацией

11.07.2017 16:59:54
#17

Участник
Здесь с 19.01.2017
Сообщений: 82

Re: E502 внешняя синхронизацмя

Алексей L Card пишет:

По поводу же значений с каналов, то сперва нужно проверить на штатном софте, соответствуют ли сигналы ожидаемым, и если нет, то проблема в первую очередь проверить соответствие подключения настройкам

Алексей, собственно значения каналов при внутренней синхронизации проверены, там все в порядке.
Функция практически аналогична вашему тестовому примеру.
А вот с внешней синхронизацией ... возникают вопросы.
Поскольку при первой попытке сбора данных с АЦП при внешней синхронизации я получаю только 18 отчетов вместо 20, но есть подозрение, что согласно сообщению
Гарманов Александр
При первом импульсе буфер АЦП пуст  первый сигнал заполняет буфер и только второй сигнал заставляет его передать данные дальше.

11.07.2017 19:24:51
#18

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

Re: E502 внешняя синхронизацмя

Не совсем понятно, все же с точки зрения вызовов функций, что происходит до первого и до второго запуска. Открывается ли соединение после первого запуска? Используется ли сейчас асинхронный вывод при этом? Что за источник частоты, он как-то урпавляется?

В штатном примере при изменении синхронизации на внешюю у меня при первом запуске на два импульса приходит один отсчет, т.к. не приходит только последний семпл.

11.07.2017 19:34:24
#19

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: E502 внешняя синхронизацмя

Запуск преобразования АЦП от внешнего синхросигнала ранее обсуждался в этой конференции: http://www.lcard.ru/forums/viewtopic.php?id=9761
И тогда уже выяснили, что один лишний импульс синхронизации нужно добавлять в конце.

Вообще, разработчиком предполагалось изначально,что в данном режиме на вход синхронизации будет подаваться постоянный периодичный сигнал (частота), поскольку это не просто вход синхронизации АЦП, а вход синхронизации всей первичной системы ввода-вывода: ADC, DI, DAC, DO. Поэтому, полученную "конвейерную задержку" получения данных АЦП относительно внешних одиночных синхроимпульсов следует воспринимать как особенность для данного частного случая.

Отредактировано Гарманов Александр (11.07.2017 19:56:00)

11.07.2017 20:33:55
#20

Участник
Здесь с 19.01.2017
Сообщений: 82

Re: E502 внешняя синхронизацмя

Алексей L Card пишет:

Не совсем понятно, все же с точки зрения вызовов функций, что происходит до первого и до второго запуска. Открывается ли соединение после первого запуска? Используется ли сейчас асинхронный вывод при этом? Что за источник частоты, он как-то урпавляется?

Соединение открывается при запуске ПО, устанавливается внутреняя синхронизация.
Предполагаем, что обрыва соединения нет.
При инициализации (запуске ПО) производится проверка соединения с модулем, прописываются параметры модуля.
Источник частоты - внешний, НЕ управляется ПО Л-Кард или модулем Е502
Как я уже сообщал:
получает управляющий сигнал
ждет секунду
выдает пачку импульсов, это вся его задача.

Алексей L Card пишет:

В штатном примере при изменении синхронизации на внешюю у меня при первом запуске на два импульса приходит один отсчет, т.к. не приходит только последний семпл.

В штатном примере, Алексей ... надо посмотреть, что и в какой последовательности вы производите и чем отличается от моего вопроса.
Попробуйте изначально задать внутреннюю синхронизацию.
И не запуская потока сбора переключить на внешнюю.

11.07.2017 20:41:39
#21

Участник
Здесь с 19.01.2017
Сообщений: 82

Re: E502 внешняя синхронизацмя

Гарманов Александр пишет:

Запуск преобразования АЦП от внешнего синхросигнала ранее обсуждался в этой конференции: http://www.lcard.ru/forums/viewtopic.php?id=9761
И тогда уже выяснили, что один лишний импульс синхронизации нужно добавлять в конце.
Поэтому, полученную "конвейерную задержку" получения данных АЦП относительно внешних одиночных синхроимпульсов следует воспринимать как особенность для данного частного случая.

1) Александр - я НЕ электронщик, у вас в документации этого нет.
2) Как я могу узнать, что ПОДОБНЫЙ вопрос уже обсуждался?
Именно с данным набором МС?
Ну пропишите в доке.
Я даже не знаю - надо мне прошивку обновить или нет - подскажите способ получать извещения по мылу.

Но, то что при первом запуске функции сбора пролетает 2 отчета ...
Готов Алексею предоставить тестовый пример.

11.07.2017 20:44:57
#22

Участник
Здесь с 19.01.2017
Сообщений: 82

Re: E502 внешняя синхронизацмя

Алексей L Card пишет:

В штатном примере при изменении синхронизации на внешюю у меня при первом запуске на два импульса приходит один отсчет, т.к. не приходит только последний семпл.

В штатном примере попробуйте выставить внешнюю синхронизацию.
Запустить сбор.
И выставить асинхронно выходы.
Ваш пример дает ту же ошибку - 1004. Поверьте.

11.07.2017 22:15:16
#23

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: E502 внешняя синхронизацмя

stix_s пишет:

1) Александр - я НЕ электронщик, у вас в документации этого нет.
2) Как я могу узнать, что ПОДОБНЫЙ вопрос уже обсуждался?
Именно с данным набором МС?
Ну пропишите в доке....

Откройте Руководство пользователя http://www.lcard.ru/download/e-502_users_guide.pdf , п.3.3.5.1:
 Опорная частота с входа DI_SYN1 (по фронту или по спаду),
 Опорная частота с входа DI_SYN2 (по фронту или по спаду),
и в этом же пункте и ранее при описании принципа действия используется понятие внутренней или внешней опорной частоты fref для первичной синхронизации E-502. Таким образом, в Руководстве речь идёт исключительно о периодическом синхросигнале, для которого существует понятие "частота". Подтверждаю, что одиночные импульсы на входе синхронизации DI_SYN1, DI_SYN2 (в режиме внешней синхронизации частоты преобразования) является нештатным режимом эксплуатации E-502 c возможными недокументированными особенностями.

"Как я могу узнать?":
  - поиском на форумах L-Card,
  - обратившись к техподдержке на форуме (что Вы и делаете) или по почте на support@lcard.ru .
Замечу, что далеко не все компании имеют живой форум (для открытого обсуждения продукции компании) и русскоязычную техподдержку с технической консультацией инженеров (и на этапе выбора оборудования тоже). Кстати, это 8-ая Ваша тема по программированию L-502/E-502 на наших форумах, где техподдержка L-Card исправно Вам отвечает. По выбору оборудования c подробным изложением требований физической задачи Вы же не обращались? - я не нашёл. Программисту бывает сложно разобраться в физических свойствах измерительного оборудования - это понятно, но в этом случае нужно излагать техподдержке саму физическую задачу измерения (возможно, до покупки оборудования), чтобы быть уверенным, что оборудование и ПО соответствует требованиям задачи.

12.07.2017 07:17:10
#24

Участник
Здесь с 19.01.2017
Сообщений: 82

Re: E502 внешняя синхронизацмя

Гарманов Александр пишет:

Кстати, это 8-ая Ваша тема по программированию L-502/E-502 на наших форумах, где техподдержка L-Card исправно Вам отвечает.

И за это вам огромное спасибо.
Чтобы понять ньюансы использования оборудования L-Card и выявить в чем ошибка обращусь еще не раз smile
При подобном тесте:

   	// режим синхронизации
	err = X502_SetSyncMode(workX502.hndX502, X502_SYNC_INTERNAL);
	_msg = X502_GetErrorString(err);
	//  условие запуска синхронного ввода/вывода данных.
	err = X502_SetSyncStartMode(workX502.hndX502, X502_SYNC_INTERNAL);
    	// Записываем настройки в модуль
	err = X502_Configure(workX502.hndX502, 0);
	//-----------
	// 10 каналов, внешняя синхронизация по спаду 	err = workX502.SetupParams(10, X502_SYNC_DI_SYN2_FALL, X502_SYNC_DI_SYN2_FALL);
	// устанавливаем кол-во логических каналов, lch_cnt=10
	err = X502_SetLChannelCount(workX502.hndX502, lch_cnt);
	_msg = X502_GetErrorString(err);
	// настраиваем лог каналы
	for (int i = 0; i < lch_cnt; i++) {
	  err = X502_SetLChannel (workX502.hndX502, i, i, X502_LCH_MODE_COMM, X502_ADC_RANGE_10, 1);
	  _msg = X502_GetErrorString(err);
	}
	// режим синхронизации
	err = X502_SetSyncMode(workX502.hndX502, X502_SYNC_DI_SYN2_FALL);
	_msg = X502_GetErrorString(err);
	//  условие запуска синхронного ввода/вывода данных.
	err = X502_SetSyncStartMode(workX502.hndX502, X502_SYNC_DI_SYN2_FALL);
	_msg = X502_GetErrorString(err);
	// Установка значения внешней опорной частоты синхронизации
	X502_SetExtRefFreqValue(workX502.hndX502, 180000);
	// настраиваем частоту сбора с АЦП и цифровых
	// Устанавливаем частоту синхронного сбора  для АЦП 1МГц
	err = X502_SetAdcFreq(workX502.hndX502, &x502AdcFreq, &x502AdcFreqLch);
	_msg = X502_GetErrorString(err);
	// Устанавливаем частоту синхронного сбора  для цифровых x502DinFreq = 2000
	err = X502_SetDinFreq(workX502.hndX502, &x502DinFreq);
	_msg = X502_GetErrorString(err);

	// пропускаем каждый 2 такт
	err = X502_SetAdcFreqDivider(workX502.hndX502, 1);
	_msg = X502_GetErrorString(err);
	// Разрешение синхронных потоков на ввод/вывод.
	err = X502_StreamsEnable(workX502.hndX502, X502_STREAM_ADC);
	_msg = X502_GetErrorString(err);
	// Записываем настройки в модуль
	err = X502_Configure(workX502.hndX502, 0);
	_msg = X502_GetErrorString(err);
	// выставим 1 на DO10
	unsigned int start_time = clock(); // начальное время
	err = workX502.SetAsyncDigOut(512, _msg);
	_msg = X502_GetErrorString(err);
	// запустим поток сбора
	err = X502_StreamsStart(workX502.hndX502);
	// выставим 1 на DO10
	 //err = workX502.SetAsyncDigOut(512, _msg);
	_msg = X502_GetErrorString(err);
	unsigned int end_time = clock();
	unsigned int search_time = end_time - start_time; // искомое время
	// Sleep(30);
	// Поспим
	Sleep(3000);
	// Функция возвращает количество отсчетов, которые были приняты из модуля
	// во внутренний буфер и готовы для считывания
	err = X502_GetRecvReadyCount(workX502.hndX502, &rcvCountReady);
	_msg = X502_GetErrorString(err);
	// заберем, что пришло
	rcvSizeRealStep = X502_Recv(workX502.hndX502, rcv_buf, 200, 200);

Всегда 18 отчетов. И пропал повтор канала 4 Value: 1,1000

adcData: 0 Value: -0,0048
adcData: 1 Value: 0,0020
adcData: 2 Value: -0,0180
adcData: 3 Value: 0,0016
adcData: 4 Value: 1,1000
adcData: 5 Value: 0,0024
adcData: 6 Value: 0,0024
adcData: 7 Value: 0,0020
adcData: 8 Value: -0,0380
adcData: 9 Value: 0,0016
adcData: 10 Value: 0,0016
adcData: 11 Value: 0,0016
adcData: 12 Value: 0,0016
adcData: 13 Value: 0,0024
adcData: 14 Value: 0,0020
adcData: 15 Value: 0,0016
adcData: 16 Value: 0,0020
adcData: 17 Value: 0,0024

Было

adcData: 0 Value: -0,0032
adcData: 1 Value: 0,0024
adcData: 2 Value: -0,0130
adcData: 3 Value: 0,0024
adcData: 4 Value: 1,1000
adcData: 5 Value: 0,0028
adcData: 6 Value: -0,0080
adcData: 7 Value: 0,0028
adcData: 8 Value: -0,1900
adcData: 9 Value: 0,0032
adcData: 10 Value: -0,0190
adcData: 11 Value: 0,0024
adcData: 12 Value: 0,0016
adcData: 13 Value: 0,0020
adcData: 14 Value: 1,1000
adcData: 15 Value: 0,0020
adcData: 16 Value: 0,0024
adcData: 17 Value: 0,0020

12.07.2017 10:43:18
#25

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

Re: E502 внешняя синхронизацмя

По поводу двух пропущенный импульсов, я не увидел, что Вы настраиваете не только частоту от SYN2, но и старт от него же. В этом случае действительно повторяется пропуск двух импульсов, но если честно я не очень вижу смысл настраивать и старт по тому же признаку, т.к. если Вы старт настроите INTERNAL, то в любом сбор запустится сразу но первый отсчет будет оцифрован только по первому фронту.
В режиме старта INTERNAL модуль должен работать всегда предсказуемо, что нужно добавить один лишний импульс (т.к. последнее измерение как бы застревает в модуле и не передается). Попробуйте с такой настройкой.

Контакты

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

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

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

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