Российский производитель и разработчик сертифицированного измерительного оборудования с 1987 года

E502, получение шага и получение делителя для дискретных каналов

Вы не вошли.

 Поиск | Регистрация | Вход 

22.02.2018 16:06:45
#1

Участник
Откуда: МО
Здесь с 01.12.2017
Сообщений: 24

E502, получение шага и получение делителя для дискретных каналов

Добрый день.

Для делителя частоты сбора данных с аналоговых каналов есть функция установки и получения, для дискретных есть только установка делителя. Есть ли способ получить делитель для дискретных каналов? Я понимаю, что можно получить его косвенно, получив частоту опроса дискретных каналов и поделив на неё опорную частоту, но это может оказаться неточно (так как частота опроса может быть нецелой). Вообще странно, что для аналоговых есть получение делителя, а для дискретных нету (или я плохо искал? всякое бывает)

Второй вопрос - можно ли как-то получить текущее значение шага для прерываний? Мы пытаемся установить свой шаг, и не уверены на 100%, что он установился ровно такой, который мы просили.

И третье, возможно я прозевал это в документации, опорная частота 2МГц это 2000000 раз в секунду, или 2*1024*1024 раз в секунду? (я всегда считал, что второе, но один из наших программистов со мной не согласен, поэтому решил уточнить).

22.02.2018 16:41:44
#2

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: E502, получение шага и получение делителя для дискретных каналов

По третьему вопросу: спор тут неуместен, см.
http://www.fundmetrology.ru/depository/01_npa/po879.pdf

Наименование и обозначение единицы количества информации "байт" (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)

В тоже время, там же см. ДЕСЯТИЧНЫЕ МНОЖИТЕЛИ, ПРИСТАВКИ И ОБОЗНАЧЕНИЯ ПРИСТАВОК ДЛЯ ОБРАЗОВАНИЯ КРАТНЫХ И ДОЛЬНЫХ ЕДИНИЦ ВЕЛИЧИН:
10^6 мега - M(международное) - М(русское)

В нашем случае частота - это не количество информации (в байтах-битах не измеряется).

22.02.2018 16:59:22
#3

Участник
Откуда: МО
Здесь с 01.12.2017
Сообщений: 24

Re: E502, получение шага и получение делителя для дискретных каналов

Гарманов Александр пишет:

По третьему вопросу: спор тут неуместен, см.
http://www.fundmetrology.ru/depository/01_npa/po879.pdf

Наименование и обозначение единицы количества информации "байт" (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)

В тоже время, там же см. ДЕСЯТИЧНЫЕ МНОЖИТЕЛИ, ПРИСТАВКИ И ОБОЗНАЧЕНИЯ ПРИСТАВОК ДЛЯ ОБРАЗОВАНИЯ КРАТНЫХ И ДОЛЬНЫХ ЕДИНИЦ ВЕЛИЧИН:
10^6 мега - M(международное) - М(русское)

В нашем случае частота - это не количество информации (в байтах-битах не измеряется).

Правильно ли я понял, что в таком случае делитель частоты должен быть делителем числа 2*10^6 ? То есть произведением двоек и пятёрок в количестве не более чем их будет в двух миллионах? Тогда непонятно, как можно установить делитель частоты 1024*1024, это число не является делителем 2*10^6, а в документации оно указано как максимально возможное значение делителя частоты.

22.02.2018 17:01:22
#4

Участник
Откуда: МО
Здесь с 01.12.2017
Сообщений: 24

Re: E502, получение шага и получение делителя для дискретных каналов

X502_DIN_FREQ_DIV_MAX = 1024*1024, страница 46 описания API для E502

22.02.2018 17:05:32
#5

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: E502, получение шага и получение делителя для дискретных каналов

Правильно ли я понял, что в таком случае делитель частоты должен быть делителем числа 2*10^6 ? То есть произведением двоек и пятёрок в количестве не более чем их будет в двух миллионах? Тогда непонятно, как можно установить делитель частоты 1024*1024, это число не является делителем 2*10^6, а в документации оно указано как максимально возможное значение делителя частоты.

Вы ставите под сомнение, что технически любую опорную частоту можно физически поделить на любое целое число с помощью обычной цифровой (счётной) схемы деления частоты (c заданным любым целым коэффициентом деления)? - Если да, то это - тяжелейшее заблуждение.

22.02.2018 17:23:18
#6

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,291

Re: E502, получение шага и получение делителя для дискретных каналов

Добрый день.
1. Функции действительно есть только для установки значений. Получения действительно не сделаны, т.к. Вы знаете, какое значение установили.  В принципе при необходимости можно добавить и Get методы. По поводу пересчета из частоты в делитель, то можно использовать X502_CalcDinFreq(), подав на вход опорную частоту и частоту цифровых линий и получив на выходе делитель.
2. А что Вы хотите добиться установкой явно шага прерывания? по какому интерфейсу работаете?
3. 2 МГц это 2000000 Гц. https://ru.wikipedia.org/wiki/%D0%93%D0 … %B8%D1%8F). В документации это может быть явно не указано, т.к. это обозначение стандартное и по нему как раз разночтений нет (это стандартные приставки СИ).

Байты с их производными по сути являются единственным исключением, где исторически используются двоичные приставки (Кило = 2^10 = 1024 вместо 1000). Хотя с байтами это как раз не так однозначно и в разных областях по разному и по некоторыми документами привычное использование считается некорректным.

22.02.2018 17:27:24
#7

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,291

Re: E502, получение шага и получение делителя для дискретных каналов

По поводу X502_DIN_FREQ_DIV_MAX, то это значение напрямую никак не связано с значением приставки M. Просто минимальная частота получается не 2 Гц, а 1,907 Гц (при опорной 2 МГц).
Внутренне это обусловлено тем, что для ее задания используется заданное число бит, что приводит к тому, что максимальное значение соответствует степени 2. Оно могло быть произвольным.

22.02.2018 17:27:33
#8

Участник
Откуда: МО
Здесь с 01.12.2017
Сообщений: 24

Re: E502, получение шага и получение делителя для дискретных каналов

Гарманов Александр пишет:

Вы ставите под сомнение, что технически любую опорную частоту можно физически поделить на любое целое число с помощью обычной цифровой (счётной) схемы деления частоты (c заданным любым целым коэффициентом деления)? - Если да, то это - тяжелейшее заблуждение.

Значит я заблуждаюсь... Я думал, что делить можно лишь нацело, мне казалось, что деление будет происходить взятием, скажем, каждого второго отсчёта, и в итоге частота поделится на два... Попробую найти статьи про эти частоты, если есть какие-то предпочтительные источники - напишите, пожалуйста.

PS. До встречи с устройством E502 я ни разу не сталкивался с подобными цифровыми устройствами, поэтому эти термины для меня совершенно новые, и я могу допускать очень глупые ошибки и заблуждения. Я даже не знаю, как именно работает счётная схема деления частоты, лишь предполагаю, что там взводится какой-то счётчик, с помощью которого берётся каждый k-й отсчёт, и в итоге происходит деление на k.

22.02.2018 17:37:57
#9

Участник
Откуда: МО
Здесь с 01.12.2017
Сообщений: 24

Re: E502, получение шага и получение делителя для дискретных каналов

Алексей L Card пишет:

Добрый день.
1. Функции действительно есть только для установки значений. Получения действительно не сделаны, т.к. Вы знаете, какое значение установили.  В принципе при необходимости можно добавить и Get методы. По поводу пересчета из частоты в делитель, то можно использовать X502_CalcDinFreq(), подав на вход опорную частоту и частоту цифровых линий и получив на выходе делитель.

А частота (которая реально будет выставлена) будет равна отношению опорной частоты к значению делителя, верно?

Алексей L Card пишет:

2. А что Вы хотите добиться установкой явно шага прерывания? по какому интерфейсу работаете?

Работаем через USB. Мы обратили внимание на этот параметр, потому что у нас происходит странная вещь - когда мы запрашиваем много данных, скажем, 10^6 отсчётов, и ставим большой таймаут (подбираем так, чтобы функция Recv ожидала, но не весь таймаут), то после получения данных функция GetRecvReadyCount сообщала, что в буфере остались непрочитанные данные (и так было всегда, нуль в этой ситуации получить не удалось). Стабильный нуль удалось получить только когда мы сначала запрашивали, сколько в буфере есть данных, и потом ровно это количество и считывали. Но и в этой ситуации периодически в плате оставались данные (но в этой ситуации это может быть обусловлено задержками при передаче данных по USB). У нас возникло предположение, что устройство может отдавать данные лишь блоками, кратными величине шага, то есть если, например, шаг равен 100, а мы попросим 150 отсчётов, то он отдаст нам 150 отсчётов, но лишь когда в буфере будет 200 = 2*100 отсчётов (так как по достижении 150 прерывание не будет возбуждено). Поэтому мы пытались выставлять шаг, учитывая запрашиваемый объём данных (пытались делители считать) - получилось пока плохо. Возможно шаг не выставился - не понятно, как проверить, выставился ли он (функция отработала без ошибок, но вдруг она как и функция установки частоты чуть этот шаг изменила).

Алексей L Card пишет:

3. 2 МГц это 2000000 Гц. https://ru.wikipedia.org/wiki/%D0%93%D0 … %B8%D1%8F). В документации это может быть явно не указано, т.к. это обозначение стандартное и по нему как раз разночтений нет (это стандартные приставки СИ).

Байты с их производными по сути являются единственным исключением, где исторически используются двоичные приставки (Кило = 2^10 = 1024 вместо 1000). Хотя с байтами это как раз не так однозначно и в разных областях по разному и по некоторыми документами привычное использование считается некорректным.

Понял, значит 2 миллиона отсчётов в секунду. Попробую разобраться с делителями, может остальное про частоты станет ясно.

22.02.2018 17:38:49
#10

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,291

Re: E502, получение шага и получение делителя для дискретных каналов

В E502 деление и идет на цело, как Вы описали. Можно взять каждый второй отсчет, можно каждый 999 и т.п.
Но в общем вопрос деления частоты делителем как я выше писал опорной частоты не связан никоим образом с множителями приставок при обозначении единиц измерения.

22.02.2018 17:56:59
#11

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,291

Re: E502, получение шага и получение делителя для дискретных каналов

Бабуин пишет:

А частота (которая реально будет выставлена) будет равна отношению опорной частоты к значению делителя, верно?

Да, именно так.

Бабуин пишет:

Работаем через USB.

В случае с USB передача идет несколько сложнее. Там в самом интерфейсе передачи делятся на пакеты с определенным макс. размером.  По возможности контроллер передает данные в одном пакете, поэтому действительно точно шаг может быть не выдержан. Другой вопрос, что не до конца понятно, в чем именно проблема в том, что остаются отсчеты в буфере - Вы просто считаете их следующим заходом?

22.02.2018 20:20:18
#12

Инженер-электронщик
Откуда: "Л Кард"
Здесь с 21.04.2014
Сообщений: 4,597

Re: E502, получение шага и получение делителя для дискретных каналов

Бабуин пишет:

... Я думал, что делить можно лишь нацело, мне казалось, что деление будет происходить взятием, скажем, каждого второго отсчёта, и в итоге частота поделится на два... Попробую найти статьи про эти частоты, если есть какие-то предпочтительные источники - напишите, пожалуйста

Кроме двоичных счётчиков с модулем счета 2^N, бывают счётчики с произвольным целочисленным модулем счета. Они же выполняют роль делителей частоты. - Откройте любой начальный курс по цифровым устройствам в разделе счётчиков и счётных схем..

...Но можно и вообще ничего не читать, а просто вспомнить "бытовые" примеры цифровых счётчиков-делителей частоты не только на 2.  Счётчик минут в электронных часах делит частоту секундных импульсов на 60. На выходе получаем частоту смены минут 1/60 Гц. Вы же не будете утверждать, что счётчик минут физически реализовать нельзя, имея входную частоту секундных импульсов?

Отредактировано Гарманов Александр (24.02.2018 20:23:16)

26.02.2018 15:46:28
#13

Участник
Откуда: МО
Здесь с 01.12.2017
Сообщений: 24

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). Будем экспериментировать дальше, пока проблем это не вызвало, просто показалось странным, вот мы и стали пытаться что-то менять.

26.02.2018 16:53:48
#14

Сотрудник "Л Кард"
Здесь с 17.04.2014
Сообщений: 1,291

Re: E502, получение шага и получение делителя для дискретных каналов

В общих чертах так, разве что

Бабуин пишет:

но! по степеням двойки это неофициальная система, в документации и в официальных документах килобайт это всё же 1000=10^3 байт ! по крайней мере в РФ

вроде не совсем так, т.к. Александр выше привел ссылку на вполне официальный документ от 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)

Контакты

Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2

Многоканальный телефон:
+7 (495) 785-95-25

Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru

Время работы: с 9-00 до 19-00 мск