Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
|
||||
|
Синхронный вывод и ввод E-502Добрый день! Работаю с картой E-502 в Labview в синхронном режиме, задача состоит в том, чтобы выводить импульсы в определенной последовательности на цифровые выводы и считывать данные АЦП с 6 каналов. К карте собственно подключаются оптические датчики. Т.е. регистрируемые импульсы с АЦП запаздывают по отношению к управляющим импульсам, подающимся на DOUT. Причем эта задержка меняется при каждом запуске программы. Заранее спасибо! |
|||
|
||||
|
Re: Синхронный вывод и ввод E-502Здравствуйте. Я посмотрел тот пример, что Вы присылали. В связи с этим синхронный вывод с точной привязкой по времени возможен только при условии, что на момент вывода данные уже загружены в сам модуль, т.е. всегда нужно иметь загруженную часть сигнала в памяти самого модуля (время предзагруженного сигнала в общем и определяет макс. суммарную задержку, которая не приведет к разрыву данных). У Вас в программе выполняется предзагрузка, но всего на две точки для каждого канала (что для частоты 2.5 КГц меньше мс). Таким образом Вам нужно изначально предзагрузить достаточно данных - хотя бы 7-10 Ваших циклов по 8 мкс, чтобы к моменту посылки новых данных буфер на вывод не опустошился и вывод был бы строго синхронным. Я для проверки у себя завел DOUT1 и DOUT2 на первый и второй канал АЦП и проверил Ваш пример с достаточной предзагрузкой, в результате получился синхронный сигнал с той же задержкой от начала, что и выводилось, без сдвигов от запуска к запуску: Также у Вас несколько странно был сделан сам вывод. В Prepeare передается размер каждого сигнала (на цикл у Вас 20 точек) и каждый массив на входе должен быть этого размера, а в Send передается уже размер слов общего результирующего массива. Т.к. Вы используете все 3 потока вывода, то он должен быть в 3 раза больше. У Вас же получалось, что Вы подавали размер 4, при этом массив цифровых линий был из одного элемента (3 других по сути использовались как мусор из памяти за массивом), далее получался массив на 12 элементов из которых Вы передавали только 4 первых (ЦАП1, ЦАП2, DOUT, ЦАП1), что соответствовало двум циклам вывода, где во втором значения ЦАП2 и DOUT повторялись, т.к. они не пришли в кадре (т.е. так как Вы из выходного потока передавали все равно только один DOUT, то лишний мусор на выходе из PrepareData не видели). Да и разбивать цикл на 10 частей и выводить по два отсчета особого смысла не имеет, логичнее формировать и посылать сразу блок на цикл в 8 мс (времена реакции в 1мс все равно сильно меньше мин. возможных задержек в windows). Подправленный пример я выслал Вам на почту. P.S,: если цикл всегда одинаковый, а вывод уровней на ЦАП явно к фазе цикла не привязан, то проще использовать циклический вывод для DOUT и асинхронный для ЦАП. |
|||
|
||||
|
Re: Синхронный вывод и ввод E-502Алексей L Card пишет:
Спасибо! Теперь все синхронно работает. |
|||
|
||||
|
Re: Синхронный вывод и ввод E-502Да, частота вывода получается путем деления опорной частоты на делитель, максимальное значение которого 1024 (X502_OUT_FREQ_DIV_MAX в описании API), т.е. минимальная частота вывода как раз получается 2 МГц/1024 = 1953,125 Гц. |
Страницы 1
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2
Многоканальный телефон:
+7 (495) 785-95-25
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск