Руководство. Реализация эталонной архитектуры решения Для Промышленного Интернета вещей Azure
Производители хотят развернуть общее промышленное решение Интернета вещей в глобальном масштабе и подключить все производственные сайты к этому решению, чтобы повысить эффективность каждого отдельного производственного сайта.
Эти повышение эффективности приводят к более быстрому производству и снижению потребления энергии, что все приводит к снижению стоимости производства товаров при увеличении их качества в большинстве случаев.
Решение должно быть максимально эффективным и включить все необходимые варианты использования, такие как мониторинг условий, вычисление OEE, прогнозирование и обнаружение аномалий. Из аналитических сведений, полученных из этих вариантов использования, на втором шаге можно создать цикл цифровой обратной связи, который затем может применять оптимизации и другие изменения в рабочих процессах.
Взаимодействие — это ключ к быстрому выпуску архитектуры решения, а использование открытых стандартов, таких как OPC UA, значительно помогает добиться этого взаимодействия.
Унифицированная архитектура open Platform Communications (OPC UA) IEC 62541 Open Platform Communications
Это решение использует унифицированную архитектуру (UA) IEC 62541 Open Platform Communications (OPC) для всех данных операционной технологии (OT). Этот стандарт описан здесь.
Эталонная архитектура решения
Упрощенная архитектура (параметры Azure и Fabric):
Подробная архитектура (только Для Azure):
Компоненты
Ниже приведены компоненты, участвующие в этом решении:
Компонент | 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
и на name
Lables
.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:
Во время развертывания необходимо указать пароль для виртуальной машины, используемой для размещения моделирования производственной линии и облачного двойника 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
На виртуальной машине откройте окно PowerShell Администратор istrator. Перейдите к каталогу
C:\ManufacturingOntologies-main\Deployment
и запуститеCreateServicePrincipal
. Два параметраsubscriptionID
иtenantID
можно получить из портал Azure.Запустите
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. Сохраните файл, закройте окно PowerShell и откройте новое окно PowerShell Администратор istrator. Вернитесь к каталогу
C:\ManufacturingOntologies-main\Deployment
и запустите.SetupArc
Теперь вы можете управлять кластером Kubernetes из облака с помощью только что развернутого экземпляра Azure Arc. В портал Azure перейдите к экземпляру Azure Arc и выберите рабочие нагрузки. Требуемый маркер службы можно получить с помощью Get-AksEdgeManagedServiceToken
окна PowerShell Администратор istrator на виртуальной машине.
Развертывание операций Интернета вещей Azure на границе
Убедитесь, что вы уже начали имитацию производственной линии и включили кластер Kubernetes для управления с помощью Azure Arc, как описано в предыдущих абзацах. Затем выполните следующие действия:
- В портал Azure перейдите в хранилище ключей, развернутое в этом эталонном решении, и добавьте собственное удостоверение в политики доступа, щелкнув , выберите шаблон, выберите, выберите
Keys, Secrets & Certificate Management
Next
, найдите и выберите собственное удостоверение пользователя, выберите, оставьте раздел приложения пустым, выберитеNext
Next
и наконецCreate
.Access policies
Create
- Включите пользовательские расположения для кластера Kubernetes, подключенного к Arc (называется ontologies_cluster), сначала войдите в подписку Azure с помощью
az login
окна PowerShell Администратор istrator, а затем выполните запускaz connectedk8s enable-features -n "ontologies_cluster" -g "<resourceGroupName>" --features cluster-connect custom-locations
, предоставивresourceGroupName
развернутое решение из эталонного решения. - В портал Azure разверните операции Интернета вещей Azure, перейдя в кластер Kubernetes, подключенный к Arc, выберите , выберите ,
Add
выберите , выберитеAzure IoT Operations
Extensions
и выберите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.
- В портал Azure перейдите к служба хранилища Azure, развернутой в этом эталонном решении, откройте
Storage browser
и затемBlob containers
. Здесь вы можете получить доступ к облачному хранилищу сертификатов OPC UA, используемому в этом решении. Операции Интернета вещей Azure используют Azure Key Vault в качестве облачного хранилища сертификатов OPC UA, чтобы сертификаты должны быть скопированы:- В контейнерах BLOB-объектов браузера служба хранилища Azure для каждой имитированной производственной линии перейдите в папку app/pki/trusted/certs, выберите сборку, упаковку и тестируйте файл сертификата и скачайте его.
- Войдите в подписку 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
, предоставивkeyVaultName
stationName
каждое из 6 станций, для которых вы скачали файл сертификата der на предыдущем шаге.
- На развернутой виртуальной машине откройте командную строку Windows и запустите
kubectl apply -f secretsprovider.yaml
обновленный файл ресурса поставщика секретов, предоставленный вC:\ManufacturingOntologies-main\Tools\FactorySimulation\Station
каталоге, указав имя Key Vault, идентификатор клиента Azure и имена файлов сертификатов станции и псевдонимы, отправленные в Azure Key Vault ранее. - В веб-браузере войдите в https://iotoperations.azure.comсистему, выберите нужный каталог Azure (верхний правый угол) и начните создавать ресурсы из имитации рабочей линии. Решение поставляется с двумя производственными линиями (Мюнхен и Сиэтл), состоящими из трех станций (сборка, тестирование и упаковка):
- Для конечных точек активов введите opc.tcp://assembly.munich в поле URL-адреса брокера OPC UA для станции сборки производственной линии Мюнхена и т. д. Выберите
Do not use transport authentication certificate
(взаимная проверка подлинности на основе сертификата OPC UA между операциями Интернета вещей Azure и любым подключенным сервером OPC UA по-прежнему используется). - Для тегов активов выберите
Import CSV file
и откройте файл, расположенныйStationTags.csv
в каталогеC:\ManufacturingOntologies-main\Tools\FactorySimulation\Station
.
- Для конечных точек активов введите opc.tcp://assembly.munich в поле URL-адреса брокера OPC UA для станции сборки производственной линии Мюнхена и т. д. Выберите
- В портал Azure перейдите к служба хранилища Azure, развернутой в этом эталонном решении, откройте
Storage browser
и затемBlob containers
. Для каждой имитированной рабочей строки перейдите вapp/pki/rejected/certs
папку и скачайте файл сертификата операций Интернета вещей Azure. Затем удалите файл. Перейдите к папкеapp/pki/trusted/certs
и отправьте файл сертификата операций Интернета вещей Azure в этот каталог. - На развернутой виртуальной машине откройте командную строку Windows и перезапустите имитацию рабочей строки, перейдя в
C:\ManufacturingOntologies-main\Tools\FactorySimulation
каталог и запустите команду StopSimulation, а затем команду StartSimulation. - Следуйте инструкциям, как описано здесь , чтобы убедиться, что данные следуют из имитации производственной линии.
- В качестве последнего шага подключите операции Интернета вещей Azure к центрам событий, развернутыми в этом эталонном решении, как описано здесь.
Мониторинг условий использования, вычисление OEE, обнаружение аномалий и прогнозирование в azure Data Обозреватель
Вы также можете ознакомиться с документацией по azure Data Обозреватель, чтобы узнать, как создавать панели мониторинга без кода для мониторинга условий, прогнозирования и прогнозирования обслуживания или обнаружения аномалий. Мы предоставили пример панели мониторинга для развертывания на панели мониторинга ADX, выполнив описанные здесь действия. После импорта необходимо обновить источник данных панели мониторинга, указав конечную точку HTTPS экземпляра кластера сервера ADX в формате https://ADXInstanceName.AzureRegion.kusto.windows.net/
в правом верхнем углу панели мониторинга.
Примечание.
Если вы хотите отобразить 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
на .
Использование службы Azure Managed Grafana
Вы также можете использовать Grafana для создания панели мониторинга в Azure для решения, описанного в этой статье. Grafana используется в производстве для создания панелей мониторинга, отображающих данные в режиме реального времени. Azure предлагает службу с именем Azure Managed Grafana. С помощью этого можно создать облачные панели мониторинга. В этом руководстве по настройке вы включите Grafana в Azure и создадите панель мониторинга с данными, запрашиваемыми из службы azure Data Обозреватель и Azure Digital Twins, используя имитированные данные рабочей линии из этого эталонного решения.
На следующем снимка экрана показана панель мониторинга:
Включение службы Azure Managed Grafana
Перейдите к портал Azure и найдите службу "Grafana" и выберите службу "Управляемый Grafana Azure".
Присвойте экземпляру имя и оставьте стандартные параметры и создайте службу.
После создания службы перейдите по URL-адресу, где вы обращаетесь к экземпляру Grafana. URL-адрес можно найти на домашней странице службы.
Добавление нового источника данных в Grafana
После первого входа необходимо добавить новый источник данных в Обозреватель данных Azure.
Перейдите к разделу "Конфигурация" и добавьте новый источник данных.
Найдите Обозреватель данных Azure и выберите службу.
Настройте подключение и используйте регистрацию приложения (следуйте инструкциям, предоставленным в верхней части этой страницы).
Сохраните и проверьте подключение в нижней части страницы.
Импорт примера панели мониторинга
Теперь вы готовы импортировать предоставленный пример панели мониторинга.
Скачайте пример панели мониторинга здесь: пример панели мониторинга Grafana Manufacturing.
Перейдите на панель мониторинга и выберите "Импортировать".
Выберите источник, который вы скачали, и нажмите кнопку "Сохранить". На странице возникает ошибка, так как еще не заданы две переменные. Перейдите на страницу параметров панели мониторинга.
Выберите слева в поле "Переменные" и обновите два URL-адреса с URL-адресом службы Azure Digital Twins.
Вернитесь на панель мониторинга и нажмите кнопку обновления. Теперь вы должны увидеть данные (не забудьте нажать кнопку сохранения на панели мониторинга).
Переменная расположения в верхней части страницы автоматически заполняется данными из Azure Digital Twins (узлы области из ISA95). Здесь можно выбрать различные расположения и просмотреть различные точки данных для каждой фабрики.
Если данные не отображаются на панели мониторинга, перейдите к отдельным панелям и проверьте, выбран ли правильный источник данных.
Настройка оповещений
В Grafana также можно создавать оповещения. В этом примере мы создадим низкое оповещение OEE для одной из производственных линий.
Войдите в службу Grafana и выберите правила генерации оповещений в меню.
Выберите "Создать правило генерации оповещений".
Присвойте оповещению имя и выберите "Azure Data Обозреватель" в качестве источника данных. Выберите запрос в области навигации.
В поле запроса введите следующий запрос. В этом примере используется производственная линия "Сиэтл".
let oee = CalculateOEEForStation("assembly", "seattle", 6, 6); print round(oee * 100, 2)
Выберите "таблица" в качестве выходных данных.
Прокрутите вниз до следующего раздела. Здесь вы настраиваете пороговое значение генерации оповещений. В этом примере в качестве порогового значения используется "ниже 10", но в рабочих средах это значение может быть выше.
Выберите папку, в которой нужно сохранить оповещения, и настройте поведение оценки оповещений. Выберите параметр "каждые 2 минуты".
Нажмите кнопку "Сохранить и выйти".
В обзоре оповещений теперь вы увидите, что оповещение активируется, когда OEE ниже "10".
Эту настройку можно интегрировать, например, с Microsoft Dynamics Field Services.
Подключение справочных решений в Microsoft Power BI
Чтобы подключить эталонное решение Power BI, вам потребуется доступ к подписке Power BI.
Выполните следующие действия:
Войдите в приложение Power BI Desktop с помощью пользователя с доступом к подписке Power BI.
В портал Azure перейдите к экземпляру базы данных Azure Обозреватель (
ontologies
) и добавьтеDatabase Admin
разрешения для пользователя Azure Active Directory с доступом только к одной подписке Azure, в частности подписке, используемой для развернутого экземпляра этого эталонного решения. При необходимости создайте нового пользователя в Azure Active Directory.В Power BI создайте отчет и выберите Данные Azure Обозреватель временных рядов в качестве источника данных через
Get data
->>Azure
Azure Data Explorer (Kusto)
.В всплывающем окне введите конечную точку 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
Выберите
Load
. Это импортирует фактическое время цикла станции сборки производственной линии Мюнхена за последний час.При появлении запроса войдите в azure Data Обозреватель с помощью пользователя Azure Active Directory, который предоставил разрешение на доступ к базе данных Azure Обозреватель ранее.
Data view
В поле выберите столбец NodeValue и выберитеDon't summarize
пунктSummarization
меню.Переключитесь на
Report view
.В разделе
Visualizations
выберите визуализациюLine Chart
.В разделе
Visualizations
, переместитеTimestamp
источник вData
источникX-axis
, выберите его и выберитеTimestamp
.В разделе
Visualizations
, переместитеNodeValue
источник вData
источникY-axis
, выберите его и выберитеMedian
.Сохраните новый отчет.
Примечание.
Вы можете добавить другие данные из Azure Data Обозреватель в отчет аналогичным образом.
Подключение эталонное решение для службы полей 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:
Перейдите к портал Azure и создайте приложение логики.
Присвойте приложению логики Azure имя, поместите его в ту же группу ресурсов, что и эталонное решение для производственных онтологий.
Выберите "Рабочие процессы".
Присвойте рабочему процессу имя. Для этого сценария мы используем тип состояния с отслеживанием состояния, так как ресурсы не являются потоками данных.
Создайте новый триггер. Начнем с создания триггера "Повторение". Это проверка базу данных каждый день, если создаются новые ресурсы. Это можно изменить чаще.
В действиях найдите
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)
Чтобы получить данные активов в dynamics 365 Field Service, необходимо подключиться к Microsoft Dataverse. Подключение экземпляру службы dynamics 365 Field Service и используйте следующую конфигурацию:
- Используйте имя таблицы "Ресурсы клиента"
- Поместите "AssetName" в поле "Имя"
Сохраните рабочий процесс и запустите его. Через несколько секунд вы увидите, что новые ресурсы создаются в службе dynamics 365 Field Service.
Создание рабочего процесса приложения логики Azure для создания оповещений в службе полей Dynamics 365
Этот рабочий процесс создает оповещения в Службе полей Dynamics 365, в частности при достижении определенного порогового значения FaultyTime в ресурсе эталонного решения Manufacturing Onlogies.
Сначала необходимо создать функцию Azure Data Обозреватель, чтобы получить нужные данные. Перейдите на панель запросов azure Data Обозреватель в портал Azure и выполните следующий код, чтобы создать функцию FaultyFieldAssets:
.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}
Создайте рабочий процесс в приложении логики Azure. Создайте триггер повторения для запуска каждые 3 минуты. Создайте в качестве действия "Azure Data Обозреватель" и выберите команду "Выполнить запрос KQL".
Введите URL-адрес кластера Обозреватель данных Azure, а затем выберите базу данных и используйте имя функции, созданное на шаге 1 в качестве запроса.
Выберите Microsoft Dataverse в качестве действия.
Запустите рабочий процесс и просмотрите новые оповещения, создаваемые на панели мониторинга Dynamics 365 Field Service: