Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Вы не вошли. | Поиск | Регистрация | Вход |
Страницы 1
|
||||
|
E502, получение шага и получение делителя для дискретных каналовДобрый день. Для делителя частоты сбора данных с аналоговых каналов есть функция установки и получения, для дискретных есть только установка делителя. Есть ли способ получить делитель для дискретных каналов? Я понимаю, что можно получить его косвенно, получив частоту опроса дискретных каналов и поделив на неё опорную частоту, но это может оказаться неточно (так как частота опроса может быть нецелой). Вообще странно, что для аналоговых есть получение делителя, а для дискретных нету (или я плохо искал? всякое бывает) Второй вопрос - можно ли как-то получить текущее значение шага для прерываний? Мы пытаемся установить свой шаг, и не уверены на 100%, что он установился ровно такой, который мы просили. И третье, возможно я прозевал это в документации, опорная частота 2МГц это 2000000 раз в секунду, или 2*1024*1024 раз в секунду? (я всегда считал, что второе, но один из наших программистов со мной не согласен, поэтому решил уточнить). |
|||
|
||||
|
Re: E502, получение шага и получение делителя для дискретных каналовПо третьему вопросу: спор тут неуместен, см. Наименование и обозначение единицы количества информации "байт" (1 байт = 8 бит) применяются с двоичными приставками "Кило", "Мега", "Гига", которые соответствуют множителям "2^10", "2^20" и "2^30" (1 Кбайт = 1024 байт, 1 Мбайт = 1024 Кбайт, 1 Гбайт = 1024 Мбайт). Данные приставки пишутся с большой буквы. Допускается применение международного обозначения единицы информации с приставками "K" "M" "G", рекомендованного Международным стандартом Международной электротехнической комиссии МЭК 60027-2 (KB, MB, GB, Kbyte, Mbyte, Gbyte) В тоже время, там же см. ДЕСЯТИЧНЫЕ МНОЖИТЕЛИ, ПРИСТАВКИ И ОБОЗНАЧЕНИЯ ПРИСТАВОК ДЛЯ ОБРАЗОВАНИЯ КРАТНЫХ И ДОЛЬНЫХ ЕДИНИЦ ВЕЛИЧИН: В нашем случае частота - это не количество информации (в байтах-битах не измеряется). |
|||
|
||||
|
Re: E502, получение шага и получение делителя для дискретных каналовГарманов Александр пишет:
Правильно ли я понял, что в таком случае делитель частоты должен быть делителем числа 2*10^6 ? То есть произведением двоек и пятёрок в количестве не более чем их будет в двух миллионах? Тогда непонятно, как можно установить делитель частоты 1024*1024, это число не является делителем 2*10^6, а в документации оно указано как максимально возможное значение делителя частоты. |
|||
|
||||
|
Re: E502, получение шага и получение делителя для дискретных каналовX502_DIN_FREQ_DIV_MAX = 1024*1024, страница 46 описания API для E502 |
|||
|
||||
|
Re: E502, получение шага и получение делителя для дискретных каналов
Вы ставите под сомнение, что технически любую опорную частоту можно физически поделить на любое целое число с помощью обычной цифровой (счётной) схемы деления частоты (c заданным любым целым коэффициентом деления)? - Если да, то это - тяжелейшее заблуждение. |
|||
|
||||
|
Re: E502, получение шага и получение делителя для дискретных каналовДобрый день. Байты с их производными по сути являются единственным исключением, где исторически используются двоичные приставки (Кило = 2^10 = 1024 вместо 1000). Хотя с байтами это как раз не так однозначно и в разных областях по разному и по некоторыми документами привычное использование считается некорректным. |
|||
|
||||
|
Re: E502, получение шага и получение делителя для дискретных каналовПо поводу X502_DIN_FREQ_DIV_MAX, то это значение напрямую никак не связано с значением приставки M. Просто минимальная частота получается не 2 Гц, а 1,907 Гц (при опорной 2 МГц). |
|||
|
||||
|
Re: E502, получение шага и получение делителя для дискретных каналовГарманов Александр пишет:
Значит я заблуждаюсь... Я думал, что делить можно лишь нацело, мне казалось, что деление будет происходить взятием, скажем, каждого второго отсчёта, и в итоге частота поделится на два... Попробую найти статьи про эти частоты, если есть какие-то предпочтительные источники - напишите, пожалуйста. PS. До встречи с устройством E502 я ни разу не сталкивался с подобными цифровыми устройствами, поэтому эти термины для меня совершенно новые, и я могу допускать очень глупые ошибки и заблуждения. Я даже не знаю, как именно работает счётная схема деления частоты, лишь предполагаю, что там взводится какой-то счётчик, с помощью которого берётся каждый k-й отсчёт, и в итоге происходит деление на k. |
|||
|
||||
|
Re: E502, получение шага и получение делителя для дискретных каналовАлексей L Card пишет:
А частота (которая реально будет выставлена) будет равна отношению опорной частоты к значению делителя, верно? Алексей L Card пишет:
Работаем через USB. Мы обратили внимание на этот параметр, потому что у нас происходит странная вещь - когда мы запрашиваем много данных, скажем, 10^6 отсчётов, и ставим большой таймаут (подбираем так, чтобы функция Recv ожидала, но не весь таймаут), то после получения данных функция GetRecvReadyCount сообщала, что в буфере остались непрочитанные данные (и так было всегда, нуль в этой ситуации получить не удалось). Стабильный нуль удалось получить только когда мы сначала запрашивали, сколько в буфере есть данных, и потом ровно это количество и считывали. Но и в этой ситуации периодически в плате оставались данные (но в этой ситуации это может быть обусловлено задержками при передаче данных по USB). У нас возникло предположение, что устройство может отдавать данные лишь блоками, кратными величине шага, то есть если, например, шаг равен 100, а мы попросим 150 отсчётов, то он отдаст нам 150 отсчётов, но лишь когда в буфере будет 200 = 2*100 отсчётов (так как по достижении 150 прерывание не будет возбуждено). Поэтому мы пытались выставлять шаг, учитывая запрашиваемый объём данных (пытались делители считать) - получилось пока плохо. Возможно шаг не выставился - не понятно, как проверить, выставился ли он (функция отработала без ошибок, но вдруг она как и функция установки частоты чуть этот шаг изменила). Алексей L Card пишет:
Понял, значит 2 миллиона отсчётов в секунду. Попробую разобраться с делителями, может остальное про частоты станет ясно. |
|||
|
||||
|
Re: E502, получение шага и получение делителя для дискретных каналовВ E502 деление и идет на цело, как Вы описали. Можно взять каждый второй отсчет, можно каждый 999 и т.п. |
|||
|
||||
|
Re: E502, получение шага и получение делителя для дискретных каналовБабуин пишет:
Да, именно так. Бабуин пишет:
В случае с USB передача идет несколько сложнее. Там в самом интерфейсе передачи делятся на пакеты с определенным макс. размером. По возможности контроллер передает данные в одном пакете, поэтому действительно точно шаг может быть не выдержан. Другой вопрос, что не до конца понятно, в чем именно проблема в том, что остаются отсчеты в буфере - Вы просто считаете их следующим заходом? |
|||
|
||||
|
Re: E502, получение шага и получение делителя для дискретных каналовБабуин пишет:
Кроме двоичных счётчиков с модулем счета 2^N, бывают счётчики с произвольным целочисленным модулем счета. Они же выполняют роль делителей частоты. - Откройте любой начальный курс по цифровым устройствам в разделе счётчиков и счётных схем.. ...Но можно и вообще ничего не читать, а просто вспомнить "бытовые" примеры цифровых счётчиков-делителей частоты не только на 2. Счётчик минут в электронных часах делит частоту секундных импульсов на 60. На выходе получаем частоту смены минут 1/60 Гц. Вы же не будете утверждать, что счётчик минут физически реализовать нельзя, имея входную частоту секундных импульсов? Отредактировано Гарманов Александр (24.02.2018 20:23:16) |
|||
|
||||
|
Re: E502, получение шага и получение делителя для дискретных каналовСпасибо. Вроде всё прояснилось. По поводу делителя частоты пример с часами оказался очень удачным. Частота зависит от того, какую единицу времени мы выберем, мы можем выбрать какую-нибудь странную единицу (например иррациональное число секунд), в итоге численное значение частоты не будет иметь нетривиальных множителей, хотя внешне физика процессов не изменится. Как я понял (после вашего объяснения), делитель частоты это любое целое число, если опорная частота равна f, то с помощью делителей мы можем получить любую частоту из ряда f, f/2, f/3, f/4, f/5, ..... (физически это скорее всего происходит просто как взятие каждого k-го отсчёта). То, что частота равна 2000000 Гц никак не влияет на возможности деления, а диапазон делителей от 1 до 1024*1024 это просто некоторое техническое ограничение (диапазон мог бы оказаться равен от 1 до 1024*1024 + 1). Немного подведу итог по вопросам (для себя, и на случай, если кто ещё позже будет читать эту тему). Если в чём ошибаюсь - прошу поправить. МГц это 10^6 герц и никак иначе. По степеням двойки метрические приставки допустимы только для единиц измерения информации (объёма памяти в компьютере) - для байт и для бит (но! по степеням двойки это неофициальная система, в документации и в официальных документах килобайт это всё же 1000=10^3 байт ! по крайней мере в РФ). Делитель это ни в коем случае не "множитель" в математическом смысле, это просто любое натуральное число от 1 до максимального ограничения (теоретически до бесконечности). По поводу получения делителя частоты дискретников и получения шага передачи, пока их отсутствие для нас не критично, если что - напишу повторно, либо самостоятельно добавим их в api (оно по-моему открыто и доступно в репозитории, для теста можно будет немного подправить). Насчёт шага тоже понял, USB может делить на блоки из своих соображений и поэтому точное знание шага нам ничего не даст. То, что после вычитывания данных в памяти на плате остаются данные мешает тем, что в итоге нельзя считать время завершения команды Recv временем рождения последнего отсчёта в блоке, придётся править на число оставшихся в памяти отсчётов. Ну и вообще довольно странно получается - у нас почти стабильно остаётся 8192 отсчёта, "почти" выражается в том, что 1 из 10 считывания их там остаётся 0, остальные разы всегда одно и то же количество (8192). Будем экспериментировать дальше, пока проблем это не вызвало, просто показалось странным, вот мы и стали пытаться что-то менять. |
|||
|
||||
|
Re: E502, получение шага и получение делителя для дискретных каналовВ общих чертах так, разве что Бабуин пишет:
вроде не совсем так, т.к. Александр выше привел ссылку на вполне официальный документ от 2009 года, который утверждает допустимым использовать двоичные приставки (2^10) в РФ с байтом. При этом ранее введенный, но вроде все еще действующий ГОСТ 8.417-2002 называет эту практику некорректной (хотя исторически сложившейся). Также есть МЭК, который для двоичных приставок вводит свои обозначения (в виде кибибайт KiB и т.п.). Я не метролог, поэтому не буду утверждать, что допустимо в официальных документах... Де-факто в РФ как правило двоичные приставки применяются с байтом для объемов памяти, за исключением жестких дисков (и ранее дискет). А в общем главное про байт (кстати только байтом, с битами вроде всегда используются десятичные приставки и такой путаницы нет) смотреть контекст (вот например статья из википедии https://ru.wikipedia.org/wiki/%D0%94%D0 … 0%BA%D0%B8). По поводу именно 8192 отсчета, которые остаются, - действительно интересно. Как будет время посмотрю, с чем может быть связано, но опять же на работу принципиально влиять не должно. Отредактировано Алексей L Card (26.02.2018 16:59:48) |
Страницы 1
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2
Многоканальный телефон:
+7 (495) 785-95-25
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск