Меню
+7 (495) 785-95-25
sale@lcard.ru
sale@lcard.ru
Страницы 1
|
||||
|
Временной порядок опроса в LTR114Предположим частота опроса каналов модуля 1Гц. В какой момент производится измерение? Два варианта: |
|||
|
||||
|
Re: Временной порядок опроса в LTR114Здравствуйте.
|
|||
|
||||
|
Re: Временной порядок опроса в LTR114alexko пишет:
В течение времени TCONV. |
|||
|
||||
|
Re: Временной порядок опроса в LTR114У меня какая-то непонятная проблема, она не появлялась пока частоты опросы были большими. Но вот я захотел потестить запись у указал два модуля с разными частотами опроса. Проблемка summary: Запаздывание в показаниях каналов LTR114 при частоте опроса 1 Гц Меандр генерируется генератором с частотой 0.1 Гц амплитудой от -0.025V до +0.025V В крейте u3 опрашиваются два модуля 5-й (LTR114 или u3_m5, с частотой 1Гц) и 12-й (LTR 27 или u3_m12, с частотой 10Гц Модуль LTR114 (опрос 1Гц) стартует долго (более 6 секунд) видимо из-за начальной автокалибровки. Если оба модуля опрашивать с частотой 10Гц, то запаздывания нет, автокалиброка мгновенная. |
|||
|
||||
| ||||
|
||||
|
Re: Временной порядок опроса в LTR114Приведенное ПО Вы сами пишите? |
|||
|
||||
|
Re: Временной порядок опроса в LTR114AL> Приведенное ПО Вы сами пишите? Да. Это OPC сервер с возможностью записывать данные опроса. AL> Я правильно понял, что для LTR114 Вы опрашиваете два канала, а на Да, потому что на графике выводится запись с диска, а записывались только первые каналы каждого модуля (для наглядности). AL> Тогда, учитывая что LTR114 --- АЦП с коммутацией каналов и опрашивает каналы У LTR114 1 Гц это частота дискретизации модуля. Т.е. число логических каналов 2 и делитель 4000. После LTR114_Recv и LTR114_ProcessData два канала заносятся в массив OPC тегов сервера, а первый канал, помеченный на запись, пишется в файл. Запись в файл идет отдельной ниткой. У каждого тега свой буфер значений. Как только буфер тега заполняется, то выдается сигнал и по нему происходит сброс буфера в файл и создается новый буфер тега. Таким образом, файл записи состоит теговых буферов. AL> Две нити (потока) - имеется ввиду по нити на модуль? Я имел в виду, что каждого модуля своя нитка, которая работает через ltr_module::DataThread(void *arg) AL> Как вообще происходит привязка данных разных модулей к единому Наверно трудно объяснить коротко. Но, я хочу сказать, посмотреть процесс опроса можно путем распечатки самого блокового файла записи: |
|||
|
||||
|
Re: Временной порядок опроса в LTR114Правильно ли я понял, что время в файле это по сути время когда выполнилась ProcessData() для модуля? Ну все же значит по делителю и по тому, что данные каждого канала обновляются раз в секунду, то частота самого модуля - 2 Гц и соответственно частота приема кадров - 1 Гц. А такое же файл для частоты LTR114 в 10 Гц можете выложить? и допустим для 2.5 Гц? |
|||
|
||||
|
Re: Временной порядок опроса в LTR114Хотя в принципе те данные, что в Вашем файле объяснимы. LTR114 измеряет каналы последовательно, сперва первый, затем второй. Т.е. цикл коммутации + измерения одного канала занимает 0.5 с. Задержку Tпер можно опустить, она в пределах разброса одинакова для обоих модулей, да и по сравнению с секундой незначительна. По данным LTR27 Вы обнаруживаете спад сигнала в 09:19:07:962, В общем для привязки ко времени при таких низких частотах нужно во-первых учитывать этот сдвиг по времени между измерениями разных каналов для АЦП с последовательным опросом каналов (тогда сдвиг в 1.3 сократится до 0.8), а во вторых у Вас в любом случае может быть сдвиг до периода опроса, т.е. в Вашем случае - до 1 с (0.8 тут укладывается), т.к. Вы можете сделать непосредственно измерение перед изменением сигнала, а само изменение увидите только при следующем измерении. Отредактировано Алексей L Card (29.11.2019 15:14:40) |
|||
|
||||
|
Re: Временной порядок опроса в LTR114AL> Правильно ли я понял, что время в файле это по сути время когда Только не время файла, а время сброшенного теговского буфера. Как я говорил, файл записи состоит из буферов тегов (по 500 float значений в каждом буфере). Такой буфер тега на запись создается (в объекте тега) после ProcessData(), при первом вызове функции помещения значения в буфер тега. В этот же момент буфер маркируется временем создания (с точностью до десятой микросекунды, в единицах FILETIME). Каждое (из 500) значение в буфере записи имеет смещение distance (время относительно предыдущего значения). Т.е. при опросе 10 герц distance будет 0.1 сек. Чтобы узнать время N-го значения в буфере нужно сложить все distance от предыдущих значений и прибавить время буфера. AL> Ну все же значит по делителю и по тому, что данные каждого канала Да, раз в секунду принимается два канала. AL> А такое же файл для частоты LTR114 в 10 Гц можете выложить? и Здесь LTR27 10Гц + LTR114 10Гц 30 секунд Для 2.5Гц не получится - максимальный FrequencyDivisor на LTR27 это 255, т.е. минимальная частота опроса LTR27 3.9 Гц. Делаю 4 герца для обоих модулей: Здесь LTR27 4Гц + LTR114 4Гц 30 секунд |
|||
|
||||
|
Re: Временной порядок опроса в LTR114Когда у Вас одинаковая частота, то оба модуля определяют перепад со своей задержкой от 0 до Td, в зависимости от того как будет момент преобразования находится относительно самого фронта по времени (ну у LTR114 еще можно условно прибавить Tconv/2, так как усреднение идет за время Tconv). В общем тут вроде тоже все совпадает. |
|||
|
||||
|
Re: Временной порядок опроса в LTR114Алексей L Card пишет:
Да я это проверю. Пока же я понял, что у меня неточно маркируется время у накопительного блока тега - я создаю этот блок и получаю время блока после ProcessData(), т.е. после приема всех параметров кадра. Т.е. это фктически время прихода посденего параметра кадра. Время блока тега должно определяться перед LTR114_Recv() в момент когда буфер тега еще не создан. Тогда формируя блок после ProcessData() я смогу установить в блоке более точное время и установить правильный distance по каждому параметру принятого блока данных. К тому же тесты надо производить когда в LTR114 1 Гц пишутся оба канала - тогда при распечатке записи лучше видно как происходит процесс опроса. |
|||
|
||||
|
Re: Временной порядок опроса в LTR114Можно также у Вас также уточнить, как по времени модуль LTR27 выдает данные с его восьми мезонинов на которых стоят H27T? Т.е. в случае опроса 10 Гц чтобы получить время второго канала нужно прибавитьо 0.2 сек ко времени перед вызовом LTR27_Recv? |
|||
|
||||
|
Re: Временной порядок опроса в LTR114Для LTR27 измерения со всех каналов выполняются одновременно, в нем нет коммутации каналов. |
|||
|
||||
|
Re: Временной порядок опроса в LTR114Алексей L Card пишет:
А как же тогда заполняются метки времени (массив tmark) при вызове LTR27_Recv()? Ведь каждая метка соответстует элементу принятого массива? |
|||
|
||||
|
Re: Временной порядок опроса в LTR114В массиве tmark возвращается для каждого принятого слова количество меток каждого типа на момент прихода этого слова в сам крейт от модуля. Этот механизм работает независимо от типа модуля. В случае с LTR27, модуль выполняет параллельно преобразование по всем 16 каналам в течении одного периода измерения, после этого передает все эти 16 слов одновременно в крейт. Ну, точнее одновременно ставит на передачу в крейт, т.к. интерфейс между модулем и крейтом последовательный, т.е. по сути все 16 слов соответствуют одному времени и приходят в крейт после завершения периода измерения друг за другом без паузы. Соответственно, у всех 16 слов будет одно значение tmark (ну если не рассматривать крайний случай, когда генерация метки произойдет в момент приема крейтом пачки из этих 16 слов и наложится на этот прием). Поэтому для АЦП без коммутации каналов, где все каналы выполняют преобразование одновременно, можно использовать только одну метку, соответствующую первому каналу, остальные в принципе не несут дополнительной информации. |
|||
|
||||
|
Re: Временной порядок опроса в LTR114Уточните пожалуйста бестолковому еще раз ) Пусть LTR114 опрашивает 2 канала с частотой 1 Гц Я измеряю время перед вызовом LTR114_Recv(): timestamp = get_time() Затем вызываю функцию опроса int size_Recv = LTR114_Recv(<r114, raw_data, NULL, ltr114.FrameLength, 1500); В буфер от LTR114 последовательно пришло два значения. Время первого значения = timestamp |
|||
|
||||
|
Re: Временной порядок опроса в LTR114Если так получать timestamp до Recv, то второй вариант. Время значения i-го канала = timestamp + i/N * Tframe, где i - от 1 до N (не от 0 в этой формуле!), N - кол-во каналов, Tframe - время измерения всего кадра (1 с). Отредактировано Алексей L Card (05.12.2019 13:49:49) |
|||
|
||||
|
Re: Временной порядок опроса в LTR114Всё, разложил и разобрался, сделал правильное формирование времени блока тега (после LTR114_Recv()) Мне также помог случай, когда падение у меандра совпало с моментом измерения первого канала на LTR114 1Гц. Стало особенно ясно как последовательно измеряются каналы на LTR114 при низкой частоте опроса. Максимальное расхождение с опросом LTR27 10Гц не может превышать 1 секунду, что и было достигнуто. |
|||
|
||||
|
Re: Временной порядок опроса в LTR114Касаемо другого модуля LTR11 - я так понимаю, что прием значений в LTR11 также последовательный и определение времени каждого значения в принятом буфере (после LTR_Recv()) будет также как это делается в LTR114 (в этом треде). Т.е. определяем время после LTR_Recv(), и зная число значений в буфере вычисляем время для каждого значения, путем вычитания времени на каждый канал. Я правильно понимаю, что большой разницы нет? |
|||
|
||||
|
Re: Временной порядок опроса в LTR114Да, все правильно. Для модулей с коммутацией каналов, которыми являются LTR114 и LTR11, алгоритм определения времени отсчетов одинаков. |
Страницы 1
Адрес: 117105, Москва, Варшавское шоссе, д. 5, корп. 4, стр. 2
Многоканальный телефон:
+7 (495) 785-95-25
Отдел продаж: sale@lcard.ru
Техническая поддержка: support@lcard.ru
Время работы: с 9-00 до 19-00 мск