Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Вы не вошли. | Поиск | Регистрация | Вход |
Страницы 1
|
||||
|
E502 - получение аналоговых данных в "родном" формате - т.е. int16Hi All! В библиотеке X502 при разборе потока на вход идут данные из буфера в формате int32. На выходе имеем аналоговые данные в формате double. Вопрос. На какое число библиотека множит "штуки АЦП" чтобы получить вольты? Каково значение младшего разряда? Данная проблема весьма критична ибо если писать в формате double файл получается в 4 раза больше чем для формата int16. Jury |
|||
|
||||
|
Re: E502 - получение аналоговых данных в "родном" формате - т.е. int16Для E-502 вначале внутри самого модуля идет применение индивидуальных калибровочных коэффициентов данного экземпляра (которые хранятся в энергонезависимой памяти самого модуля) к коду АЦП и чтобы не потерять точность (дробную часть после умножения кода АЦП на вещественный коэффициент), 16-битный код расширяется до 24 битного сдвигом влево. Соответственно уже 24-битные коды после калибровки передаются наверх в виде 32-битных слов, которые состоят из 24-битного кода и дополнительной информации (формат есть в главе 5.12 низкоуровнего описания https://www.lcard.ru/download/x502_low_level.pdf), которые и получает Recv перед передачей в ProcessData. Калибровочные коэффициенты определены таким образом, чтобы после их применения, напряжение на входе, соответствующее номинальной границе используемого диапазона измерения, соответствовало коду X502_ADC_SCALE_CODE_MAX (6000000). Для перевода в Вольты уже библиотека в ProcessData применяет преобразование y = x * range / X502_ADC_SCALE_CODE_MAX, где y - значение в Вольтах, полученное в результате выполнения ProcessData, x - знаковое целое, соответствующее 24-битному коду, полученный от модуля, а range равно 10, 5, 2, 1, 0.5 или 0.2 в зависимости от настроенного диапазона. Таким образом у Вас есть два варианта: 1. Можно хранить в файле "сырые" 16-битные отсчеты, но с ними хранить и калибровочные коэффициенты данного модуля, и уже вручную выполнять применение калибровочных коэффициентов и переводить в Вольты при чтении, отключив преобразования в модуле и библиотеке. Для этого необходимо: 2. Можно сделать обычный прием значений в Вольтах и дальше использовать свое преобразование из Вольт в 16-битный код, считая, что например максимальное значение 16-битного знакового числа (0x7FFF) соответствует максимальному значению диапазона и получить код как c = (d/range)*0x7FFF с проверкой выхода за диапазон и округлением до границ. Тут не будет конечно 1:1 соответствия разряда кода в файле с разрядом АЦП, но не требует сохранения калибровочных коэффициентов и все позволяет добиться 1/2^15 точности от диапазона измерения. |
|||
|
||||
|
Re: E502 - получение аналоговых данных в "родном" формате - т.е. int16Hi! |
|||
|
||||
|
Re: E502 - получение аналоговых данных в "родном" формате - т.е. int16Для E502 эти коэффициенты записываются при наладке изделия на заводе один раз (если не считать возможной перекалибровки в случае передачи в ремонт и т.п.). |
Страницы 1
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2
Многоканальный телефон:
+7 (495) 785-95-25
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск