FAQ: Можно ли обрабатывать данные от АЦП на ПК в реальном времени, отсчет за отсчетом?

К сожалению, едва ли, если только речь не идет о медленном процессе (например, с характерным временем реакции в десятки или сотни миллисекунд).

Дело в том, что обычный персональный компьютер с обычной операционной системой не является системой реального времени, а передача данных через интерфейсы (USB, Ethernet) происходит блоками по определенным протоколам (с шинами PCI/PCIe несколько лучше, но тоже есть особенности).

Физический момент времени, когда АЦП измерил напряжение и сформировал отсчет цифрового сигнала, отстоит от момента, когда это числовое значение будет обработано программой на компьютере, на заметное время – а главное, что это время случайное. Оно определяется как аппаратурой, так и программным обеспечением, зависит от логики операционной системы и драйверов, от загрузки процессора и от выполняемых параллельно программ. В многозадачной ОС всегда много процессов, даже если пользователь не запускает специально "посторонних" программ. Даже перемещение мыши может быть заметно. А уж если, например, параллельно обрабатывается пришедшая электронная почта или решил поработать в фоновом режиме антивирус, то могут возникать задержки совсем другого порядка.

...А если компьютер зависнет?

Иначе говоря, время физического процесса, оцифрованного АЦП, лучше всего считать не связанным со временем исполнения программы.

Для программы, обрабатывающей данные, время физического процесса – это порядковый номер отсчета сигнала, умноженный на период дискретизации.

Если нужно сихронизироваться с каким-то внешним событием, можно использовать специальные средства синхронизации (например, пуск АЦП от внешнего синхросигнала); в некоторых изделиях "Л Кард" (например, в крейтовой системе LTR) предусмотрены специальные механизмы для привязки отсчетов сигнала к реальному времени, в том числе синхронизированному с эталонным источником.

Если нужна система с быстрыми обратными связями, то стоит задуматься о программировании на уровне микроконтроллеров (сигнальных процессоров), встроенных в сами приборы. Это не обязательно означает разработку собственного прибора: например, некоторые изделия "Л Кард" предусматривают возможность такого перепрограммирования, то есть можно написать свою нестандартную "прошивку" к готовому прибору и использовать её вместо штатной.
Такой переделанный прибор может стать автономным (и из установки исключится ПК), либо можно сохранить (или сделать свой) протокол связи с ПК, чтобы оставить за ним диалог с оператором, визуализацию результатов, запись на диск и прочие задачи "нереального" времени. В случае платы PCI или PCI Express с сигнальным процессором "на борту" при низкоуровневом программировании этого процессора получится подсистема реального времени внутри ПК, и на неё можно возложить задачи, требующие обработки и реакции в реальном времени.

Наконец, для некоторых нетребовательных задач (например, в лабораторном опыте, который при неудаче нетрудно повторить) можно попробовать несколько приблизиться к "условно реальному" времени и на обычном ПК, если читать поток данных небольшими порциями и надеяться на то, что случайные задержки не превысят некоторых "типичных для этой установки" значений.
При этом надо осознавать, что такая программа может получиться весьма нестабильной и сбиваться от случайных задержек, поэтому ещё раз повторим: такой подход можно считать приемлемым для неответственных задач – таких, где сбой не может привести к поломке, где допустимо отбросить неудачное измерение и повторить опыт, и т.д.

Тем не менее нас часто спрашивают, на какое "типичное" время отклика можно ориентироваться. На этот вопрос нельзя дать уверенного ответа, т.к. всё зависит от интерфейса (как от его типа, так и конкретной реализации в ПК и в приборе), от конфигурации ПК, от операционной системы и т.д. Ниже приведены некоторые цифры, которые следует рассматривать только как оптимистические оценки порядков величин (полученные обычно в единчном опыте или из теоретических допущений), а ни в коем случае не как гарантированные параметры.

  1. USB (на примере E14-140-M): миллисекунды, десятки миллисекунд
    (Тестировалось с ПК на процессоре Celeron 2.6 ГГц, на ненагруженной системе, с высоким приоритетом выполнения программы.)
    – опрос цифровых входов: около 4 мс на цикл (250 чтений или 125 циклов чтение-запись в секунду);
    – повторитель сигнала с АЦП на ЦАП, 1 канал, частота дискретизации 100 кГц: запаздывание 6.4 мс;
    – компаратор (отслеживание уровня сигнала и индикация на цифровом выходе "выше/ниже порога"): случайное западзывание 3...4 мс.
  2. (продолжение следует...)

 

Перейти к другим статьям FAQ       Cтатья создана:14.08.2014
Последняя редакция:04.08.2016

Контакты

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

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

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

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