Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Производители хотят развернуть общее промышленное решение Интернета вещей в глобальном масштабе и подключить все производственные сайты к этому решению, чтобы повысить эффективность каждого отдельного производственного сайта.
Эти повышение эффективности приводят к более быстрому производству и снижению потребления энергии, что все приводит к снижению стоимости производства товаров при увеличении их качества в большинстве случаев.
Решение должно быть максимально эффективным и включать все необходимые варианты использования, такие как мониторинг состояния, общая эффективность оборудования (OEE), прогнозирование и обнаружение аномалий. Используя аналитические сведения, полученные из этих вариантов использования, можно создать цикл цифровой обратной связи, который затем может применять оптимизации и другие изменения в рабочих процессах.
Взаимодействие — это ключ для быстрого развертывания архитектуры решения. Использование открытых стандартов, таких как OPC UA, значительно помогает добиться такого взаимодействия.
В этом руководстве показано, как развернуть промышленное решение Интернета вещей с помощью служб Azure. Это решение использует унифицированную архитектуру (UA) IEC 62541 Open Platform Communications (OPC) для всех данных операционной технологии (OT).
Требуемые условия
Чтобы выполнить действия, описанные в этом руководстве, вам нужна подписка Azure. Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
Эталонная архитектура решения
На следующих схемах показана архитектура промышленного решения Интернета вещей:
Упрощенная архитектура, показывающая возможности Azure и Microsoft Fabric:
Подробная архитектура, показывающая вариант Azure:
В следующей таблице описаны ключевые компоненты этого решения:
| Компонент | Описание |
|---|---|
| Промышленные ресурсы | Набор производственных линий с поддержкой OPC UA, имитированных и размещенных в контейнерах Docker. |
| Операции Интернета вещей Azure | Azure IoT Operations — это единая инфраструктура данных для периферии. Он включает набор модульных, масштабируемых и высокодоступных служб данных, работающих в пограничных кластерах Kubernetes с поддержкой Azure Arc. |
| Шлюз данных | Этот шлюз подключает локальные источники данных, такие как SAP, к Azure Logic Apps в облаке. |
| Центры событий Azure | Брокер облачных сообщений, который получает сообщения публикации/подписки (pub/sub) OPC UA из пограничных шлюзов и сохраняет их до тех пор, пока они не будут получены подписчиками. |
| Обозреватель данных Azure | База данных временных рядов и служба интерфейсной панели мониторинга для расширенной облачной аналитики, включая встроенное обнаружение аномалий и прогнозирование. |
| Приложения логики Azure | Azure Logic Apps — это облачная платформа, используемая для создания и запуска автоматизированных рабочих процессов без кода. |
| Azure Arc | Эта облачная служба используется для управления локальным кластером Kubernetes на периферии. |
| Azure Managed Grafana | Azure Managed Grafana — это платформа визуализации данных, созданная на основе программного обеспечения Grafana grafana Labs. Grafana — это полностью управляемая служба, которая поддерживается корпорацией Майкрософт. |
| Microsoft Power BI | Microsoft Power BI — это коллекция программных служб SaaS, приложений и соединителей, которые работают вместе, чтобы превратить несвязанные источники данных в последовательные, визуально иммерсивные и интерактивные аналитические сведения. |
| Служба полей Microsoft Dynamics 365 | Microsoft Dynamics 365 Field Service — это готовое SaaS-решение для управления запросами на выездное обслуживание. |
| Командир облака UA | Это приложение с открытым исходным кодом преобразует сообщения, отправленные в брокер MQTT или Kafka (возможно, в облаке) в запросы клиента и сервера OPC UA для подключенного сервера OPC UA. Приложение выполняется в контейнере Docker. |
| Действие облака UA | Это облачное справочное приложение с открытым исходным кодом выполняет запрос к Azure Data Explorer для получения определенного значения данных. Значение данных — это давление в одной из симулированных машин производственной линии. Он вызывает UA Cloud Commander через Центры событий Azure, когда достигается определенное пороговое значение (4000 мбар). Затем ua Cloud Commander вызывает метод OpenPressureReliefValve на компьютере через OPC UA. |
| Облачная библиотека UA | Облачная библиотека UA — это интернет-магазин информационных моделей OPC UA, размещенных фондом OPC. |
| UA Edge Translator | Это эталонное приложение с открытым исходным кодом для промышленного подключения преобразует проприетарные интерфейсы активов в OPC UA. Решение использует описания W3C Web of Things в качестве схемы для описания интерфейса промышленного актива. |
Примечание.
В реальном развертывании такую критически важную операцию, как открытие предохранительного клапана, выполняется на месте. В этом примере просто показано, как достичь цикла цифровой обратной связи.
Моделирование производственных линий
В решении используется моделирование производственной линии, состоящее из нескольких станций, с помощью информационной модели OPC UA и простой производственной системы выполнения (MES). Станции и MES контейнеризированы для простого развертывания.
Моделирование настроено для включения двух рабочих линий. Конфигурация по умолчанию:
| Производственная линия | Идеальное время цикла (в секундах) |
|---|---|
| Мюнхен | 6 |
| Seattle | 10 |
| Название смены | Запустить | Конец |
|---|---|---|
| Утро | 07:00 | 14:00:00 |
| После полудня | 15:00 | 22:00 |
| Ночь | 23:00 | 06:00 |
Примечание.
Время смены находится в локальном времени, в частности в часовом поясе, к которому настроена виртуальная машина, размещающая имитацию производственной линии.
Сервер 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 Data Explorer. Давление сбрасывается с регулярными интервалами для производственной линии Сиэтла.
Установка моделирования рабочих линий и облачных служб
Нажмите кнопку "Развернуть", чтобы развернуть все необходимые ресурсы в подписке Azure.
Процесс развертывания предложит указать пароль для виртуальной машины, на котором размещена имитация производственной линии и инфраструктура Edge. Пароль должен содержать три из следующих: строчных символов, верхний регистр, число и специальный символ. Длина пароля должна составлять от 12 до 72 символов.
Примечание.
Чтобы сократить затраты, развертывание создает одну виртуальную машину Linux для моделирования производственных линий и пограничной инфраструктуры. В рабочем сценарии имитация производственной линии не требуется, а для базовой ОС следует использовать Локальную версию Azure.
Запуск моделирования производственных линий
Используйте SSH для подключения к развернутой виртуальной машине с помощью учетных данных, предоставленных во время развертывания (сначала может потребоваться включить JIT-доступ на портале Azure). Перейдите в каталог /opt/ManufacturingOntologies-main/Tools/FactorySimulation и запустите shell-скрипт StartSimulation
sudo ./StartSimulation.sh "<Your Event Hubs connection string>"
<Your Event Hubs connection string> — это строка подключения пространства имен Центров событий. Дополнительные сведения см. в статье Получение строки подключения для Центров событий. Строка подключения выглядит следующим образом:Endpoint=sb://ontologies.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=abcdefgh=
Совет
Если внешний IP-адрес для некоторых служб Kubernetes отображается следующим <pending>образом, используйте следующую команду, чтобы назначить внешний IP-адрес traefik службы: sudo kubectl patch service <theService> -n <the service's namespace> -p '{"spec": {"type": "LoadBalancer", "externalIPs":["<the traefik external IP address>"]}}'
Облачная библиотека UA
Чтобы считывать информационные модели OPC UA непосредственно из Azure Data Explorer, можно импортировать узлы OPC UA, определенные в информационной модели OPC UA в таблицу. Импортированные сведения можно использовать для поиска дополнительных метаданных в запросах.
Сначала настройте политику вызова Azure Data Explorer для UA Cloud Library, выполнив следующий запрос в кластере Azure Data Explorer. Перед началом работы убедитесь, что вы являетесь членом роли AllDatabasesAdmin в кластере, которую можно настроить в портал Azure, перейдя на страницу разрешений для кластера Azure Data Explorer.
.alter cluster policy callout @'[{"CalloutType": "webapi","CalloutUriRegex": "uacloudlibrary.opcfoundation.org","CanCall": true}]'
Затем выполните следующий запрос Azure Data Explorer из портала Azure. В запросе:
- Замените
<INFORMATION_MODEL_IDENTIFIER_FROM_THE_UA_CLOUD_LIBRARY>уникальным идентификатором информационной модели, которую вы хотите импортировать из облачной библиотеки UA. Этот идентификатор можно найти в URL-адресе страницы информационной модели в облачной библиотеке UA. Например, идентификатор набора узлов станции, который используется в этом руководстве,1627266626. - Замените
<HASHED_CLOUD_LIBRARY_CREDENTIALS>базовым заголовком авторизации с вашими учетными данными из облачной библиотеки UA. Используйте средство, например https://www.debugbear.com/basic-auth-header-generator для создания хэша. Вы также можете использовать следующую команду Bash:echo -n 'username:password' | base64
let uri='https://uacloudlibrary.opcfoundation.org/infomodel/download/<INFORMATION_MODEL_IDENTIFIER_FROM_THE_UA_CLOUD_LIBRARY>';
let headers=dynamic({'accept':'text/plain', 'Authorization':'Basic <HASHED_CLOUD_LIBRARY_CREDENTIALS>'});
evaluate http_request(uri, headers)
| 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
Чтобы просмотреть графическое представление информационной модели OPC UA, можно использовать инструмент Kusto Explorer. Для визуализации модели станции выполните следующий запрос в Kusto Explorer. Для получения наилучших результатов измените параметр Layout на Grouped, а параметр Labels на name.
let uri='https://uacloudlibrary.opcfoundation.org/infomodel/download/1627266626';
let headers=dynamic({'accept':'text/plain', 'Authorization':'Basic <HASHED_CLOUD_LIBRARY_CREDENTIALS>'});
let variables = evaluate http_request(uri, headers)
| 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)
| 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
При необходимости разверните Azure IoT Operations на периферии.
Вы можете использовать операции Azure IoT на периферии. Платформа Azure IoT Operations представляет собой единую плоскость управления данными для пограничных вычислений. Он включает набор модульных, масштабируемых и высокодоступных служб данных, работающих в пограничных кластерах Kubernetes с поддержкой Azure Arc.
Выполните следующие действия в сведениях о развертывании Операций Интернета вещей Azure.
Развертывание операций Интернета вещей Azure можно настроить с помощью пользовательского веб-интерфейса взаимодействия с операциями. Добавьте конечные точки активов, активы и потоки данных для обработки данных из имитации производственной линии и перенаправления их в концентратор данных в вашем пространстве имен Event Hubs.
В развертывании Операций Интернета вещей Azure создайте конечные точки активов, определяющие подключения к следующим серверам OPC UA в моделировании рабочей среды:
opc.tcp://assembly.munich/opc.tcp://test.munich/opc.tcp://packaging.munich/opc.tcp://assembly.seattle/opc.tcp://test.seattle/opc.tcp://packaging.seattle/
Варианты мониторинга состояния, вычисления коэффициента общей эффективности оборудования (OEE), обнаружения аномалий и прогнозирования в Azure Data Explorer
Сведения о создании панелей мониторинга без кода для мониторинга условий, прогнозирования и прогнозирования обслуживания или обнаружения аномалий см. в документации по Azure Data Explorer. Существует также пример панели мониторинга , которую можно развернуть. Сведения о развертывании панели мониторинга см. в статье Визуализация данных с помощью панелей мониторинга Azure Data Explorer, создаваемых > из файла. После импорта панели мониторинга обновите источник данных. Укажите конечную точку HTTPS кластера сервера Azure Data Explorer в правом верхнем углу панели мониторинга. Конечная точка HTTPS выглядит следующим образом: https://<ADXInstanceName>.<AzureRegion>.kusto.windows.net/
Примечание.
Чтобы отобразить OEE для определенной смены, выберите настраиваемый диапазон времени в раскрывающемся списке "Диапазон времени" в левом верхнем углу панели мониторинга Обозревателя данных Azure и введите дату и время от начала до конца нужной смены.
Отобразить встроенное единое пространство имен (UNS) и граф модели ISA-95 в Kusto Explorer
Это эталонное решение реализует единое пространство имен (UNS) на основе метаданных OPC UA, отправляемых в базу данных временных рядов Azure Data Explorer в облаке. Эти метаданные OPC UA включают иерархию активов ISA-95. Вы можете визуализировать полученный граф в средстве Обозревателя Kusto.
Добавьте новое подключение к экземпляру Azure Data Explorer и выполните следующий запрос в Kusto Explorer:
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.
Использование Управляемой Grafana Azure
Вы также можете использовать Azure Managed Grafana для создания dashboards Azure в рамках решения, описанного в этой статье. Используйте Grafana в производственной среде для создания панелей мониторинга, отображающих данные в режиме реального времени. Ниже показано, как включить Grafana в Azure и создать панель мониторинга с имитируемыми данными рабочей линии из Azure Data Explorer.
Включение службы Azure Managed Grafana
Чтобы создать службу Azure Managed Grafana и настроить ее с разрешениями на доступ к базе данных онтологии:
В портал Azure найдите Grafana и выберите службу Azure Managed Grafana.
Чтобы создать службу, на странице "Создание рабочей области Grafana" введите имя для вашего экземпляра. Выберите все параметры по умолчанию.
После создания службы убедитесь, что ваш экземпляр Grafana имеет системно назначенное управляемое удостоверение, и перейдите на вкладку Identity вашего экземпляра Azure Managed Grafana в портале Azure. Если назначенное системой управляемое удостоверение не включено, включите его. Запишите значение идентификатора объекта (субъекта), его потребуется позже.
Чтобы предоставить управляемому удостоверению разрешение на доступ к базе данных онтологий в Azure Data Explorer:
- Перейдите на панель "Разрешения" в экземпляре Azure Data Explorer в портале Azure.
- Выберите Добавить > AllDatabasesViewer.
- Найдите и выберите значение идентификатора объекта (принципала), которое вы записали ранее.
Добавление нового источника данных в Grafana
Добавьте новый источник данных для подключения к Azure Data Explorer. В этом примере используется управляемое удостоверение, назначаемое системой, для подключения к Azure Data Explorer. Чтобы настроить проверку подлинности, выполните следующие действия.
Чтобы добавить источник данных в Grafana, выполните следующие действия.
Перейдите по URL-адресу конечной точки для экземпляра Grafana. URL-адрес конечной точки можно найти на странице Управляемой Grafana Azure для вашего экземпляра в портале Azure. Затем войдите в инстанс Grafana.
На панели управления Grafana выберите
Подключения иИсточники данных , затем выберитеДобавить новый источник данных . Прокрутите вниз и выберите источник данных Azure Data Explorer.Выберите Managed Identity в качестве опции аутентификации. Затем добавьте URL-адрес кластера Azure Data Explorer. URL можно найти в меню экземпляра сервиса Azure Data Explorer на портале Azure в URI.
Нажмите кнопку "Сохранить" и проверить подключение к источнику данных.
Импорт примера панели мониторинга
Теперь вы готовы импортировать пример панели мониторинга.
Скачайте образец панели мониторинга Grafana Manufacturing Dashboard.
В меню Grafana перейдите к панелям мониторинга и выберите "Создать > импорт".
Выберите Загрузить JSON-файл панели мониторинга и затем выберите скачанный ранее файл samplegrafanadashboard.json. Выберите Импорт.
На панели "Станция OEE" выберите "Изменить", а затем выберите источник данных Azure Data Explorer, который вы настроите ранее. Затем выберите KQL на панели запросов и добавьте следующий запрос:
print round (CalculateOEEForStation('${Station}', '${Location}', '${CycleTime}', '${__from:date:iso}', '${__to:date:iso}') * 100, 2)Нажмите кнопку "Применить", чтобы применить изменения и вернуться к панели мониторинга.На панели "Линия OEE" выберите "Изменить", а затем выберите источник данных Azure Data Explorer, который вы настроите ранее. Затем выберите KQL на панели запросов и добавьте следующий запрос:
print round(CalculateOEEForLine('${Location}', '${CycleTime}', '${__from:date:iso}', '${__to:date:iso}') * 100, 2)Нажмите кнопку "Применить", чтобы применить изменения и вернуться к панели мониторинга.На панели "Отмененные продукты" выберите "Изменить", а затем выберите источник данных Azure Data Explorer, который вы настроили ранее. Затем выберите KQL на панели запросов и добавьте следующий запрос:
opcua_metadata_lkv| where Name contains '${Station}'| where Name contains '${Location}'| join kind=inner (opcua_telemetry| where Name == "NumberOfDiscardedProducts"| where Timestamp > todatetime('${__from:date:iso}') and Timestamp < todatetime('${__to:date:iso}')) on DataSetWriterID| extend numProd = toint(Value)| summarize max(numProd)Нажмите кнопку "Применить", чтобы применить изменения и вернуться к панели мониторинга.На панели "Производство продуктов" выберите "Изменить", а затем выберите источник данных Azure Data Explorer, который вы настроили ранее. Затем выберите KQL на панели запросов и добавьте следующий запрос:
opcua_metadata_lkv| where Name contains '${Station}'| where Name contains '${Location}'| join kind=inner (opcua_telemetry| where Name == "NumberOfManufacturedProducts"| where Timestamp > todatetime('${__from:date:iso}') and Timestamp < todatetime('${__to:date:iso}')) on DataSetWriterID| extend numProd = toint(Value)| summarize max(numProd)Нажмите кнопку "Применить", чтобы применить изменения и вернуться к панели мониторинга.На панели "Потребление энергии" выберите "Изменить", а затем выберите источник данных Azure Data Explorer, который вы настроите ранее. Затем выберите KQL на панели запросов и добавьте следующий запрос:
opcua_metadata_lkv| where Name contains '${Station}'| where Name contains '${Location}'| join kind=inner (opcua_telemetry | where Name == "Pressure" | where Timestamp > todatetime('${__from:date:iso}') and Timestamp < todatetime('${__to:date:iso}')) on DataSetWriterID| extend energy = todouble(Value)| summarize avg(energy)); print round(toscalar(averageEnergyConsumption) * 1000, 2)Нажмите кнопку "Применить", чтобы применить изменения и вернуться к панели мониторинга.На панели давления нажмите кнопку "Изменить", а затем выберите источник данных Azure Data Explorer, который вы настроите ранее. Затем выберите KQL на панели запросов и добавьте следующий запрос:
opcua_metadata_lkv| where Name contains '${Station}'| where Name contains '${Location}'| join kind=inner (opcua_telemetry | where Name == "Pressure" | where Timestamp > todatetime('${__from:date:iso}') and Timestamp < todatetime('${__to:date:iso}')) on DataSetWriterID| extend NodeValue = toint(Value)| project Timestamp1, NodeValueНажмите кнопку "Применить", чтобы применить изменения и вернуться к панели мониторинга.
Настройка оповещений
В Grafana можно также создавать оповещения. В этом примере вы создаете оповещение о низком OEE для одной из производственных линий.
В меню Grafana перейдите к правилам генерации оповещений >**.
Выберите Новое правило генерации оповещений.
Присвойте оповещению имя и выберите Azure Data Explorer в качестве источника данных. Выберите KQL в области "Определение запроса и условия генерации оповещений".
В поле запроса введите следующий запрос. В этом примере используется производственная линия Сиэтла:
let oee = CalculateOEEForStation("assembly", "seattle", 10000, now(), now(-1h)); print round(oee * 100, 2)Выберите "Задать в качестве условия генерации оповещений".
Прокрутите вниз до раздела "Выражения". Удалите выражение "Уменьшить", его не требуется.
Для порогового значения генерации оповещений выберите A в качестве входных данных. Выберите IS BELOW и введите 10.
Прокрутите вниз до раздела "Параметры поведения оценки". Создайте папку для сохранения оповещений. Создайте новую группу оценки и укажите 2m.
Нажмите кнопку "Сохранить правило" и нажмите кнопку выхода в правом верхнем углу.
В обзоре оповещений теперь можно увидеть, что оповещение активируется, если OEE меньше 10.
Подключение эталонного решения к Microsoft Power BI
Чтобы подключить эталонное решение Power BI, вам потребуется доступ к подписке Power BI.
Чтобы создать панель мониторинга Power BI, выполните следующие действия.
Установите настольное приложение Power BI.
Войдите в классическое приложение Power BI с помощью пользователя с доступом к подписке Power BI.
В портале Azure перейдите к базе данных Azure Data Explorer под названием ontologies и добавьте разрешения администратора базы данных пользователю с Microsoft Entra ID, имеющему доступ только к подписке, используемой для развернутого экземпляра этого эталонного решения. При необходимости создайте нового пользователя в идентификаторе Microsoft Entra.
В Power BI создайте новый отчет и выберите данные временных рядов Azure Data Explorer в качестве источника данных: Получить данные > Azure > Azure Data Explorer (Kusto).
В всплывающем окне введите конечную точку Azure Data Explorer кластера (), имя базы данных (
https://<your cluster name>.<location>.kusto.windows.netontologies) и следующий запрос: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Войдите в Azure Data Explorer с использованием Microsoft Entra ID пользователя, которому вы ранее предоставили разрешение на доступ к базе данных Azure Data Explorer.
Примечание.
Если столбец Timestamp содержит одно и то же значение для всех строк, измените последнюю строку запроса следующим образом:
| project Timestamp1, NodeValueВыберите Загрузить. Это действие импортирует фактическое время цикла станции сборки производственной линии Мюнхена за последний час.
В списке
Table viewвыберите столбец NodeValue и выберите Не суммировать в пункте меню Сводка.Переключитесь на
Report view.В разделе Визуализации, выберите визуализацию линейная диаграмма.
В разделе "Визуализации" переместите
Timestampиз источникаDataвX-axis, выберите его и выберите временную отметку.В разделе "Визуализации" переместите
NodeValueизDataвY-axis, выберите его и выберите Median.Сохраните новый отчет.
Совет
Используйте тот же подход, чтобы добавить другие данные из Azure Data Explorer в отчет.
Подключение эталонного решения к службе полей Microsoft Dynamics 365
Эта интеграция демонстрирует следующие сценарии:
- Отправка ресурсов из эталонного решения для производственных онтологий в Службу полей Dynamics 365.
- Создавайте оповещения в Dynamics 365 Field Service, когда достигается определенное пороговое значение данных телеметрии эталонного решения по онтологиям производства.
Интеграция использует Azure Logics Apps. С помощью Logic Apps можно использовать рабочие процессы без кода для подключения бизнес-критических приложений и служб. В этом примере показано, как получить данные из Azure Data Explorer и активировать действия в Службе полей Dynamics 365.
Если вы еще не являетесь клиентом Dynamics 365 Field Service, активируйте 30-дневную пробную версию.
Совет
Чтобы избежать необходимости настройки межтенантной проверки подлинности, используйте тот же идентификатор Microsoft Entra, который использовался для развертывания эталонного решения для производственных онтологий.
Создание рабочего процесса Azure Logic Apps для создания ресурсов в Службе полей Dynamics 365
Чтобы передать ресурсы из эталонного решения для производственных онтологий в Dynamics 365 Field Service:
Перейдите на портал Azure и создайте ресурс логического приложения.
Присвойте Azure Logic Apps имя и поместите его в ту же группу ресурсов, что и эталонное решение для производственных онтологий.
Выберите рабочие процессы.
Присвойте рабочему процессу имя. В этом сценарии используйте тип состояния с сохранением данных, так как активы не являются потоками данных.
В конструкторе рабочих процессов выберите " Добавить триггер". Создайте триггер повторения для выполнения каждый день. Вы можете изменить триггер, чтобы он срабатывал чаще.
Добавьте действие после триггера повторения. В разделе "Добавление действия" найдите
Azure Data Explorerи выберите команду "Выполнить запрос KQL". Оставьте аутентификацию по умолчанию OAuth. Введите URL-адрес кластера Azure Data Explorer иontologiesимя базы данных. В этом запросе вы проверяете, какой тип ресурсов у вас есть. Используйте следующий запрос, чтобы получить ресурсы из эталонного решения для производственных онтологий:opcua_telemetry | join kind=inner ( opcua_metadata | distinct Name, DataSetWriterID | extend AssetList = split(Name, ';') | extend AssetName = tostring(AssetList[0]) ) on DataSetWriterID | project AssetName | summarize by AssetNameЧтобы получить данные активов в dynamics 365 Field Service, необходимо подключиться к Microsoft Dataverse. В разделе "Добавление действия" найдите
Dataverseи выберите команду "Добавить новую строку ". Оставьте аутентификацию по умолчанию OAuth. Подключитесь к экземпляру Field Service Dynamics 365 и используйте следующую конфигурацию.- В поле "Имя таблицы" выберите "Ресурсы клиента"
- В поле "Имя" выберите "Ввести данные" на предыдущем шаге и выберите "Имя ресурса".
Сохраните рабочий процесс и запустите его. Вы можете увидеть, что новые активы создаются в Dynamics 365 Field Service.
Создание рабочего процесса Azure Logic Apps для создания оповещений в службе полей Dynamics 365
Этот рабочий процесс создает оповещения в Dynamics 365 Field Service, когда FaultyTime для актива в эталонном решении производственных онтологий достигает порогового значения.
Чтобы получить данные, создайте функцию Azure Data Explorer. На панели запросов Azure Data Explorer в портал 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}Создайте рабочий процесс с отслеживанием состояния в приложении логики.
В конструкторе рабочих процессов создайте триггер повторения, который выполняется каждые три минуты. Затем добавьте действие и выберите действие запуска KQL-запроса .
Введите URL-адрес кластера Azure Data Explorer, а затем введите онтологии в качестве имени базы данных и используйте
FaultyFieldAssetsимя функции в качестве запроса.Чтобы получить данные активов в dynamics 365 Field Service, необходимо подключиться к Microsoft Dataverse. В разделе "Добавление действия" найдите
Dataverseи выберите команду "Добавить новую строку ". Оставьте аутентификацию по умолчанию OAuth. Подключитесь к экземпляру Field Service Dynamics 365 и используйте следующую конфигурацию.- В поле "Имя таблицы" выберите оповещения Интернета вещей
- В поле "Описание" используйте ввод данных из предыдущего шага, чтобы создать сообщение "[Имя ресурса] имеет [имя][значение]". AssetName, Name и Value — это поля из предыдущего шага.
- В поле "Время оповещения" выберите ввод данных из предыдущего шага, а затем выберите метку времени.
- В поле "Тип оповещения" выберите "Аномалия".
Запустите рабочий процесс и просмотрите новые оповещения, созданные на панели мониторинга оповещений Dynamics 365 Field Service IoT: