[Из песочницы] Блоки сбора информации. Введение

9fcc91c9f8f8f83765b773ad308116fc.jpgМногие на Хабре применяют АЦП в различных проектах, начиная от «Умного дома», виртурилок, музыкальных игрушек на STM и заканчивая самодельными фазовыми лазерными дальномерами. Спектр применения довольно широкий, однако, зачастую все сводится к тому, чтобы получать данные от одного АЦП с небольшой частотой (десяток Гц на канал), обрабатывать данную выборку и выдавать какой-то управляющий результат, либо просто значение на экран.

А теперь представим, что снимать данные необходимо не с одного АЦП, а к примеру, с сотен или нескольких тысяч, да еще и с частотой в диапазоне 5–200 кГц. Также можно добавить требования работы в реальном времени, регистрации данных без потерь, либо учитывая их. В общем, к чему тут фантазировать. Проще представить достаточно большой стенд для тестирования автомобиля, двигателя или корпуса самолета.Если пытаться организовать сбор данных по каналу на отдельный контроллер, то стоимость такой системы будет сопоставима со стоимостью самого двигателя, либо чуть меньше. Вот тут на помощь приходит Блок Сбора Информации (БСИ).

К БСИ предъявляются различные требования по рабочей температуре, давлению, влажности, защищенности и т.д. Многие из этих требований к технике регламентируется в стандарте KT-160D. В зависимости от условий применения данная система может быть отнесена к условному классу:

Стендовое (промышленное) применение — рабочие условия работы: 0… +50 º C, влажность не более 85%, отсутствие требований к работе в атмосфере с пониженным давлением, механическим ударам и синусоидальной вибрации. Полевое применение — рабочие условия работы: -40… +70 º C, влажность не более 95% в течение двух часов, работа в атмосфере с пониженным давлением до 26,8 кПа, устойчивость к механическим ударам одиночного и многократного действия до 20 g, устойчивость к линейному ускорению. Применение в жестких условиях — Рабочие условия работы: -55… +75 º C, влажность не более 95% в течение двух часов, работа в атмосфере с пониженным давлением до 0,26 кПа, устойчивость к механическим ударам одиночного и многократного действия до 150 g, устойчивость к линейному ускорению. Данная классификация весьма условна, потому как перед разработкой БСИ определяется класс устройств. Класс присваивается в зависимости от многих параметров. К примеру, гражданский или военный самолет/вертолет предъявляют разные требования по вибрации (надеюсь, читатели догадываются сами почему). Поэтому, сначала выбирают объект применения, затем место работы прибора в этом объекте (не/обитаемый блок от этого зависит давление), присваивается класс устройству и только после присвоенного класса можно разрабатывать устройство исходя из требований стандартов и ГОСТ.Другой вариант разработки устройства — сначала сделать, а потом уже доработать до определенного класса.Для жестких условий БСИ выполняются в едином корпусе с групповыми разъемами. Единый корпус позволяет сделать конструкцию достаточно жесткой. За счет увеличения габаритов блок получает подогрев, защиту от вибраций и ударов. Групповые разъемы лучше обеспечивают герметичность, теперь соляной туман не страшен. Если не так важна герметичность, то габариты позволят сделать нормальную вентиляцию внутри корпуса.

ff3bd14b654e0eb059dcaae993ae51e3.jpg

А этот БСИ предназначен для полевого использования. Требования более мягкие, соответственно, можно установить индивидуальные модули:

886b1f4f5550932c00cd90da9a5046cb.jpg

Основными функциями БСИ являются — сбор данных и их хранение. Помимо сбора БСИ может передавать данные на операторскую станцию, где в режиме реального времени оператор контролирует значения всех каналов. Особо «умные» БСИ перед получением данных позволяют запрограммировать свои каналы (задать частоту опроса, режимы коммутации, диапазоны входных значений, подключение шунтов и многое-многое другое), сохранять данные с каналов, как у себя внутри (на NAND/Flash), так и передавать на PC для последующего сохранения и обработки.

Глядя на изображение БСИ с индивидуальными разъемами можно частично понять из каких частей состоит БСИ.Обычно в БСИ выделяют следующие компоненты:

Контроллер — плата с процессором, который обеспечивает различные интерфейсы связи с PC и сбор данных. Бэкплейн (backplane) — фактически, упрощенная материнская плата, в которую вставляются отдельные модули Блок питания — тут и так все ясно. Хотелось бы отметить, что для жестких условий эксплуатации при температуре от -40 °С сначала начинают подогревать блок питания и контроллер, чтобы они после нагрева (до -30°С) сумели стартовать. Корпус — определяется исходя из требований к внешним воздействиям. Модули — отдельные платы, обеспечивающие прием данных с АЦП и их передачу в контроллер. National Instruments наглядно показывает, какие БСИ они разрабатывают: 3476e840e4d4c843ef197c34c2978579.jpg

Рассмотрим немного подробнее контроллер. Как минимум он реализует следующие функции:

связь устройства с PC настройку модулей получение данных от модулей обработку данных (фильтрация опционально) передачу данных на PC хранение данных на NAND/Flash (опционально) В качестве ядра контроллера можно рассмотреть несколько вариантов (нередко встречаются на практике):

adsp 2191 — ПО на assembler, интерфейсы для связи с PC (ethernet) — дополнительная физика Cyclone III/IV — ПО на VHDL/Verilog, soft-процессор Nios II (ПО на С/С++), интерфейсы для связи с PC (ethernet) — дополнительная физика (IP-ядра для подключения) OmapL137/138 — ПО на С/C++, ядро ARM9/DSP, встроенный Ethernet Xilinx Zynq — ARM9/FPGA, встроенный USB Для выбора ядра необходимо разобраться, какая стоит задача и как ее лучше решить. Возвращаемся к нашим АЦП.В многоканальной системе некоторая группа каналов может быть схожа по характеристикам. К примеру, каналы для датчиков температуры. Если нет серьезных требований по погрешности и частоты опроса менее 1000 Гц, то нет необходимости отдельному каналу давать отдельное АЦП. В этом случае идеально подойдут модули с коммутируемым АЦП.

f2f0b68cf0791fd106282f8d626de960.jpg

На коммутируемом модуле располагается один АЦП, несколько коммутаторов и групповой входной разъем. Обычно у таких модулей 4, 8, 16, 32 канала. Такая экономия на АЦП приводит к некоторым ограничениям.

При частоте опроса в 100 Гц для одного канала период опроса составляет 10 мс. За это время необходимо получить одно значение с АЦП. Модуль с 32 каналами должен за те же 10 мс получить данные с АЦП 32 раза. Для одного канала время с 10 000 мкс уменьшается до 312 мкс.

Получение данных происходит следующим образом:

скоммутировать канал вычитать данные с АЦП передать данные в контроллер (опционально) скоммутировать следующий канал и т.д. Каждая из операций занимает время. К примеру, запись конфига регистров по SPI может занимать порядка 10–20 мкс. Вычитка АЦП 1–5 мкс.Но при таком алгоритме вычитки появляются побочные эффекты в виде взаимовлияния каналов, когда значение физ. величины на одном канале начинает влиять на другой. Чтобы этого избежать, между получением данных с разных входных линий производится коммутация АЦП на землю. За это время заземления часть заряда с предыдущего канала уходит.Таким образом, появляется понятие циклограммы — коммутация каналов и земли к АЦП по жестким таймингам.

К примеру, на частоте 100 Гц обычно обеспечивается коммутация АЦП на канал — 150 мкс, на землю 100 мкс.

Если выставить значения порядка 5 мкс, то можно наблюдать заметное взаимовлияние, подавая на оба каналы различные синусоиды. Чем меньше времени проводит АЦП между сбором данных с разных каналов, тем больше взаимовлияние, т.е. увеличивается погрешность модуля.

Полная противоположность коммутируемым модулям — модули с независимыми АЦП. Такие модули могут независимо настраивать отдельный канал — по частоте, по диапазону входных значений и многим параметрам. Казалось бы все замечательно, только стоимость таких модулей увеличивается за счет бОльшего количества АЦП.

a3ae65d34b6387025110a3749b90b598.jpg

В следующей статье будут рассмотрены некоторые вопросы из следующего списка:

алгоритмы получения данных от АЦП выбор вычислительного ядра для контроллера выбор вычислительного ядра для модуля обмен данными между модулями и контроллером получение данных от высокоскоростных модулей

© Habrahabr.ru