Промышленный контроллер. Система сбора данных. АСУ
Доброго времени суток, Хабр!
Разработка промышленного контроллера с дисплеем для сбора и анализа данных, а также для управления нагрузками, объединенными в группы. Кому интересно, что из этого получилось, прошу под кат.
Тема промышленных контроллеров давно развивается для использования в автоматизированных системах управления (АСУ). Когда я вижу очередной контроллер Siemens, ViewPAC или любого другого производителя, я вижу лишь большой планшет (пишу именно об этом формфакторе, то есть не стоечные варианты) со специализированным софтом внутри, но это лишь на первый взгляд. На самом же деле, чаще всего, схож лишь внешний вид со стороны дисплея, а вот задняя панель имеет интерфейсные разъемы, отсеки для подключения модулей расширения, датчиков, внешних носителей для хранения данных и т.д. Существуют универсальные промышленные контроллеры и узкоспециализированные, то есть предназначенные для выполнения набора задач, чаще всего однотипных.
Именно такой (узкоспециализированный) контроллер мы и разрабатывали. Для начала, пара слов о реализации. Глобально устройство делится на две части. Первая – это модуль на iMX6D, который был нами разработан как раз для реализации таких задач, вторая – это микроконтроллер STM32F103RBT7. Как я уже писал ранее (в предыдущих статьях), именно блочная (модульная) система позволяет быстро реализовывать сложные проекты. В такой системе большая часть аппаратно-программного комплекса уже отлажена, и остается лишь согласовать ее с другими модулями и доработать под конечного заказчика.
iMX6D
Полноценный процессорный модуль (два ядра по 1ГГц), который занимается рядом задач, для взаимодействия с пользователем:
- вывод данных на дисплей/обработка тачскрина;
- Ethernet 10/100/1000;
- синхронизация времени;
- хранение логов событий;
- web-интерфейс + обновление;
- хранение данных профилей;
- сложные расчеты для микроконтроллера.
И это не полный список того, чем занимается модуль.
Рис.1. Процессорный модуль
Web-интерфейс почти полностью повторяет картинку с дисплея, что позволяет легко ориентироваться пользователям и оперативно менять настройки. Реализация, как и в прошлых проектах, на движке “11-parts”. Так как львиную долю задач выполняет микроконтроллер, появилась необходимость обновления его прошивки (также, как и основной) через web. Эта задача стояла особенно остро, так как заказчик планировал обновлять устройства для расширения функционала. Процессорный модуль связан с микроконтроллером по UART (через него происходит и прошивка последнего).
STM32
Микроконтроллер в данном проекте имеет очень важное значение. Во-первых, его использование позволило распараллелить задачи для программистов и выделить два основных направления:
- Взаимодействие с пользователем.
- Сбор данных, обработка и управление.
Во-вторых, модульная система более удобна для отладки, тестирования и расширения функционала.
Данный промышленный контроллер (далее ПК) позволяет обслуживать четыре независимых помещения (группы) с большим количеством датчиков исполнительных элементов.
Конкретно для данного проекта для каждой группы доступны:
- 6 датчиков температуры, объединенные в единую сущность для определения средней;
- 2 независимых датчика температуры;
- 2 датчика влажности;
- 1 датчик CO2;
- 12 каналов управления внешними исполнительными элементами.
Также несколько уличных датчиков:
- 2 независимых датчика температуры;
- 2 датчика влажности.
Итого, получается, что микроконтроллер собирает данные с 48 датчиков и управляет 48 исполнительными элементами. Все датчики температуры аналоговые. Датчики влажности и CO2 имеют токовый интерфейс 4-20мА.
Теперь немного схемотехники. Для коммутации датчиков было решено использовать аналоговые мультиплексоры HCF4051 (у них есть задержка на переключение, но для нашей задачи это было не критично). Именно эта серия уже снята с производства, ее отличие, например, от CD4051 только в скорости переключения (ну и в производителе). Таких мультиплексоров в контроллере шесть. Переключение всех мультиплексоров происходит одновременно (одними и теми же ножками микроконтроллера), что значительно сокращает ресурсы и время считывания. На микроконтроллере, соответственно, задействовано шесть каналов АЦП.
Рис.2. Схема включения мультиплексоров
Для каждого температурного датчика используется отдельный источник опорного напряжения TL431 (в корпусе SOT-23), таким образом, при КЗ на одном из датчиков остальные продолжают работать также, как и прежде. Для подачи питания на все опорники используется LM1117 на 3,3В. Питание платы осуществляется от внешнего источника DC24V, поэтому для вторичных питаний используются два одинаковых DC/DC TPS54560DDAR (формирование 12В и 5В), так как использую их уже не в первом проекте. 3,3В получается из 5В с помощью ST1S10.
Рис.3. Расположение питателей на плате
Для управления внешними нагрузками обычно используются реле, срабатывающие от подачи переменки 24В. Поэтому на каждую группу подается AC24V, которые коммутируются симисторами BT138-600 через оптронную развязку. Схема представлена ниже. Работает все стабильно.
Рис.4. Схема управления на симисторах
Рис.5. Группа разъемов датчиков и сигналов управления на плате
Программы управления хранятся на отдельной EEPROM, подключенной к микроконтроллеру. Там же хранятся начальные параметры при горячем включении и последнее состояние всей системы (чтобы можно было продолжить исполнение программы).
Понятно, что на микроконтроллере не хватает GPIO для управления таким количеством оптронов (да и не гуманно через всю плату тащить столько проводников), поэтому используются расширители портов TCA6424ARGJR, по одному на две группы и один системный (обработка нескольких входных сигналов, обработка системных кнопок, светодиода индикации и т.д.).
Реле, которое хорошо видно на Рис.5. (по одному на каждую группу), используется для определения наличия входного напряжения AC24V и исправности предохранителя на каждую группу. При срабатывании оно отправляет сигнал на микроконтроллер, который, в свою очередь, оповещает о неисправности.
Синхронизация времени происходит по протоколу NTP, но также имеется микросхема RTC PCF8523 (тоже неоднократно использовалась) для подсчета времени в отсутствии напряжения питания.
Рис.6. Схема RTC
Отображение
Управление ПК происходит оперативно с помощью тачскрина и удаленно через web. Как я уже говорил, интерфейс браузера (этот функционал еще в доработке) повторяет экран. В данный момент написано приложение на Qt, которое общается с ПК напрямую по mqtt и максимально приближено к реальности. В web, на данный момент, имеются общие настройки устройства, организация доступа и обновления софта.
Рис.7. Отображение данных в приложении на Qt
Рис.8. Отображение данных на дисплее
Такого рода контроллеры позволяют строить полноценные АСУ для промышленных комплексов. Функционал и набор датчиков, как правило, различен и соответствует требуемым задачам, но назначение одно – мониторинг и/или управление. Для больших систем можно наращивать количество контроллеров, объединенных одними задачами. Контроллер может не содержать дисплея, а управляться по сети (Ethernet).
Рис.9. Небольшая партия
Спасибо за внимание и до скорых встреч!