Руководство. Реализация эталонной архитектуры решения Для Промышленного Интернета вещей Azure

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

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

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

Взаимодействие — это ключ к быстрому выпуску архитектуры решения, а использование открытых стандартов, таких как OPC UA, значительно помогает добиться этого взаимодействия.

Унифицированная архитектура open Platform Communications (OPC UA) IEC 62541 Open Platform Communications

Это решение использует унифицированную архитектуру (UA) IEC 62541 Open Platform Communications (OPC) для всех данных операционной технологии (OT). Этот стандарт описан здесь.

Эталонная архитектура решения

Упрощенная архитектура (параметры Azure и Fabric):

Схема простой архитектуры IIoT.

Подробная архитектура (только Для Azure):

Схема архитектуры IIoT.

Компоненты

Ниже приведены компоненты, участвующие в этом решении:

Компонент Description
Промышленные активы Набор имитированных рабочих линий OPC-UA, размещенных в контейнерах Docker
Операции Интернета вещей Azure Операции Интернета вещей Azure — это единая плоскость данных для пограничных вычислений. Он включает набор модульных, масштабируемых и высокодоступных служб данных, работающих в пограничных кластерах Kubernetes с поддержкой Azure Arc.
Шлюз данных Этот шлюз подключает локальные источники данных (например, SAP) к Azure Logic Apps в облаке.
Служба Azure Kubernetes s Edge Essentials Эта реализация Kubernetes выполняется на пограничном сервере. Он предоставляет кластеры Kubernetes с одним и несколькими узлами для отказоустойчивой конфигурации Edge. Поддерживаются как K3S, так и K8S. Он работает на встроенном или аппаратном оборудовании класса PC, например промышленном шлюзе.
Центры событий Azure Брокер облачных сообщений, который получает сообщения OPC UA PubSub из пограничных шлюзов и сохраняет их до получения подписчиками.
Обозреватель данных Azure База данных временных рядов и служба интерфейсной панели мониторинга для расширенной облачной аналитики, включая встроенное обнаружение аномалий и прогнозирование.
Приложения логики Azure Azure Logic Apps — это облачная платформа, используемая для создания и запуска автоматизированных рабочих процессов без кода.
Azure Arc Эта облачная служба используется для управления локальным кластером Kubernetes на границе. Новые рабочие нагрузки можно развернуть с помощью Flux.
Хранилище Azure Эта облачная служба используется для управления хранилищем сертификатов OPC UA и параметрами рабочих нагрузок Edge Kubernetes.
Управляемая Grafana Azure Azure Managed Grafana — это платформа визуализации данных, созданная на основе программного обеспечения Grafana grafana Labs. Grafana создается как полностью управляемая служба, размещенная и поддерживаемая корпорацией Майкрософт.
Microsoft Power BI Microsoft Power BI — это коллекция программных служб SaaS, приложений и соединителей, которые работают вместе, чтобы превратить несвязанные источники данных в последовательные, визуально иммерсивные и интерактивные аналитические сведения.
Служба полей Microsoft Dynamics 365 Служба полей Microsoft Dynamics 365 — это готовое решение SaaS для управления запросами выездное обслуживание.
Командир облака UA Это приложение с открытым исходным кодом преобразует сообщения, отправленные в транспорт телеметрии очереди сообщений (MQTT) или брокер Kafka (возможно, в облаке) в запросы клиента и сервера OPC UA для подключенного сервера OPC UA. Приложение выполняется в контейнере Docker.
Действие облака UA Это приложение с открытым исходным кодом запрашивает Обозреватель данных Azure для определенного значения данных. Значение данных — это давление на одном из имитированных рабочих машин. Он вызывает UA Cloud Commander через Центры событий Azure, когда достигается определенное пороговое значение (4000 мбар). Затем ua Cloud Commander вызывает метод OpenPressureReliefValve на компьютере через OPC UA.
Облачная библиотека UA Облачная библиотека UA — это интернет-магазин информационных моделей OPC UA, размещенных здесь фондом OPC.
ПЕРЕВОДЧИК UA Edge Это эталонное приложение с открытым кодом для промышленного подключения преобразуется из собственных интерфейсов активов в OPC UA с помощью W3C Web of Things (WoT) Descriptions в качестве схемы для описания интерфейса промышленного ресурса.

Примечание.

В реальном развертывании то, что является критически важным, как открытие клапана облегчения давления будет сделано локально. Это простой пример того, как достичь цикла цифровой обратной связи.

Облачное хранилище сертификатов OPC UA и сохраненное хранилище

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

Облачная библиотека UA

Вы можете читать информационные модели OPC UA непосредственно из Обозреватель данных Azure. Это можно сделать, импортируя узлы OPC UA, определенные в информационной модели OPC UA, в таблицу для поиска дополнительных метаданных в запросах.

Сначала настройте политику выноски azure Data Обозреватель (ADX) для облачной библиотеки UA, выполнив следующий запрос в кластере ADX (убедитесь, что вы являетесь администратором кластера ADX, настраиваемым в разделе "Разрешения" на вкладке ADX в портал Azure):

.alter cluster policy callout @'[{"CalloutType": "webapi","CalloutUriRegex": "uacloudlibrary.opcfoundation.org","CanCall": true}]'

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

let uri='https://uacloudlibrary.opcfoundation.org/infomodel/download/\<insert information model identifier from the UA Cloud Library here\>';
let headers=dynamic({'accept':'text/plain'});
let options=dynamic({'Authorization':'Basic \<insert your cloud library credentials hash here\>'});
evaluate http_request(uri, headers, options)
| project title = tostring(ResponseBody.['title']), contributor = tostring(ResponseBody.contributor.name), nodeset = parse_xml(tostring(ResponseBody.nodeset.nodesetXml))
| mv-expand UAVariable=nodeset.UANodeSet.UAVariable
| project-away nodeset
| extend NodeId = UAVariable.['@NodeId'], DisplayName = tostring(UAVariable.DisplayName.['#text']), BrowseName = tostring(UAVariable.['@BrowseName']), DataType = tostring(UAVariable.['@DataType'])
| project-away UAVariable
| take 10000

В этом запросе необходимо указать две вещи:

  • Уникальный идентификатор информационной модели из облачной библиотеки UA и введите его в <идентификатор вставляемой информационной модели из облачной библиотеки здесь> в поле запроса ADX.
  • Учетные данные облачной библиотеки UA (созданные во время регистрации) базовый хэш заголовка авторизации и вставьте его в <поле хэша учетных данных облачной библиотеки в> поле запроса ADX. Используйте такие средства, как https://www.debugbear.com/basic-auth-header-generator создать это.

Например, чтобы отобразить информационную модель сервера OPC UA сервера рабочей линии в средстве kusto Обозреватель, доступном для скачивания, выполните следующий запрос:

let uri='https://uacloudlibrary.opcfoundation.org/infomodel/download/1627266626';
let headers=dynamic({'accept':'text/plain'});
let options=dynamic({'Authorization':'Basic \<insert your cloud library credentials hash here\>'});
let variables = evaluate http_request(uri, headers, options)
    | project title = tostring(ResponseBody.['title']), contributor = tostring(ResponseBody.contributor.name), nodeset = parse_xml(tostring(ResponseBody.nodeset.nodesetXml))
    | mv-expand UAVariable = nodeset.UANodeSet.UAVariable
    | extend NodeId = UAVariable.['@NodeId'], ParentNodeId = UAVariable.['@ParentNodeId'], DisplayName = tostring(UAVariable['DisplayName']), DataType = tostring(UAVariable.['@DataType']), References = tostring(UAVariable.['References'])
    | where References !contains "HasModellingRule"
    | where DisplayName != "InputArguments"
    | project-away nodeset, UAVariable, References;
let objects = evaluate http_request(uri, headers, options)
    | project title = tostring(ResponseBody.['title']), contributor = tostring(ResponseBody.contributor.name), nodeset = parse_xml(tostring(ResponseBody.nodeset.nodesetXml))
    | mv-expand UAObject = nodeset.UANodeSet.UAObject
    | extend NodeId = UAObject.['@NodeId'], ParentNodeId = UAObject.['@ParentNodeId'], DisplayName = tostring(UAObject['DisplayName']), References = tostring(UAObject.['References'])
    | where References !contains "HasModellingRule"
    | project-away nodeset, UAObject, References;
let nodes = variables
    | project source = tostring(NodeId), target = tostring(ParentNodeId), name = tostring(DisplayName)
    | join kind=fullouter (objects
        | project source = tostring(NodeId), target = tostring(ParentNodeId), name = tostring(DisplayName)) on source
        | project source = coalesce(source, source1), target = coalesce(target, target1), name = coalesce(name, name1);
let edges = nodes;
edges
    | make-graph source --> target with nodes on source

Для получения наилучших результатов измените параметр на Grouped и на nameLables .Layout

Граф информационной модели станции.

Моделирование производственных линий

Решение использует моделирование производственной линии, состоящее из нескольких станций, с помощью информационной модели OPC UA и простой производственной системы выполнения (MES). Станции и MES контейнеризированы для простого развертывания.

Конфигурация моделирования по умолчанию

Моделирование настроено для включения двух рабочих линий. Конфигурация по умолчанию:

Рабочая линия Идеальное время цикла (в секундах)
Мюнхен 6
Seattle 10
Имя shift Запустить По правому краю
Утро 07:00 14:00:00
День 15:00 22:00
Ночь 23:00 06:00

Примечание.

Время смены находятся в локальном времени, в частности часовой пояс виртуальной машины, на котором размещается имитация производственной линии.

Идентификаторы узлов OPC UA сервера OPC UA станции

Следующие идентификаторы узлов OPC UA используются на сервере OPC UA станции для телеметрии в облаке.

  • i=379 — серийный номер продукта
  • i=385 — количество производимых продуктов
  • i=391 — количество дис карта ированных продуктов
  • i=398 — время выполнения
  • i=399 — неисправное время
  • i=400 - состояние (0=станция готова к работе, 1=работа выполняется, 2=работа выполнена и хорошая часть произведена, 3=работа выполнена и лом произведена, 4=станция в состоянии сбоя)
  • i=406 — потребление энергии
  • i=412 — идеальное время цикла
  • i=418 — фактическое время цикла
  • i=434 - давление

Цикл цифровых отзывов с помощью ua Cloud Commander и UA Cloud Action

Эта эталонная реализация реализует "цикл цифровой обратной связи", в частности, активируя команду на одном из серверов OPC UA в моделировании из облака на основе данных временных рядов, достигающих определенного порогового значения (имитированное давление). Вы можете увидеть давление компьютера сборки в производственной линии Сиэтла, выпущенной через регулярные интервалы, на панели мониторинга данных Azure Обозреватель.

Установка моделирования рабочих линий и облачных служб

Нажатие кнопки развертывает все необходимые ресурсы в Microsoft Azure:

Развернуть в Azure

Во время развертывания необходимо указать пароль для виртуальной машины, используемой для размещения моделирования производственной линии и облачного двойника UA. Пароль должен иметь три из следующих атрибутов: один нижний регистр, один символ верхнего регистра, один номер и один специальный символ. Пароль должен содержать от 12 до 72 символов.

Примечание.

Чтобы сэкономить затраты, развертывание развертывает только одну Windows 11 Корпоративная виртуальную машину для имитации производственной линии и базовой ОС для экземпляра Служба Azure Kubernetes Edge Essentials. В рабочих сценариях имитация производственной линии не требуется, а для базовой ОС для экземпляра Служба Azure Kubernetes Edge Essentials рекомендуется использовать канал долгосрочной обслуживания Windows IoT Enterprise (LTSC).

После завершения развертывания подключитесь к развернутой виртуальной машине Windows с подключением RDP (удаленного рабочего стола). Файл RDP можно скачать на странице портал Azure виртуальной машины в разделе Подключение параметров. Войдите с помощью учетных данных, предоставленных во время развертывания, откройте окно Powershell Администратор istrator, перейдите к каталогу C:\ManufacturingOntologies-main\Deployment и выполните следующую команду:

New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json

После завершения команды установка Служба Azure Kubernetes s Edge Essentials завершена, и вы можете запустить имитацию рабочей строки.

Совет

Чтобы получить журналы из всех рабочих нагрузок и служб Kubernetes в любое время, выполните команду Get-AksEdgeLogs из окна PowerShell Администратор istrator.

Чтобы проверка использование памяти кластера Kubernetes, выполните команду Invoke-AksEdgeNodeCommand -Command "sudo cat /proc/meminfo" из окна PowerShell Администратор istrator.

Запуск моделирования производственных линий

На развернутой виртуальной машине откройте командную строку Windows. Перейдите к каталогу C:\ManufacturingOntologies-main\Tools\FactorySimulationи запустите команду StartSimulation , указав следующие параметры:

    StartSimulation <EventHubsCS> <StorageAccountCS> <AzureSubscriptionID> <AzureTenantID>

Параметры:

Параметр Описание
EventHubCS Скопируйте пространство имен Центров событий строка подключения, как описано здесь.
служба хранилища AccountCS В портал Azure перейдите к учетной записи служба хранилища, созданной этим решением. Выберите "Ключи доступа" в меню навигации слева. Затем скопируйте строка подключения для key1.
AzureSubscriptionID В портал Azure просмотрите подписки и скопируйте идентификатор подписки, используемой в этом решении.
AzureTenantID В портал Azure откройте страницу идентификатора записи Майкрософт и скопируйте идентификатор клиента.

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

    StartSimulation Endpoint=sb://ontologies.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abcdefgh= DefaultEndpointsProtocol=https;AccountName=ontologiesstorage;AccountKey=abcdefgh==;EndpointSuffix=core.windows.net <your-subscription-id> <your-tenant-id>

Примечание.

Если у вас есть доступ к нескольким подпискам Azure, сначала следует войти в портал Azure из виртуальной машины через веб-браузер. Вы также можете переключить клиенты Active Directory через пользовательский интерфейс портал Azure (в правом верхнем углу), чтобы убедиться, что вы вошли в клиент, используемый во время развертывания. После входа оставьте окно браузера открытым. Это гарантирует, что скрипт StartSimulation может упростить подключение к нужной подписке.

В этом решении хранилище сертификатов приложений OPC UA для Облачного издателя UA и имитированное хранилище производственной линии MES и отдельных компьютеров находится в облаке в развернутой служба хранилища Azure учетной записи.

Включение кластера Kubernetes для управления с помощью Azure Arc

  1. На виртуальной машине откройте окно PowerShell Администратор istrator. Перейдите к каталогу C:\ManufacturingOntologies-main\Deployment и запустите CreateServicePrincipal. Два параметра subscriptionID и tenantID можно получить из портал Azure.

  2. Запустите notepad aksedge-config.json и укажите следующие сведения:

    Атрибут Description
    Расположение Расположение группы ресурсов Azure. Это расположение можно найти в портал Azure в группе ресурсов, развернутой для этого решения, но удалите пробелы в имени! В настоящее время поддерживаются регионы eastus, eastus2, westus2, westus2, westus3, westeurope и northeurope.
    SubscriptionId Идентификатор подписки. В портал Azure выберите подписку, которую вы используете, и скопируйте и вставьте идентификатор подписки.
    TenantId Идентификатор клиента. В портал Azure выберите Azure Active Directory и скопируйте и вставьте идентификатор клиента.
    ResourceGroupName Имя группы ресурсов Azure, развернутой для этого решения.
    ClientId Имя ранее созданного субъекта-службы Azure. Служба Azure Kubernetes использует этот субъект-службу для подключения кластера к Arc.
    ClientSecret Пароль для субъекта-службы Azure.
  3. Сохраните файл, закройте окно PowerShell и откройте новое окно PowerShell Администратор istrator. Вернитесь к каталогу C:\ManufacturingOntologies-main\Deployment и запустите.SetupArc

Теперь вы можете управлять кластером Kubernetes из облака с помощью только что развернутого экземпляра Azure Arc. В портал Azure перейдите к экземпляру Azure Arc и выберите рабочие нагрузки. Требуемый маркер службы можно получить с помощью Get-AksEdgeManagedServiceToken окна PowerShell Администратор istrator на виртуальной машине.

Снимок экрана: Azure Arc в портал Azure.

Развертывание операций Интернета вещей Azure на границе

Убедитесь, что вы уже начали имитацию производственной линии и включили кластер Kubernetes для управления с помощью Azure Arc, как описано в предыдущих абзацах. Затем выполните следующие действия:

  1. В портал Azure перейдите в хранилище ключей, развернутое в этом эталонном решении, и добавьте собственное удостоверение в политики доступа, щелкнув , выберите шаблон, выберите, выберите Keys, Secrets & Certificate ManagementNext, найдите и выберите собственное удостоверение пользователя, выберите, оставьте раздел приложения пустым, выберите NextNextи наконецCreate.Access policiesCreate
  2. Включите пользовательские расположения для кластера Kubernetes, подключенного к Arc (называется ontologies_cluster), сначала войдите в подписку Azure с помощью az login окна PowerShell Администратор istrator, а затем выполните запускaz connectedk8s enable-features -n "ontologies_cluster" -g "<resourceGroupName>" --features cluster-connect custom-locations, предоставив resourceGroupName развернутое решение из эталонного решения.
  3. В портал Azure разверните операции Интернета вещей Azure, перейдя в кластер Kubernetes, подключенный к Arc, выберите , выберите , Addвыберите , выберите Azure IoT OperationsExtensionsи выберите Create. На странице "Базовый" оставьте все как есть. На странице "Конфигурация" задайте MQ Mode значение Auto. Вам не нужно развертывать имитированный программируемый контроллер логики (PLC), так как это эталонное решение уже содержит гораздо более существенное моделирование производственных линий. На странице автоматизации выберите Key Vault, развернутый для этого эталонного решения, а затем скопируйте az iot ops init команду, созданную автоматически. На развернутой виртуальной машине откройте новое окно PowerShell Администратор istrator, войдите в правильную подписку Azure, выполнив az login команду, а затем выполните az iot ops init команду с аргументами из портал Azure. После завершения команды выберите Next и закройте мастер.

Настройка безопасности и подключения OPC UA для операций Интернета вещей Azure

Убедитесь, что вы успешно развернули операции Интернета вещей Azure и все рабочие нагрузки Kubernetes и работают, перейдя к ресурсу Kubernetes с поддержкой Arc в портал Azure.

  1. В портал Azure перейдите к служба хранилища Azure, развернутой в этом эталонном решении, откройте Storage browser и затемBlob containers. Здесь вы можете получить доступ к облачному хранилищу сертификатов OPC UA, используемому в этом решении. Операции Интернета вещей Azure используют Azure Key Vault в качестве облачного хранилища сертификатов OPC UA, чтобы сертификаты должны быть скопированы:
    1. В контейнерах BLOB-объектов браузера служба хранилища Azure для каждой имитированной производственной линии перейдите в папку app/pki/trusted/certs, выберите сборку, упаковку и тестируйте файл сертификата и скачайте его.
    2. Войдите в подписку Azure с az loginпомощью окна PowerShell Администратор istrator, а затем запуститеaz keyvault secret set --name "<stationName>-der" --vault-name <keyVaultName> --file .<stationName>.der --encoding hex --content-type application/pkix-cert, предоставив keyVaultNamestationName каждое из 6 станций, для которых вы скачали файл сертификата der на предыдущем шаге.
  2. На развернутой виртуальной машине откройте командную строку Windows и запустите kubectl apply -f secretsprovider.yaml обновленный файл ресурса поставщика секретов, предоставленный в C:\ManufacturingOntologies-main\Tools\FactorySimulation\Station каталоге, указав имя Key Vault, идентификатор клиента Azure и имена файлов сертификатов станции и псевдонимы, отправленные в Azure Key Vault ранее.
  3. В веб-браузере войдите в https://iotoperations.azure.comсистему, выберите нужный каталог Azure (верхний правый угол) и начните создавать ресурсы из имитации рабочей линии. Решение поставляется с двумя производственными линиями (Мюнхен и Сиэтл), состоящими из трех станций (сборка, тестирование и упаковка):
    1. Для конечных точек активов введите opc.tcp://assembly.munich в поле URL-адреса брокера OPC UA для станции сборки производственной линии Мюнхена и т. д. Выберите Do not use transport authentication certificate (взаимная проверка подлинности на основе сертификата OPC UA между операциями Интернета вещей Azure и любым подключенным сервером OPC UA по-прежнему используется).
    2. Для тегов активов выберите Import CSV file и откройте файл, расположенный StationTags.csv в каталоге C:\ManufacturingOntologies-main\Tools\FactorySimulation\Station .
  4. В портал Azure перейдите к служба хранилища Azure, развернутой в этом эталонном решении, откройте Storage browser и затемBlob containers. Для каждой имитированной рабочей строки перейдите в app/pki/rejected/certs папку и скачайте файл сертификата операций Интернета вещей Azure. Затем удалите файл. Перейдите к папке app/pki/trusted/certs и отправьте файл сертификата операций Интернета вещей Azure в этот каталог.
  5. На развернутой виртуальной машине откройте командную строку Windows и перезапустите имитацию рабочей строки, перейдя в C:\ManufacturingOntologies-main\Tools\FactorySimulation каталог и запустите команду StopSimulation, а затем команду StartSimulation.
  6. Следуйте инструкциям, как описано здесь , чтобы убедиться, что данные следуют из имитации производственной линии.
  7. В качестве последнего шага подключите операции Интернета вещей Azure к центрам событий, развернутыми в этом эталонном решении, как описано здесь.

Мониторинг условий использования, вычисление OEE, обнаружение аномалий и прогнозирование в azure Data Обозреватель

Вы также можете ознакомиться с документацией по azure Data Обозреватель, чтобы узнать, как создавать панели мониторинга без кода для мониторинга условий, прогнозирования и прогнозирования обслуживания или обнаружения аномалий. Мы предоставили пример панели мониторинга для развертывания на панели мониторинга ADX, выполнив описанные здесь действия. После импорта необходимо обновить источник данных панели мониторинга, указав конечную точку HTTPS экземпляра кластера сервера ADX в формате https://ADXInstanceName.AzureRegion.kusto.windows.net/ в правом верхнем углу панели мониторинга.

Снимок экрана: панель мониторинга Обозреватель данных Azure.

Примечание.

Если вы хотите отобразить OEE для определенной смены, выберите Custom Time Range в раскрывающемся списке в Time Range левом верхнем углу панели мониторинга ADX и введите дату и время от начала до конца смены, в которой вы хотите.

Отрисовка встроенного графа модели Единого пространства имен (UNS) и ISA-95 в Kusto Обозреватель

Это эталонное решение реализует унифицированное имяSapce (UNS) на основе метаданных OPC UA, отправленных в базу данных временных рядов в облаке (Azure Data Обозреватель). Эти метаданные OPC UA также включают иерархию ресурсов ISA-95. Результирующий граф можно легко визуализировать в средстве Kusto Обозреватель, доступном для скачивания здесь.

Добавьте новое подключение к экземпляру Azure Data Обозреватель, развернутом в этом эталонном решении, а затем выполните следующий запрос в Kusto Обозреватель:

let edges = opcua_metadata_lkv
| project source = DisplayName, target = Workcell
| join kind=fullouter (opcua_metadata_lkv
    | project source = Workcell, target = Line) on source
    | join kind=fullouter (opcua_metadata_lkv
        | project source = Line, target = Area) on source
        | join kind=fullouter (opcua_metadata_lkv
            | project source = Area, target = Site) on source
            | join kind=fullouter (opcua_metadata_lkv
                | project source = Site, target = Enterprise) on source
                | project source = coalesce(source, source1, source2, source3, source4), target = coalesce(target, target1, target2, target3, target4);
let nodes = opcua_metadata_lkv;
edges | make-graph source --> target with nodes on DisplayName

Для получения наилучших результатов измените Layout параметр Groupedна .

Граф, показывающий иерархию активов ISA-95.

Использование службы Azure Managed Grafana

Вы также можете использовать Grafana для создания панели мониторинга в Azure для решения, описанного в этой статье. Grafana используется в производстве для создания панелей мониторинга, отображающих данные в режиме реального времени. Azure предлагает службу с именем Azure Managed Grafana. С помощью этого можно создать облачные панели мониторинга. В этом руководстве по настройке вы включите Grafana в Azure и создадите панель мониторинга с данными, запрашиваемыми из службы azure Data Обозреватель и Azure Digital Twins, используя имитированные данные рабочей линии из этого эталонного решения.

На следующем снимка экрана показана панель мониторинга:

Снимок экрана: панель мониторинга Grafana.

Включение службы Azure Managed Grafana

  1. Перейдите к портал Azure и найдите службу "Grafana" и выберите службу "Управляемый Grafana Azure".

    Снимок экрана: включение Grafana в Marketplace.

  2. Присвойте экземпляру имя и оставьте стандартные параметры и создайте службу.

  3. После создания службы перейдите по URL-адресу, где вы обращаетесь к экземпляру Grafana. URL-адрес можно найти на домашней странице службы.

Добавление нового источника данных в Grafana

После первого входа необходимо добавить новый источник данных в Обозреватель данных Azure.

  1. Перейдите к разделу "Конфигурация" и добавьте новый источник данных.

  2. Найдите Обозреватель данных Azure и выберите службу.

  3. Настройте подключение и используйте регистрацию приложения (следуйте инструкциям, предоставленным в верхней части этой страницы).

  4. Сохраните и проверьте подключение в нижней части страницы.

Импорт примера панели мониторинга

Теперь вы готовы импортировать предоставленный пример панели мониторинга.

  1. Скачайте пример панели мониторинга здесь: пример панели мониторинга Grafana Manufacturing.

  2. Перейдите на панель мониторинга и выберите "Импортировать".

  3. Выберите источник, который вы скачали, и нажмите кнопку "Сохранить". На странице возникает ошибка, так как еще не заданы две переменные. Перейдите на страницу параметров панели мониторинга.

  4. Выберите слева в поле "Переменные" и обновите два URL-адреса с URL-адресом службы Azure Digital Twins.

  5. Вернитесь на панель мониторинга и нажмите кнопку обновления. Теперь вы должны увидеть данные (не забудьте нажать кнопку сохранения на панели мониторинга).

    Переменная расположения в верхней части страницы автоматически заполняется данными из Azure Digital Twins (узлы области из ISA95). Здесь можно выбрать различные расположения и просмотреть различные точки данных для каждой фабрики.

  6. Если данные не отображаются на панели мониторинга, перейдите к отдельным панелям и проверьте, выбран ли правильный источник данных.

Настройка оповещений

В Grafana также можно создавать оповещения. В этом примере мы создадим низкое оповещение OEE для одной из производственных линий.

  1. Войдите в службу Grafana и выберите правила генерации оповещений в меню.

    Снимок экрана: навигация по оповещениям.

  2. Выберите "Создать правило генерации оповещений".

    Снимок экрана: создание нового правила генерации оповещений.

  3. Присвойте оповещению имя и выберите "Azure Data Обозреватель" в качестве источника данных. Выберите запрос в области навигации.

    Снимок экрана: создание запроса на оповещение.

  4. В поле запроса введите следующий запрос. В этом примере используется производственная линия "Сиэтл".

    let oee = CalculateOEEForStation("assembly", "seattle", 6, 6);
    print round(oee * 100, 2)
    
  5. Выберите "таблица" в качестве выходных данных.

  6. Прокрутите вниз до следующего раздела. Здесь вы настраиваете пороговое значение генерации оповещений. В этом примере в качестве порогового значения используется "ниже 10", но в рабочих средах это значение может быть выше.

    Снимок экрана: оповещение об пороговом значении.

  7. Выберите папку, в которой нужно сохранить оповещения, и настройте поведение оценки оповещений. Выберите параметр "каждые 2 минуты".

  8. Нажмите кнопку "Сохранить и выйти".

В обзоре оповещений теперь вы увидите, что оповещение активируется, когда OEE ниже "10".

Снимок экрана: обзор оповещений.

Эту настройку можно интегрировать, например, с Microsoft Dynamics Field Services.

Подключение справочных решений в Microsoft Power BI

Чтобы подключить эталонное решение Power BI, вам потребуется доступ к подписке Power BI.

Выполните следующие действия:

  1. Установите здесь приложение Power BI Desktop.

  2. Войдите в приложение Power BI Desktop с помощью пользователя с доступом к подписке Power BI.

  3. В портал Azure перейдите к экземпляру базы данных Azure Обозреватель (ontologies) и добавьте Database Admin разрешения для пользователя Azure Active Directory с доступом только к одной подписке Azure, в частности подписке, используемой для развернутого экземпляра этого эталонного решения. При необходимости создайте нового пользователя в Azure Active Directory.

  4. В Power BI создайте отчет и выберите Данные Azure Обозреватель временных рядов в качестве источника данных через Get data ->>AzureAzure Data Explorer (Kusto).

  5. В всплывающем окне введите конечную точку azure Data Обозреватель экземпляра (напримерhttps://erichbtest3adx.eastus2.kusto.windows.net), имя базы данных (ontologies) и следующий запрос:

    let _startTime = ago(1h);
    let _endTime = now();
    opcua_metadata_lkv
    | where Name contains "assembly"
    | where Name contains "munich"
    | join kind=inner (opcua_telemetry
        | where Name == "ActualCycleTime"
        | where Timestamp > _startTime and Timestamp < _endTime
    ) on DataSetWriterID
    | extend NodeValue = todouble(Value)
    | project Timestamp, NodeValue
    
  6. Выберите Load. Это импортирует фактическое время цикла станции сборки производственной линии Мюнхена за последний час.

  7. При появлении запроса войдите в azure Data Обозреватель с помощью пользователя Azure Active Directory, который предоставил разрешение на доступ к базе данных Azure Обозреватель ранее.

  8. Data viewВ поле выберите столбец NodeValue и выберите Don't summarize пункт Summarization меню.

  9. Переключитесь на Report view.

  10. В разделе Visualizationsвыберите визуализацию Line Chart .

  11. В разделе Visualizations, переместите Timestamp источник в Data источник X-axis, выберите его и выберите Timestamp.

  12. В разделе Visualizations, переместите NodeValue источник в Data источник Y-axis, выберите его и выберите Median.

  13. Сохраните новый отчет.

    Примечание.

    Вы можете добавить другие данные из Azure Data Обозреватель в отчет аналогичным образом.

    Снимок экрана: представление Power BI.

Подключение эталонное решение для службы полей Microsoft Dynamics 365

Эта интеграция демонстрирует следующие сценарии:

  • Отправка ресурсов из эталонного решения Для производственных онтологий в службу Dynamics 365 Field Service.
  • Создание оповещений в службе полей Dynamics 365 при достижении определенного порогового значения для данных телеметрии эталонного решения для производства onlogies.

Интеграция использует Azure Logics Apps. С помощью приложений и служб logic Apps bussiness-critcal можно подключить через рабочие процессы без кода. Мы извлекаем сведения из Обозреватель данных Azure и активируем действия в службе dynamics 365 Field Service.

Во-первых, если вы еще не являетесь клиентом Dynamics 365 Field Service, активируйте 30-дневную пробную версию здесь. Не забудьте использовать тот же идентификатор Microsoft Entra (прежнее название — Azure Active Directory), используемый при развертывании эталонного решения для производственных онтологий. В противном случае потребуется настроить межтенантную проверку подлинности, которая не входит в эти инструкции.

Создание рабочего процесса приложения логики Azure для создания ресурсов в Службе полей Dynamics 365

Начнем с отправки ресурсов из производственной онтологии в Dynamics 365 Field Service:

  1. Перейдите к портал Azure и создайте приложение логики.

  2. Присвойте приложению логики Azure имя, поместите его в ту же группу ресурсов, что и эталонное решение для производственных онтологий.

  3. Выберите "Рабочие процессы".

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

  5. Создайте новый триггер. Начнем с создания триггера "Повторение". Это проверка базу данных каждый день, если создаются новые ресурсы. Это можно изменить чаще.

  6. В действиях найдите Azure Data Explorer и выберите Run KQL query команду. В этом запросе мы проверка какие ресурсы у нас есть. Используйте следующий запрос, чтобы получить ресурсы и вставить его в поле запроса:

    let ADTInstance =  "PLACE YOUR ADT URL";let ADTQuery = "SELECT T.OPCUAApplicationURI as AssetName, T.$metadata.OPCUAApplicationURI.lastUpdateTime as UpdateTime FROM DIGITALTWINS T WHERE IS_OF_MODEL(T , 'dtmi:digitaltwins:opcua:nodeset;1') AND T.$metadata.OPCUAApplicationURI.lastUpdateTime > 'PLACE DATE'";evaluate azure_digital_twins_query_request(ADTInstance, ADTQuery)
    
  7. Чтобы получить данные активов в dynamics 365 Field Service, необходимо подключиться к Microsoft Dataverse. Подключение экземпляру службы dynamics 365 Field Service и используйте следующую конфигурацию:

    • Используйте имя таблицы "Ресурсы клиента"
    • Поместите "AssetName" в поле "Имя"
  8. Сохраните рабочий процесс и запустите его. Через несколько секунд вы увидите, что новые ресурсы создаются в службе dynamics 365 Field Service.

Создание рабочего процесса приложения логики Azure для создания оповещений в службе полей Dynamics 365

Этот рабочий процесс создает оповещения в Службе полей Dynamics 365, в частности при достижении определенного порогового значения FaultyTime в ресурсе эталонного решения Manufacturing Onlogies.

  1. Сначала необходимо создать функцию Azure Data Обозреватель, чтобы получить нужные данные. Перейдите на панель запросов azure Data Обозреватель в портал Azure и выполните следующий код, чтобы создать функцию FaultyFieldAssets:

    Снимок экрана: создание запроса ADX функции.

    .create-or-alter function  FaultyFieldAssets() {  
    let Lw_start = ago(3d);
    opcua_telemetry
    | where Name == 'FaultyTime'
    and Value > 0
    and Timestamp between (Lw_start .. now())
    | join kind=inner (
        opcua_metadata
        | extend AssetList =split (Name, ';')
        | extend AssetName=AssetList[0]
        ) on DataSetWriterID
    | project AssetName, Name, Value, Timestamp}
    
  2. Создайте рабочий процесс в приложении логики Azure. Создайте триггер повторения для запуска каждые 3 минуты. Создайте в качестве действия "Azure Data Обозреватель" и выберите команду "Выполнить запрос KQL".

  3. Введите URL-адрес кластера Обозреватель данных Azure, а затем выберите базу данных и используйте имя функции, созданное на шаге 1 в качестве запроса.

  4. Выберите Microsoft Dataverse в качестве действия.

  5. Запустите рабочий процесс и просмотрите новые оповещения, создаваемые на панели мониторинга Dynamics 365 Field Service:

    Снимок экрана: оповещения в Dynamics 365 FS.