Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
|
||||
|
Генерация вывода цифровых сигналов на E502Добрый день! Я сдаюсь. Уже с месяц читаю мануал https://www.lcard.ru/download/x502_low_level.pdf вкупе с https://www.lcard.ru/download/x502api.pdf, поскольку на него то и дело отсылки, но не вижу даже, с чего начать, чтобы выдать цифровой сигнал. Есть команды 0x26, 0x27, 0x28, 0x29, но ни одна из них не говорит, как рассказать устройству, что за сигнал мне нужен. Раз это цифровой вывод, то в каком формате подавать его значения и куда (предполагаю, что посылать надо на 11115 порт)? Чувствую себя совершенно безграмотным, но даже не понимаю, как согласовать (синхронизировать) цифровой вывод со входом АЦП. Ткните, пожалуйста, на нужное место инструкции. |
|||
|
||||
|
Re: Генерация вывода цифровых сигналов на E502По поводу формата вывода. Как и с вводом, формат слов на вывод описан в разделе 5.12 в x502_low_level. В случае вывода на цифровые линии в каждом слове у Вас старшие два байта должны быть нули, а младшие два байта задают состояние 16 цифровых выходов (про биты e там не указано, что 0 это разрешение, а 1 - запрет, т.е. они должны быть в 0). Каждому выходу соответствует свой бит, DO1 - младший бит, DO16 - старший. Т.е. если Вы хотите, чтобы на DO1 и DO6 был уровень логической 1, а на остальных - нуля, то Вы должны записать битовое слово 0 ... 0 00100001 или 0x00000021 в 16-ой системе. Далее у Вас есть два режима - потоковый и циклический. Первый можно использовать, если Вам нужно выводить периодическую диаграмму и количество точек помещается в буфер модуля. В этом случае достаточно один раз загрузить слова и после этого при запуске они будут выводится сами по кругу. Потоковый режим подходит, если сигнал не периодический или его размер превышает внутренний буфер модуля, в этом случае необходимо во время работы записывать новые слова в модуль с частотой не меньше частоты вывода. Далее, чтобы сопоставить ввод с АЦП и вывод, Вам нужно, чтобы генерация вывода и ввод АЦП начались одновременно (ну или точнее с известными задержками друг от друга, которые описаны в UserManual, но далее для упрощения буду считать, что одновременно). Для этого на момент запуска сбора (запись 1 в GO) у Вас уже должен быть весь (в случае циклического) или часть (в случае потокового) сигнала загружены в модуль, чтобы он смог вывести первое слово одновременно с вводом. В случае циклического вывода (т.к. Вы из него привели команды) с одновременным вводом, последовательность будет следующая (подразумевается, что соединения по TCP для команд и данных установлены): 1. Настройки модулей записью в регистры (для Вас новое - это делитель частоты вывода в IO_MODE - вообще на сайте указано поле DAC_FREQ 1 бит, но оно было расширено, посмотрю, возможно была обновленная версия документа) Останов выполняется аналогично тому как и при вводе, только после установки GO в 0 нужно подать команду 0x28 и 0x13 сделать как для ввода, так и для вывода. Так же во время сбора Вы можете повторить действия из 4 пункта без записи OUT_SWAP для смены одного циклического сигнала на другой без останова генерации. В потоковом режиме все аналогично, но Вам не нужны команды 0x26-0x29. По сути в 4-ом пункте остается только загрузка данных на определенное время (например 2 с) и запись в OUT_SWAP, а после старта (GO=1) вы должны периодически подгружать новые отсчеты. Для моментов времени можно использовать данные ввода, т.е. как пришла первая секунда данных АЦП вывели 3-ю секунду данных на DOUT, далее ждете вторую секунду данных АЦП, выводите 4-ую секунду на DOUT и т.д. В этом случае у Вас есть запас в 1 с на задержку передачи данных и задержку реакции ПО, чтобы поток сохранял непрерывность. В общем постарался описать общую суть. Если остались вопросы, то пишите, но постарайтесь уже более конкретно сформулировать их. |
Страницы 1
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2
Многоканальный телефон:
+7 (495) 785-95-25
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск