Форум ZETLAB

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

Страницы: 1 2 След.
RSS
Вопросы по 230-му модулю
 
1. Исходя из блок схемы в 230-м модуле максимальная частота опроса каждого одного канала зависит от количества включенных каналов, это так? Если зависит то это означает что каналы опрашиваются не синхронно? 2. Если имеются несколько 230-х модулей, каким образом можно их синхронизировать (одновременное начало сбора данных и синхронный опрос)? 3. Вопрос по работе с Zadc.dll. Что будет в случае если необходимая для помещения в буфер (полученный с помощью ZGetBufferADC) порция данных размером больше области оставшейся до конца буфера? 4. Количество включенных каналов можно получить с помощью ZGetNumberInputADC. А каким образом можно узнать номера включенных каналов?
 
Здравствуйте, Виталий! 1. Частота дискретизации АЦП в ZET 230 не зависит от количества включенных каналов, соответственно, сколько бы ни было включено каналов, данные опрашиваются всегда синхронно. 2. Синхронизовать модули ZET 230 можно через цифровой порт этих устройств. При этом одно из устройств будет мастером, а остальные слейвом. Кто мастер, а кто слейв настраивается через "Диспетчер устройств" на вкладке "Синхронизация". При таком подходе цифровые порты устройств должны быть физически соединены. Более подробно написано здесь. 3) Поскольку буфер циклический, то указатель на текущий элемент заполнения буфера просто перейдет в начало и все продолжется. 4) Узнать номера включенных каналов можно в цикле по всем каналам функцией ZGetInputADC. Для включенных каналов в параметре enable будет возвращаться значение 1, а для выключенных 0. Удачи!
 
Спасибо! Только по 3-му вопросу, осталось не понятным, часть данных будет записана в конце буфера, а часть в начале или же указатель перейдет на начало и данные полностью запишутся начиная с 0-го адреса?
 
Здравствуйте, Виталий! Часть данных запишется в конец буфера, а оставшаяся часть в начало буфера. Удачи!
 
Здравствуйте! Для работы с модулями через библиотеку Zadc.dll используются константы typeDevice, определяющие тип устройства. (Например в функции ZOpen(typeDevice, numberDSP); ). Не подскажете число typeDevice для 230-го модуля?
 
Добрый день! 1)typeDevice для 230-го модуля равен 17 2)В документе ZETLabStudio.pdf в главе 12 содержится информация по интересующему вас вопросу. Документ поставляется на дисках к приборам или в Doc.rar на ftp находится всегда последняя версия.
 
Добрый день. Есть код, основанный на Вашем с++ примере, который нормально читает данные с 210-го модуля (подключается по USB), при попытке использования этого же кода для чтения с 230-го модуля(подключение по Ethernet). При этом единственное изменение в коде - замена типа устройства с 10 на 17. В наличии 3 библиотеки(версия 2012.9.3.0 идет с ПО ZetLab), функция ZOpen возвращает разные значения в зависимости от передаваемого ей типа устройства (10 для 210 модуля, 17 - для 230-го)см. таблицу: Версия длл Тип устройства Результат ZOpen 2012.9.3.0 10 0xA00 2012.9.3.0 17 0xC00 2011.12.2.0 10 0 (OK) 2011.12.2.0 17 0x900 5.1.0.0 10 0 (OK) 5.1.0.0 17 0x900 Т.е. ни одна из длл не работает с 230-м модулем, подключенным по Ethernet. Жду помощи. версия ПО ZetLab - 06.09.2012 Windows XP SP3
 
Добрый день! Ошибка 0xA00 - устройство с данным numberDSP не подключено (надо проверить значение numberDSP - для Ethernet оно скорее всего начинается с номера 67) Ошибка 0xC00 (для 230) это ошибка несовпадения версий
 
Спасибо за разъяснения. Действительно, для Ethernet numberDSP начинается с 67.
 
Добрый день. Никак не можем разобраться с синхронизацией двух (и более) 230-х модулей. Есть необходимость получать данные с всех каналов двух модулей синхронно (т.е. отсчеты должны сниматься одновременно с каналов обоих модулей). Пытаемся читать самописной программой (которая функционально собственно почти полностью содрана с Вашего примера) При установке режимов ведущий и ведомый, соединения 8-го пина цифрового порта и подаче на все каналы синусоиды в 1000 Гц частотой: 1) снимаемые отсчеты стартуют не синхронно (возможно тут необходимо учитывать порядок вызова ZStartADC для ведущего и ведомого модулей, подскажите как тут быть) 2) по характеру снимаемых с двух модулей синусоид видно, что частота дискретизации у них немного разная (в следствии чего синусоиды, построенные только по отсчетам то сходятся то расходятся с большим периодом) Как решение этих проблем вижу установку одного из модулей "Задатчиком синхронизации", и организация дискретизации с одной частотой. Но в документе ZET 2xx Base.pdf в п.4.2.3 есть описание старого интерфейса настройки, а в новом пункта "Задатчик синхронизации" нет. Заранее спасибо за ответ.
 
Добрый день! Единственное, что нужно, чтобы устройства все были одного типа. 1)Порядок вызова ZStartADC: сначала запускаются ведомые устройства (в режиме ожидания внешнего сигнала запуска), затем запускается ведущее устройство, которое подает сигнал ведомым. 2)Соединять нужно несколько ножек. Их функции описаны: в пункте 4.2.3 описана цифровая ножка 8 как источник управления - то есть это сигнал внешнего запуска. Помимо этого в пп. 4.2.3.1 и 4.2.3.2 описаны еще цифровые ножки 7 и 6 - по ним передается внешняя частота дискретизации АЦП и ЦАП. Если используется Диспетчере устройств, то во вкладке "Синхронизация" выставить в задатчике флажок Ведущий, а в остальных - Ведомый 3) Настройка синхронизации по цифровому порту: Код // проверка значения err после каждого вызова опущена для краткости long err; // настройка задатчика синхронизации err = ZSetEnableExtStartADC(typeDSP, numberDSP, 1); err = ZSetEnableExtFreqADC(typeDSP, numberDSP, 1); err = ZSetMasterSynchr(typeDSP, numberDSP, 1); // получаем частоту с задатчика double freq; err = ZGetExtFreqADC(typeDSP, numberDSP, &freq); // настройка ведомых устройств err = ZSetEnableExtStartADC(typeDSP, numberDSP, 1); err = ZSetEnableExtFreqADC(typeDSP, numberDSP, 1); err = ZSetExtFreqADC(typeDSP, numberDSP, freq); err = ZSetMasterSynchr(typeDSP, numberDSP, 0), потом ZStartADC в указанном порядке. Вот такой пример должен работать. Сообщите еще, пожалуйста, какой пример Вы используйте?
 
Используемый пример - Пример работы с драйвером с использованием библиотеки ZADC.dll. Программа написана на Microsoft Visual С++ 6.0. со страницы Программирование с вашего сайта. Т.е. с этого адреса http://www.zetms.ru/support/programming/index.php
 
Описание приведенных Вами функций отсутствует в имеющемся в примере модуле Zadc_int.h. После внесения их в *.h-файл, линкер выдает unresolved external symbol. Скажите, как у Вас можно получить актуальные версии Zadc_int.h и Zadc.lib. Если не трудно можете выслать мне на адрес k1981ua@mail.ru С уважением, Виталий.
 
Добрый день! Файлы высланы.
 
Спасибо!
 
Добрый день! Скопилось еще несколько вопросов: 1) функция ZGetExtFreqADC(typeDSP, numberDSP, &freq) в параметре частоты всегда(на разных частотах 2500, 25000 и 50000Гц) возвращает 12800000. Это так и должно быть? 2) есть ли способ получения данных с 230-х модулей напрямую, т.е. без Zadc.dll? Их протокол обмена открытый? 3) При считывании данных с приборов они идут пачками по несколько тысяч сэмплов, иногда при частоте дискретизации 25000 Гц пачки составляют 20-30 тыс. сэмплов (т.е. 160-1400 тыс. байт ( *4 канала*2байта)). Такое поведение нормально? По ощущениям ЗетЛаб считывает данные меньшими порциями. Заранее спасибо за ответы.
 
Добрый день! 1) да, это опорная частота, затем данные проходят через фильтр, чтобы исключить возможные помехи и получить требуемую частоту 2) нет, единственный способ это работа через интерфейс Zadc.dll Протокол обмена между драйвером и ПО может быть в любой момент изменен, в связи с чем его сопровождение за пределами компании сильно затруднено 3) это связанно с особенностями протокола USB: передача данных от устройства происходит пакетами одинакового размера; драйвер же (в целях производительности) буферизует эти данные в своей внутренней памяти, а внешний буфер заполняет после получения нескольких пакетов.
 
Добрый день! А если 3-й вопрос касается Ethernet-модулей, такое поведение нормально? сейчас подключено два 230-х модуля, если их подключить восемь, они смогут нормально передавать все данные без потерь и больших задержек? Может посоветуете как следует организовывать Ethernet-сеть для гарантированного обеспечения нормальной работы? С уважением, Виталий
 
Добрый вечер! При работе по интерфейсу Ethernet данные также буферизуются пакетами (разве что размеры и количество пакетов во внутреннем буфере могут отличаться от USB). Данные передаются по TCP/IP и не должны теряться, однако при увеличении частоты увеличиваются также и возможные задержки.
 
Добрый день! Возник вопрос касающийся генерации сигнала на выходе "Генератор 1" модуля 230-го (или 220-го). Откомпилировав и запустив последний пример Test_DAC, установив нужные typeDevice и numberDSP (17 и 67 соответственно, у нас Ethernet-модуль) видим что ZOpen и вобщем-то остальные функции отрабатываю нормально. Стартует, доходит до цикла генерации, входит в него, но ничего на выходе Генератора 1 нет. Пробовали забить буфер DAC значениями вручную - все равно ничего нет. Скажите может есть другой пример или мы что-то делаем не так? Какой алгоритм работы для генерирования напряжения на выходе Генератора 1? Может мы что-то не учитываем?
Страницы: 1 2 След.
Читают тему