Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Использование Module Twins Azure IoT Edge для управления состоянием цепей

История

Обзор:

Azure IoT Edge позволяет периодически подключенным устройствам получать желаемые свойства через «Module Twins» (двойники модулей). Эти двойники можно использовать как конфигурацию желаемого состояния для управления поведением внутри Edge-модулей. Edge-модули запускаются как контейнерные рабочие нагрузки, обеспечивая самовосстановление и быстрый деплой без постоянной связности. Когда интернет доступен, устройства могут использовать облачные сервисы для вызова методов внутри модулей.

В этом проекте мы разрабатываем IoT Edge-модуль с Azure IoT NodeJS SDK, который получает желаемое состояние из облака, конфигурируя GPIO-пины Raspberry Pi для выполнения операций на подключенной цепи с помощью Johnny-Five.

Это открывает интересные сценарии:

Предыстория:

Конфигурация желаемого состояния — популярная концепция для провижининга серверов и обеспечения соответствия в работающих системах. Мы расширяем эту концепцию на цепи, используя сервисы, спроектированные для устойчивости и здоровой работы в зонах с прерывистой связностью. Это позволяет менять поведение подключенной цепи в рантайме и реализовывать сценарии с аппаратной избыточностью.

Azure IoT Edge runtime от Microsoft дает надежную основу. Он работает как сервис на локальном железе и позволяет оркестрацию контейнерных «модулей», конфигурируемых на устройстве в Azure Cloud. Всегда используются два системных модуля: edge-agent (получает и применяет конфигурации деплоя модулей) и edge-hub (кэширует сообщения в облако и обеспечивает межмодульную коммуникацию).

Мы начали с создания Azure IoT Edge модуля на Azure IoT NodeJS SDK. Модуль получает конфигурацию двойника, задающую желаемые и сообщаемые свойства для устройства. Используем Domain Specific Language (DSL), который парсится в конфигурацию Johnny-Five. Это позволяет определить функционирование цепи в облаке и применить к нашему IoT Edge модулю.

Пример конфигурации:

"config": "{\"peripherals\":[{\"type\":\"Led\",\"name\":\"alarm\",\"settings\":{\"pin\":\"GPIO18\"},\"initialState\":{\"method\":\"blink\",\"period\":500},\"outputAlias\":\"alias2\"},{\"type\":\"Button\",\"name\":\"button\",\"settings\":{\"pin\":\"GPIO20\"},\"outputAlias\":\"alias1\"}]}"

Этот пример определяет LED на GPIO18 с initialState — мигание каждые 500 мс. Состояние LED может передаваться другим модулям через outputAlias. Кнопка на GPIO20 публикует изменения состояния в alias1. В такой конфигурации можно независимо реагировать на изменения состояния в дополнительных модулях, маршрутизируя outputAlias.

Сейчас поддерживается конфигурация термометра, LED и кнопки через этот механизм.

Шаги воспроизведения:

Для начала нужна подписка Microsoft Azure с развернутым IoT Hub.

Далее настройте железо: подключите LED к GPIO18 Raspberry Pi. Инструкции здесь.

С готовыми цепью и облачными сервисами установите Azure IoT Edge runtime на Raspberry Pi по этому гайду. Затем вручную провижньте устройство по этим инструкциям.

Создайте специальный деплой в Azure для мигания LED.

Создайте деплой как показано ниже:

URL образа:

toolboc/johnny5onedge:0.0.981-arm32v7

Опции создания контейнера:

{"ExposedPorts":{"9229/tcp":{}},"HostConfig":{"PortBindings":{"9229/tcp":[{"HostPort":"9229"}]},"Privileged":true,"Devices":[{"PathOnHost":"/dev/i2c-1","PathInContainer":"/dev/i2c-1","CgroupPermissions":"rwm"},{"PathOnHost":"/dev/gpiomem","PathInContainer":"/dev/gpiomem","CgroupPermissions":"rwm"}],"Mounts":[{"Type":"bind","Source":"/lib/modules/","Target":"/lib/modules/"}]}}

Desired properties Module Twin:

{
  "properties.desired": {
    "config": "{\"peripherals\":[{\"type\":\"Led\",\"name\":\"alarm\",\"settings\":{\"pin\":\"GPIO18\"},\"initialState\":{\"method\":\"blink\",\"period\":500},\"outputAlias\":\"alias2\"},{\"type\":\"Button\",\"name\":\"on\",\"settings\":{\"pin\":\"GPIO20\"},\"outputAlias\":\"alias1\"}]}"
  }
}

Сохраните. Пропустите «Specify Routes» и «Specify Metrics» до «Target Devices».

Установите Priority 10 и добавьте целевое условие tags.environment='blinK

Читать подробнее… Desired State Configuration for Circuits

Производственный процесс

  1. Мастерство Kubernetes на Azure: проверенные инструменты, советы и лучшие практики
  2. Какой путь Azure сертификации подходит вам? Инсайты от экспертов Cloud Institute
  3. Стоит ли получать сертификацию Azure DevOps? Преимущества и влияние на карьеру
  4. Как сдать экзамен по сертификации Azure DevOps без формального обучения
  5. Мастерство управления облачными затрами: проверенные стратегии для AWS, GCP и Azure
  6. Управляющие цепи: основы, применение и лучшие практики
  7. Оптимизация конфигураций HMI для высокорисковых операций
  8. Продвинутые экранированные кабели для сигнальных цепей: практические методы подключения (Часть 2)
  9. Экранированные кабели для сигнальных цепей: Часть 1 — лучшие практики
  10. Microsoft анонсирует Azure Edge Zones для питания 5G IoT и ИИ нагрузок