البرنامج التعليمي: تنفيذ بنية الحل المرجعي ل Azure Industrial IoT

يريد المصنعون نشر حل IoT صناعي شامل على نطاق عالمي وربط جميع مواقع الإنتاج الخاصة بهم بهذا الحل لزيادة الكفاءة لكل موقع إنتاج فردي.

وتؤدي هذه الكفاءات المتزايدة إلى إنتاج أسرع واستهلاك أقل للطاقة، مما يؤدي جميعا إلى خفض تكلفة السلع المنتجة مع زيادة جودتها في معظم الحالات.

يجب أن يكون الحل فعالا قدر الإمكان وتمكين جميع حالات الاستخدام المطلوبة مثل مراقبة الحالة وحساب OEE والتنبؤ واكتشاف الحالات الخارجة عن المألوف. من الرؤى المكتسبة من حالات الاستخدام هذه، في خطوة ثانية يمكن إنشاء حلقة ملاحظات رقمية يمكنها بعد ذلك تطبيق التحسينات والتغييرات الأخرى على عمليات الإنتاج.

إمكانية التشغيل التفاعلي هي المفتاح لتحقيق إطلاق سريع لبنية الحل واستخدام معايير مفتوحة مثل OPC UA يساعد بشكل كبير في تحقيق هذا التشغيل المتداخل.

البنية الموحدة لاتصالات النظام الأساسي المفتوح IEC 62541 (OPC UA)

يستخدم هذا الحل هندسة IEC 62541 Open Platform Communications (OPC) الموحدة (UA) لجميع بيانات التكنولوجيا التشغيلية (OT). تم وصف هذا المعيار هنا.

بنية الحل المرجعي

هندسة مبسطة (كل من خيارات Azure و Fabric):

رسم تخطيطي لبنية IIoT بسيطة.

بنية مفصلة (Azure فقط):

رسم تخطيطي لبنية IIoT.

المكونات

فيما يلي المكونات المتضمنة في هذا الحل:

المكون ‏‏الوصف
الأصول الصناعية مجموعة من خطوط الإنتاج الممكنة OPC-UA المحاكاة المستضافة في حاويات Docker
عمليات Azure IoT عمليات Azure IoT هي وحدة بيانات موحدة للحافة. يتضمن مجموعة من خدمات البيانات المعيارية والقابلة للتطوير والمتاحة بشكل كبير والتي تعمل على مجموعات Kubernetes الحافة الممكنة في Azure Arc.
بوابة البيانات تربط هذه البوابة مصادر البيانات المحلية (مثل SAP) ب Azure Logic Apps في السحابة.
Azure Kubernetes Services Edge Essentials يتم تشغيل تنفيذ Kubernetes هذا في Edge. يوفر مجموعات Kubernetes أحادية العقد ومتعددة العقد لتكوين Edge متسامح مع الأخطاء. يتم دعم كل من K3S وK8S. يتم تشغيله على أجهزة مضمنة أو من فئة الكمبيوتر الشخصي، مثل بوابة صناعية.
مراكز أحداث Azure وسيط الرسائل السحابية الذي يتلقى رسائل OPC UA PubSub من بوابات الحافة ويخزنها حتى يتم استردادها من قبل المشتركين.
Azure Data Explorer قاعدة بيانات السلاسل الزمنية وخدمة لوحة معلومات الواجهة الأمامية لتحليلات السحابة المتقدمة، بما في ذلك الكشف عن الحالات الشاذة المضمنة والتنبؤات.
Azure Logic Apps Azure Logic Apps هو نظام أساسي سحابي يمكنك استخدامه لإنشاء وتشغيل مهام سير العمل التلقائية مع القليل من التعليمات البرمجية أو بدونها.
Azure Arc تستخدم هذه الخدمة السحابية لإدارة مجموعة Kubernetes المحلية على الحافة. يمكن نشر أحمال العمل الجديدة عبر Flux.
تخزين Azure تستخدم هذه الخدمة السحابية لإدارة مخزن شهادات OPC UA وإعدادات أحمال عمل Edge Kubernetes.
Azure Managed Grafana Azure Managed Grafana هو نظام أساسي لتصور البيانات مبني على برنامج Grafana بواسطة Grafana Labs. تم إنشاء Grafana كخدمة مدارة بالكامل تستضيفها وتدعمها Microsoft.
Microsoft Power BI Microsoft Power BI هي مجموعة من خدمات البرامج والتطبيقات والموصلات SaaS التي تعمل معا لتحويل مصادر البيانات غير المرتبطة إلى رؤى متماسكة وغامرة بصريا وتفاعلية.
Microsoft Dynamics 365 Field Service Microsoft Dynamics 365 Field Service هو حل SaaS تسليم المفتاح لإدارة طلبات خدمة ميدانية.
قائد سحابة UA يحول هذا التطبيق المرجعي مفتوح المصدر الرسائل المرسلة إلى Message Queue Telemetry Transport (MQTT) أو وسيط Kafka (ربما في السحابة) إلى طلبات OPC UA Client/Server لخادم OPC UA متصل. يعمل التطبيق في حاوية Docker.
إجراء سحابة UA يستعلم تطبيق السحابة المرجعي المفتوح المصدر هذا عن Azure Data Explorer لقيمة بيانات معينة. قيمة البيانات هي الضغط في أحد أجهزة خط الإنتاج التي تمت محاكاتها. فإنه يستدعي قائد سحابة UA عبر مراكز الأحداث Azure عند الوصول إلى حد معين (4000 mbar). ثم يستدعي قائد سحابة UA أسلوب OpenPressureReliefValve على الجهاز عبر OPC UA.
مكتبة سحابة UA مكتبة UA السحابية هي مخزن عبر الإنترنت لنماذج معلومات OPC UA، تستضيفها مؤسسة OPC هنا.
المترجم UA Edge يترجم هذا التطبيق المرجعي للاتصال الصناعي مفتوح المصدر من واجهات الأصول الخاصة إلى OPC UA باستخدام وصف الشيء W3C Web of Things (WoT) كمخطط لوصف واجهة الأصول الصناعية.

إشعار

في عملية نشر في العالم الحقيقي، سيتم إجراء شيء بالغ الأهمية مثل فتح صمام تخفيف الضغط محليا. هذا مجرد مثال بسيط على كيفية تحقيق حلقة الملاحظات الرقمية.

مخزن شهادات OPC UA المستند إلى السحابة والتخزين المستمر

عندما تقوم الشركات المصنعة بتشغيل تطبيقات OPC UA، يجب الاحتفاظ بملفات تكوين OPC UA والمفاتيح والشهادات الخاصة بها. في حين أن Kubernetes لديه القدرة على الاحتفاظ بهذه الملفات في وحدات التخزين، فإن المكان الأكثر أمانا لها هو السحابة، خاصة على مجموعات العقدة الواحدة حيث سيتم فقدان وحدة التخزين عند فشل العقدة. هذا السيناريو هو السبب في أن تطبيقات OPC UA المستخدمة في هذا الحل تخزن ملفات التكوين والمفاتيح والشهادات الخاصة بها في السحابة. يتمتع هذا النهج أيضا بميزة توفير موقع واحد للشهادات الموثوق بها بشكل متبادل لجميع تطبيقات OPC UA.

مكتبة سحابة UA

يمكنك قراءة نماذج معلومات OPC UA مباشرة من Azure Data Explorer. يمكنك القيام بذلك عن طريق استيراد عقد OPC UA المحددة في نموذج معلومات OPC UA إلى جدول للبحث عن المزيد من بيانات التعريف داخل الاستعلامات.

أولا، قم بتكوين نهج وسيلة شرح Azure Data Explorer (ADX) لمكتبة سحابة UA عن طريق تشغيل الاستعلام التالي على مجموعة ADX (تأكد من أنك مسؤول مجموعة ADX، قابل للتكوين ضمن الأذونات في علامة التبويب ADX في مدخل Microsoft Azure):

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

ثم قم بتشغيل استعلام Azure Data Explorer التالي من مدخل Microsoft 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 Explorer المتوفرة للتنزيل هنا، قم بتشغيل الاستعلام التالي:

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

للحصول على أفضل النتائج، قم بتغيير Layout الخيار إلى Grouped و Lables إلى name.

رسم بياني لنموذج معلومات المحطة.

محاكاة خط الإنتاج

يستخدم الحل محاكاة خط إنتاج تتكون من عدة محطات، باستخدام نموذج معلومات OPC UA، ونظام تنفيذ تصنيع بسيط (MES). يتم تعبئة كل من المحطات و MES في حاويات لتسهيل النشر.

تكوين المحاكاة الافتراضي

تم تكوين المحاكاة لتضمين خطي إنتاج. التكوين الافتراضي هو:

خط الإنتاج وقت الدورة المثالي (بالثوان)
ميونخ 6
سياتل 10
اسم Shift البدء الانتهاء
الصباح 07:00 00:14
بعد الظهيرة 00:15 22:00
الليل 23:00 06:00

إشعار

أوقات التحول بالتوقيت المحلي، وتحديدا المنطقة الزمنية التي يتم تعيين الجهاز الظاهري (VM) الذي يستضيف محاكاة خط الإنتاج إليها.

معرفات عقدة OPC UA لخادم UA OPC للمحطة

يتم استخدام معرفات عقدة OPC UA التالية في خادم UA OPC محطة بيانات تتبع الاستخدام إلى السحابة.

  • 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 وإجراء سحابة UA

ينفذ هذا التنفيذ المرجعي "حلقة الملاحظات الرقمية"، ما يؤدي على وجه التحديد إلى تشغيل أمر على أحد خوادم OPC UA في المحاكاة من السحابة، استنادا إلى بيانات السلسلة الزمنية التي تصل إلى حد معين (ضغط المحاكاة). يمكنك مشاهدة ضغط جهاز التجميع في خط إنتاج سياتل الذي يتم إصداره على فترات منتظمة في لوحة معلومات Azure Data Explorer.

تثبيت محاكاة خط الإنتاج والخدمات السحابية

يؤدي النقر على الزر إلى نشر جميع الموارد المطلوبة على Microsoft Azure:

نشر في Azure

أثناء النشر، يجب توفير كلمة مرور لجهاز ظاهري يستخدم لاستضافة محاكاة خط الإنتاج وUA Cloud Twin. يجب أن تحتوي كلمة المرور على ثلاث سمات من السمات التالية: حرف حالة أدنى واحد، وحرف واحد بأحرف كبيرة، ورقم واحد، وحرف خاص واحد. يجب أن يتراوح طول كلمة المرور بين 12 و72 حرفا.

إشعار

لتوفير التكلفة، ينشر النشر جهازا ظاهريا واحدا فقط ل Windows 11 Enterprise لكل من محاكاة خط الإنتاج ونظام التشغيل الأساسي لمثيل Azure Kubernetes Services Edge Essentials. في سيناريوهات الإنتاج، لا تكون محاكاة خط الإنتاج مطلوبة وبالنسبة لنظام التشغيل الأساسي لمثيل Azure Kubernetes Services Edge Essentials، نوصي بقناة خدمة Windows IoT Enterprise طويلة الأجل (LTSC).

بمجرد اكتمال النشر، اتصل بجهاز Windows الظاهري المنشور باستخدام اتصال RDP (سطح المكتب البعيد). يمكنك تنزيل ملف RDP في صفحة مدخل Azure للجهاز الظاهري، ضمن خيارات الاتصال. سجل الدخول باستخدام بيانات الاعتماد التي قدمتها أثناء النشر، وافتح نافذة powershell مسؤول istrator، وانتقل إلى C:\ManufacturingOntologies-main\Deployment الدليل، وقم بتشغيل:

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

بعد الانتهاء من الأمر، يكتمل تثبيت Azure Kubernetes Services 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 انسخ مساحة اسم مراكز الأحداث سلسلة الاتصال كما هو موضح هنا.
StorageAccountCS في مدخل Microsoft Azure، انتقل إلى حساب التخزين الذي تم إنشاؤه بواسطة هذا الحل. حدد "مفاتيح الوصول" من قائمة التنقل اليسرى. ثم انسخ سلسلة الاتصال ل key1.
AzureSubscriptionID في مدخل Microsoft Azure، استعرض الاشتراكات وانسخ معرف الاشتراك المستخدم في هذا الحل.
AzureTenantID في مدخل Microsoft Azure، افتح صفحة معرف إدخال Microsoft وانسخ معرف المستأجر الخاص بك.

يوضح المثال التالي الأمر مع جميع المعلمات:

    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 من خلال واجهة مستخدم مدخل Microsoft Azure (في الزاوية العلوية اليسرى)، للتأكد من تسجيل الدخول إلى المستأجر المستخدم أثناء النشر. بمجرد تسجيل الدخول، اترك نافذة المستعرض مفتوحة. وهذا يضمن أن البرنامج النصي StartSimulation يمكنه الاتصال بسهولة أكبر بالاشتراك الصحيح.

في هذا الحل، يوجد مخزن شهادات تطبيق OPC UA ل UA Cloud Publisher، ومخزن MES الخاص بخط الإنتاج والآلات الفردية، في السحابة في حساب Azure Storage المنشور.

تمكين مجموعة Kubernetes للإدارة عبر Azure Arc

  1. على جهازك الظاهري، افتح نافذة PowerShell مسؤول istrator. انتقل إلى C:\ManufacturingOntologies-main\Deployment الدليل وقم بتشغيل CreateServicePrincipal. يمكن استرداد المعلمتين subscriptionID و tenantID من مدخل Microsoft Azure.

  2. قم بتشغيل notepad aksedge-config.json وتوفير المعلومات التالية:

    السمة ‏‏الوصف
    الموقع موقع Azure لمجموعة الموارد الخاصة بك. يمكنك العثور على هذا الموقع في مدخل Microsoft Azure ضمن مجموعة الموارد التي تم نشرها لهذا الحل، ولكن قم بإزالة المسافات في الاسم! المناطق المدعومة حاليا هي eastus، eastus2، westus، westus2، westus3، westeurope، و northeurope.
    SubscriptionId. معرف اشتراكك. في مدخل Microsoft Azure، حدد الاشتراك الذي تستخدمه وانسخ/الصق معرف الاشتراك.
    TenantId معرّف المستأجر الخاص بك. في مدخل Microsoft Azure، حدد على Azure Active Directory وانسخ/الصق معرف المستأجر.
    ResourceGroupName اسم مجموعة موارد Azure التي تم نشرها لهذا الحل.
    ClientId اسم كيان خدمة Azure الذي تم إنشاؤه مسبقا. تستخدم Azure Kubernetes Services كيان الخدمة هذا لتوصيل مجموعتك ب Arc.
    ClientSecret كلمة المرور الخاصة ب Azure Service Principal.
  3. احفظ الملف، وأغلق نافذة PowerShell، وافتح نافذة Powershell مسؤول istrator جديدة. انتقل مرة أخرى إلى C:\ManufacturingOntologies-main\Deployment الدليل وقم بتشغيل SetupArc.

يمكنك الآن إدارة مجموعة Kubernetes من السحابة عبر مثيل Azure Arc المنشور حديثا. في مدخل Microsoft Azure، استعرض للوصول إلى مثيل Azure Arc وحدد Workloads. يمكن استرداد رمز الخدمة المطلوب عبر Get-AksEdgeManagedServiceToken من نافذة powershell مسؤول istrator على جهازك الظاهري.

لقطة شاشة ل Azure Arc في مدخل Microsoft Azure.

نشر عمليات Azure IoT على الحافة

تأكد من أنك بدأت بالفعل محاكاة خط الإنتاج وقمت بتمكين مجموعة Kubernetes للإدارة عبر Azure Arc كما هو موضح في الفقرات السابقة. ثم اتبع الخطوات التالية:

  1. من مدخل Microsoft Azure، انتقل إلى Key Vault المنشور في هذا الحل المرجعي وأضف هويتك الخاصة إلى نهج الوصول بالنقر فوق Access policies، Createوحدد Keys, Secrets & Certificate Management القالب، وحدد Next، وابحث عن هوية المستخدم الخاصة بك وحددها، وحدد Next، واترك قسم التطبيق فارغا، وحدد Next وأخيرا Create.
  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. من مدخل Microsoft Azure، انشر عمليات Azure IoT عن طريق التنقل إلى مجموعة kubernetes المتصلة ب Arc، وحدد على Extensions، Addوحدد Azure IoT Operations، وحدد ، وحدد Create. في الصفحة Basic، اترك كل شيء كما هو. في صفحة التكوين، قم بتعيين MQ Mode إلى Auto. لا تحتاج إلى نشر وحدة تحكم منطق قابلة للبرمجة (PLC)، لأن هذا الحل المرجعي يحتوي بالفعل على محاكاة خط إنتاج أكثر جوهرية. في صفحة Automation، حدد Key Vault الذي تم نشره لهذا الحل المرجعي ثم انسخ الأمر الذي az iot ops init تم إنشاؤه تلقائيا. من الجهاز الظاهري المنشور، افتح نافذة PowerShell جديدة مسؤول istrator، وسجل الدخول إلى اشتراك Azure الصحيح عن طريق تشغيل az login ثم قم بتشغيل az iot ops init الأمر باستخدام الوسيطات من مدخل Microsoft Azure. بمجرد اكتمال الأمر، حدد Next المعالج ثم أغلقه.

تكوين أمان OPC UA والاتصال لعمليات Azure IoT

تأكد من نشر عمليات Azure IoT بنجاح وجميع أحمال عمل Kubernetes قيد التشغيل عن طريق الانتقال إلى مورد Kubernetes الممكن بواسطة Arc في مدخل Microsoft Azure.

  1. من مدخل Microsoft Azure، انتقل إلى Azure Storage المنشور في هذا الحل المرجعي، وافتح Storage browser ثم Blob containers. هنا يمكنك الوصول إلى مخزن شهادات OPC UA المستند إلى السحابة المستخدم في هذا الحل. تستخدم عمليات Azure IoT Azure Key Vault كمخزن شهادات OPC UA المستند إلى السحابة بحيث تحتاج الشهادات إلى نسخ:
    1. من داخل حاويات Blob في مستعرض Azure Storage، لكل خط إنتاج محاكاة، انتقل إلى مجلد app/pki/trusted/certs، وحدد التجميع والتعبئة واختبار ملف الشهادة وقم بتنزيله.
    2. سجل الدخول إلى اشتراك Azure عبر az login مسؤول istrator PowerShell Window ثم قم بتشغيل az keyvault secret set --name "<stationName>-der" --vault-name <keyVaultName> --file .<stationName>.der --encoding hex --content-type application/pkix-cert، مع توفير keyVaultName و stationName لكل من المحطات الستة التي قمت بتنزيل ملف .der cert لها في الخطوة السابقة.
  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 Broker لمحطة التجميع لخط إنتاج ميونخ، وما إلى ذلك. حدد Do not use transport authentication certificate (المصادقة المتبادلة المستندة إلى شهادة OPC UA بين عمليات Azure IoT وأي خادم OPC UA متصل لا يزال قيد الاستخدام).
    2. بالنسبة لعلامات الأصول، حدد Import CSV file الملف الموجود في C:\ManufacturingOntologies-main\Tools\FactorySimulation\Station الدليل وافتحهStationTags.csv.
  4. من مدخل Microsoft Azure، انتقل إلى Azure Storage المنشور في هذا الحل المرجعي، وافتح Storage browser ثم Blob containers. لكل سطر إنتاج تمت محاكاته، انتقل إلى app/pki/rejected/certs المجلد وقم بتنزيل ملف شهادة عمليات Azure IoT. ثم احذف الملف. انتقل إلى app/pki/trusted/certs المجلد وقم بتحميل ملف شهادة عمليات Azure IoT إلى هذا الدليل.
  5. من الجهاز الظاهري المنشور، افتح موجه أوامر Windows ثم أعد تشغيل محاكاة خط الإنتاج عن طريق الانتقال إلى C:\ManufacturingOntologies-main\Tools\FactorySimulation الدليل وتشغيل الأمر StopSimulation ، متبوعا بأمر StartSimulation .
  6. اتبع الإرشادات كما هو موضح هنا للتحقق من تدفق البيانات من محاكاة خط الإنتاج.
  7. كخطوة أخيرة، قم بتوصيل عمليات Azure IoT بمراكز الأحداث المنشورة في هذا الحل المرجعي كما هو موضح هنا.

استخدام مراقبة حالة الحالات، وحساب OEE، والكشف عن الحالات الشاذة، وإجراء التنبؤات في Azure Data Explorer

يمكنك أيضا زيارة وثائق Azure Data Explorer لمعرفة كيفية إنشاء لوحات معلومات بدون تعليمات برمجية لمراقبة الحالة أو تنبؤات العائد أو الصيانة أو الكشف عن الحالات الشاذة. قدمنا لوحة معلومات عينة هنا لنشرها في لوحة معلومات ADX باتباع الخطوات الموضحة هنا. بعد الاستيراد، تحتاج إلى تحديث مصدر بيانات لوحة المعلومات عن طريق تحديد نقطة نهاية HTTPS لمثيل نظام مجموعة خادم ADX بالتنسيق https://ADXInstanceName.AzureRegion.kusto.windows.net/ في الزاوية العلوية اليسرى من لوحة المعلومات.

لقطة شاشة للوحة معلومات Azure Data Explorer.

إشعار

إذا كنت تريد عرض OEE لوردية معينة، فحدد Custom Time Range في Time Range القائمة المنسدلة في الزاوية العلوية اليمنى من لوحة معلومات ADX وأدخل التاريخ والوقت من بداية الوردية إلى نهايتها التي تهتم بها.

عرض الرسم البياني لنموذج مساحة الاسم الموحدة المضمنة (UNS) و ISA-95 في Kusto Explorer

ينفذ هذا الحل المرجعي NameSapce (UNS)، استنادا إلى بيانات تعريف OPC UA المرسلة إلى قاعدة بيانات السلسلة الزمنية في السحابة (Azure Data Explorer). تتضمن بيانات التعريف OPC UA هذه أيضا التسلسل الهرمي للأصول ISA-95. يمكن تصور الرسم البياني الناتج بسهولة في أداة Kusto Explorer المتوفرة للتنزيل هنا.

أضف اتصالا جديدا إلى مثيل 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.

رسم بياني يوضح التسلسل الهرمي للأصول ISA-95.

استخدام خدمة Azure Managed Grafana

يمكنك أيضا استخدام Grafana لإنشاء لوحة معلومات على Azure للحل الموضح في هذه المقالة. يتم استخدام Grafana داخل التصنيع لإنشاء لوحات معلومات تعرض البيانات في الوقت الحقيقي. يقدم Azure خدمة تسمى Azure Managed Grafana. باستخدام هذا، يمكنك إنشاء لوحات معلومات سحابية. في دليل التكوين هذا، يمكنك تمكين Grafana على Azure وإنشاء لوحة معلومات مع البيانات التي يتم الاستعلام عنها من Azure Data Explorer وخدمة Azure Digital Twins، باستخدام بيانات خط الإنتاج المحاكاة من هذا الحل المرجعي.

تظهر لقطة الشاشة التالية لوحة المعلومات:

لقطة شاشة تعرض لوحة معلومات Grafana.

تمكين خدمة Azure Managed Grafana

  1. انتقل إلى مدخل Microsoft Azure وابحث عن الخدمة "Grafana" وحدد خدمة "Azure Managed Grafana".

    لقطة شاشة لتمكين Grafana في Marketplace.

  2. امنح المثيل اسما واترك الخيارات القياسية قيد التشغيل - وأنشئ الخدمة.

  3. بعد إنشاء الخدمة، انتقل إلى عنوان URL حيث يمكنك الوصول إلى مثيل Grafana. يمكنك العثور على عنوان URL في الصفحة الرئيسية للخدمة.

إضافة مصدر بيانات جديد في Grafana

بعد تسجيل الدخول الأول، ستحتاج إلى إضافة مصدر بيانات جديد إلى Azure Data Explorer.

  1. انتقل إلى "التكوين" وأضف مصدر بيانات جديدا.

  2. ابحث عن Azure Data Explorer وحدد الخدمة.

  3. قم بتكوين الاتصال واستخدام تسجيل التطبيق (اتبع الدليل المقدم في أعلى هذه الصفحة).

  4. احفظ الاتصال واختبره في أسفل الصفحة.

استيراد نموذج لوحة معلومات

أنت الآن جاهز لاستيراد لوحة معلومات العينة المتوفرة.

  1. قم بتنزيل نموذج لوحة المعلومات هنا: نموذج Grafana Manufacturing Dashboard.

  2. انتقل إلى "لوحة المعلومات" وحدد "استيراد".

  3. حدد المصدر الذي قمت بتنزيله وحدد "حفظ". تحصل على خطأ على الصفحة، لأنه لم يتم تعيين متغيرين بعد. انتقل إلى صفحة الإعدادات في لوحة المعلومات.

  4. حدد على اليسار على "المتغيرات" وحدث عنواني URL باستخدام عنوان URL لخدمة Azure Digital Twins.

  5. انتقل مرة أخرى إلى لوحة المعلومات واضغط على زر التحديث. يجب أن تشاهد الآن البيانات (لا تنس الضغط على زر الحفظ على لوحة المعلومات).

    يتم ملء متغير الموقع في أعلى الصفحة تلقائيا ببيانات من Azure Digital Twins (عقد المنطقة من ISA95). هنا يمكنك تحديد المواقع المختلفة ورؤية نقاط البيانات المختلفة لكل مصنع.

  6. إذا لم تظهر البيانات في لوحة المعلومات، فانتقل إلى اللوحات الفردية وتحقق مما إذا كان مصدر البيانات الصحيح محددا.

تكوين التنبيهات

داخل Grafana، من الممكن أيضا إنشاء تنبيهات. في هذا المثال، نقوم بإنشاء تنبيه OEE منخفض لأحد خطوط الإنتاج.

  1. سجل الدخول إلى خدمة Grafana، وحدد قواعد التنبيه في القائمة.

    لقطة شاشة تعرض التنقل إلى التنبيهات.

  2. حدد "إنشاء قاعدة تنبيه".

    لقطة شاشة توضح كيفية إنشاء قاعدة تنبيه.

  3. امنح التنبيه اسما وحدد "Azure Data Explorer" كمصدر بيانات. حدد الاستعلام في جزء التنقل.

    لقطة شاشة لإنشاء استعلام تنبيه.

  4. في حقل الاستعلام، أدخل الاستعلام التالي. في هذا المثال، نستخدم خط الإنتاج "سياتل".

    let oee = CalculateOEEForStation("assembly", "seattle", 6, 6);
    print round(oee * 100, 2)
    
  5. حدد "جدول" كإخراج.

  6. مرر لأسفل وصولا إلى القسم التالي. هنا، يمكنك تكوين حد التنبيه. في هذا المثال، نستخدم "أقل من 10" كعتبات، ولكن في بيئات الإنتاج، يمكن أن تكون هذه القيمة أعلى.

    لقطة شاشة تعرض تنبيه الحد.

  7. حدد المجلد حيث تريد حفظ التنبيهات وتكوين "سلوك تقييم التنبيه". حدد الخيار "كل دقيقتين".

  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. من مدخل Microsoft Azure، انتقل إلى مثيل قاعدة بيانات Azure Data Explorer (ontologies) وأضف Database Admin أذونات إلى مستخدم Azure Active Directory مع إمكانية الوصول إلى اشتراك Azure واحد فقط، وتحديدا الاشتراك المستخدم للمثيل المنشور لهذا الحل المرجعي. إنشاء مستخدم جديد في Azure Active Directory إذا كان عليك ذلك.

  4. من Power BI، أنشئ تقريرا جديدا وحدد بيانات السلسلة الزمنية ل Azure Data Explorer كمصدر بيانات عبر Get data -Azure> ->Azure Data Explorer (Kusto).

  5. في النافذة المنبثقة، أدخل نقطة نهاية Azure Data Explorer للمثيل الخاص بك (على سبيل المثال 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 Explorer باستخدام مستخدم Azure Active Directory الذي منحته الإذن للوصول إلى قاعدة بيانات Azure Data Explorer في وقت سابق.

  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 Explorer إلى تقريرك بالمثل.

    لقطة شاشة لعرض Power BI.

الاتصال الحل المرجعي إلى Microsoft Dynamics 365 Field Service

يعرض هذا التكامل السيناريوهات التالية:

  • تحميل الأصول من الحل المرجعي لسجلات التصنيع إلى Dynamics 365 Field Service.
  • إنشاء تنبيهات في Dynamics 365 Field Service عند الوصول إلى حد معين على بيانات تتبع الاستخدام للحل المرجعي للتصنيع.

يستخدم التكامل تطبيقات Azure Logics. باستخدام Logic Apps، يمكن توصيل التطبيقات والخدمات الناقلة عبر مهام سير عمل بدون تعليمات برمجية. نجلب المعلومات من Azure Data Explorer ونشغل الإجراءات في Dynamics 365 Field Service.

أولا، إذا لم تكن بالفعل عميل Dynamics 365 Field Service، فنشط إصدارا تجريبيا لمدة 30 يوما هنا. تذكر استخدام نفس معرف Microsoft Entra (المعروف سابقا باسم Azure Active Directory) المستخدم أثناء نشر الحل المرجعي ل Manufacturing Onlogies. وإلا، فستحتاج إلى تكوين مصادقة عبر المستأجرين ليست جزءا من هذه الإرشادات!

إنشاء سير عمل Azure Logic App لإنشاء أصول في Dynamics 365 Field Service

لنبدأ بتحميل الأصول من سجلات التصنيع إلى Dynamics 365 Field Service:

  1. انتقل إلى مدخل Microsoft Azure وأنشئ Logic App جديدا.

  2. امنح Azure Logic App اسما، وضعه في نفس مجموعة الموارد مثل الحل المرجعي للتصنيع.

  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 Logic App لإنشاء تنبيهات في Dynamics 365 Field Service

ينشئ سير العمل هذا تنبيهات في Dynamics 365 Field Service، وتحديدا عند الوصول إلى حد معين من FaultyTime على أصل الحل المرجعي للتصنيع Onlogies.

  1. نحتاج أولا إلى إنشاء دالة Azure Data Explorer للحصول على البيانات الصحيحة. انتقل إلى لوحة استعلام Azure Data Explorer في مدخل Microsoft 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 Logic App. إنشاء مشغل "تكرار" للبدء - كل 3 دقائق. أنشئ كإجراء "Azure Data Explorer" وحدد تشغيل استعلام KQL.

  3. أدخل عنوان URL لنظام مجموعة Azure Data Explorer، ثم حدد قاعدة البيانات واستخدم اسم الدالة الذي تم إنشاؤه في الخطوة 1 كاستعلاما.

  4. حدد Microsoft Dataverse كإجراء.

  5. قم بتشغيل سير العمل ولرؤية التنبيهات الجديدة التي يتم إنشاؤها في لوحة معلومات Dynamics 365 Field Service:

    لقطة شاشة للتنبيهات في Dynamics 365 FS.