You are on page 1of 127

‫بروتوكول الـ‪OPC‬‬

‫نشأته وبنيته واستخدامه‬

‫إعــداد‬
‫م‪ .‬عـمـر صهيـب زعـرور‬

‫رسالة أُعدت لنيل درجة الماجستير‬


‫في هندسة الحواسيب واألتمتة‬

‫‪omza88@gmail.com‬‬ ‫جامعة دمشق‬


‫‪Eng.Omar.Zarour‬‬ ‫‪2018-2017‬‬
‫ملخص الرسالة‬

‫تحتوي هذه الرسالة على شرح مفصل لبروتوكول الـ‪ OPC‬أحد أهم وأشهر بروتوكوالت الشبكات‬
‫الصناعية و من أكثرها انتشا اًر اليوم‪.‬‬
‫تم تقسيم هذه الرسالة إلى عدة فصول‪ ،‬في الفصل األول تم التطرق لمشكلة انعدام التوافق بين‬
‫المكونة للشبكة الصناعية‪ ،‬وتم إيضاح الركائز التي جعلت من هذه المشكلة سبباً لوالدة‬
‫ّ‬ ‫األجزاء‬
‫معيار الـ ‪.OPC‬‬
‫في الفصل الثاني تم التعريف بمؤسسة الـ‪ OPC‬وأهم األسس التي قامت عليها مع تعريف عام‬
‫بمعيار الـ ‪ OPC‬ودالالت تسميته‪ ،‬باإلضافة إلى تعريف بعض المفاهيم العامة التي يعتمد عليها‬
‫المعيار‪.‬‬
‫في الفصل الثالث تم الغوص في بنية المخدم‪/‬زبون التي قام عليها المعيار ومبدأ عمله‪ .‬أما في‬
‫الفصل الرابع فقد تم التطرق للبنية البرمجية التي قام عليها معيار ‪ OPC‬واألنواع المختلفة لواجهاته‪،‬‬
‫وتم شرح سلبياته التي كانت فيما بعد سبباً في وضع معيار جديد للـ ‪.OPC‬‬
‫ومن ثم تناولنا المعيار الجديد لبروتوكول الـ‪ OPC‬بشيء من التفصيل وتم توضيح كل من بنيته‬
‫وطبقاته البرمجية ومواصفاته وميزاته‪.‬‬
‫في الفصل الخامس تم تناول الجانب العملي لمعيار الـ‪ ،OPC‬حيث تم إيضاح كيفية وضع معيار‬
‫الـ ‪OPC‬موضع التطبيق وشرح شقي العمل العتادي والبرمجي الالزم لتنفيذ شبكة صناعية باستخدام‬
‫البروتوكول‪ ،‬ومن ثم تم الشرح وبشكل مفصل كيفية ربط البروتوكول مع أشهر برمجيات السكادا‪.‬‬
‫في الفصل السادس تم عرض بعض الدراسات المرجعية المهتمة بدراسة أداء بروتوكول الـ‪،OPC‬‬
‫وعلى ضوء هذه الدراسات‪ ،‬تم إخضاع بروتوكول الـ ‪ OPC‬لتجارب إجهاد واختبارات أداء ُبغية‬
‫مؤيد باألرقام عن إمكانيات البروتوكول وقدرته على القيام بوظيفته في‬
‫الخروج بتصور ملموس ّ‬
‫بيئات المشاريع التحكمية المحلية والموزعة وتحديد أهم العوامل التي تؤثر على أدائه‪.‬‬

‫‪1‬‬
‫فهرس المحتويات‬

‫ملخص الرسالة‪1 ...........................................................................‬‬

‫فهرس المحتويات‪2 .........................................................................‬‬

‫فهرس األشكال ‪5 ...........................................................................‬‬

‫فهرس الجداول ‪8 ...........................................................................‬‬

‫جدول تعريف المصطلحات ‪9 ...............................................................‬‬

‫الفصل ‪ :1‬المقدمة‪11 ........................................................................‬‬

‫‪ 1-1‬ما قبل عصر الـ ‪ – OPC‬مدخل إلى المشكلة العلمية‪11 ...............................‬‬

‫‪ 2-1‬مشكالت عصر ما قبل الـ‪14 ................................................... OPC‬‬

‫‪ 3-1‬الفكرة التي قام عليها معيار الـ‪11 ................................................OPC‬‬

‫الفصل ‪ : 2‬تعريف بروتوكول الـ‪18 ...................................................... OPC‬‬

‫‪ 1-2‬ظهور مؤسسة الـ ‪18 ........................................................... OPC‬‬

‫‪ 2-2‬تعريف معيار الـ ‪22 ............................................................OPC‬‬

‫‪ 3-2‬تسمية الـ ‪ OPC‬واختصاراته ‪23 .......................................................‬‬

‫‪ 4-2‬مفاهيم عامة‪24 ......................................................................‬‬

‫‪ 1-4-2‬مفهوم الـ )‪24 ..............................OLE (Object Linking Embedding‬‬

‫‪ 2-4-2‬تقنية ‪25 ....................................................... COM/DCOM‬‬

‫الفصل ‪ : 3‬بنية وأجزاء بروتوكول الـ‪28 ..................................................OPC‬‬

‫‪ 1-3‬أثر تطبيق معيار الـ ‪ OPC‬على الشبكات الصناعية ‪28 ................................‬‬

‫‪ 2-3‬المبدأ العام لعمل بروتوكول الـ ‪29 ...............................................OPC‬‬

‫‪ 3-3‬بنية المخدم‪ /‬زبون في الـ‪31 .................................................... OPC‬‬

‫‪ 1-3-3‬مخدم الـ ‪31 ..............................................)OPC Server( OPC‬‬

‫‪ 2-3-3‬زبون الـ ‪31 ...............................................)OPC Client(OPC‬‬

‫‪2‬‬
‫الفصل ‪ : 4‬أنواع بروتوكول الـ‪ OPC‬وبنيته البرمجية‪44 .........................................‬‬

‫‪ 1-4‬واجهات معيار الـ‪44 ........................................................... OPC‬‬

‫‪1-1-4‬واجهة النفاذ إلى البيانات اللحظية )‪41 ............OPC Data Access (OPC DA‬‬

‫‪2-1-4‬واجهة األحداث واإلنذارات (‪43 .......... OPC Alarms and Events)OPC A&E‬‬

‫‪ 3-1-4‬واجهة النفاذ إلى البيانات المخزنة ‪44 ........... OPC Historical Data Access‬‬

‫‪ 4-1-4‬واجهة االتصال عبر االنترنت)‪OPC eXtensible Markup Language (OPC XML‬‬

‫‪45 .....................................................................................‬‬

‫‪ 5-1-4‬واجهات معيارية أخرى للـ ‪41 ............................................. OPC‬‬

‫‪ 2-4‬بنية الـ ‪ OPC‬البرمجية ومكوناته‪48 ...................................................‬‬

‫‪ 3-4‬عيوب معيار الـ ‪ OPC DA‬والحافز الذي دفع باتجاه وضع معيار جديد للـ ‪54 .... OPC‬‬

‫‪ 4-4‬معيار الـ ‪ OPC‬ذو البينة الموحدة )‪55 ....... OPC Unified Architecture (OPC UA‬‬

‫‪ 5-4‬الطبقات البرمجية للـ ‪11 ................................................... OPC UA‬‬

‫‪ 1-4‬مواصفات المعيار ‪12 ......................................................OPC UA‬‬

‫‪ 7-4‬األمان في ‪14 ............................................................. OPC UA‬‬

‫‪ 8-4‬تطور وليس ثورة ‪15 .................................... Evolution Not Revolution‬‬

‫الفصل ‪ : 5‬الدراسة العملية ‪18 ................................................................‬‬

‫‪ 1-5‬كيف نبدأ تنفيذ مشروع باستخدام بروتوكول الـ ‪18 ...........................OPC DA‬‬

‫‪1-1-5‬الجزء العتادي ‪18 ....................................................Hardware‬‬

‫‪2-1-5‬الجزء البرمجي ‪19 ....................................................Software‬‬

‫‪ 2-5‬ربط برنامج الـ ‪ Wincc SCADA‬مع بروتوكول الـ ‪75 ............................OPC‬‬

‫‪ 3-5‬ربط األردوينو مع الـ ‪84 ........................................................OPC‬‬

‫‪ 1-3-5‬تنصيب مخدم الـ ‪ OPC‬الخاص باألردوينو وضبطه ‪84 ..........................‬‬

‫‪ 2-3-5‬تحميل مكتبة الـ‪81 ....................................................... OPC‬‬

‫‪ 3-3-5‬كيف استخدام مكتبة الـ‪82 .......................................Arduino OPC‬‬

‫‪3‬‬
‫‪ 4-5‬بناء زبون ‪ OPC‬باستخدام الماتالب‪84 ...............................................‬‬

‫الفصل ‪ : 1‬إختبار أداء الـ‪ OPC‬في الشبكات المحلية والموزعة ‪93 .............................‬‬

‫‪ 1-1‬الدراسة األولى‪ :‬اختبار كفاءة استخدام الموارد ‪93 ...... Resource Efficiency Testing‬‬

‫‪ 1-1-1‬الغاية من اختبار كفاءة استخدام الموارد‪93 ......................................‬‬

‫‪ 2-1-1‬اختبار مخدم الـ ‪94 .......................................................OPC‬‬

‫‪ 3-1-1‬اختبار زبون الـ ‪91 ....................................................... OPC‬‬

‫‪ 2-1‬الدراسة الثانية‪ :‬اختبار األداء واالنتاجية ‪97 ......... Throughput Performance Tests‬‬

‫‪ 3-1‬اختبار أداء بروتوكول الـ ‪ OPC‬من خالل قياس سرعة المخدم في تلبية طلبات زبائنه في‬
‫البيئات المحلية والموزعة‪141 ...............................................................‬‬

‫‪ 4-1‬التجارب والنتائج‪145 .................................................................‬‬

‫‪ 1-4-1‬التجربة األولى‪ :‬اختبار أداء الـ ‪ OPC‬على حاسب واحد ‪141 .......... Localhost‬‬

‫‪2-4-1‬التجربة الثانية‪ :‬اختبار أداء الـ ‪ OPC‬في البيئة الموزعة ‪114 ......... Remote PCs‬‬

‫‪ 3-4-1‬مقارنة أداء البروتوكول الـ ‪ OPC‬في البيئة المحلية مع أدائه في البيئة الموزعة‪113 .‬‬

‫‪ 5-1‬أداء األنظمة التي تعمل وفق بروتوكول الـ ‪ OPC‬مقارنة مع األنظمة التقليدية ‪114 ......‬‬

‫‪ 1-5-1‬من حيث زمن التنفيذ‪114 .......................................................‬‬

‫‪ 2-5-1‬من حيث الكلفة‪115 ............................................................‬‬

‫الفصل ‪ : 7‬نتائج البحث واآلفاق المستقبلية‪117 ................................................‬‬

‫‪ 1-7‬نتائج البحث‪117 .....................................................................‬‬

‫‪ 2-7‬اآلفاق المستقبلية‪118 .................................................................‬‬

‫الملحقات‪121 .................................................................................‬‬

‫‪ - 1‬نواة الـ ‪121 ..................................................................... OPC‬‬

‫‪ - 2‬خطوات تفعيل قناة الـ ‪122 ....................................................DCOM‬‬

‫المراجع ‪125 ..................................................................................‬‬

‫‪4‬‬
‫فهرس األشكال‬

‫الشكل ‪ :1-1‬تعريف متحكم يتصل بثالث برمجيات سكادا مختلفة قبل ظهور الـ‪13 .........OPC‬‬
‫الشكل ‪ :2-1‬آلية تعريف ثالث متحكمات منطقية تستخدم برمجية السكادا ‪14 ...................‬‬
‫الشكل ‪ :3-1‬بنية نظام تحكم هجين بدون استخدام الـ‪15 ..................................OPC‬‬
‫الشكل ‪ :4-1‬مشروع تحكم هجين يعمل وفق بروتوكل الـ ‪11 ..............................OPC‬‬
‫الشكل ‪ :1-2‬شعار مؤسسة الـ ‪18 ....................................................... OPC‬‬
‫الشكل ‪ :2-2‬التوزع الجغرافي ألعضاء مؤسسة الـ ‪19 .................................... OPC‬‬
‫الشكل ‪ :3-2‬الشعار الفضي لمنتج الـ ‪24 ................................................ OPC‬‬
‫الشكل ‪ 4-2‬الشعار الذهبي لمنتج الـ ‪21 ................................................. OPC‬‬
‫الشكل ‪ :5-2‬الطبقة التي يعمل فيها بروتوكول الـ ‪22 .....................................OPC‬‬
‫الشكل ‪ :1-2‬تسمية بروتوكول الـ ‪23 .....................................................OPC‬‬
‫الشكل ‪ :7-2‬التسمية الجديدة لمعيار الـ‪24 ............................................... OPC‬‬
‫الشكل ‪ :8-2‬اتصال المخدم والزبون باستخدام قناة ‪25 ...................................COM‬‬
‫الشكل ‪ :9-2‬اتصال المخدم والزبون باستخدام قناة ‪21 .................................DCOM‬‬
‫الشكل ‪ :1-3‬االتصال بين تطبيقات سكاد والمتحكمات قبل وبعد استخدام الـ ‪28 .......... OPC‬‬
‫الشكل ‪ :2-3‬بنية المخدم‪/‬زبون التي يعتمد عليها الـ ‪29 ...................................OPC‬‬
‫الشكل ‪:3-3‬طريقة عمل مخدم الـ ‪31 .................................................... OPC‬‬
‫الشكل ‪ :4-3‬المجموعات ضمن مخدم ‪34 ............................................... OPC‬‬
‫الشكل ‪:5-3‬واجهة ‪31 .......................................................... OPC Server‬‬
‫الشكل ‪ :1-3‬زبون متصل مع عدة مخدمات‪37 ...............................................‬‬
‫الشكل ‪ :7-3‬تشكيالت المخدم‪/‬زبون الممكنة وفق بروتوكول الـ‪38 ......................... OPC‬‬
‫الشكل ‪ :1-4‬مواصفات معيار الـ ‪44 .................................................... OPC‬‬
‫الشكل ‪ :2-4‬أجزاء واجهة النفاذ إلى البيانات ‪42 .................................... OPC DA‬‬
‫الشكل ‪ :3-4‬واجهة النفاذ إلى البيانات وواجهة األحداث واالنذارات ‪43 ..........................‬‬
‫الشكل ‪ :4-4‬واجهة ‪44 ..........................................................OPC HDA‬‬
‫الشكل ‪ :5-4‬المواصفات العام لبروتوكول الـ ‪41 ..........................................OPC‬‬
‫الشكل ‪ :1-4‬تبادل البيانات بين مخدمات الـ ‪ OPC‬من خالل ‪47 .....................OPC DX‬‬

‫‪5‬‬
‫الشكل ‪ :7-4‬بنية الـ ‪ OPC‬النموذجية(القياسية) ‪48 .............................................‬‬
‫الشكل ‪ :8-4‬توابع الواجهة المخصصة‪49 .....................................................‬‬
‫الشكل ‪:9-4‬المخطط الزمني إلصدارات معيار الـ‪ OPC‬بين عامين ‪51 ......... 2447 - 1995‬‬
‫الشكل ‪ :14-4‬شعار بروتوكول الـ ‪ OPC‬ذو البنية الموحدة ‪55 .................................‬‬
‫الشكل ‪:11-4‬البنية المعمارية خدمية التوجه التي يعتمد عليها معيار الـ ‪51 ........... OPC UA‬‬
‫الشكل ‪:12-4‬الفرق بين الـ‪ OPC‬الكالسيكي وال‪ OPC‬ذو البنية الموحدة‪57 ....................‬‬
‫الشكل ‪:13-4‬الطبقات التي يعمل فيها بروتوكول الـ ‪58 ..............................OPC UA‬‬
‫الشكل ‪:14-4‬الفارق في بنية المخدم‪/‬زبون بين الـ ‪ OPC‬الكالسيكي والموحد ‪58 .................‬‬
‫الشكل ‪:15-4‬العقد والعالقات بينها في معيار الـ ‪14 .................................OPC UA‬‬
‫الشكل ‪:11-4‬الطبقات البرمجية لمعيار الـ ‪ OPC‬ذو البنية الموحدة ‪11 .........................‬‬
‫الشكل ‪:17-4‬أجزاء مواصفات ‪13 .................................................. OPC UA‬‬
‫الشكل ‪:18-4‬عملية المصافحة بين المخدم والزبون في معيار ‪15 .................... OPC UA‬‬
‫الشكل ‪ :1-5‬البنية العامة لشبكة صناعية تعمل وفق بروتوكول الـ ‪18 ................ OPC DA‬‬
‫الشكل ‪ :2-5‬مخدم ‪ OPC‬من شركة ‪ OPCTech‬مخصص للمتحكم المنطقي ‪74 ....... DELTA‬‬
‫الشكل ‪ :3-5‬واجهة مخدم الـ ‪ OPC‬المخصصة لتعريفه على المنفذ الفيزيائي ‪71 ................‬‬
‫الشكل ‪ :4-5‬واجهة مخدم الـ ‪ OPC‬المخصصة لتعريفه على المتحكم المنظقي ‪71 ..............‬‬
‫الشكل ‪ :5-5‬واجهة مخدم الـ ‪ OPC‬المخصصة لتعريف العناصر‪72 ...........................‬‬
‫المعرفة ضمن مخدم الـ ‪73 ........... OPC‬‬
‫ّ‬ ‫الشكل ‪ :1-5‬واجهة لعرض القيم اللحظية للعناصر‬
‫ضمنة داخل مخدم الـ ‪74 ............................ OPC‬‬ ‫الشكل ‪ :7-5‬واجهة زبون الـ‪ُ OPC‬‬
‫المتَ ّ‬
‫الشكل ‪ :8-5‬تحديد البيانات المطلوب عرضها ضمن زبون الـ‪74 .........................OPC‬‬
‫الشكل ‪ :9-5‬واجهة لزبون ‪ OPC‬مدمج مع المخدم تظهر فيها قيمة أحد العناصر‪75 ............‬‬
‫الشكل ‪ :14-5‬إنشاء مشروع جديد في برنامج ‪71 .................................... WINCC‬‬
‫الشكل ‪ :11-5‬إضافة قناة اتصال لبروتوكول الـ ‪ OPC‬في برنامج ‪71 ..................WINCC‬‬
‫الشكل ‪ :12-5‬تعريف مجموعة ضمن قناة االتصال ‪ OPC‬في برنامج ‪77 ............. WINCC‬‬
‫الشكل ‪ :13-5‬اختيار مخدم الـ ‪ OPC‬في برنامج ‪77 .................................WINCC‬‬
‫الشكل ‪ :14-5‬تعريف متحول ضمن برنامج ‪ WINCC‬وربطه بمخدم الـ‪78 ................ OPC‬‬
‫الشكل ‪ :15-5‬انشاء صفحة رسومية ضمن برنامج ‪79 .............................. WINCC‬‬
‫الشكل ‪ :11-5‬تجهيز الواجهة الرسومية ضمن برنامج ‪ WINCC‬لعرض قيمة عنصر ‪79 . OPC‬‬

‫‪1‬‬
‫الشكل ‪ :17-5‬وضعية التشغيل بالزمن الحقيقي لبرنامج الـ ‪84 .......................... wincc‬‬
‫الشكل ‪ :18-5‬واجهة مخدم الـ‪ OPC‬الخاص باألردوينو ‪81 .....................................‬‬
‫الشكل ‪ :19-5‬إضافة مكتبة الـ‪OPC‬إلى برنامج األردوينو‪82 .................................. .‬‬
‫الشكل ‪ : :24-5‬زبون ‪ OPC‬يستعرض بيانات مخدم الـ‪83 ......................Arduino OPC‬‬
‫الشكل ‪ :21-5‬خوارزمية برمجة ‪ OPC Client‬باستخدام الماتالب ‪84 ............................‬‬
‫الشكل ‪ :22-5‬واجهة زبون الـ‪ OPC‬المبرمجة باستخدام الـ‪91 ....................... MATLAB‬‬
‫الشكل ‪ :1-1‬اتصال المخدم بمصادر بيانات متنوعة ضمن اختبار كفاءة استخدام الموارد ‪94 ....‬‬
‫الشكل ‪:2-1‬اتصال المخدم بأكثر من زبون ضمن اختبار كفاءة استخدام الموارد ‪94 .............‬‬
‫الشكل ‪ :3-1‬أنواع تجارب قطع االتصال في اختبار كفاءة استخدام الموارد‪91 ...................‬‬
‫الشكل ‪:4-1‬اتصال الزبون مع عدة مخدمات في اختبار كفاءة استخدام الموارد‪91 ...............‬‬
‫الشكل ‪ :5-1‬واجهة أداة اختبار بروتوكول الـ‪143 ......................................... OPC‬‬
‫الشكل ‪ :1-1‬مهام واجهة أداة اختبار األداء‪144 ................................................‬‬
‫الشكل ‪:7-1‬تعريف المتحوالت ضمن مخدم الـ‪ OPC‬وضبطها على وضعية المحاكاة ‪145 ........‬‬
‫الشكل ‪:8-1‬التجربة األولى‪ :‬توزع المخدم والزبائن على حاسب وحيد‪147 ........................‬‬
‫الشكل ‪ :9-1‬أثر زيادة عدد المتحوالت وعدد الزبائن على زمن استجابة المخدم‪/‬حاسب وحيد ‪149 .‬‬
‫الشكل ‪ :14-1‬بنية المخدم‪/‬زبون في البيئة الموزعة ‪114 ........................................‬‬
‫الشكل ‪:11-1‬أثر زيادة عدد المتحوالت وعدد الزبائن على زمن استجابة المخدم‪ /‬عدة‬
‫حواسب ‪112 ..................................................................................‬‬
‫الشكل ‪:12-1‬أثر زيادة عدد المتحوالت وعدد الزبائن على زمن استجابة المخدم‪ /‬حاسب وحيد ‪+‬‬
‫حواسب متعددة‪113 ...........................................................................‬‬
‫الشكل ‪:13-1‬مقارنة بروتوكول الـ‪ OPC‬مع بروتوكوالت أخرى من حيث زمن التنفيذ ‪114 .........‬‬
‫الشكل ‪:14-1‬مقارنة بروتوكول الـ‪ OPC‬مع بروتوكوالت أخرى من حيث الكلفة ‪115 ..............‬‬
‫الشكل ‪ :41‬تفعيل حساب الـ‪122 ........................................................Guest‬‬
‫الشكل ‪ :2‬تفعيل قناة ‪123 ............................................................ DCOM‬‬
‫الشكل ‪ :43‬منح سماحية النفاذ ‪124 ...........................................................‬‬
‫الشكل ‪ :44‬تفعيل وإطالق األذونات ‪124 ......................................................‬‬

‫‪7‬‬
‫فهرس الجداول‬

‫جدول ‪ :1-4‬متطلبات معيار الـ‪52 .................................................. OPC UA‬‬


‫جدول ‪ :1-1‬قائمة بأشهر زبائن الـ‪ OPC‬المستخدمة في اختبار كفاءة استخدام الموارد ‪95 ........‬‬
‫جدول ‪:2-1‬إنتاجية مخدم في بيئة موزعة وأكثر من زبون و‪ 244‬ألف متحول ‪98 ...............‬‬
‫جدول ‪:3-1‬إنتاجية مخدم في بيئة موزعة وأكثر من زبون مع مليون و‪ 444‬ألف متحول ‪99 .....‬‬
‫جدول ‪ :4-1‬إنتاجية مخدم في بيئة محلية و زبون وحيد مع ‪ 54‬ألف متحول ‪99 ...............‬‬
‫جدول ‪ :5-1‬إنتاجية مخدم في بيئة محلية و زبون وحيد مع ‪ 844‬ألف متحول ‪144 .............‬‬
‫جدول ‪ :1-1‬برامج مخدم الـ‪ OPC‬وعدد ما تحويه من متحوالت ‪141 .............................‬‬
‫جدول ‪ :7-1‬أسماء زبائن الـ ‪ OPC‬المستخدمة في التجارب‪141 .................................‬‬
‫جدول ‪ :8-1‬أداء بروتوكول الـ‪OPC‬على حاسب وحيد مع زيادة عدد المتحوالت و الزبائن ‪148 ....‬‬
‫جدول ‪ : 9-1‬أداء بروتوكول الـ‪OPC‬على حواسب متعددة‪111 ...................................‬‬

‫‪8‬‬
‫جدول تعريف المصطلحات‬

‫شاشات تسمح بالتخاطب بين االنسان واآللة‪ ،‬تتصل‬


‫‪HMI :Human Machine Interface‬‬
‫بالمتحكمات لمحاكاة العملية الصناعية‪.‬‬
‫‪SCADA: Supervisory Control and‬‬ ‫التحكم االشرافي وتحصيل البيانات‪ :‬برنامج رسومي‬
‫‪Data Acquisition‬‬ ‫يحاكي العملية الصناعية ويديرها تحكما ً ومراقبة‪.‬‬
‫التبادل الديناميكي للبيانات وهي طريقة تسمح بتبادل‬
‫‪DDE: Dynamic Data Exchange‬‬
‫البيانات بين برمجية وأخرى‬

‫قناة اتصال تسمح لتطبيقات ويندوز المنصبة على‬


‫‪COM: Component Object Model‬‬
‫حاسب واحد باالتصال فيما بينها‬

‫قناة اتصال تسمح لتطبيقات ويندوز المنصبة على‬


‫‪DCOM: Distributed COM‬‬
‫عدة حواسب باالتصال فيما بينها‬

‫‪OPC : OLE For Processing Control‬‬ ‫ربط الكائنات وتضمينها للتحكم بالعمليات‬

‫‪PLC: Programmable Logic‬‬ ‫المتحكم المنطقي القابل للبرمجة‪ ،‬تجهيزة لها مداخل‬
‫‪Controller‬‬ ‫ومخارج تبرمج للتحكم بالمشاريع‪.‬‬
‫نظام تحكم موزع يشبه الـ ‪ PLC‬لكن ذو مواصفات‬
‫‪DCS: Distributed Control System‬‬
‫أعلى‪ ،‬يمتاز باالمتداد على بقع جغرافية كبيرة‪.‬‬
‫وحدة التحصيل البعيدة(الطرفية) وهي أي جهاز‬
‫يوضع في مكان بعيد ليقوم بعمليات التحكم أو‬
‫‪RTU: Remote Terminal Unit‬‬
‫المراقبة ليرسل بعدها هذه المعلومات لوحدة معالجة‬
‫مركزية‪.‬‬

‫‪Protocol‬‬ ‫مجموعة من القواعد تستخدم لتبادل البيانات‬

‫وحدة مفردة من البيانات‪ ،‬يمكن أن تكون رقمية أو‬


‫‪Tag, or Item‬‬
‫تماثلية‬

‫‪9‬‬
‫الفصل األول‬

‫المقدمة‬
‫‪Introduction‬‬

‫يعرض هذا الفصل بعض المشاكل التي عانت منها أنظمة التحكم كمشكلة انعدام التوافقية وصعوبة‬
‫شكلت‬
‫المكونة للمنظومة التحكمية‪ ،‬ويوضح كيف ّ‬
‫ّ‬ ‫النفاذ ومشاركة البيانات بين األجزاء المختلفة‬
‫هذه المشاكل حاف اًز لدى الباحثين دفعتهم للتوحد إليجاد حل تمّثل فيما بعد بوضع معيار عالمي‬
‫جديد اسمه الـ‪. OPC‬‬

‫‪14‬‬
‫المقدمة‬ ‫الفصل األول‬

‫الفصل ‪ : 1‬المقدمة‬

‫‪ 1-1‬ما قبل عصر الـ ‪ – OPC‬مدخل إلى المشكلة العلمية‬

‫في مطلع التسعينات‪ ،‬شهد استخدام الحاسب وبرمجيات األتمتة المعتمدة على الحاسب نمواً كبي ار‬
‫وباألخص الحواسب التي تعمل بنظام التشغيل ويندوز‪ ،‬حيث تم توظيف تلك البرمجيات في عمليات‬
‫المنّفذة‪ ،‬فانطلقت كل شركة ُمنتجة لتجهيزات أو لبرمجيات التحكم إلى‬
‫المراقبة والتحكم بالمشاريع ُ‬
‫المصممة وفقاً لرؤيتها وفلسفتها بدون‬
‫االستثمار في هذا المجال‪ ،‬وبدأت بطرح منتجاتها الخاصة ُ‬
‫أي تنسيق مع الشركات األخرى العاملة في نفس المجال‪.‬‬
‫مع مرور الزمن‪ ،‬أدى ذلك إلى ظهور مشكلة باتت تصنّف كواحدة من أكبر المشكالت التي واجهت‬
‫العاملين في مجال التحكم واألتمتة وهي مشكلة انعدام التوافق‪ ،‬وما نتج عنها من صعوبة النفاذ‬
‫وتشارك البيانات‪ ،‬وغدت من أكبر العقبات أمام التكامل واستمرار التطوير‪.‬‬
‫ونتيجة لذلك ظهرت أصوات نادت بضرورة وضع معايير موحدة تضبط العمل والعاملين في مجال‬
‫التحكم‪.‬‬

‫حولت جهود بناء أنظمة أتمته موحدة من ترف وخيار إلى حاجة‬ ‫إن أحد أهم المشكالت التي ّ‬
‫وضرورة‪ ،‬هي مشكلة النفاذ إلى بيانات تجهيزات التحكم‪ ،‬حيث أن فضاء التحكم غدا يحوي أعداد‬
‫ال تحصى من أنظمة التحكم المختلفة‪ ،‬مضافاً إليها المئات من البروتوكوالت المتنوعة‪.‬‬

‫إن مشكلة النفاذ إلى البيانات ‪ -‬من حيث المبدأ‪ -‬مشابهة تماما لما كانت تعاني منه التطبيقات‬
‫البرمجية في النفاذ إلى الطابعات في نظام التشغيل القديم ‪ ،DOS‬حيث كان كل تطبيق برمجي‬
‫يريد استخدام الطابعة‪ ،‬يحتاج مطورو التطبيق لكتابة تعاريف خاصة به من أجل جميع الطابعات‬
‫التي يريد التطبيق التعامل معها‪ ،‬استمرت هذه المشكلة إلى أن قامت شركة مايكروسوفت بإيجاد‬
‫حل تمثل بدعم تعريف الطابعات ودمجها في نظام التشغيل‪ ،‬حيث قامت بإنشاء طبقة وسيطة‬
‫‪ Interface‬ضمن نظام التشغيل‪ ،‬أٌسند إلى هذه الطبقة مسؤولية تخديم جميع التطبيقات التي ترغب‬
‫صنع الطابعة وليس من قبل‬
‫ؤمن من قبل ُم ّ‬
‫بالنفاذ إلى الطابعات‪ ،‬وبالتالي أصبح تعريف الطابعة ُي ّ‬
‫مطوري البرمجيات‪.‬‬
‫صنع الطابعة في تأمين تعريف لطابعته على نظام التشغيل فقط‪،‬‬
‫بمعنى أخر‪ ،‬انحصرت وظيفة ُم ّ‬
‫ووظيفة نظام التشغيل إتاحة وتنظيم استخدام هذه الطابعة بين مختلف التطبيقات‪ ،‬وبالتالي لم يعد‬
‫المقدمة‬ ‫الفصل األول‬

‫على مطوري البرمجيات سوى التعامل مع الطبقة الوسيطة المسؤولة عن الطباعة في نظام التشغيل‬
‫بغض النظر عن نوع ومصدر الطابعة‪.‬‬
‫ذات المشكلة و بكل تفاصيلها ظهرت في مجال التحكم‪ ،‬وبالتحديد لدى كل من الشركات المنتجة‬
‫لشاشات التخاطب البشري)‪ Human Machine Interface (HMI‬والشركات المطورة لبرمجيات‬
‫التحكم اإلشرافي وتحصيل البيانات )‪،Supervisory Control and Data Acquisition (SCADA‬‬
‫حيث أن كل برمجية سكادا تحتاج عند االتصال بمتحكم ما إلى كتابة تعريف ‪ Driver‬خاص ُيناسب‬
‫هذا المتحكم‪ ،‬ونتيجة لذلك احتاج المطورون لشاشات وبرمجيات سكادا إلى كتابة تعاريف لجميع‬
‫المتحكمات الموجودة في فضاء التحكم‪ ،‬وهذا أمر في غاية الصعوبة‪ ،‬وشكل عبئاً و عائقا كبي ار‬
‫أمام عمليات التطوير وضاعف كثي اًر من كلف اإلنتاج‪.‬‬

‫وأيضا في الجهة المقابلة‪ ،‬في كل وقت كانت شركة ما ترغب بإنتاج متحكم جديد ( ‪PLC‬على سبيل‬
‫المثال)‪ ،‬كان هناك وقت وجهد كبيران سيبذالن في التعاون مع الشركات المزودة للبرمجيات‬
‫الصناعية ‪ SCADA‬وشاشات التخاطب البشرية ‪ HMI‬بهدف بناء تعريف ‪ Driver‬للمتحكم الجديد‬
‫بحيث يصبح بمقدور هذه البرمجيات إنشاء اتصال وتناقل البيانات مع المتحكم الجديد‪.‬‬
‫وبهذا نستنتج أن المشكلة انعدام التوافقية مزدوجة‪ ،‬عانى بسببها كل من مطوري برمجيات األتمتة‬
‫الصناعية ومصنعي التجهيزات الصناعية على ٍ‬
‫حد سواء‪.‬‬

‫إن الهدف الرئيسي من األبحاث في فترة التسعينات كان إلغاء الجهد المضاعف المبذول من قبل‬
‫مصنعي التجهيزات التحكمية من جهة‪ ،‬وشركائهم المبرمجين العاملين في تطوير أنظمة سكادا من‬
‫جهة أخرى‪.‬‬
‫لمزيد من االيضاح وتسليط الضوء على مشكلة انعدام التوافق وصعوبة النفاذ وتشارك البيانات‪،‬‬
‫نستعرض المثالين التاليين‪ ،‬كل مثال يتناول المشكلة من منظور معين‪:‬‬
‫المثال األول‪ :‬من منظور الشركات المصنعة للمتحكمات الصناعية‪:‬‬
‫نفترض وجود شركة ما طورت المتحكم المنطقي ‪ A‬وتريد تعريفه على ثالث برمجيات سكادا‪،‬‬
‫ولتكن‪:‬‬
‫‪ Citect SCADA‬من شركة ‪Schneider‬‬ ‫‪‬‬
‫‪ Wincc SCADA‬من شركة ‪Siemens‬‬ ‫‪‬‬
‫‪ PcVue SCADA‬من شركة ‪ARC‬‬ ‫‪‬‬

‫‪12‬‬
‫المقدمة‬ ‫الفصل األول‬

‫ينبغي على مطوري الجهاز ‪ A‬التعاون مع مطورين من كل شركة من الشركات السابقة بهدف‬
‫التعرف على البنية البرمجية لكل منها‪ ،‬هدفهم من ذلك كتابة ثالث تعاريف منفصلة للمتحكم‬
‫ّ‬
‫الصناعي ‪ ،A‬تعريف واحد مخصص لكل برمجية كما يبين ذلك الشكل(‪.)1-1‬‬

‫الشكل ‪ :1-1‬تعريف متحكم يتصل بثالث برمجيات سكادا مختلفة قبل ظهور الـ‪OPC‬‬

‫المثال الثاني‪ :‬من منظور الشركات المطورة للبرمجيات الصناعية‪:‬‬

‫بفرض لدينا ثالثة متحكمات تنتمي لشركات مختلفة‪ ،‬كما يبين الشكل(‪ ،)2-1‬التجهيزات الثالث‬
‫تتحكم بمعمل ما‪ ،‬لمراقبة المعمل والتحكم بعمله ينبغي أن تحوي برمجية المراقبة والتحكم ‪SCADA‬‬

‫التي تدير المعمل على ما يلي‪:‬‬


‫‪-1‬تعريف‪ Driver‬منفصل لكل من المتحكمات الثالث‪ ،‬ساهم بوضع هذا التعريف بشكل أو بأخر‬
‫كل شركة من الشركات الثالث المصنعة للمتحكمات‪.‬‬
‫‪-2‬دعم البروتوكوالت الذي تعمل عليها التجهيزات السابقة‪ ،‬حيث ينبغي على برمجية سكادا مخاطبة‬
‫كل متحكم باللغة التي يفهمها‪.‬‬
‫‪-3‬معرفة عناوين المداخل والمخارج والمسجالت الداخلية (خريطة الذاكرة) لكل متحكم من‬
‫المتحكمات الثالث بهدف تمكين المستخدم من إمكانية القراءة منها والكتابة فيها‪.‬‬
‫المقدمة‬ ‫الفصل األول‬

‫الشكل ‪ :2-1‬آلية تعريف ثالث متحكمات منطقية تستخدم برمجية السكادا‬

‫يوضح المثال السابق حجم العمل الملقى على كاهل مطوري برمجية تحكم ‪ SCADA‬تدعم ثالث‬

‫متحكمات فقط‪ ،‬فلنا أن نتخيل حجم العمل على برمجية سكادا تلبي حاجة السوق و ُ‬
‫المتمثلة بدعم‬
‫مئات الشركات التي تنتج عشرات المتحكمات الصناعية تعمل ببروتوكوالت مختلفة‪.‬‬

‫‪ 2-1‬مشكالت عصر ما قبل الـ‪OPC‬‬

‫يمكننا اجمال المشكالت التي عانت منها الشبكات الصناعية والتي دفعت الباحثين إلى السعي‬
‫إليجاد معيار موحد يضبط الفوضى السائدة في فضاء التحكم واألتمتة بما يلي‪:‬‬
‫‪ .1‬ال يوجد برمجية سكادا –حتى المشهورة منها‪-‬قادرة على التعرف على جميع المتحكمات‬
‫الصناعية التي تنتجها شركات التحكم المختلفة نظ ار لعددها الهائل وتنوع اصداراتها‪.‬‬
‫‪ .2‬لكل شركة أتمته منتجات خاصة فيها وبروتوكوالت من إنتاجها تدعمها مما أدى إلى‬
‫تضخم وتوالد عدد كبير من البروتوكوالت الخاصة‪.‬‬
‫‪ .3‬بناء نظام تحكم اعتماداً على بروتوكول خاص من شركة معينة يجعل عمليات الصيانة‬
‫والتطوير حك اًر عليها وعلى المنتجات التي تدعمها‪ ،‬الذي يؤدي بدوره لتكاليف باهظة‬
‫يدفعها أصحاب المصانع والمنشآت‪.‬‬
‫‪ .4‬تدريب المهندسين والمستخدمين على جميع البروتوكوالت التي تربط بين المتحكمات‬
‫أمر في غاية الصعوبة‪.‬‬
‫وبرمجيات السكادا يعد اً‬

‫إن التعقيد الناتج عن تعدد البروتوكوالت جعل من إمكانية تنفيذ نظام تحكم ومراقبة هجين (متعدد‬
‫أمر صعباً وليس هيناً على مصممي‬
‫المتحكمات ومتعدد البرمجيات) لمشروع متوسط الحجم اً‬
‫المشروع ومهندسي التنفيذ‪.‬‬

‫‪14‬‬
‫المقدمة‬ ‫الفصل األول‬

‫يبين الشكل(‪ )3-1‬بنية مشروع تحكم هجين مسؤول عن مراقبة محطة تحويل كهربائية‪ ،‬يحوي‬
‫المشروع أربع أنواع من المتحكمات المنطقية (‪ ،)PLCs‬كل متحكمين موصولين مع برنامج مراقبة‬
‫وتحكم(‪ ،)SCADA‬برنامجي السكادا يتصالن مع غرفة مراقبة وتحكم مركزية ويخزنان البيانات‬
‫بقاعدة بيانات منفصلة‪ ،‬يمكن مراقبة هذه المنشأة من مكان بعيد (‪ )Remote Access‬عبر تطبيق‬
‫ويب ملحق‪.‬‬

‫الشكل ‪ :3-1‬بنية نظام تحكم هجين بدون استخدام الـ‪OPC‬‬

‫في البنية السابقة‪ ،‬هناك ما ال يقل عن ‪ 8‬بروتوكوالت مختلفة يتم من خاللها تبادل البيانات بين‬
‫تجهيزات الشبكة الصناعية وبرمجياتها‪ ،‬تشكل في مجموعها الشبكة الصناعية العامة المسؤولة عن‬
‫إدارة المحطة والتحكم فيها‪ ،‬وهنا قد يتبادر إلى األذهان األسئلة التالية‪:‬‬
‫يعدل عليها‪ ،‬أي برمجية لها األولوية؟‬
‫‪ .1‬البيانات في الشبكة الصناعية السابقة‪ ،‬من ّ‬
‫‪ .2‬ما الذي سيحدث عند توقف إحدى التجهيزات‪ ،‬هل يمكن استبدالها بسهولة؟‬
‫‪ .3‬هل يمكن إجراء صيانة لمكون من مكونات الشبكة بدون أن يؤثر ذلك على العمل‬
‫الكلي للمنشأة؟‬
‫‪ .4‬هل يمكن إجراء عمليات التطوير والتوسعة بسهولة؟‬
‫‪ .5‬هل من السهولة إعداد وتدريب كادر هندسي قادر على فهم كامل البنية السابقة؟‬

‫‪15‬‬
‫المقدمة‬ ‫الفصل األول‬

‫‪ 3-1‬الفكرة التي قام عليها معيار الـ‪OPC‬‬

‫وض ح المثال السابق عينة من العقبات التي قد تظهر أثناء السعي لبناء نظام تحكم هجين قائم‬
‫ّ‬
‫على تكامل عدد من التجهيزات والبرمجيات التحكمية مختلفة المصادر‪.‬‬
‫إليضاح الفكرة التي اعتمد عليها معيار الـ‪ OPC‬و باإلسقاط على المثال السابق‪ ،‬نفترض أنه تم‬
‫اختيار عدد من الخبراء يتكلمون ‪ 8‬لغات مختلفة(بروتوكوالت) إلدارة شركة واحدة‪ ،‬الحل البديهي‬
‫ليفهم بعضهم بعضا وينجحوا في إدارة الشركة هو تكلم لغة واحدة يفهمها الجميع‪ ،‬اإلنكليزية مثال‪،‬‬
‫وهذا بالضبط ما فعله الـ ‪.OPC‬‬
‫فهو بالتعريف "لغة معيارية بين المتحكمات الصناعية وبرمجيات التحكم والمراقبة وضعت باالتفاق‬
‫ليفهمها الجميع"‪.‬‬
‫يبين الشكل(‪ )4-1‬المثال السابق (محطة التحويل الكهربائية) في حال تم استخدام بروتوكول‬
‫الـ‪ OPC‬للربط بين مكونات الشبكة الصناعية التي تدير المحطة‪ ،‬نالحظ أن جميع التجهيزات في‬
‫الشبكة تتعامل وفق بروتوكول الـ‪.OPC‬‬

‫الشكل ‪ :4-1‬مشروع تحكم هجين يعمل وفق بروتوكل الـ ‪OPC‬‬

‫‪11‬‬
‫الفصل الثاني‬

‫الـ ‪OPC‬‬ ‫تعريف بروتوكول‬


‫‪Defining OPC Protocol‬‬

‫يعرض هذا الفصل كيف نشأة المؤسسة الراعية لمعيار الـ ‪ ،OPC‬ويوضح األطر الرئيسية التي‬
‫تساعد في فهم المعيار‪ ،‬كما ويتناول أيضاً دالالت تسمية البروتوكول وتعريفه‪ ،‬ويتطرق لمفاهيم‬
‫عامة يعتمد عليها المعيار‪.‬‬
‫تعريف بروتوكول الـ ‪OPC‬‬ ‫الفصل الثاني‬

‫الفصل ‪ : 2‬تعريف بروتوكول الـ‪OPC‬‬

‫‪ 1-2‬ظهور مؤسسة الـ ‪OPC‬‬

‫في مطلع عام ‪ 1995‬تم تشكيل فريق عمل من قبل الشركات العاملة في مجال التحكم والتكنولوجيا‪،‬‬
‫كان الهدف الرئيسي من فريق العمل هذا هو إيجاد معيار موحد لتعريف المتحكمات الصناعية‬
‫على شاشات التخاطب البشرية وبرمجيات سكادا‪ ،‬بمعنى آخر كان الهدف هو السعي إليجاد معيار‬
‫عرف طريقة موحدة تسمح للبرمجيات التي تعمل بنظام التشغيل ‪ Windows‬بالنفاذ إلى بيانات‬ ‫ُي ّ‬
‫العملية المؤتمتة‪.‬‬
‫تم االتفاق من قبل فريق العمل على تأسيس مؤسسة ترعى هذا المعيار‪ ،‬واتُفق أيضا أن تكون هذه‬
‫وسميت بمؤسسة الـ ‪ ،)OPC Foundation( OPC‬تدريجياً أصبحت أغلب‬ ‫المؤسسة غير ربحية ُ‬
‫المصنعة ألنظمة األتمتة الصناعية أعضاء في هذه المؤسسة‪.‬‬
‫ّ‬ ‫الشركات‬

‫الشكل ‪ :1-2‬شعار مؤسسة الـ ‪OPC‬‬

‫أول مخرجات هذه المؤسسة كانت مواصفات معيار الـ ‪ OPC‬النافذ إلى البيانات‬
‫(‪ )OPC Data Access‬واختصاره (‪ )OPC DA‬والذي صدر عام ‪ 1991‬أي بعد فترة قصيرة من‬
‫انطالق عمل المؤسسة‪ ،‬والذي أصبح فيما بعد يعرف بالـ ‪ OPC‬الكالسيكي ‪.Classic OPC‬‬
‫حددة مشهورة‬
‫عندما وضع المعيار عام ‪ 1991‬وضعت خصائصه لتتناسب مع بروتوكوالت ُم ّ‬
‫تدعمها تجهيزات الـ ‪ PLC‬مثل بروتكول ‪ ،Modbus‬وكان استخدام معيار الـ‪ OPC‬مقيداً بأنظمة‬
‫تشغيل ‪ Windows‬وذلك لكون شركة ‪ Microsoft‬هي المطور األساسي لتكنلوجيا التصال‬
‫‪ COM/DOM‬التي يعتمد عليها المعيار في تحقيق االتصال األمر الذي سنوضحه الحقاً بشكل‬
‫مفصل‪.‬‬

‫‪18‬‬
‫استطاعت مؤسسة الـ ‪ OPC‬وضع المعيار موضع التطبيق العملي متغلب ًة بذلك على الكثير من‬
‫المنظمات المنافسة و أحد أهم أسباب نجاحها في ذلك كان اعتمادها على تكنولوجيا ويندوز المعروفة‬
‫بـ تكنولوجيا ‪ COM/DCOM‬التي تسمح بتحقيق االتصال بين البرمجيات‪.‬‬
‫إن التركيز على مشكلة النفاذ إلى البيانات وحلها وتوفير ميزات أخرى هامة يتطلع إليها السوق‬
‫التحكمي وتضمين كل ذلك في معيار واحد‪ ،‬باإلضافة إلى الذي أشرنا إليه من استخدام تكنولوجيا‬
‫ويندوز الشائعة كقاعدة لالنطالق‪ ،‬كل ذلك ساهم بشكل كبير في تبني المعيار من قبل الشركات‬
‫وانتشاره عالميا‪.‬‬
‫ونتيجة لخبرة مطوري المنتجات‪ ،‬ساهمت الشركات المصنعة وورشات العمل بإصدار النسخة الثانية‬
‫من مواصفات معيار ‪ OPC Data Access‬في بدايات عام ‪.1998‬‬
‫بعد اإلعالن عن هذا اإلصدار‪ ،‬عدد كبير من الشركات الصناعية اعتمدت المعيار وقامت بتطبيقه‪،‬‬
‫وما يزال اإلصدار الثاني من الـ ‪ OPC DA‬حتى اآلن يعتبر من أهم اصدارات الـ‪. OPC DA‬‬

‫إن بروتوكول الـ‪ OPC‬اليوم هو المعيار األكثر شيوعاً ونجاحاً‪ ،‬وأثبت قدرته على تبادل البيانات‬
‫بين مختلف أنظمة األتمتة الصناعية أياً كان نوعها‪.‬‬
‫ضمت مؤسسة الـ ‪ OPC‬أكثر من ‪ 454‬عضو من ضمنهم أغلب‬ ‫بعد ‪ 12‬سنة من تأسيسها‪ّ ،‬‬
‫مزودي أنظمة التحكم واألتمتة حول العالم‪.‬‬
‫الشكل (‪ُ )2-2‬يظهر التوزع الجغرافي ألعضاء مؤسسة الـ ‪ OPC‬حول العالم‪.‬‬

‫الشكل ‪ :2-2‬التوزع الجغرافي ألعضاء مؤسسة الـ ‪OPC‬‬


‫تعريف بروتوكول الـ ‪OPC‬‬ ‫الفصل الثاني‬

‫قامت مؤسسة الـ ‪ OPC‬بإد ارج قائمة بمنتجات الـ ‪ OPC‬تحوي حوالي ‪ 1544‬منتج‪ ،‬هذه القائمة‬
‫تحوي فقط المنتجات التي صدرت من شركات أعضاء في المؤسسة‪.‬‬
‫أما إجمالي سوق الـ ‪( OPC‬حتى عام ‪ )2449‬فهو يحوي ‪ 2544‬شركة مزودة ألنظمة تحكم‪،‬‬
‫صدر عنها أكثر من ‪ 15,444‬منتج يدعم بروتوكول الـ ‪.OPC‬‬
‫هذا النجاح الكبير الذي حققه المعيار‪ ،‬تطّلب آليات تَحّقق لضمان أن جميع منتجات الـ ‪OPC‬‬

‫متوافقة مع بعضها البعض وتُحقق مستوى محدد من الكفاءة والجودة‪ ،‬لهذا السبب تم تشكيل ما‬
‫يعرف "بقسم اإلمتثـال"‪ Compliance‬ضمن مؤسسة الـ ‪ ،OPC‬وهو القسم المعني بفحص مطابقة‬
‫منتج الـ ‪ OPC‬الجديد لمواصفات الـ ‪ OPC‬القياسية المتفق عليها من قبل أعضاء المؤسسة‪ ،‬وتم‬
‫التوافق على انشاء مستويين من شهادات المطابقة والكفاءة تُمنحان بعد مستويين من االختبارات‪.‬‬
‫المستوى األول من االختبارات تجريها الشركة المطورة لمنتج الـ ‪ OPC‬ذاتياً‪ ،‬حيث يعتمد على‬
‫فحص محلي ذاتي يقوم به المطورون للمنتج مستعينين بأدوات اختبار تقدمها مؤسسة الـ ‪،OPC‬‬
‫ومن ثم يتم إرسال نتائج االختبار إلى مؤسسة الـ ‪ OPC‬للتأكد من مطابقتها للمواصفات‪.‬‬
‫المنتج الذي يجتاز االختبار الذاتي تسمح له مؤسسة الـ ‪ OPC‬باستخدام شعار خاص (‪)Logo‬‬
‫فضي اللون ُيبين اجتياز المنتج لفحص االختبار الذاتي‪ ،‬وأن المنتج قد نجح في تحقيق معاير‬
‫التوافق األساسية‪ ،‬الحظ الشكل(‪.)3-2‬‬

‫الشكل ‪ :3-2‬الشعار الفضي لمنتج الـ ‪OPC‬‬


‫المستوى الثاني من االختبارات على منتج الـ ‪ OPC‬تجري في مختبرات مستقلة ومعتَمدة تعود لطرف‬
‫ثالث (طرف مستقل عن مؤسسة الـ ‪ OPC‬وعن مطوري منتج الـ ‪ ،)OPC‬هذه المختبرات تقوم بما‬
‫يلي ‪:‬‬
‫‪ ‬اختبارات تطال الوظائف الرئيسية لمنتج الـ‪ OPC‬وكفاءتها‪.‬‬
‫‪ ‬اختبارات سلوك واختبارات تحميل وإجهاد واختبارات قابلية االستخدام‪.‬‬
‫‪ ‬اختبارات توافقية المنتج مع مواصفات الـ ‪.OPC‬‬

‫‪24‬‬
‫تعريف بروتوكول الـ ‪OPC‬‬ ‫الفصل الثاني‬

‫المنتجات التي تنجح باجتياز هذه االختبارات‪ ،‬تحصل على شهادة المستوى الثاني وتسمح لها‬
‫المؤسسة بوضع شعار الـ ‪ OPC‬الذهبي المخصص لذلك‪ ،‬مطمئنة بذلك مستخدمي هذا المنتج إلى‬
‫كونه ذو كفاءة عالية وحقق مستويات مرتفعة في الجودة والتوافقية‪.‬‬

‫الشكل ‪ 4-2‬الشعار الذهبي لمنتج الـ ‪OPC‬‬

‫من خالل الشهادات يتم تشجيع المستخدمين النهائيين على شراء منتجات ‪ OPC‬المختبرة والمتوافقة‬
‫مع المواصفات القياسية ومع بقية الشركات في سوق األتمتة‪ ،‬ساعين بذلك إلى الحد من مشاكل‬
‫انعدام التوافق في المشاريع مع ضمان اعتمادية المعيار وحسن انتشاره في فضاء التحكم‪.‬‬
‫مع العلم أنه وبشكل مستقل وسنوي تحدث اجتماعات و ورشات فحص توافقية في كل من أوروبا‬
‫وأمريكا الشمالية واليابان‪ ،‬حيث تجتمع الشركات المصنعة لمنتجات الـ ‪ OPC‬وتختبر فيما بينها‬
‫توافقية منتجاتهم مع بعضهم البعض‪.‬‬
‫عند طلب شركة ما االنضمام لمؤسسة الـ ‪ OPC‬بهدف صناعة منتج ما‪ ،‬وبعد الموافقة على شروط‬
‫المؤسسة‪ ،‬تزود مؤسسة الـ‪ OPC‬الشركة بمواد علمية ‪ OPC Material‬تحوي على معلومات‬
‫تعبر عن ماهية وبنية الـ ‪ OPC‬و تساعد المطورين و المبرمجين العاملين في الشركة‬
‫وخصائص ّ‬
‫الجديدة على فهم تكنولوجيا ‪ Microsoft‬والبنية البرمجية لمعيار الـ‪.OPC‬‬
‫المواد العلمية هذه تحوي على‪:‬‬
‫‪ .1‬طريقة تعريف الـ ‪ PLC‬والمتحكمات‪.‬‬
‫‪ .2‬طريقة ربط الـ ‪ PLC‬مع الـ ‪.OPC Server‬‬
‫‪ .3‬خصائص الـ ‪ OPC Server‬ليعمل بشروط الزمن الحقيقي‪.‬‬
‫‪ .4‬مواصفات أخرى عامة متعلقة بمعيار الـ ‪.OPC‬‬

‫‪21‬‬
‫تعريف بروتوكول الـ ‪OPC‬‬ ‫الفصل الثاني‬

‫‪ 2-2‬تعريف معيار الـ ‪OPC‬‬

‫يمكن تعريف معيار الـ ‪ OPC‬بأنه عبارة عن مجموعة من القواعد و المواصفات القياسية‪ ،‬تُستخدم‬
‫في مجال الصناعات المؤتمتة وفي مجاالت أخرى‪ .‬وضعت هذه المواصفات من قبل عدد من‬
‫الشركات الرائدة في مجال األتمتة من مصنعي المكونات الصلبة(العتاديات) ومصممي البرمجيات‬
‫على حد سواء و بالتعاون مع شركة مايكروسوفت‪ ،‬حيث اتفقوا جميعا على وضع معيار موحد‬
‫سهل التواصل والتعاون بين الشركات‪ ،‬وأسسوا لذلك مؤسسة وظيفتها رعاية المعيار الجديد ووضع‬
‫ُي ّ‬
‫الشروط الناظمة لعمله وأهدافه‪.‬‬
‫يمكن أن ُنطلق مصطلح الطبقة الوسيطة ‪ Interface‬على المواصفات التي ُوضعت من قبل‬
‫كونة لمؤسسة الـ‪ ،OPC‬تعمل هذه الطبقة على تجهيز أرضية مشتركة‬
‫الم ّ‬
‫الشركات المتعاونة ُ‬
‫لالتصال بين تجهيزات التحكم الصلبة على اختالف أنواعها ومصادرها و التي تتحكم في مجموعها‬
‫بمشروع معين‪ ،‬الهدف من هذه الطبقة يتمثل بمنع أنظمة المراقبة والتحكم ‪ SCADA /HMI‬من‬
‫االعتماد المباشر على التجهيزات الصلبة للمشروع (المتحكمات من ‪ PLC‬وغيرها)‪.‬‬
‫بالنسبة لهرم التحكم كما يظهر في الشكل(‪ ،)5-2‬فإن الـ ‪ OPC‬موجود ضمن الطبقة الثالثة (طبقة‬
‫السكادا) وينقل البيانات بينها وبين الطبقة الثانية(المتحكمات)‪.‬‬
‫يمكن في ‪ -‬حاالت خاصة‪ -‬أن نجد الـ ‪ OPC‬ضمن الطبقة الرابعة( طبقة إدارة وتنفيذ التصنيع‬
‫‪ )Manufacturing Execution System‬أو ضمن الطبقة الخامسة (طبقة الشركات) وذلك عندما‬
‫يكون ‪ OPC‬من النوع الذي يتعامل مع البيانات المؤرشفة ‪ OPC HDA‬كما سيتضح في فصول‬
‫قادمة‪.‬‬

‫‪OPC‬‬

‫الشكل ‪ :5-2‬الطبقة التي يعمل فيها بروتوكول الـ ‪OPC‬‬

‫‪22‬‬
‫تعريف بروتوكول الـ ‪OPC‬‬ ‫الفصل الثاني‬

‫نعرف بروتوكول الـ ‪ OPC‬بأنه عبارة عن مجموعة من القواعد‬


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

‫‪ 3-2‬تسمية الـ ‪ OPC‬واختصاراته‬

‫اختصار للكلمات التالية‪:‬‬


‫اً‬ ‫عندما وضع المعيار من قبل مؤسسي الـ ‪ ،OPC‬اتُفق على أن يكون‬

‫الشكل ‪ :6-2‬تسمية بروتوكول الـ ‪OPC‬‬

‫يمكن ترجمة اختصارات المعيار إلى " ربط النظـم وتضمينها للتحكم بالعمليـات "‪.‬‬
‫يتضح من خالل التسمية الهدف من إنشاء المعيار ووظيفته المتمثلة بدمج أنظمة التحكم المختلفة‬
‫بحيث تكون قادرة على التحكم بالمشاريع بشكل متكامل‪ ،‬بحيث تبدو ككتلة واحدة متجانسة أثناء‬
‫أداء عملها‪.‬‬
‫أما اآلن فمعيار الـ ‪ OPC‬بإصداراته الجديدة أصبح أكثر تطو اًر‪ ،‬و أصبح متاحاً على جميع أنظمة‬
‫التشغيل وليس فقط على نظام التشغيل ‪ Windows‬كما في االصدارات األولى‪ ،‬وبات المعيار‬
‫يتمت ع باعتماد كبير خارج مجال التحكم ودخل مجاالت جديدة مثل إدارة أنظمة المرور والهواتف‬
‫المحمولة وأنظمة التكييف وغيرها‪ ،‬لذلك أصبح البعض يرى أن االختصار السابق لم يعد مواكبا‬
‫للتطور الهائل الذي حققه المعيار كونه يحصر عمل المعيار بالتحكم بالعمليات‪ ،‬لذلك نجد اآلن‬
‫بعض المراجع المعنية بالمعيار باتوا يعتبرون أن الـ ‪ OPC‬أصبح كلمة قائمة بذاتها في قاموس‬
‫اللغة االنكليزية وليست اختصا ار ألي كلمة (مثل كلمة ‪ ،)Google‬وبعض المراجع باتت تعتبر أن‬

‫‪23‬‬
‫تعريف بروتوكول الـ ‪OPC‬‬ ‫الفصل الثاني‬

‫معيار الـ ‪ OPC‬أصبح اختصار للكلمات التالية‪:‬‬

‫الشكل ‪ :7-2‬التسمية الجديدة لمعيار الـ ‪OPC‬‬


‫يمكن ترجمته إلى "منصة االتصاالت مفتوحة المصدر"‪.‬‬

‫‪ 4-2‬مفاهيم عامة‬

‫قبل البدء بالغوص في بنية البروتوكول وأجزاءه وكيفية عمله‪ ،‬هناك مفاهيم ومصطلحات يعتمد‬
‫عليها معيار الـ ‪ OPC‬من الضروري التعريف بها لتساعدنا الحقا في فهم المعيار‪.‬‬

‫‪ 1-4-2‬مفهوم الـ )‪OLE (Object Linking Embedding‬‬

‫الـ ‪ OLE‬أو تقنية ربط الكائنات وتضمينها هي تقنية مدعومة من شركة مايكروسوفت تسمح بإنشاء‬
‫كائنات برمجية مركبة تحتوي على معلومات من مصادر مختلفة‪.‬‬
‫إليضاح مفهوم ‪ OLE‬نأخذ مثال من بيئة برامج الـ ‪ Office‬الشائعة‪ ،‬فمثال يمكن لملف اكسيل ‪Excel‬‬

‫أن يحوي (أن يتضمن) بيانات مأخوذة من ملف أخر ‪ ،Word‬ميزة ‪ OLE‬هنا أن األمر مغاير تماماً‬
‫لعمليات "القص واللصق" فالربط هنا يكون ديناميكيا متغي اًر‪ ،‬أي أن البيانات في التطبيق المتلقي‬
‫(االكسيل في مثالنا) ستتغير لحظة تغيرها في التطبيق األصلي (ملف الـ ‪ ،)Word‬أي أن هناك‬
‫ربط للبيانات بين الملف المصدر وملف الوجهة‪ ،‬وهناك تضمين للبيانات في ملف الوجهة‪ ،‬ومن‬
‫هنا جاءت التسمية "ربط الكائنات وتضمينها"‪.‬‬
‫شكلت تقنية ‪ OLE‬الحجر األساس التي بنت عليها شركة مايكروسوفت فلسفتها حين قررت دعم‬
‫تض ّمن‬ ‫بروتوكول الـ ‪ ،OPC‬فجعلت المحتوى الذي تم انشاؤه في برنامج الـ ‪ OPC Server‬مرتبط ُ‬
‫وم َ‬
‫في برنامج أخر يدعى ‪ OPC Client‬كما سيتضح معنا في الفصول القادمة‪.‬‬
‫اعتمد في تسمية معيار الـ ‪ OPC‬الجديد‪ ،‬كما هو موضح في‬
‫ومن هذه التقنية أخذ أول حرف و ُ‬
‫الشكل(‪ )1-2‬السابق‪.‬‬

‫‪24‬‬
‫تعريف بروتوكول الـ ‪OPC‬‬ ‫الفصل الثاني‬

‫‪ 2-4-2‬تقنية ‪COM/DCOM‬‬

‫يمكن تعريفها بأنها عبارة عن برمجية معيارية وسيطة تربط بين برمجيتين مختلفتين أنتجتها شركة‬
‫مايكروسوفت عام ‪ ،1993‬تستخدم لتمكين االتصال بين التطبيقات البرمجية‪.‬‬
‫‪ COM/DCOM‬أساسا لعدد من تقنيات مايكروسوفت األخرى مثل ‪OLE‬‬ ‫تعتبر تكنولوجيا‬
‫‪. DirectX، ActiveX،‬‬

‫البنية البرمجية لمعيار الـ ‪ OPC‬مبنية على تكنولوجيا ‪ ، COM/DCOM‬االستفادة من هذه‬


‫التكنولوجيا المعدة مسبقاً من شركة مايكروسوفت ساهمت بتقليل الجهد المبذول على وضع معايير‬
‫جديدة لتحقيق االتصال البيني بين البرمجيات المختلفة‪.‬‬

‫كما سنوضح بشكل مفصل في الفصل الثالث‪ ،‬فإن بروتوكول الـ ‪ OPC‬يعتمد على بنية مخدم‪/‬زبون‪،‬‬
‫حيث يتكون البروتكول من برمجيتين رئيسيتين‪ ،‬الـمخدم ‪ OPC Server‬والـزبون ‪،OPC Client‬‬
‫ويستخدم بروتوكول الـ ‪ OPC‬تكنولوجيا ‪ COM/DCOM‬للربط بينهما‪ ،‬حيث أن تموضع البرمجيتين‬
‫بالنسبة للحواسب يحدد نوع قناة االتصال المستخدمة‪.‬‬
‫ففي حال كان كل من برمجية ‪ OPC Server‬و برمجية الـ ‪ OPC Client‬منصبتان على نفس‬
‫الحاسب‪ ،‬سيتم االتصال بينهما عبر قناة الـ ‪ COM‬والموجودة مسبقا ضمن نظام التشغيل ويندوز‬
‫الشكل(‪.)8-2‬‬

‫الشكل ‪ :8-2‬اتصال المخدم والزبون باستخدام قناة ‪COM‬‬

‫‪25‬‬
‫تعريف بروتوكول الـ ‪OPC‬‬ ‫الفصل الثاني‬

‫منصبتان على حاسبين‬


‫أما في حال كانت كل من برمجية ‪ OPC Server‬وبرمجية الـ ‪ّ OPC Client‬‬
‫مختلفين‪ ،‬فاالتصال بينهما يتم عبر قناة ‪ DCOM‬والموجودة مسبقا ضمن نظام التشغيل ويندوز‪.‬‬

‫الشكل ‪ :9-2‬اتصال المخدم والزبون باستخدام قناة ‪DCOM‬‬

‫اعتماد هذه التقنية ساهم في تقليل زمن تسويق معيار الـ ‪ OPC‬وكانت ‪ -‬في حينها ‪ -‬سبباً مهماً‬
‫في نجاح الـ ‪.OPC‬‬
‫ر للكلمات التالية‪Component Object Model :‬‬
‫تشكل ‪ COM‬اختصا ا‬
‫ر للكلمات التالية ‪Distributed Component Object Model‬‬
‫تشكل ‪ DCOM‬اختصا ا‬
‫لكن هناك سيئتين رئيسيتين لهذه التكنولوجيا‪ ،‬األولى كون هذه التكنولوجيا من انتاج مايكروسوفت‪،‬‬
‫وبالتالي حصرت استخدام معيار الـ‪ OPC‬بالحواسب التي تعمل على منصة التشغيل ويندوز بدون‬
‫أي دعم ألنظمة تشغيل أخرى‪ ،‬والمشكلة الثانية ظهرت في صعوبة االتصال البعيد بالـ ‪ OPC‬عبر‬
‫قناة ‪ DCOM‬وذلك نظ ار لصعوبة ضبط إعداداتها‪ ،‬عدا أنها ال تدعم االتصال باإلنترنت‪.‬‬

‫خطوات تفعيل قناة االتصال ‪ DCOM‬موضحة بالتفصيل ضمن الملحقات في أخر الرسالة ‪.‬‬

‫‪21‬‬
‫الفصل الثالث‬
‫بنية وأجزاء بروتوكول‬
‫الـ‪OPC‬‬

‫‪OPC Structure and Components‬‬

‫يوضح هذا الفصل مدى األثر الذي تركه بروتوكول الـ ‪ OPC‬على الشبكات الصناعية‪ ،‬والمبدأ‬
‫العام لعمله‪ ،‬ويتناول بنية المخدم‪ /‬زبون بالتفصيل وجميع التشكيالت المتاحة لهذه البنية‪.‬‬

‫‪27‬‬
‫الفصل ‪ : 3‬بنية وأجزاء بروتوكول الـ‪OPC‬‬

‫‪ 1-3‬أثر تطبيق معيار الـ ‪ OPC‬على الشبكات الصناعية‬

‫عندما اتفق المصنعون فيما بينهم على إنشاء معيار الـ‪ OPC‬الموحد‪ ،‬صار من السهل جدا على‬
‫برمجيات سكادا النفاذ إلى المتحكمات الصناعية والتجهيزات الحقلية والتخاطب معها وإدارتها وذلك‬
‫بعكس الواقع الذي كان سائدا قبل ذلك (الحظ الشكل ‪ ،)1-3‬حيث بات يكفي على برمجيات سكادا‬
‫اضافة كود برمجي بسيط إلى بنيتها يمثل تعريف لبروتوكول ‪ OPC Client‬يسمح لها باالتصال مع‬
‫اء أكان منصب على نفس الحاسب أو على أي حاسب آخر‪.‬‬
‫أي ‪ ،OPC Server‬سو ً‬

‫ما قبل استخدام الـ ‪OPC‬‬ ‫بعد استخدام الـ ‪OPC‬‬

‫=‬

‫الشكل ‪ :1-3‬االتصال بين تطبيقات سكاد والمتحكمات قبل وبعد استخدام الـ ‪OPC‬‬

‫في الواقع إن استخدام الـ ‪ OPC‬خفف الكثير من األعباء عن المصنعين وساهم أيضا بتقليص كلف‬
‫تصنيع العتاديات والبرمجيات والذي ال شك انعكس بدوره على سعر التجهيزات الصناعية‪ ،‬عالوة‬
‫أمن درجة عالية من المرونة لمهندسي التحكم في اختيار تجهيزاتهم ومنحهم هامش جيد‬ ‫على أنه ّ‬
‫من الحرية في انتقاء المتحكمات والبرمجيات‪ ،‬وهذا بكل تأكيد مّثل تقدما كبي ار في مجال التحكم‬
‫الصناعي واألتمتة وأدى لظهور مشاريع هجينة قوية ومتجانسة تحوي تنوعاً في التجهيزات‬
‫والبرمجيات‪.‬‬
‫يمكننا القول بأن الحاجة إلى الـ ‪ OPC‬كانت ضرورة ملحة للجميع‪ ،‬للمصنعين والمهندسين‬
‫وللمستثمرين النهائيين على حد سواء‪.‬‬
‫أغلب أنظمة التحكم و المراقبة الحالية باتت تُخضع نفسها لقواعد الـ ‪ OPC Client‬نظ ار النتشاره‬

‫‪28‬‬
‫بنية بروتوكول الـ ‪OPC‬‬ ‫الفصل الثالث‬

‫الواسع‪ ،‬عالوةً على أن بعض المصنعين باتوا يجعلون من الـ ‪ OPC Client‬مكوناً أساسياً ضمن‬
‫برمجياتهم وبذلك أصبح االتصال مع الـ ‪ OPC Server‬غاية بالسهولة‪.‬‬
‫منح بروتوكول الـ ‪ OPC‬برمجيات سكادا القدرة على القيام بدور مدير للشبكة الصناعية ‪ ،‬حيث‬
‫سمح لهم بإدارة جميع التجهيزات الموصولة على الشبكة على اختالف أنواعها واختالف الشركات‬
‫الصانعة لها‪.‬‬
‫إضافة إلى أن مهندسي التحكم أصبح بإمكانهم تجنب األخطاء الناجمة عن تعقيد التجهيزات وأصبح‬
‫بإمكانهم بناء أنظمة معقدة بدون الحاجة إلى إضافة أي تجهيزات إضافية صلبة كانت أو برمجية‪.‬‬
‫يمكن بسهولة توظيف بنية ‪ OPC Server /OPC Client‬بحيث نجعل أي تطبيق برمجي قادر على‬
‫ومنصب في بيئة‬
‫ّ‬ ‫العمل كـزبون ‪ ،OPC Client‬بشرط أن يكون قادر على التعامل مع البيانات‬
‫تشغيل ويندوز‪.‬‬
‫من األمثلة على التطبيقات التي يمكن برمجتها كزبائن‪. Excel، MATLAB، VB،C++ :OPC‬‬

‫‪ 2-3‬المبدأ العام لعمل بروتوكول الـ ‪OPC‬‬

‫كما تم التوضيح سابقا‪ ،‬فإن بروتكول الـ ‪ OPC‬بشقيه المخدم والزبون عبارة عن برمجيات ّ‬
‫تنصب‬
‫على حاسب واحد أو على عدة حواسب متصلة فيما بينها بشبكة‪ ،‬وظيفة البروتوكول هي تحقيق‬
‫الربط بين المتحكمات المنطقية ‪ PLCs‬وبين برمجيات المراقبة والتحكم ‪ SCADA‬كما هو موضح‬
‫بالشكل(‪ ،)2-3‬فالبروتوكول يعمل كجسر يربط بين المتحكم الصناعي من طرف وأنظمة‬
‫‪ SCADA/HMI‬من طرف أخر‪ ،‬و يعتمد البروتوكول على بنية ‪Server/Client‬وعلى نظام التشغيل‬
‫ويندوز لتحقيق الربط السابق‪.‬‬

‫الشكل ‪ :2-3‬بنية المخدم‪/‬زبون التي يعتمد عليها الـ ‪OPC‬‬

‫‪29‬‬
‫بنية بروتوكول الـ ‪OPC‬‬ ‫الفصل الثالث‬

‫في البداية وبشكل مختصر‪ ،‬فإن وظيفة الـ ‪ OPC Server‬تنحصر في مخاطبة المتحكم المنطقي‬
‫بهدف القراءة منه والكتابة فيه‪ ،‬حيث يقوم باالتصال بالمتحكم وفقا لبروتكول محدد يفهمه المتحكم‬
‫ويجعل البيانات التي قام بجلبها متاحة ألي ‪ OPC Client‬متصل معه‪.‬‬
‫المخدم المطلوب ومن ثم ينشأ اتصال معه‪ ،‬فيستطيع عندها الزبون‬ ‫ّ‬ ‫يقوم ‪ OPC Client‬بتحديد‬
‫عرفة ضمن المخدم وتحديد أي من هذه البيانات مطلوبة له لُيعرفها‬
‫الم ّ‬
‫االطالع على جميع البيانات ُ‬
‫كمتحوالت ضمن بنيته البرمجية (تضمين عناصر المخدم ضمن الزبون)‪.‬‬
‫بعد نجاح االتصال بينهما‪ ،‬يقوم الزبون باإلرسال إلى المخدم طالبا تحديث البيانات التي قام‬
‫باختيارها‪ُ ،‬يصطلح على تسمية هذه البيانات بالعناصر ‪ ،Items‬ليقوم المخدم عند استقبال الطلب‬
‫من الزبون باالستجابة له وتحديث البيانات التي طلبها وفقاً لقيم كان المخدم قد قام مسبقاً بتحصيلها‬
‫من المتحكم المنطقي‪.‬‬
‫حدثة للمستخدم بأي شكل يريده (شكل رسومي‪– Graphics‬‬ ‫يقوم الزبون بعدها بعرض البيانات ُ‬
‫الم ّ‬
‫على شكل إنذارات‪- Alarms‬على شكل منحنيات بيانية‪ ... Trends‬الخ) ويمكنه أيضاً تخزينها‬
‫لالستفادة منها الحقا‪.‬‬
‫عرفة مسبقاً ضمن الـ ‪OPC‬‬
‫من الجدير بالذكر أنه ال يمكن للـ ‪ OPC Client‬أن يطلب بيانات غير ُم ّ‬
‫‪.Server‬‬
‫يتبادل الـ ‪ OPC Client‬البيانات مع الـ ‪ OPC Server‬وفق معيار الـ ‪ ،OPC‬أما الـ ‪OPC Server‬‬

‫فهو يخاطب المتحكم المنطقي وفق بروتكول صناعي يدعمه المتحكم مثل ( ‪Modbus, Profibus‬‬

‫‪.),CAN ..‬‬
‫من ذلك نستنج أن إنشاء وبرمجة ‪ OPC Server‬يتطلب دراية ببنية البروتوكول الذي يعمل عليه‬
‫المتحكم و امتالك صالحية النفاذ إليه و معرفة بمواقع الذاكرة فيه‪ ،‬وهو أمر غير متاح غالباً‪،‬‬
‫لذلك نجد أن أغلب مزودي ‪ OPC Server‬هم ذات الشركات المصنعة للمتحكمات‪ ،‬وهو أيضاً‬
‫سبب في كون الـ ‪ OPC Server‬غير متوفر بشكل مجاني‪.‬‬
‫يجب التذكر دوماً منعاً لاللتباس‪ ،‬أن الجانب المتعلق باتصال الـ ‪ OPC Server‬مع المتحكمات ال‬
‫يخضع لبروتوكول الـ ‪ ،OPC‬أما اتصال ‪ OPC Client‬مع الـ‪ OPC Server‬فهو معياري يخضع‬
‫لقواعد ومتطلبات لبروتوكول الـ ‪.OPC‬‬

‫‪34‬‬
‫بنية بروتوكول الـ ‪OPC‬‬ ‫الفصل الثالث‬

‫‪ 3-3‬بنية المخدم‪ /‬زبون في الـ ‪OPC‬‬

‫سنتناول في هذه الفقرة البنية التفصيلية لكل من ال ـ‪ OPC Server‬و الـ ‪OPC Client‬‬

‫‪ 1-3-3‬مخدم الـ ‪)OPC Server( OPC‬‬


‫سنستعرض فيما يلي كل من طريقة عمل مخدم الـ‪ OPC‬وبنيته البرمجية‬

‫‪ 1-1-3-3‬طريقة عمل مخدم الـ‪OPC‬‬

‫مخدم الـ‪ OPC‬هو جزء من البروتوكول المسؤول عن تحقيق االتصال بالمتحكمات وتحصيل البيانات‬
‫منها أو التعديل عليها‪ ،‬ويقوم بتلبية جميع طلبات الزبائن ‪ OPC‬المتصلة معه‪.‬‬
‫يخاطب الـ ‪ OPC Server‬المتحكم المتصل معه وفق بروتوكول محدد مدعوم من قبل المتحكم‪،‬‬
‫ومن ثم يقوم بجلب البيانات المطلوبة من المتحكم ويترجمها لمعيار الـ ‪ ،OPC‬غالبا ما يكون الـ‬
‫‪ OPC Server‬من انتاج الشركة المصنعة للتجهيزة الصناعية (‪ )PLCs‬ويمكن أيضاً أن يكون من‬
‫انتاج شركات برمجية ربحية خاصة‪.‬‬
‫وفق معايير الـ ‪ OPC‬الذي وضعتها المؤسسة المعنية يمكن لـ ‪ OPC Server‬وحيد ان يتصل بأكثر‬
‫خدم أكثر من زبون بنفس الوقت‪.‬‬
‫من متحكم بنفس الوقت‪ ،‬ويمكن لـ ‪ OPC Server‬واحد أن ُي ّ‬
‫يخزن الـ‪ OPC Server‬البيانات التي قام بجلبها من المتحكمات المتصلة معه في قاعدة بيانات‬
‫خاصة به ويقوم بتحديث القيم المخزنة فيها بشكل دوري‪ ،‬قاعدة البيانات هذه قد تكون عبارة عن‬
‫ملف ‪ Access‬أو أي نوع أخر من أنواع قواعد البيانات المعروفة‪.‬‬
‫تقوم جميع الـ ‪ OPC Clients‬المتصلة مع المخدم بتحديث قيم عناصرها من قاعدة البيانات السابقة‪،‬‬
‫كما هو موضح بالشكل(‪.)3-3‬‬

‫الشكل ‪:3-3‬طريقة عمل مخدم الـ ‪OPC‬‬

‫‪31‬‬
‫بنية بروتوكول الـ ‪OPC‬‬ ‫الفصل الثالث‬

‫وهنا يتبادر إلى الذهن السؤال التالي‪ ،‬هل تملك جميع مخدمات الـ ‪ OPC‬بنية متشابهة وتؤدي نفس‬
‫الوظيفة؟‬
‫الجواب بالطبع ال‪ ،‬فالمواصفات التي وضعتها مؤسسة الـ ‪ OPC‬تضمن أن جميع المخدمات تمّثل‬
‫البيانات بنفس الطريقة من جهة الـ‪ ، OPC‬لكن ال يوجد شيء في المواصفات ُيحدد كيفية حصول‬
‫المخدم على البيانات من التجهيزات الحقلية‪.‬‬
‫إذا فمخدمات الـ ‪ OPC‬تختلف عن بعضها بعدة أمور‪ ،‬أهمها‪:‬‬

‫‪ .1‬أنواع المتحكمات التي تدعمها وعددها‪:‬‬

‫يمكن أن نجد مخدم ‪ OPC‬يدعم نوع واحد فقط من المتحكمات‪ ،‬ويمكن أن نجد مخدم‪ OPC‬أخر‬
‫كل حسب طريقة برمجته‪ ،‬فعلى سبيل المثال تُقدم شركة‬‫يدعم عشرات األنواع من التجهيزات‪ٌ ،‬‬
‫خصص للمتحكم المنطقي ‪ S7-200‬من‬ ‫‪ Siemens‬مخدم ‪ OPC‬يدعى ‪ S7-200 PC Access‬وهو ُم ّ‬
‫نفس الشركة‪ ،‬ال يستطيع هذا المخدم االتصال بأي متحكم منطقي من نوع أخر‪ ،‬إال أنه يمكنه‬
‫االتصال بأكثر من متحكم ‪ S7-200‬بنفس الوقت‪.‬‬

‫‪ .2‬أنواع البروتوكوالت التي تدعمها‪:‬‬

‫ورد سابقا أن الـ ‪ OPC Server‬يخاطب المتحكم وفق البروتكول الذي يدعمه‪.‬‬
‫وغالبا ما نجد أن المتحكمات المنطقية تدعم أكثر من بروتوكول اتصال بنفس الوقت‪ ،‬فمثال المتحكم‬
‫المنطقي ‪ S7-200‬يدعم بروتوكول ‪ PPI‬وبروتوكول الـ ‪ TCP/IP‬و بروتوكول الـ ‪ Modbus‬و‬
‫الـ‪ ،Profibus‬لذلك قد نجد مخدم‪ُ OPC‬مبرمج ليدعم االتصال بالمتحكم ‪ S7-200‬عن طريق بروتوكول‬
‫واحد أو أكثر من البروتوكوالت األربعة السابقة‪ ،‬فمثال يستطيع مخدم ‪ S7-200 PC Access‬التخاطب‬
‫مع المتحكم‪ S7-200‬باستخدام بروتوكول الـ ‪ PPI‬و بروتوكول الـ ‪.TCP/IP‬‬

‫‪ .3‬سرعة تحديث البيانات‪:‬‬

‫وهذا باب من أبواب االختالف والتنافس بين مخدمات الـ ‪ ،OPC‬ويتعلق بالبنية البرمجية وقوتها‬
‫إضافة إلى سرعة استجابة المتحكمات المتصلة مع المخدم‪ ،‬ومن الجدير بالذكر أن هناك عالقة‬
‫تربط سرعة تحديث البيانات بموقع المخدم بالنسبة للزبون(على نفس الحاسب مع الزبون أو على‬

‫‪32‬‬
‫بنية بروتوكول الـ ‪OPC‬‬ ‫الفصل الثالث‬

‫المعرفة ضمن المخدم‪ ،‬وهذا ما أثبتناه عملياً‬


‫ّ‬ ‫حاسب منفصل) كما و ترتبط السرعة بعدد البيانات‬
‫بالتجربة في الفصل ‪.1‬‬

‫عند الحاجة إلى ‪ OPC Server‬لتنفيذ لمشروع ما‪ ،‬ينبغي اختياره بحيث يدعم البروتوكوالت التي‬
‫تعمل عليها المتحكمات والتجهيزات المستخدمة في المشروع‪ ،‬فمثال لو كانت المتحكمات الصناعية‬
‫التي تدير المشروع تعتمد بروتوكول الـ ‪ ،Modbus‬فينبغي حينها الحصول على ‪Modbus OPC‬‬

‫‪Server‬لنتمكن من ربط متحكمات المشروع ببرمجيات السكادا عن طريق بروتوكول الـ ‪.OPC‬‬

‫هناك الكثير من الشركات الربحية التي تبيع مخدمات الـ ‪ ،OPC‬لذلك عند الشراء يجب المفاضلة‬
‫المخدمات المتاحة‪ ،‬المفاضلة تكون من حيث السعة (عدد العناصر التي يتعامل معها المخدم)‬
‫ّ‬ ‫بين‬
‫واألداء والسعر بإضافة إلى العوامل التي سبق ذكرها‪.‬‬
‫تقوم الشركات المزودة لمخدمات الـ‪ OPC‬بتزويد المستخدمين بأنواع المتحكمات التي تدعمها‬
‫مخدماتهم‪ ،‬باإلضافة إلى مجال البيانات التي يمكن الوصول إليها وكيفية النفاذ إليها فيزيائياً‪.‬‬
‫معرف خاص (‪ )ID‬يتميز به عن غيره‪ ،‬فعندما يرغب ‪OPC Client‬‬
‫يملك كل ‪ّ OPC Server‬‬
‫المنصبة على الحاسب المحلي ‪Local‬‬ ‫المخدمات‬
‫ّ‬ ‫باالتصال بمخدم ما‪ ،‬يقوم بعملية بحث عن جميع‬
‫ّ‬
‫‪ PC‬أو على حواسب الشبكة المتصلة‪ ،Remote PC‬فتظهر للمستخدم قائمة تحوي جميع‬
‫معرفات(األسماء) المخدمات التي تم العثور عليها‪.‬‬
‫ّ‬

‫‪ 2-1-3-3‬البنية البرمجية لمخدم الـ‪OPC‬‬

‫بشكل تفصيلي ومن وجهة نظر برمجية فإن ‪ OPC Server‬يتألف من ثالث مستويات هرمية من‬
‫المكونات البرمجية(‪ )Objects‬وهي المخدم والمجموعات والعناصر‪:‬‬

‫‪: OPC server Objects .1‬‬

‫يحتوي هذا الجزء البرمجي على كافة المعلومات عن المخدم وعن معرفه الخاص ‪ ، ID‬كما يحتوي‬
‫ضمنه على المجموعات ‪.Groups‬‬
‫ومن المالحظ أن هناك تشابه إلى حد بعيد بين مخدمات الـ ‪ OPC‬كونها تخضع لمعايير موحدة‪.‬‬

‫‪33‬‬
‫بنية بروتوكول الـ ‪OPC‬‬ ‫الفصل الثالث‬

‫من أجل تهيئة مخدمات الـ ‪ OPC‬للعمل سنحتاج لضبط أمرين فقط ضمن ‪: OPC Server‬‬

‫‪ .1‬ضبط إعدادات االتصال مع المتحكم‪ :‬هنا يتم ضبط الـ ‪OPC Server‬على اعدادات‬
‫االتصال مع المتحكم التي سيتصل معه‪ ،‬تختلف هذه االعدادات بطبيعة الحال باختالف‬
‫البروتوكول الذي سيربط الـ ‪ OPC Server‬مع المتحكم‪ ،‬و عادة ما تحوي هذه‬
‫االعدادات على رقم منفذ االتصال‪ ،‬نوع المتحكم وعنوانه‪ ،‬معدل النقل‪.‬‬
‫‪ .2‬تعريف المجموعات وتحديد العناصر المراد قراءتها أو كتابتها من المتحكم(‪.)Items‬‬

‫‪:OPC Groups Objects .2‬‬

‫عرفة ضمن المخدم‪.‬‬ ‫يحتوي هذا الجزء البرمجي على كافة المعلومات عن المجموعات ُ‬
‫الم ّ‬
‫يكون لكل مجموعة ّ‬
‫معرفة ضمن المخدم اسم فريد حيث يمكن لـ ‪ OPC Server‬واحد أن يحوي أكثر‬
‫من مجموعة‪.‬‬
‫تحوي المجموعات بداخلها على العناصر ‪ Items‬المطلوب من المخدم تحصيل قيمها من المتحكمات‬
‫(قراءة) أو التعديل عليها (كتابة)‪.‬‬
‫تستخدم المجموعات ألغراض تتعلق بالتصنيف واألولويات‪ ،‬فهي تمنح المستخدمين طريقة عملية‬
‫لتنظيم بياناتهم‪.‬‬

‫الشكل ‪ :4-3‬المجموعات ضمن مخدم ‪OPC‬‬

‫‪:OPC Items Objects .3‬‬

‫يحتوي هذا الجزء البرمجي على كافة المعلومات عن عناصر مخدم الـ ‪.OPC‬‬
‫إن العناصر بالتعريف هي القيم المراد قراءتها أو كتابتها في المتحكم‪ ،‬يطلق عليها البعض اسم‬
‫المتحوالت ‪.Tags‬‬

‫‪34‬‬
‫بنية بروتوكول الـ ‪OPC‬‬ ‫الفصل الثالث‬

‫كل عنصر‪ Item‬يحوي على عدة ّ‬


‫معرفات وصفات تميزه وتبين حالته هي‪:‬‬
‫‪ ‬معرف العنصر أو اسمه ‪: Item ID‬‬
‫المعرف بمثابة اسم للعنصر‪ُ ،‬يوّلد هذا االسم وفق تسلسل هرمي من المستوى‬ ‫ّ‬ ‫يكون هذا‬
‫األكبر إلى األصغر‪ ،‬يبدأ باسم المنفذ الفيزيائي يليه اسم المتحكم المنطقي يليه اسم‬
‫المجموعة التي ينتمي إليها العنصر يليه اسم العنصر‪ ،‬يفصل بين مكونات االسم السابقة‬

‫بنقطة ( ‪ ،) .‬وقد يحتوي أيضا ّ‬


‫معرف العنصر على اسم المشروع‪.‬‬
‫‪COM3 . PLC1 . Bed_Room2 . Light3‬‬ ‫مثال‪:‬‬

‫‪ ‬نوع البيانات ‪:Data Type‬‬

‫المعامل نوع بيانات العنصر ‪ ... Digital, int , Long‬إلخ‪.‬‬


‫يحدد هذا ُ‬

‫‪ ‬قيمة العنصر‪: Item Value‬‬

‫المعامل قيمة العنصر المقروءة من المتحكم أو المراد كتابتها في المتحكم‪.‬‬


‫ُيمثل هذا ُ‬

‫‪ ‬جودة العنصر‪:Item Quality‬‬

‫المعامل مؤشر منطقي على صحة قيمة العنصر‪ ،‬يأخذ هذا ال ُمعامل أحد ثالث‬
‫ُيمثل هذا ُ‬
‫معرف ‪.Uncertain‬‬
‫قيم‪ :‬إما جيد ‪ Good‬أو سيئ ‪ Bad‬أو غير ّ‬
‫فمثال عند حدوث انقطاع في االتصال بين المخدم و المتحكم يصبح معامل الجودة لجميع‬
‫عناصر ‪ OPC Server‬سيئ “‪."Bad‬‬

‫‪ ‬زمن التحديث ‪: Item Time Stamp‬‬

‫المعامل أخر لحظة تم فيها تحديث قيمة العنصر‪ ،‬أي أخر لحظة قام‬
‫يتم التسجيل في هذا ُ‬
‫فيها الـ ‪ OPC Server‬بتحديث قيمة العنصر من المتحكم‪.‬‬

‫يبين الشكل (‪ )5-3‬واجهة ‪ OPC Server‬من شركة ‪.OPCTech‬‬

‫‪35‬‬
‫بنية بروتوكول الـ ‪OPC‬‬ ‫الفصل الثالث‬

‫الشكل ‪:5-3‬واجهة ‪OPC Server‬‬

‫مصدر للبيانات‪ ،‬لكن بعد نجاح اتصال‬


‫اً‬ ‫عرفة ضمن مخدم الـ ‪ OPC‬ال تُعتبر بذاتها‬
‫الم ّ‬
‫إن العناصر ُ‬
‫حدث قيم هذه العناصر من المتحكم بشكل مستمر‪ ،‬العناصر قد تكون مداخل‬
‫المخدم بالمتحكم تٌ ّ‬
‫ومخارج رقمية أو مداخل ومخارج تماثلية‪ ، Analog‬أو سجالت ومتحوالت داخلية ضمن المتحكم‪.‬‬

‫‪ 2-3-3‬زبون الـ ‪)OPC Client(OPC‬‬


‫سنستعرض فيما يلي كل من طريقة عمل زبون الـ‪ OPC‬والتشكيالت الممكنة لبنية المخدم‪/‬زبون‪.‬‬
‫‪ 1-2-3-3‬طريقة عمل زبون الـ‪OPC‬‬

‫الجزء الثاني من بروتوكول الـ‪ ، OPC‬موجود في الغالب ضمن برمجيات السكادا‪ ،‬يقوم بطلب‬
‫البيانات من الـ ‪ OPC Server‬ليقوم بعد جلبها بعرضها ضمن نظام السكادا بأشكال متعددة‪ ،‬مع‬
‫التأكيد أن البيانات التي يمكن للزبون طلبها من المخدم‪ ،‬هي البيانات التي سبق وتم تعريفها ضمن‬
‫الـ ‪. OPC Server‬‬
‫ليتسنى لزبون ـ‪ OPC‬ما االطالع على بيانات متحكم ما‪ ،‬يقوم زبون الـ ‪ OPC‬بالبحث عن جميع‬
‫مخدمات الـ‪ OPC‬المنصبة على نفس حاسبه أو على حواسب متصلة مع حاسبه‪ ،‬ثم يقوم باالتصال‬

‫‪31‬‬
‫بنية بروتوكول الـ ‪OPC‬‬ ‫الفصل الثالث‬

‫مع المخدم‪.‬‬
‫بعد نجاح االتصال يقوم الزبون بإنشاء مجموعات ليضم بداخلها العناصر التي سيقوم بجلبها من‬
‫المخدم‪.‬‬
‫تملك كل مجموعة من المجموعات ضمن زبون الـ‪ OPC‬متحول هام يدعى زمن التحديث‪ ،‬يقوم‬
‫المستخدم بضبطه ُليحدد من خالله الزمن الدوري لتحديث قيم عناصر المجموعة من المخدم‪ ،‬قيمة‬
‫ُ‬
‫تغيرها‪.‬‬
‫المعرفة ضمن المجموعة وطبيعتها وكيفية ُ‬
‫ّ‬ ‫هذا المتحول تَتحدد تبعاً ألهمية العناصر‬
‫فمثال لو كان لدينا مجموعة تحوي عناصر تُمثل حساسات ح اررة‪ ،‬هنا ُيفضل أن يكون زمن التحديث‬
‫كبير نسبيا( مثال كل ‪ 3‬دقائق) وذلك نظ اًر لبطء تغير الحرارة‪ ،‬الضبط الصحيح لهذا المتحول‬
‫يحسن بالطبع من أداء وعمل الشبكة الصناعية العاملة وفق بروتوكول الـ ‪.OPC‬‬

‫‪ 2-2-3-3‬التشكيالت الممكنة لبنية المخدم‪/‬زبون‬

‫سنسرد فيما يلي التشكيالت الممكن بناؤها في بروتوكول الـ ‪ OPC‬وفق بنية المخدم‪/‬زبون‪.‬‬
‫يمكن لـ ‪ OPC Client‬وحيد أن يتصل بأكثر من ‪ OPC Server‬من شركات مختلفة كما هو موضح‬
‫بالشكل(‪.)1-3‬‬

‫الشكل ‪ :6-3‬زبون متصل مع عدة مخدمات‬

‫تُظهر هذه التشكيلة أهمية استخدام بروتوكول الـ‪ ،OPC‬ألنه بعد تنجيز االتصال مع المخدمات‪،‬‬
‫المعرفة ضمن زبون الـ ‪ OPC‬كوحدة واحدة متجانسة بغض النظر عن‬ ‫ّ‬ ‫المخدمات‬
‫تَظهر بيانات ُ‬
‫مصدرها‪ ،‬هنا بالضبط يكمن نجاح معيار الـ‪ OPC‬في إذابة الفوارق واالختالفات بين الشركات‬
‫المصنعة لتجهيزات التحكم‪.‬‬
‫ّ‬

‫‪37‬‬
‫بنية بروتوكول الـ ‪OPC‬‬ ‫الفصل الثالث‬

‫يمكن تشكيل أي شبكة بين زبائن الـ ‪ OPC‬ومخدماته بدون أي محدودية على أعداد المخدمات أو‬
‫أعداد الزبائن المتصلة بالشبكة‪.‬‬

‫الشكل (‪ُ )3-7‬يظهر البنى التي يمكن تشكيلها ضمن بروتوكول الـ ‪ OPC‬وفق بنية مخدم‪/‬زبون‪.‬‬

‫زبون وحيد يتصل بمخدم وحيد‬


‫‪OPC Server‬‬ ‫‪OPC Client‬‬

‫أكثر من زبون يتصلون بمخدم وحيد‬ ‫‪OPC Client‬‬


‫‪.‬‬ ‫‪1‬‬
‫‪OPC Server‬‬ ‫‪.‬‬
‫‪.‬‬
‫‪OPC Client‬‬
‫‪n‬‬

‫‪OPC Server 1‬‬


‫زبون وحيد يتصل بأكثر من مخدم‬
‫‪.‬‬
‫‪.‬‬ ‫‪OPC Client‬‬
‫‪.‬‬

‫‪OPC Server n‬‬

‫‪OPC Server 1‬‬ ‫‪OPC Client 1‬‬


‫‪.‬‬ ‫‪.‬‬
‫‪.‬‬ ‫أكثر من زبون يتصل‬ ‫‪.‬‬
‫‪.‬‬ ‫مع أكثر من مخدم‬ ‫‪.‬‬
‫‪OPC Server n‬‬
‫‪OPC Client M‬‬

‫الشكل ‪ :7-3‬تشكيالت المخدم‪/‬زبون الممكنة وفق بروتوكول الـ‪OPC‬‬

‫‪38‬‬
‫الفصل الرابع‬

‫الـ‪OPC‬‬ ‫أنواع بروتوكول‬


‫وبنيته البرمجية‬
‫‪OPC types and‬‬
‫‪Software structure‬‬

‫يعرض هذا الفصل مواصفات معيار الـ ‪ OPC DA‬وأجزاءه وبنيته البرمجية‪ ،‬ومن ثم يتناول المشاكل‬
‫التي شابت هذا اإلصدار والتي كانت سبباً في تطوير معيار جديد للـ ‪.OPC‬‬
‫وبعد ذلك يتم التعريف بالمعيار الجديد وشرح بنيته البرمجية ومواصفاته المعيارية ومزاياه‪.‬‬

‫‪39‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫الفصل ‪ : 4‬أنواع بروتوكول الـ‪ OPC‬وبنيته البرمجية‬

‫‪ 1-4‬واجهات معيار الـ‪OPC‬‬

‫كما تم اإليضاح سابقاً‪ ،‬فإن مؤسسة الـ ‪ OPC‬هي المسؤولة وعن وضع المعايير والمواصفات‬
‫الناظمة لعمل معيار الـ ‪.OPC‬‬
‫قامت المؤسسة بوضع عدة مواصفات تصف كل واحدة منها أجزاء و مهام عمل بروتوكول الـ‪،OPC‬‬
‫فمعيار الـ ‪ OPC‬حسب مواصفات المؤسسة ال ينحصر عمله في تحصيل البيانات في الزمن‬
‫الحقيقي من المتحكمات فقط‪ ،‬بل يتعداه إلى إمكانية تزويد المستخدم بواجهات لتوليد اإلنذارات‬
‫واألحداث‪ ،‬وأيضا منح المستخدم القدرة على التعامل مع بيانات مخزنة في قواعد بيانات الستخدامها‬
‫في التحليل وتوليد التقارير‪ ،‬وغيرها من المواصفات التي سنتناولها بنوع من التفصيل في هذا‬
‫الفصل‪.‬‬
‫الشكل (‪ )1-4‬يبين المواصفات العامة لمعيار الـ ‪. OPC‬‬

‫الشكل ‪ :1-4‬مواصفات معيار الـ ‪OPC‬‬

‫بينا‪ ،‬فإن مؤسسة الـ ‪ OPC‬حددت معايير لعدد من الواجهات البرمجية ‪Software Interfaces‬‬
‫كما ّ‬
‫ضمن معيار الـ ‪ OPC‬بهدف توحيد صيغ تدفق المعلومات بين مستوى العملية ‪ Process level‬و‬
‫مستوى التحكم والمراقبة ‪ SCADA level‬في هرم التحكم‪ ،‬أكثر حاالت االستخدام لهذه الواجهات‬
‫كانت عبارة عن واجهات من أجل تطبيقات األتمتة الصناعية مثل شاشات التخاطب البشرية‬

‫‪44‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫(‪ )HMIs‬وأنظمة المراقبة والتحكم ( ‪ )SCADA‬وذلك بهدف تحصيل البيانات في الزمن الحقيقي‬
‫من التجهيزات وتخزينها ألغراض تتعلق بالتحكم و التحليل و اإلدارة‪.‬‬
‫هناك عدة معايير ومواصفات وضعتها مؤسسة الـ ‪ OPC‬كإطار عام لمعيار الـ ‪ ،OPC‬كل مواصفة‬
‫توصف جزء برمجي ضمن المعيار ليؤدي وظيفة معينة‪.‬‬‫ّ‬
‫وبما أن معيار الـ‪ OPC‬مفتوح المصدر‪ ،‬يمكن ألي شركة االنضمام لمؤسسة الـ‪ OPC‬واالطالع على‬
‫هذه المواصفات وتطوير ‪ OPC Server‬خاص بها وبتجهيزاتها وفقاً لهذه المواصفات‪.‬‬
‫هذه المواصفات تعتبر دليل ومرجع يتبعه مصنعو منتجات الـ ‪ OPC‬في تصميم الواجهات والبنية‬
‫البرمجية لبروتوكول الـ ‪.OPC‬‬
‫نبين فيما يلي الواجهات البرمجية التي تنص عليها مواصفات الـ ‪:OPC‬‬

‫‪1-1-4‬واجهة النفاذ إلى البيانات اللحظية )‪OPC Data Access (OPC DA‬‬

‫وهي الواجهة األكثر استخدماً في المعيار‪ ،‬عندما ُيذكر الـ ‪ OPC Server‬بدون أي إضافة أخرى‬
‫تكون هذه الواجهة البرمجية هي المقصودة‪ ،‬وكل ما سبق ذكره حتى اآلن عن ‪ OPC Server‬كانت‬
‫هذه الواجهة هي المقصودة‪.‬‬
‫هذا الواجهة هي المسؤولة عن عمليات القراءة والكتابة والمراقبة للمتغيرات ضمن المشروع المؤتمت‪.‬‬
‫إن وظيفة بروتوكول الـ ‪ OPC DA‬هو تحصيل البيانات في الزمن الحقيقي من وحدات التحكم‬
‫القابلة للبرمجة ‪ PLCs‬أو من أي جهاز تحكم أخر إلى برمجيات المراقبة والتحكم ‪ SCADA‬أو أي‬
‫برمجيات إظهار أخرى‪.‬‬
‫واجهة ‪ OPC DA‬هي أهم واجهات الـ ‪ ،OPC‬وهي مطبقة في ‪ %99‬من المنتجات التي تستخدم‬
‫تكنولوجيا الـ ‪ OPC‬اليوم‪ ،‬وفي الغالب بقية واجهات الـ ‪- OPC‬عندما تُستخدم‪ -‬تكون مضافة إلى‬
‫هذه الواجهة‪.‬‬
‫المعرفة مسبقاً ضمن هذه الواجهة و التي تريد قراءتها أو الكتابة‬
‫زبائن الـ ‪ OPC DA‬تنتقي العناصر ّ‬
‫عرفة ضمنه ‪.‬‬
‫الم ّ‬
‫فيها‪ ،‬حيث أن الـ ‪ُ OPC DA‬يقدم طريقة هرمية لتعريف العناصر ُ‬

‫‪41‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫يظهر في الشكل (‪ )2-4‬األجزاء المختلفة ضمن واجهة النفاذ إلى البيانات ‪OPC DA‬‬

‫الشكل ‪ :2-4‬أجزاء واجهة النفاذ إلى البيانات ‪OPC DA‬‬

‫من أجل النفاذ الى البيانات بشكل منظم‪ ،‬تساعد المجموعات على تجميع وتصنيف العناصر‬
‫المتشابهة في الوظيفة أو الطابع‪.‬‬
‫معرف ضمن الـ ‪ : OPC DA‬هي القيمة وجودة القيمة‬
‫هناك ثالث سمات ‪ Attributes‬لكل عنصر ّ‬
‫و الطابع الزمني الذي ُيسجل زمن حدوث أخر تحديث للقيمة‪.‬‬
‫تنص مواصفات الـ ‪ OPC DA‬على أن هذه المواصفات الثالث يجب أن تُعاد للزبون في كل مرة‬
‫يرسل فيها الزبون للمخدم طالباً منه تحديث عناصره‪.‬‬
‫إن العناصر المعرفة ضمن المخدم تحدث قيمها بشكل تلقائي وفي الزمن الحقيقي من المتحكم‪.‬‬
‫أما بالنسبة لتحديث قيم العناصر‪ Items‬التي اختارها الزبون من قائمة عناصر المخدم‪ ،‬فالزبون هو‬
‫من يحدد أزمنة التحديث لكل مجموعة عناصر‪ ،‬تستخدم هذه األزمنة من قبل المخدم من أجل‬
‫عمليات الفحص الدوري‪ ،‬فبعد انقضاء الزمن المحدد يقوم المخدم بإرسال قيم العناصر و جودتها‬
‫والطابع الزمني إلى الزبون‪.‬‬
‫فمثالً المجموعات المعرفة ضمن الزبون والتي تحوي عناصر قيمها حرجة يمكن تقليل زمن الق ارءة‬
‫الدورية لها (مثال يمكن ضبط زمن القراءة الدورية للعناصر كل ‪ 1‬ثانية بدال من كل ‪ 14‬ثواني)‪.‬‬
‫أفضل طريقة من أجل القراءة الدورية (‪ )Cyclic Reading‬للبيانات من قبل الزبون هي عن طريق‬
‫المعرفة ضمن المخدم‪ ،‬حيث يقوم المخدم بإرسال قيم البيانات‬
‫ّ‬ ‫تغير في قيم البيانات‬
‫تحسس حدوث ّ‬
‫تح ّد من قراءة قيم لم يط أر عليها تغيير وتخفف من‬
‫التي تغيرت لحظة حدوث التغير‪ ،‬هذه الطريقة ُ‬
‫احتمالية حدوث ضغط على الشبكة بين الـ‪ OPC Server‬و الـ ‪. OPC Client‬‬
‫تقدم هذه الواجهة (أي الـ ‪ )OPC DA‬نفاذاً إلى البيانات بالزمن الحقيقي‪ ،‬هذا النفاذ قد ال يكون‬
‫ممكنا دائما نتيجة لخلل ما في االتصال‪ ،‬على سبيل المثال‪ ،‬عند حدوث انقطاع في االتصال بين‬
‫مخدم الـ ‪ OPC‬و المتحكم الصناعي‪ ،‬تعالج تكنولوجيا الـ‪ OPC‬هذه القضية من خالل منح كل‬
‫عنصر ضمن مخدم الـ ‪ OPC‬مؤشرين(أو متحولين)‪ ،‬األول يدعى الطابع الزمني ‪ Timestamp‬و‬

‫‪42‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫اآلخر يدعى جودة االتصال ‪. Quality‬‬


‫يبين متحول الطابع الزمني للمستخدم أخر لحظة تم فيها تحديث قيمة العنصر‪ ،‬ويبين متحول جودة‬
‫العنصر صحة قيمة العنصر‪ ،‬وهي تأخذ إحدى ثالث قيم‪ ،‬إما جيد (‪ )good‬أو سيئ (‪ )bad‬أو‬
‫معرف(‪.)uncertain‬‬
‫غير ّ‬

‫‪2-1-4‬واجهة األحداث واإل نذارات (‪OPC Alarms and Events)OPC A&E‬‬

‫واجهة االحداث واالنذارات (‪ )OPC A&E‬هي الواجهة أو التي تسمح بتبادل األحداث واالنذارات‬
‫مع المشروع المنّفذ‪.‬‬
‫األحداث اصطالحاً هي إشعارات تحوي معلومات تُعلم الزبون بوقوع حدث في المشروع الذي يديره‬
‫(مثال لحظة اقالع مضخة‪ ،‬كمية انتاج على خط سير‪ ،‬انتهاء عملية ملء خزان‪ .. ،‬الخ)‪.‬‬
‫أما االنذارات فهي اشعارات تُعلم الزبون بوقوع حدث حرج قد يؤثر على سير العمل في المشروع‬
‫المؤتمت‪ ،‬الحدث الحرج قد يكون مثالً ارتفاع ح اررة محرك‪ ،‬انخفاض مستوى خزان عن الحد األدنى‪.‬‬

‫الشكل ‪ :3-4‬واجهة النفاذ إلى البيانات وواجهة األحداث واالنذارات‬

‫يمكن التفريق بين اإلنذار والحدث بأن اإلنذار غالبا ما يكون ناجم عن خطأ أو عن حالة غير‬
‫مرغوبة‪ ،‬أما الحدث فهو تسجيل ألحداث وقعت ضمن المشروع بهدف االستفادة منها الحقا في‬
‫عملية االستنباط والتحليل‪.‬‬

‫‪43‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫تسمح هذه الواجهة للمستخدم بتأكيد تلقيه لإلنذارات ‪ Acknowledged‬وتمكنه من إيقاف اإلنذار‬
‫عن العمل قبل زوال سبب االنذار‪.‬‬
‫غالبا ما تكون هذه الواجهة ُمدمجة ضمن الواجهة البرمجية للـ ‪ ،OPC DA‬وليس بالضرورة أن‬
‫يحوي كل ‪ OPC Sever‬على واجهة االنذارات و األحداث‪.‬‬

‫‪ 3-1-4‬واجهة النفاذ إلى البيانات المخزنة ‪OPC Historical Data Access‬‬

‫تستخدم هذه الواجهة ـ ‪ OPC HDA‬للنفاذ إلى البيانات المؤرشفة والمخزنة في قواعد بيانات‪ ،‬و ذلك‬
‫بخالف الـ ‪ OPC DA‬الذي يستخدم للنفاذ إلى بيانات في الزمن الحقيقي من متحكمات منطقية‬
‫وأشباهها‪.‬‬
‫المجمعة في قواعد بيانات‬
‫ّ‬ ‫تنص مواصفات ‪ OPC HDA‬إلى إمكانية نفاذه إلى البيانات الخام‬
‫منفصلة‪ ،‬باإلضافة إلى إمكانية التعديل عليها أو استبدالها أو حذفها‪.‬‬

‫الشكل ‪ :4-4‬واجهة ‪OPC HDA‬‬

‫الهدف من مخدم ‪ OPC HDA‬هو إتاحة التعامل مع البيانات المؤرشفة وفق بروتوكول الـ‪،OPC‬‬
‫حيث يمكن ألي تطبيق ‪ OPC Client‬يملك إمكانية رسم منحنيات بيانية أو جداول أن يتصل‬
‫مع ‪ OPC HDA‬ويستعرض جميع البيانات المخزنة ويحولها إلى معلومات ويستنبط منها تحليالت‬
‫ويولد تقارير‪.‬‬

‫‪44‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫برنامج الـ ‪ OPC HDA‬النافذ إلى البيانات المؤرشفة يمكن أن يأتي بشكل منفصل عن برنامج‬
‫الـ‪ OPC DA‬النافذ إلى بيانات الزمن الحقيقي أو بشكل مدمج ضمن برمجية واحدة وال يشترط على‬
‫كل منتجي ‪ OPC DA‬أن يقدموا ‪. OPC HDA‬‬

‫‪ 4-1-4‬واجهة االتصال عبر االنترنت)‪OPC eXtensible Markup Language (OPC XML‬‬

‫الـ ‪ XML‬يمكن ترجمتها بلغة التوصيف الموسعة‪ ،‬وهي طريقة لتوصيف البيانات تحمل معنى جديد‬
‫وقواعد مختلفة تسمح بتناقل البيانات بين البرمجيات التي ترغب بالتعاون مع بعضها البعض‪.‬‬
‫الـ ‪ XML‬تقنية تجعل من عملية تشارك البيانات بين التطبيقات سهلة وممكنة بغض النظر عن‬
‫نوع نظام التشغيل الذي تعمل عليه التطبيقات( ‪ )Windows, Unix, ..‬وذلك بعكس تقنية الـ‬
‫‪ COM/DCOM‬المحصورة فقط بأنظمة التشغيل ويندوز‪.‬‬
‫من عيوب معيار الـ ‪ OPC‬التي ظهرت مع انتشار المعيار و ظهور أنظمة تشغيل جديدة‪ ،‬هو‬
‫ارتباط المعيار بنظام التشغيل ويندوز كونه يعتمد كليا على تكنولوجيا ‪ COM/DCOM‬في الربط‬
‫بين المخدم والزبون‪ ،‬لذلك سعت مؤسسة الـ ‪ OPC‬لالنعتاق من شرط بيئة التشغيل ويندوز‪.‬‬
‫يمكننا االعتبار أن ‪ OPC XML-DA‬أول مواصفة لمعيار الـ ‪ OPC‬حاولت من خاللها المؤسسة‬
‫الراعية للمعيار التخلي عن تكنولوجيا ‪ COM/DCOM‬واستبدلتها بتكنولوجيا ‪HTTP/SOAP‬‬

‫وتكنولوجيا الويب‪.‬‬
‫باستخدام هذه الواجهة تم تقديم منصة للتواصل محايدة (أي تعمل بدون أي شروط تتعلق بنظام‬
‫التشغيل) ومقبولة على نطاق واسع مع االحتفاظ بجميع وظائف الـ ‪ OPC DA‬في النفاذ إلى‬
‫البيانات‪.‬‬
‫تم تصميم ‪ OPC XML-DA‬بحيث تدعم الوصول إلى اإلنترنت باالعتماد على منصته المستقلة‪،‬‬
‫أي يمكن لزبون الـ ‪ OPC‬االتصال بمخدم ‪ OPC XML DA‬عن طريق االنترنت‪.‬‬
‫المضمنة وعلى أنظمة التشغيل التي ال تتبع لشركة‬
‫وتم استخدام هذا المخدم بشكل رئيسي في النظم ُ‬
‫مايكروسوفت‪ ،‬ولكن نظ ار الستهالكه المرتفع للموارد ومحدودية أدائه لم ينجح مخدم‬
‫‪ OPC XML-DA‬كما كان متوقعاً له‪.‬‬

‫‪45‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫‪ 5-1-4‬واجهات معيارية أخرى للـ ‪OPC‬‬

‫‪.‬‬
‫حددت مؤسسة الـ ‪ OPC‬مواصفات أخرى تطال عدة جوانب في معيار الـ ‪ OPC‬غير التي ذكرناها‬
‫حتى اآلن‪ ،‬الهدف منها تلبية االحتياجات الخاصة للمستخدمين يوضحها الشكل(‪.)5-4‬‬

‫المواصفات اإلضافية هي‪:‬‬


‫‪ :OPC Security .1‬تحدد كيفية الضبط والتحكم بنفاذ الزبون إلى المخدم بهدف حماية المعلومات‬
‫المهمة واالحتراس من التعديالت غير المسموحة على بارامترات المشروع الحساسة‪.‬‬
‫ُ‬
‫‪ :OPC Overview and OPC Common .2‬مواصفات أساسية الهدف منها التعريف بالواجهات‬
‫والسلوكيات المشتركة بين جميع مواصفات ‪ OPC‬المستندة إلى تكنولوجيا الـ ‪.COM‬‬

‫الشكل ‪ :5-4‬المواصفات العام لبروتوكول الـ ‪OPC‬‬

‫‪ُ : OPC Complex Data .3‬يحدد من خاللها كيفية تعريف ونقل قيم البيانات ذات البنية المعقدة‬
‫أو المركبة (‪.)complex structured data types‬‬

‫‪ .4‬مخدم تبادل البيانات )‪: OPC Data exchange (OPC DX‬‬

‫عادة والمألوف لنا حتى اآلن أن االتصال يكون بين زبون ‪ OPC‬يرغب بتحديث بياناته مع مخدم‬
‫ً‬
‫‪ OPC‬مالك لهذه للبيانات‪.‬‬
‫فإذا كان لدى المصممين رغبة أو حاجة في تحقيق اتصال بين بيانات مخدم أول مع بيانات مخدم‬
‫ثاني وفق بروتوكول الـ ‪ ،OPC‬هل من الممكن تحقيق هذا الربط؟‬

‫‪41‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫إن إمكانية اتصال ‪ OPC Server‬مع أخر بشكل مباشر غير ممكنة ضمن مواصفات معيار الـ‬
‫‪ ،OPC‬لكن تفعيل االتصال بين مخدمات الـ ‪ OPC‬ممكن ومتاح من خالل ما يعرف بمخدم تبادل‬
‫البيانات ‪ ،OPC DX‬كما هو واضح في الشكل(‪.)1-4‬‬

‫الشكل ‪ :6-4‬تبادل البيانات بين مخدمات الـ ‪ OPC‬من خالل ‪OPC DX‬‬

‫إن الـ ‪ OPC DX‬بالتعريف هو أحد المواصفات التي وضعتها مؤسسة الـ ‪ OPC‬يمكن من خاللها‬
‫تحديد آلية تبادل البيانات بين مخدمات النفاذ إلى البيانات (‪.)OPC DAs‬‬
‫يتم تحقيق االتصال السابق كما يلي‪ ،‬حيث يقوم الـ ‪( OPC DX‬الذي يمثل وجهة البيانات) بتحصيل‬
‫‪OPC‬‬ ‫البيانات من مخدم آخر(يمثل مصدر البيانات) شرط أن يتضمن مخدم المصدر على‬
‫‪ Client‬بداخله ‪ ،‬حيث يتم ضمن مخدم تبادل البيانات ‪ OPC DX‬تعريف وضبط قناة اتصال أو‬
‫أكثر يطلق عليها ‪ DX Connection‬وظيفتها تهيئة االتصال بين مخدمات الـ ‪ OPC‬المصدر‬
‫والوجهة‪.‬‬

‫‪ : OPC Batch .5‬امتداد للـ ‪ OPC DA‬يمكن من خالل هذه الواجهة تلبية االحتياجات الخاصة‬
‫المتمثلة بالقيام بعدة عمليات دفعة واحدة (‪.)Batch Processes‬‬
‫‪ُ :OPC Commands .6‬يعرف من خالل هذه المواصفة آليات تنفيذ برامج عبر الـ ‪.OPC‬‬

‫صدرت هذه المواصفة بشكل متأخر وترافقت مع صدور النسخة الجديدة من معيار الـ ‪OPC‬‬

‫(المقصود ‪ OPC UA‬التي سنتناولها الحقا)‪.‬‬

‫‪47‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫خالصة‪:‬‬
‫صدر عن مؤسسة الـ ‪ OPC‬مواصفات لمعيار الـ ‪ OPC‬وقدمتها لجميع الراغبين بتطوير منتجات‬
‫تعمل وفق لبروتوكول الـ ‪.OPC‬‬
‫هذه المواصفات تلبي وتغطي جميع متطلبات العاملين في مجال األتمتة والتحكم بالعمليات‪.‬‬
‫لم تطالب مؤسسة الـ‪ OPC‬أعضائها بااللتزام بجميع المواصفات الصادرة عن المؤسسة والتي‬
‫تناولناها في الفقرات الماضية‪ ،‬فكل ما ينبغي على الراغبين في تطوير مخدم ‪ OPC‬فعله هو أن‬
‫أخذ المواصفات التي تلبي حاجتهم ومن ثم ترجمتها إلى أكواد برمجية تنّفذ الوظيفة التي يرغبون‬
‫بها‪.‬‬

‫‪ 2-4‬بنية الـ ‪ OPC‬البرمجية ومكوناته‬

‫وفقاً لمعيار الـ ‪ OPC‬فإن مخدمات الـ ‪ OPC‬لها نوعين من واجهات التخاطب مع الزبون‪ ،‬بمعنى‬
‫أن ‪ OPC Clients‬يمكن أن يتصل مع الـ ‪ OPC Server‬من خالل نوعين من الواجهات‪:‬‬
‫أوالا‪ :‬الواجهة المخصصة (‪ :)OPC Custom Interface‬وهي واجهات مخصصة لالستخدام من‬
‫قبل اللغات عالية المستوى مثل ‪.C++‬‬
‫ثانيا‪ :‬الواجهة المؤتمتة (‪ :)OPC Automation interface‬وهي واجهات مخصصة لالستخدام‬
‫من قبل اللغات األقل تعقيداً مثل ‪Delphi, Excel،Visual Basic‬‬

‫يتصل الـ ‪ OPC Client‬بمخدم الـ ‪ OPC‬من خالل واحدة من الواجهات السابقة‪.‬‬
‫كل ‪ OPC Server‬يجب أن يحوي بالضرورة على الواجهة المخصصة ‪ ،Custom Interface‬ولكن‬
‫ال يشترط أن يحوي على الواجهة المؤتمتة ‪.Automation interface‬‬
‫يبين الشكل (‪ )7-4‬البنية النموذجية لمخدم الـ ‪.OPC‬‬

‫الشكل ‪ :7-4‬بنية الـ ‪ OPC‬النموذجية(القياسية)‬

‫‪48‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫عرف الواجهة ‪ Interface‬بأنها مجموعة من التوابع واألغراض البرمجية التي تشكل في مجموعها‬
‫تُ ّ‬
‫برنامج محدد‪.‬‬
‫يمكن أن نجد التوصيف الدقيق لواجهة األتمتة (‪ )OPC Automation interface‬ضمن اإلصدار‬
‫الثالث لمواصفات الـ ‪ OPC‬الصادر عن مؤسسة الـ ‪)OPC DA 3.00 Specification( OPC‬‬

‫توابع الواجهة المخصصة ‪Custom com interface‬‬

‫هذه الواجهة كما ذكرنا يمكن التعامل معها فقط من خالل لغة ‪ ،C++‬ويفضل أن يعمل بهذه الطبقة‬
‫فقط مبرمجين خبراء نظ ار لصعوبة التعامل معها‪.‬‬
‫يتصل الـ ‪ OPC Client‬بـ ‪ OPC Server‬من خالل هذه الواجهة (الطبقة الوسيطة)‪.‬‬

‫الشكل ‪ :8-4‬توابع الواجهة المخصصة‬

‫في الحقيقة فإن الـ ‪ OPC Client‬المبرمج وفق لغة ‪ C++‬ال يرى من مخدم الـ ‪ OPC‬سوى هذه التوابع‬

‫فقط‪ ،‬حيث أنه وباستخدام هذه التوابع (توابع الواجهة المخصصة التي تظهر في الشكل(‪) )8-4‬‬

‫فإن زبون الـ‪ OPC‬يستطيع النفاذ إلى بيانات المخدم المتصل معه و جميع مجموعاته وعناصره‪.‬‬

‫‪49‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫‪ 3-4‬عيوب معيار الـ ‪ OPC DA‬والحافز الذي دفع باتجاه وضع معيار جديد للـ ‪OPC‬‬

‫يعتبر معيار الـ ‪ OPC Data Access‬الذي تناولناه طوال هذا البحث أول وأنجح معيار للـ ‪،OPC‬‬
‫صمم ليكون واجهة اتصال مع المتحكمات سامحاً بتبادل البيانات في الزمن الحقيقي بينها‬
‫والذي ُ‬
‫منصبة على أنظمة تشغيل ويندوز‪.‬‬
‫وبين تطبيقات برمجية ّ‬
‫ويعتبر أيضاً الـ ‪ OPC DA‬من أكثر المواصفات استخداما في معيار الـ ‪ OPC‬حيث تم توظيفه في‬
‫نفاذ أنظمة التحكم والمراقبة ( ‪ )SCADA‬إلى بيانات تجهيزات األتمتة المختلفة ليتم الحقا إصدار‬
‫بقية المواصفات مثل ‪ OPC A&E‬و ‪ OPC HDA‬لتلبية بعض االحتياجات الخاصة لكنها بالمجمل‬
‫لم تكن شائعة كما كان ‪.OPC DA‬‬
‫مع نجاح اعتماد الـ ‪ OPC‬في آالف المنتجات‪ ،‬بات ُيستخدم الـ ‪ OPC‬اليوم كواجهة موحدة في‬
‫األنظمة المؤتمتة‪ ،‬حتى أنه جرى استخدامه وأثبت نجاحه في كثير من المجاالت التي لم يكن قد‬
‫صمم ألجلها‪.‬‬
‫ولكن بالمقابل أيضا‪ ،‬هناك العديد من التطبيقات أراد فيها المصنعون استخدام الـ ‪ OPC‬لكن لم‬
‫يستطيعوا ذلك بسبب اعتماده على تكنولوجيا الـ ‪COM‬المخصصة فقط لشركة ويندوز أو بسبب‬
‫صعوبة ضبط قناة االتصال البعيدة ‪.DCOM‬‬

‫كان معيار الـ ‪ OPC XML-DA‬النهج التطويري األول الذي سلكته مؤسسة الـ ‪ OPC‬والتي هدفت‬
‫من خالله إلى استخدام منصة اتصال محايدة بعيدة عن شركة مايكروسوفت وتكنولوجيا‬
‫‪ COM/DCOM‬مع سعيها للحفاظ على الميزات الناجحة للـ ‪ ، OPC DA‬لكن كان هناك عدة أسباب‬
‫جعلت من استخدام هذا اإلصدار غير كافي لتغطية جميع المتطلبات للجيل الجديد من الـ ‪،OPC‬‬
‫أحد هذه األسباب كان البطء و ضعف األداء حيث اعتمد‪ OPC XML-DA‬على تكنولوجيا‬
‫خدمات الويب مقارنة مع النسخة األصلية التي اعتمدت على تكنولوجيا ‪. COM/DCOM‬‬

‫وإلى جانب إشكالية منصة تشغيل في الـ ‪ ،OPC DA‬أبدت الشركات األعضاء في مؤسسة الـ‪OPC‬‬

‫حاجاتهم للتعامل مع بيانات وأنظمة أكثر تعقيدا‪ ،‬وأظهروا رغبتهم في التخلص من القيود التي‬
‫يفرضها عليهم معيار ‪ OPC DA‬في هذا المجال‪.‬‬

‫‪54‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫بالرغم من أن تقنية ‪ COM/DCOM‬ساعدت على انتشار الـ ‪ OPC DA‬في بداياته‪ ،‬لكن مع تطور‬
‫المعيار وانتشاره وزيادة حاجات السوق برز لهذه التقنية عدة سلبيات‪ ،‬نذكر منها‪:‬‬

‫‪ )1‬صعوبة ضبط إعدادات قناة ‪ DCOM‬وتكرار الحاجة لضبط االعدادات مع كل حاسب‬


‫جديد نرغب بضمه للشبكة الصناعية‪.‬‬
‫‪ )2‬عدم القدرة على ضبط زمن انقطاع االتصال ‪ Timeouts‬بين الزبون والمخدم‪.‬‬
‫‪ )3‬تعمل فقط على أنظمة التشغيل ‪.Windows‬‬
‫‪ )4‬قناتي االتصال ‪ COM/DCOM‬مغلقتان‪ ،‬يمكن تشبيههما بالصندوق األسود حيث أنهما‬
‫ال تسمحان للمطورين والمبرمجين بالتحكم بخصائصهما أو النفاذ إليهما‪ ،‬وبالتالي يضطر‬
‫المطورين إلى التكيف مع النقص واألخطاء الموجودة بدون القدرة على معالجتها‪.‬‬
‫‪ )5‬مستوى األمان منخفض‪.‬‬

‫وهنا بدأت تظهر الحاجة إليجاد معيار أكثر شموالً واستقاللية‪.‬‬


‫استمرت المحاوالت الحثيثة للقائمين على منظمة الـ ‪ OPC‬وعملوا على إنتاج إصدارات جديدة‬
‫ومحسنة عن معيار الـ‪ OPC‬بحيث تلبي حاجات السوق وتطلعاته و ليعالجوا الخلل الموجود في‬
‫المعيار القديم للـ ‪.OPC‬‬
‫يبين الشكل (‪ )9-4‬إصدارات الـ ‪ OPC‬بين عامين ‪ 1995‬وحتى عام ‪2447‬‬

‫الشكل ‪:9-4‬المخطط الزمني إلصدارات معيار الـ‪ OPC‬بين عامين ‪2007 - 1995‬‬

‫يبين المخطط الزمني السابق أن عام ‪ 2445‬شهد والدة معيار جديد للـ ‪ ،OPC‬يدعى معيار الـ‬
‫‪ OPC‬ذو البنية الموحدة ) ‪OPC Unified Architecture(OPC UA‬‬

‫‪51‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫من لحظة والدة هذا المعيار الجديد‪ ،‬أصبح يطلق على معيار الـ ‪ OPC DA‬الذي تناولناه طوال هذا‬
‫البحث بـ ‪ OPC‬الكالسيكي أو التقليدي (‪.)Classic OPC‬‬
‫ولد معيار الـ ‪ OPC‬ذو البنية الموحدة من الحاجة لخلق بديل حقيقي ومستقل عن‬
‫تكنولوجيا‪ COM/DCOM‬وبدون فقدان أي ميزة أو تراجع في أداء الـ ‪ OPC‬الكالسيكي‪ ،‬وبحيث‬
‫يكون قادر أيضا على توصيف األنظمة المعقدة‪.‬‬

‫في الجدول (‪ )1-4‬تم جدولة أهم أسباب وضع المعيار الجديد وأغلب المتطلبات المهمة التي طالب‬
‫أعضاء مؤسسة الـ ‪ OPC‬بتحقيقها وضمها للمعيار الجديد‪.‬‬
‫يمكن تصنيف هذه المتطلبات إلى صنفين‪:‬‬
‫الصنف األول‪ :‬متطلبات تطال جوانب االتصال بين مكونات الـ ‪ OPC‬بحيث تكون أكثر مرونة‬
‫وأكثر استقاللية وأكثر كفاءة‪.‬‬
‫الصنف الثاني‪ :‬متطلبات تتعلق بنمذجة البيانات‪.‬‬

‫نمذجة البيانات‬ ‫االتصال وكفاءته‬


‫إيجاد نموذج مشترك لجميع بيانات الـ ‪OPC‬‬ ‫الموثوقية والمتانة والتك اررية‬
‫منصة االتصال مستقلة عن نوع‬
‫استخدام البرمجة غرضية التوجه‬
‫نظام التشغيل‬
‫إيجاد نظام قابل للتوسع‬ ‫قابلية التوسع في االتصال‬
‫دعم البيانات الوصفية (‪)Meta information‬‬ ‫األداء العالي أثناء االتصال‬
‫المعقدة‬
‫دعم البيانات ُ‬ ‫الجدر النارية‬
‫دعم اإلنترنت و ُ‬
‫قابلية التطوير من النماذج البسيطة الى‬
‫األمان وإمكانية التحكم بالوصول‬
‫النماذج المعقدة‬
‫نموذج أساسي مجرد وقاعدة لنماذج البيانات‬ ‫إمكانية العمل والتشغيل بين الشركات‬
‫القياسية األخرى‬ ‫المختلفة‬

‫جدول ‪ :1-4‬متطلبات معيار الـ‪OPC UA‬‬

‫فيما يلي‪ ،‬سنوضح أهم النقاط الواردة في جدول متطلبات إيجاد معيار الـ‪:OPC UA‬‬

‫‪52‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫أوال‪ :‬االتصال وكفاءته‬

‫‪-1‬الموثوقية(‪:)Reliability‬‬
‫صمم الـ ‪ OPC‬الكالسيكي كواجهة لمتحكم ما بهدف ربطه بأنظمة التحكم والمراقبة سكادا‪ ،‬أما الـ‬
‫‪ OPC UA‬الجديد فالمطلوب منه أن ُيستخدم كواجهة تحصيل بيانات ألنظمة متكاملة موزعة أكثر‬
‫تعقيداً وليس فقط لتجهيزات تحكمية كما كان بالسابق‪ ،‬ولذلك فإن موثوقية االتصال مطلوبة ومهمة‬
‫جدا في المعيار الجديد‪.‬‬
‫‪ -2‬دعم التك اررية(‪:)Redundancy‬‬
‫ألن شبكات االتصال ليست مضمونة بطبيعة الحال‪ ،‬فإن المتانة والقدرة على تجاوز األخطاء هي‬
‫مطلب مهم في المعيار الجديد‪ ،‬لذلك كان المطلوب من المعيار الجديد دعم التكرارية ‪Redundancy‬‬

‫للشبكات وللتجهيزات على حد سواء‬


‫المقصود بالتك اررية أن البروتوكول يدعم وجود تجهيزات وشبكات احتياطية في وضعية استعداد‬
‫‪ ،Standby‬ففي حال فشل تجهيزة أو حدث انقطاع في االتصال يعمل فو اًر النظام الرديف المقابل‬
‫الذي كان وفي وضعية استعداد‪.‬‬
‫‪ -3‬دعم االنترنت واألمان(‪:)Internet and Security‬‬
‫في عصر انترنت األشياء )‪ Internet of Things ( IOT‬وتوجه أنظار جميع المطورين باتجاه‬
‫عنونة كل شيء‪ ،‬كان مطلوب أن يحقق المعيار الجديد نجاح وأداء متميز في بيئة االنترنت‪،‬‬
‫وبالطبع سينتج عن هذا التطور واالنفتاح مخاطر تستوجب زيادة في عوامل األمان وضبط عمليات‬
‫النفاذ‪.‬‬
‫‪ -4‬التشاركية(‪:)Interoperability‬‬
‫التشاركية في البيانات بين مختلف الشركات هي من أهم الركائز التي قامت عليها فكرة الـ ‪،OPC‬‬
‫لذلك من غير المقبول اإلخالل بهذه الميزة أو إضعافها في المعيار الجديد‪.‬‬

‫‪53‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫ثانيا‪ :‬نمذجة البيانات‬

‫تُ ّعرف المعلومات الوصفية ‪ Meta information‬على أنها البيانات التي تزود المستخدم بمعلومات‬
‫توصف حالة البيانات نفسها‪ ،‬فمثال‪ :‬توضح البيانات الوصفية الهدف من إنشاء البيانات‪،‬‬
‫إضافية ّ‬
‫وقت وتاريخ إنشاء البيانات‪ ،‬الشخص الذي أنشئ البيانات‪ ..‬الخ‪.‬‬

‫نمذجة البيانات كان محدود جدا في الـ ‪ OPC‬الكالسيكي‪ ،‬لذلك كان هناك حاجة إلى تعزيز النمذجة‬
‫عن طريق إتاحة نموذج مشترك للبيانات يعتمد على البرمجة الكائنية غرضية التوجه ‪Object-‬‬
‫‪ Oriented Model‬لجميع بيانات الـ‪ ، OPC‬المطلوب من هذا النموذج أن يكون قابل للتوسع ليكون‬
‫قادر على توصيف األنظمة األكثر تعقيداً‪.‬‬
‫تعزيز النمذجة مطلب مهم في المعيار الجديد‪ ،‬ولكن من المهم أيضا بنفس القدر دعم النماذج‬
‫البسيطة مع المفاهيم البسيطة المجردة ليكون باإلمكان التوسع منها إلى النماذج األكثر تعقيداً‪.‬‬

‫أحد أهم األهداف التصميمية التي تم مراعاتها في المعيار الجديد‪ ،‬هو السماح بانتقال سهل وسلسل‬
‫من المعيار ‪( OPC DA‬الكالسيكي) إلى معيار ‪ OPC UA‬وذلك لحماية االستثمارات الناجحة التي‬
‫حققها الـ ‪ OPC‬الكالسيكي واالستفادة من انتشاره الكبير‪.‬‬

‫من أهم الحوافز التي دعت لالنتقال إلى المعيار الجديد هو أن تكنولوجيا اإليثرنت أصبحت ناضجة‬
‫وغزت بشكل كبير مجاالت التحكم اآللي واألتمتة الصناعية‪ ،‬فاالتجاه السائد اليوم للصناعات هو‬
‫جعل التجهيزات الحقلية ‪ Field Devices‬قادرة على االتصال المباشر مع الشبكة الصناعية العامة‬
‫التي تدير المنظومة المؤتمتة‪ ،‬نتيجة لهذا االتجاه أصبح لزاما على الشركات بذل مجهود أكبر في‬
‫إيجاد بيئة مناسبة إلدارة هذه التجهيزات والتعامل معها ضمن الطبقة العليا للشبكات‪ ،‬هنا ظهرت‬
‫حاجة ملحة لتحقيق إمكانية تبادل المعلومات بين تجهيزات الشبكات الصناعية المختلفة‪ ،‬وهذا كان‬
‫عامل مهم في ظهور معيار الـ ‪ OPC‬الجديد‪.‬‬

‫‪54‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫‪ 4-4‬معيار الـ ‪ OPC‬ذو البينة الموحدة )‪OPC Unified Architecture (OPC UA‬‬

‫ولد معيار الـ ‪ OPC‬ذو البنية الموحدة من الحاجة لخلق بديل حقيقي ومستقل عن تكنولوجيا‬
‫‪ COM/DCOM‬باإلضافة إلى الرغبة في جعل الـ ‪ OPC‬متاح على جميع أنظمة التشغيل وله القدرة‬
‫على توصيف األنظمة األكثر تعقيداً‪.‬‬
‫في الشكل(‪َ )14-4‬يظهر شعار المعيار الجديد لبروتوكول الـ‪.OPC‬‬

‫الشكل ‪ :10-4‬شعار بروتوكول الـ ‪ OPC‬ذو البنية الموحدة‬

‫إن مجموعة العمل األولى التي قامت بوضع متطلبات وحاالت استخدام معيار الـ ‪ OPC UA‬و‬
‫التي ضمت أكثر من ‪ 44‬ممثال عن شركات مختلفة لم يكونوا جميعهم أعضاء في مؤسسة الـ‬
‫‪ ،OPC‬فهناك منظمات من خارج المؤسسة أبدت اهتماما في استخدام معيار الـ ‪ OPC‬الجديد كآلية‬
‫لنقل البيانات‪ ،‬منها منظمة (‪ ) IEC‬ومنظمة (‪ )ISA‬وجميعهم شاركوا في وضع التصميم والمتطلبات‬
‫لمعيار الـ‪ OPC‬الجديد‪.‬‬
‫في مجموعة العمل هذه قامت مؤسسة الـ ‪ OPC‬بتعريف كيفية توصيف ونقل البيانات‪ ،‬وقامت‬
‫المنظمات المتعاونة معها بتعريف ما هي البيانات التي يرغبون في توصيفها ونقلها باالعتماد على‬
‫نماذج البيانات خاصتهم‪.‬‬

‫إن بروتوكول الـ ‪ OPC UA‬بالتعريف‪ :‬هو الجيل الثاني من بروتوكول الـ ‪ ،OPC‬يستخدم لتبادل‬
‫البيانات في الشبكات الصناعية بحيث يضمن تدفق سلس للبيانات بين التجهيزات من مختلف‬
‫المصنعين‪.‬‬
‫أول إصدار له كان عام ‪ 2441‬من قبل مؤسسة ‪ ،OPC‬ظهر كتحسين لإلصدار السابق الذي‬
‫أصبح يعرف فيما بعد بالـ ‪ OPC‬الكالسيكي‪ ،‬يحوي البروتوكول ذو البنية الموحدة ‪ OPC UA‬على‬
‫جميع الوظائف المتوفرة في الـ ‪ OPC‬الكالسيكي مضافا إليها وظائف أخرى‪.‬‬
‫ُيعرف أيضا الـ ‪ OPC UA‬بالمعيار ‪.IEC 62541‬‬

‫‪55‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫اعتمد الـ ‪ OPC UA‬في بناءه البرمجي على تكنولوجيا جديدة تسمى‬
‫المعمارية خدمية التوجه )‪ Service-Oriented Architecture (SOA‬وهي طريقة تُبنى فيها هيكلية‬
‫البرنامج باالعتماد على عدد من المهام الجزئية ‪ Micro Services‬التي تتعاون فيما بينها لتوليد‬
‫البرنامج النهائي‪ ،‬الحظ الشكل (‪.)11-4‬‬
‫طريقة التجزئة هذه مختلفة عن العرف القديم السائد والتي تجعل من البرنامج ُكل متكامل ُيعامل‬
‫ككتلة واحدة‪.‬‬
‫في البنية السابقة المتالصقة كان كلما احتجنا إلجراء تغيير ما‪ ،‬مهما كان بسيطا سنضطر للقيام‬
‫بتعديالت كبيرة قد تطال كامل البرنامج وذلك كون كل تغيير يؤثر بطريقة ما على جزئية أخرى‬
‫من البرنامج الكلي‪.‬‬
‫أما عند استخدام تقنية ‪ SOA‬فبناء البرنامج يتكون من أجزاء صغيرة و كل جزء يقوم بمهمة واحدة‬
‫محددة‪ ،‬و هذه المكونات مستقلة بذاتها‪.‬‬

‫الشكل ‪:11-4‬البنية المعمارية خدمية التوجه التي يعتمد عليها معيار الـ ‪OPC UA‬‬

‫أهمية هذه التقنية كانت في جعل التعديل على جزء من البرنامج أو تطويره أو إضافة مكونات‬
‫أخرى أمر سهل وممكن‪ ،‬مما ساهم كثي اًر في توفير الوقت والكلفة‪.‬‬
‫اعتماد ‪ OPC UA‬على تقنية ‪ SOA‬بدالً عن تقنية ‪ COM/DCOM‬الموجود في الـ ‪ OPC‬الكالسيكي‬
‫منحه الكثير من المزايا وزاد من إمكانية توظيفيه في المشاريع باإلضافة إلى الكثير من الخصائص‬
‫األخرى‪ ،‬نذكر منها‪:‬‬
‫‪ .1‬إمكانية بناء الـ ‪ OPC UA‬باستخدام لغات برمجية متعددة منها‪.NET ، Java ،ANSI C :‬‬
‫‪ .2‬قابل للتوسع بشكل كبير(‪ )Scalability‬حيث يمكن له أن يضم طيف واسع من المكونات‬
‫انتهاء بالمتحكمات المنطقية‪.‬‬
‫الصلبة‪ ،‬بدءا من الحساسات الذكية و ً‬
‫‪ .3‬ارتفاع الموثوقية واألمان‪ ،‬حيث أنه يعتمد على معاير جديدة وموثوقة يسهل التعامل معها‪.‬‬
‫المشكلة للمعيار‪.‬‬
‫‪ .4‬أصبح باإلمكان ضبط زمن فقدان االتصال لكل مهمة من المهام ُ‬

‫‪51‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫‪ .5‬مخدم الـ ‪ OPC UA‬يمكن له وفق البنية الجديدة أن يكون متضمن داخل المتحكم وهي ميزة‬
‫أعطت مرونة كبيرة للمعيار حيث أصبح باإلمكان تحصيل البيانات من طبقة المتحكمات‬
‫إلى طبقة ‪ Enterprise‬مباشرة‪.‬‬

‫كما هو واضح في الشكل (‪ ،)12-4‬فإن ‪ OPC UA‬تجاوز الحاجة الى مكونات ويندوز وأصبح‬
‫أكثر استقاللية‪ ،‬حيث يمكن له أن يعمل على أي نظام تشغيل ( ‪.) Windows, Linux, MAC..‬‬

‫الشكل ‪:12-4‬الفرق بين الـ‪ OPC‬الكالسيكي وال‪ OPC‬ذو البنية الموحدة‬

‫أهم مزايا بروتوكول الـ ‪ OPC UA‬هو أنه بروتوكول يدعم اتصال آلة بآلة ‪Machine To Machine‬‬

‫بمعنى أنه يسمح باالتصال المباشر بين المكونات الصناعية مع البرمجيات من أجل تحصيل‬
‫البيانات والتحكم‪.‬‬

‫المقصود باالتصال ‪ Machine To Machine‬هو إمكانية أن تتصل التجهيزات فيما بينها بشكل‬
‫مباشر‪ ،‬بمعنى أنه يمكن لمتحكم منطقي أن يتصل بمتحكم آخر عبر هذا البروتوكول‪.‬‬
‫بناء على ما سبق‪ ،‬يمكن للمخدم ‪ OPC UA Server‬أن يكون برمجية على أي نظام تشغيل أو أن‬
‫ً‬
‫يكون ضمن المتحكم نفسه (ضمن برنامج ‪ ،)PLC‬أما زبائن ‪ OPC UA Client‬فيمكن أن تكون‬
‫برمجيات على حاسب أو جزء من برامج شاشات التخاطب البشرية ‪ HMIs‬وممكن أن تكون ضمن‬
‫برنامج المتحكم المنطقي نفسه‪.‬‬

‫‪57‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫وبالتالي فإنه أصبح باإلمكان من خالل الـ ‪ OPC UA‬أن يتحقق اتصال أفقي ضمن طبقة‬
‫المتحكمات كما يظهر في الشكل(‪ )13-4‬وهذا شيء لم يكن متاح في الـ‪ OPC DA‬الكالسيكي‪.‬‬

‫الشكل ‪:13-4‬الطبقات التي يعمل فيها بروتوكول الـ ‪OPC UA‬‬

‫يظهر في الشكل(‪ )14-4‬بنية الـ‪ OPC UA‬في حال تم تضمين مخدمات الـ‪ OPC‬داخل المتحكمات‬
‫المنطقية‪ ،‬هذا التطور فتح الباب أمام تكنولوجيا جديدة في فضاء األتمتة شكلت نقلة نوعية في‬
‫العالقة بين مكونات الشبكة الصناعية‪.‬‬

‫الشكل ‪:14-4‬الفارق في بنية المخدم‪/‬زبون بين الـ ‪ OPC‬الكالسيكي والموحد‬

‫إن معيار الـ ‪ OPC UA‬و المبني من خالل االجرائيات ‪ Process‬يسمح بعدة طرائق لتحقيق‬
‫ضمن معيار ‪.OPC UA‬‬ ‫‪Transport layer‬‬ ‫االتصال تم توصيفها من خالل طبقة النقل‬

‫‪58‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫يدعم معيار الـ ‪ OPC UA‬بروتوكولين لالتصال‪:‬‬

‫‪ )1‬البروتكول الثنائي (‪ :)Binary Protocol‬يقدم أداء عالي باستخدام الحد األدنى من‬
‫الموارد‪ ،‬ال يحتاج إلى ‪ XML‬وال إلى ‪ HTTPS‬التي نحتاجها في األجهزة المضمنة‪ ،‬وهو‬
‫خيار جيد كون النظام الثنائي (‪)binary‬واضح ويسمح بدرجات مقبولة من الحرية أثناء‬
‫البرمجة والتنفيذ‪.‬‬

‫‪ )2‬بروتوكول خدمة الويب (‪ :)Web Service protocol‬يستخدم معيار ‪HTTP/HTTPS‬‬


‫المعروف‪ ،‬وهو أفضل خيار مدعوم من اللغات المتاحة كـ ‪ JAVA‬و ‪.NET‬‬

‫يمكن التمييز بين البروتكولين واختيار أحدهما من خالل تغير عنوان االنترنت (‪ ،)URL‬حيث أن‪:‬‬
‫‪ ‬عنوان االنترنت من أجل البروتوكول الثنائي‪opc.tcp://Server :‬‬
‫‪ ‬عنوان االنترنت من أجل خدمة الويب‪http://Server :‬‬

‫بسبب ميزات بروتكول ‪ OPC UA‬الجديد‪ ،‬توسع استخدامه في اتجاهات جديدة سواء في مجال‬
‫التحكم الصناعي أو في مجاالت جديدة أكثر خطورة وتعقيد مثل مجاالت الطاقة والنفط والغاز‪.‬‬
‫المعتمدة‬
‫صممت نماذج البيانات في معيار الـ ‪ OPC‬وفق شبكة التشابك الكامل ‪ُ Full Mesh Network‬‬
‫ُ‬
‫على العقد ‪ ،Nodes‬هذه العقد يمكن أن تحوي أي نوع من البيانات أو التعاريف‪ ،‬لتسهيل األمر‬
‫يمكن لنا أن نتخيل كل عقد عبارة عن غرض برمجي ‪ ،Object‬وكل عقدة تملك عدة مواصفات‬
‫يبينها الشكل (‪ ،)15-4‬هذه المواصفات هي‪:‬‬

‫‪ ‬مواصفات عامة‪ :‬تبين المعلومات االساسية للعقدة وتوصف األعمال التي تقوم بها العقدة‪.‬‬
‫‪ ‬مواصفات خاصة ‪ :‬مثل امكانية القراءة ‪ ، Read Access‬إمكانية الكتابة‪،Commands‬‬
‫إمكانية قدح انذارات أو أحداث (‪.)Alarm &Event‬‬
‫‪ ‬مرجعيات العقدة ‪ :References‬وتبين عالقة العقدة مع باقي العقد‪ ،‬ويمكن للعقدة أن ترتبط‬
‫بعقد أخرى موجودة ضمن نفس المخدم أو ضمن مخدم أخر‪.‬‬
‫‪ ‬خصائص العقدة‪ :‬وتحوي معلومات عامة يضيفها المستخدم مثل اسم العقدة الطويل‪،‬‬
‫وتوصيفها وكيف تستخدم‪.‬‬

‫‪59‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫الشكل ‪:15-4‬العقد والعالقات بينها في معيار الـ ‪OPC UA‬‬

‫كما ذكرنا سابقا أن الـ ‪ OPC‬الكالسيكي يدعم خاصية النفاذ إلى البيانات بالزمن الحقيقي‪ ،‬ويدعم‬
‫كل من خاصية االنذارات واألحداث‪ Alarm & Event‬والنفاذ إلى البيانات المؤرشفة ‪Historical‬‬

‫‪ ، Data Access‬وبالنسبة للمعيار الجديد ‪ OPC UA‬فهو يدعم جميع الميزات السابقة باإلضافية‬
‫للميزات التالية‪:‬‬
‫‪ ‬يدعم التك اررية ‪.Redundancy‬‬
‫‪ ‬يدعم ميزة نبض القلب في االتصال ‪ Heartbeat‬في كال االتجاهين‪ :‬وهي ميزة َيلحظ فيها‬
‫كل طرف من أطراف االتصال بأن الطرف األخر متصل بالشبكة (يراقب نبض الطرف‬
‫األخر)‪ ،‬وهذا يعني أن كل من المخدم والزبون يمكنهما مالحظة حدوث االنقطاع في‬
‫االتصال‪.‬‬
‫‪ ‬يدعم التخزين المؤقت للبيانات المرسلة‪ :‬وهذا يعني أن خسارة االتصال لم تعد تؤدي أبدا إلى‬
‫فقدان البيانات‪ ،‬يمكن الحقا عند استعادة االتصال استرجاع كامل البيانات‪ ،‬فهناك تزامن بين‬
‫الزبون والمخدم‪ ،‬كالهما يتحسس انقطاع االتصال‪ ،‬وعند عودته يرسل المخدم للزبون كل‬
‫عرف موجود لدى الزبون والمخدم‪ ،‬فمثال عند‬
‫البيانات التي فقدها‪ ،‬يتم ذلك من خالل رقم ُم ّ‬
‫المخدم قد بلغ ‪34‬‬ ‫انقطاع االتصال عن الزبون يكون عنده الرقم ‪ 24‬وعند عودته يكون ّ‬
‫معرف ُ‬
‫والزبون ما زال عند الرقم ‪ ، 24‬عندها يطلب الزبون كتل البيانات العشرة المفقودة‪.‬‬

‫‪14‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫‪ 5-4‬الطبقات البرمجية للـ ‪OPC UA‬‬

‫يستخدم ‪ OPC UA‬بنية المخدم‪ /‬زبون تماما كالـ ‪ OPC DA‬الكالسيكي‪ ،‬التطبيق الذي يشارك‬
‫معلوماته مع التطبيقات األخرى هو المخدم ‪ ،OPC UA Server‬والتطبيق الذي يأخذ معلوماته من‬
‫التطبيقات األخرى هو الزبون ‪ ،OPC UA Client‬ولكن من المرجح أن أغلب التطبيقات التي‬
‫ستظهر للعلن ستكون مخدم وزبون في آن واحد بخالف الـ ‪ OPC‬الكالسيكي‪ ،‬ويرجع ذلك كون أن‬
‫أغلب ‪ OPC UA servers‬ستكون متضمنة مباشرًة في التجهيزات (ضمن المتحكمات المنطقية ‪PLC‬‬
‫ُ‬
‫وأشباهها) كون معيار ‪ UA‬يسمح بإنشاء اتصال بين التجهيزات فيما بينها‪.‬‬
‫وسبب أخر لجمع المخدم والزبون في برنامج واحد هو امكانية أن يقوم البرنامج بوظيفة مخدم‬
‫لمجموعة من الزبائن وفي نفس الوقت يكون هذا البرنامج زبون لمخدم آخر يطلب منه بعض‬
‫البيانات‪.‬‬

‫معيار ‪ OPC UA‬من وجهة نظر برمجية يتألف من ثالث طبقات تظهر في الشكل(‪،)11-4‬‬
‫الطبقات الثالث يمكن برمجتها باستخدام ‪.JAVA , C/C++, .NET‬‬
‫معيار ‪ OPC UA‬ال يحدد هذه اللغات كمنصات حصرية للتطوير‪ ،‬لكن البيئات البرمجية هذه هي‬
‫المستخدمة حاليا من قبل مؤسسة الـ ‪ OPC‬في عمليات التطوير‪.‬‬

‫الشكل ‪:16-4‬الطبقات البرمجية لمعيار الـ ‪ OPC‬ذو البنية الموحدة‬

‫‪11‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫كما يبين الشكل(‪ ،)11-4‬يمكن بناء وظائف المعيار باستخدام ما يلي‪:‬‬


‫‪( OPC UA Software Development Kit (SDK) ‬أدوات التطوير البرمجية الخاصة بمعيار‬
‫الـ ‪)UA‬‬
‫‪( OPC UA STACK ‬مكدس ‪ OPC UA‬الخاص بمعيار ‪.)UA‬‬
‫مهمة أدوات التطوير البرمجية ‪ SDK‬هي تحقيق وظائف كل من المخدم والزبون‪ ،‬ومهمة مكدس‬
‫‪ OPC UA‬تجهيز قنوات االتصال بين المخدم والزبون‪.‬‬
‫ساهمت أدوات التطوير البرمجية ‪ SDK‬في تقليل الجهد المبذول في عمليات التطوير وسهلت‬
‫عمليات الفهم واالستخدام‪.‬‬
‫المبدأ األساسي للـ ‪ OPC UA‬هو السماح للزبون (‪ )OPC UA Client‬بالنفاذ إلى الجزء األصغر‬
‫من البيانات بدون أن يحتاج إلى فهم كامل األنظمة المعقدة للبيانات‪.‬‬

‫‪ 6-4‬مواصفات المعيار ‪OPC UA‬‬

‫الستخدام معيار الـ ‪ OPC UA‬في منتج ما‪ ،‬هناك مواصفات وضعتها مؤسسة الـ ‪ OPC‬يجب‬
‫مراعاتها‪.‬‬
‫الشكل (‪ )17-4‬يعطي نظرة عامة على جميع أجزاء مواصفات ‪ ، OPC UA‬حيث تم تصنيف‬
‫وتعرف‬
‫مواصفات معيار الـ ‪ OPC UA‬إلى صنفين‪ :‬مواصفات أساسية ‪ّ Core Specifications‬‬
‫أساسيات معيار ‪ ،OPC UA‬ومواصفات أنواع النفاذ المتاحة ‪ Access Type Specifications‬والتي‬
‫تحدد بشكل أساسي طرائق نمذجة البيانات في معيار ‪.OPC UA‬‬

‫قبل العمل على توظيف معيار الـ ‪ OPC UA‬في منتج ما‪ ،‬ينبغي على المبرمجين االطالع على‬
‫مفصل من مؤسسة الـ ‪:OPC‬‬
‫المواصفات التالية والتي يمكن الحصول عليها بشكل ّ‬

‫‪12‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫الشكل ‪:17-4‬أجزاء مواصفات ‪OPC UA‬‬

‫الجزء األول‪ /‬المبادئ (‪:)Concepts‬‬


‫وهو يعطي نظرة عامة عن معيار ‪ OPC UA‬وأجزاءه وبنيته‪.‬‬
‫الجزء الثاني‪/‬نماذج األمان (‪:)Security models‬‬
‫يوصف متطلبات األمان ونماذج األمان المطبقة في معيار ‪OPC UA‬‬

‫الجزء الثالث والرابع‪ /‬نموذج فضاء العناوين والخدمات ( ‪:)Address Space Model& Services‬‬

‫يشرحان كيفية نمذجة المعلومات والنفاذ إليها‪ ،‬هذين الجزئيين هما األهم لفهم كيفية تصميم وتطوير‬
‫تطبيق يعمل وفق معيار ‪.OPC UA‬‬
‫الجزء الخامس‪ /‬نموذج المعلومات (‪:)Information Model‬‬
‫يوصف نموذج المعلومات األساسية حيث يضع اإلطار العام لجميع نماذج المعلومات التي تستخدم‬
‫في ‪OPC UA‬‬

‫الجزء السادس‪ /‬ربط الخدمات (‪:)Service Mappings‬‬


‫يوضح آلية تحويل الخدمات المستخدمة في ‪ OPC UA‬إلى رسائل‪ ،‬وآلية األمان المطبقة على‬
‫الرسائل‪ ،‬وكيفية نقل الرسائل في الوسط الفيزيائي‪.‬‬
‫الجزء السابع‪ /‬فحص التوافق (‪:)Profiles‬‬
‫تحوي مجموعة من اإلجرائيات التي يمكن استخدامها في عمليات اختبار التوافقيات بهدف الحصول‬
‫على شهادة توافق‪ ،‬بعد انتهاء العمل على تطوير المنتج الجديد‪ ،‬يتم اختبار كل من المخدم و‬
‫الزبون باستخدام هذه االجرائيات لفحص توافق كل من المخدم والزبون مع معيار الـ ‪. OPC UA‬‬

‫‪13‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫الجزء الثامن‪ /‬النفاذ إلى البيانات (‪: )Data Access‬‬


‫عرف هذا الجزء كيفية استخدام ‪ OPC UA‬للوصول إلى البيانات‬
‫ُي ّ‬
‫الجزء التاسع‪ /‬اإلنذارات والشروط (‪:)Alarm and Conditions‬‬
‫تستخدم هذ المواصفة لتوصيف كيفية نفاذ الـ ‪ OPC UA‬إلى اإلنذارات واألحداث في المشروع‪.‬‬
‫الجزء العاشر‪ /‬التعامل مع البرامج (‪: )Programs‬‬
‫تستخدم هذ المواصفة لتوصيف كيف يمكن للـ ‪ OPC UA‬أن يدعم النفاذ إلى البرامج‪.‬‬
‫الجزء الحادي عشر‪ /‬النفاذ إلى البيانات المؤرشفة (‪: )Historical Access‬‬
‫تستخدم هذ المواصفة لتوصيف كيفية نفاذ الـ ‪ OPC UA‬إلى البيانات واألحداث المؤرشفة‪.‬‬
‫الجزء الثاني عشر‪ /‬المجاميع (‪:)Aggregates‬‬
‫تستخدم لتوصيف كيف يمكن حساب بعض القيم المفيدة من بيانات أولية(كحساب القيم الدنيا والقيم‬
‫العليا والمتوسط وغيرها)‪ ،‬هذه القيم المحسوبة يمكن توليدها من البيانات اللحظية اآلتية بالزمن‬
‫الحقيقي ‪ Current Data‬أو من البيانات المخزنة ‪. Historical Data‬‬
‫الجزء الثالث عشر ‪/‬الوصول للمخدمات(‪:)Discovery‬‬
‫تعرف هذه المواصفة بأكثر من طريقة كيف يمكن اكتشاف المخدمات التي تعمل على الشبكة‪،‬‬
‫وتصف كيف يمكن للزبائن أن تتعامل معهم‪.‬‬

‫‪ 7-4‬األمان في ‪OPC UA‬‬

‫أحد أهم الفوائد التي جناها بروتكول ‪ OPC UA‬حين استغنى عن تكنولوجيا ‪ COM /DCOM‬هي‬
‫كبير أماما‬
‫اً‬ ‫توسيع ميزات األمان في االتصال‪ ،‬حيث شكلت تكنولوجيا‪ COM /DCOM‬عائقا‬
‫المطورين نظ ار لصعوبة وتعقيد ضبطها‪ ،‬حيث كان من الشائع جدا تجاوز ضبط ‪ DCOM‬وإلغاء‬
‫تفعيلها‪ ،‬وهذا ما كان يؤدي إلى حدوث فجوات في األمان على الشبكة الصناعية‪.‬‬
‫استخدم معيار الـ ‪ OPC UA‬تكنولوجيا الويب القياسية كأساس في اجرائيات األمان والتي تتضمن‬
‫السماحيات ‪ Authentication‬والتشفير ‪ Encryption‬على البيانات ‪.‬‬
‫يوضح الشكل(‪ )18-4‬أن ‪ OPC UA‬يحتاج إلى أجراء مصافحة بين المخدم والزبون إلنشاء‬
‫( ‪X.509 Web‬‬ ‫المستخدم في الويب‬ ‫الشهادات ‪X.509‬‬ ‫ويحقق ذلك باستخدام معيار‬
‫االتصال بينهما‪ُ ،‬‬
‫‪.)standard certificates‬‬

‫‪14‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫الشكل ‪:18-4‬عملية المصافحة بين المخدم والزبون في معيار ‪OPC UA‬‬

‫ليتم االتصال بين المخدم والزبون‪ ،‬يمكن للمستخدم االختيار بين ثالث أنواع من أنماط الرسائل‬
‫‪ ‬اتصال بدون أي عملية تسجيل أو تشفير (‪.)None‬‬
‫‪ ‬اتصال يخضع للتسجيل (‪.)Sign‬‬
‫‪ ‬اتصال يخضع لعمليات التسجيل والتشفير )‪.)Sign and Encrypt‬‬

‫إضافة إلى أنه بإمكان المستخدم تفعيل إحدى سياسات األمان‪ ،‬إما ‪ Basic256‬أو ‪Basic128Rsa15‬‬

‫حيث أن سياساتي األمان هاتين تشكالن أساساً لخوارزمية التسجيل ‪ Sign‬و التشفير ‪Encrypt‬‬

‫بين المخدم والزبون ‪.‬‬

‫‪ 8-4‬تطور وليس ثورة ‪Evolution Not Revolution‬‬

‫إن مواصفات معيار الـ ‪ OPC‬ذو البنية الموحدة (‪ )OPC UA‬أكثر مرونة وميزاته أكثر بكثير من‬
‫جميع مواصفات الـ ‪ OPC‬الكالسيكي مجتمعة‪ ،‬لكنه حوى جميع المواصفات الناجحة لـ ‪OPC‬‬

‫الكالسيكي‪ ،‬وتم اصالح المشاكل المعروفة فيه وإضافة معايير حديثة لكثير من حاالت االستخدام‬
‫الجديدة‪.‬‬
‫كان هناك هدف مهم جدا هو السماح بانتقال سهل من الـ ‪OPC‬‬ ‫أثناء تصميم معيار ‪UA‬‬

‫الكالسيكي إلى ال ‪ OPC UA‬ذو البينية الموحدة‪ ،‬لهذا السبب فأغلب الميزات المعروفة في الـ ‪OPC‬‬

‫الكالسيكي يمكن ايجادها في الـ ‪ OPC UA‬ذو البينية الموسعة‪ ،‬وإن كان هناك بعض االختالف‬
‫في التسميات أحيانا‪.‬‬

‫‪15‬‬
‫أنواع بروتوكول الـ‪OPC‬‬ ‫الفصل الرابع‬

‫وبالمقابل‪ ،‬فإنه من غير الممكن تصدير جميع ميزات معيار ‪ UA‬وجعلها تالئم العمل في بنية‬
‫الـ‪ OPC‬الكالسيكي‪.‬‬

‫إن معيار ‪ OPC UA‬الجديد قدم استراتيجية انتقال سهلة تهدف لضم واستيعاب منتجات الـ ‪OPC‬‬

‫المستندة على معايير ‪ OPC‬األقدم‪.‬‬


‫رغم مزايا معيار ‪ OPC UA‬إال أن الـ ‪ OPC‬الكالسيكي اليزال هو المسيطر على السوق واألكثر‬
‫انتشا اًر حتى اآلن‪.‬‬
‫وبناء على كل ما سبق يمكننا القول بأن الـ ‪ OPC UA‬هو الجيل الثاني المطور عن الـ ‪OPC‬‬

‫‪ DA‬الكالسيكي‪ ،‬فهو لم يقم باستبداله و لم يقم على أنقاضه بل قام بتطويره‪.‬‬

‫‪11‬‬
‫الفصل الخامس‬

‫الدراسة العملية‬
‫‪The Practical Study‬‬

‫يوضح هذا الفصل الجانب العملي التطبيقي لبروتوكول الـ ‪ ،OPC‬ويوضح متطلبات البدء بتنفيذ‬
‫مفصل‪ ،‬كما يتناول أيضاً‬
‫مشروع تحكم يستخدم بروتوكول الـ ‪ OPC DA‬وخطوات العمل بشكل ّ‬
‫طرائق ضبط أشهر برمجيات الـ ‪ SCADA‬للسماح لها بالتعامل مع بروتوكول الـ ‪ ،OPC‬باإلضافة‬
‫إلى ربط متحكم األردوينو مع الـ‪.OPC‬‬

‫‪17‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫الفصل ‪ : 5‬الدراسة العملية‬

‫‪ 1-5‬كيف نبدأ تنفيذ مشروع باستخدام بروتوكول الـ ‪OPC DA‬‬

‫ذكرنا سابقاً أن أغلب استخدامات بروتوكول الـ ‪ OPC‬تكون بغرض السماح لبرمجيات المراقبة‬
‫والتحكم ‪ SCADA‬بالنفاذ إلى بيانات المتحكمات المنطقية القابلة للبرمجة ‪ PLCs‬وأمثالها‪ ،‬سنحاول‬
‫في هذا الفصل توضيح االعدادات الالزمة لتوظيف بروتوكول الـ ‪ OPC‬بشقيه المخدم والزبون في‬
‫تطبيق ما‪.‬‬
‫سنستخدم في هذا التطبيق العملي الـ ‪ OPC‬الكالسيكي نظ ار النتشاره الكبير واستحواذه على أغلب‬
‫منتجات سوق األتمتة وذلك بالرغم من صدور نسخة الجيل الثاني من البروتوكول ( ‪.) OPC UA‬‬
‫لبدء مشروع تحكم يربط بين متحكم منطقي ما وبرمجية تحكم ومراقبة ‪ SCADA‬باستخدام بروتوكول‬
‫الـ ‪ OPC‬يلزم شقين من العمل‪ ،‬األول عتادي عملي و اآلخر برمجي‪ ،‬سنتناول كل منهما بالتفصيل‪،‬‬
‫الشكل (‪ )1-5‬يبين البنية العامة التي سنعمل على تنفيذها‪.‬‬

‫الشكل ‪ :1-5‬البنية العامة لشبكة صناعية تعمل وفق بروتوكول الـ ‪OPC DA‬‬

‫‪1-1-5‬الجزء العتادي ‪Hardware‬‬

‫هناك العديد من المكونات الصلبة ‪ Hardware‬والتي تشكل في مجموعها البنية التحتية للشبكة‬
‫الصناعية العاملة وفق بروتوكول الـ ‪ OPC‬وهي‪:‬‬
‫‪ .1‬متحكم منطقي قابل للبرمجة ‪ PLC‬متصل من جهة مع العملية الصناعية التي ُيديرها عبر مداخله‬
‫ومخارجه الرقمية والتماثلية‪ ،‬ومن جهة أخرى متصل مع حاسب وفق بروتوكول ما يدعمه المتحكم‪.‬‬
‫لن نتناول في هذا البحث البرنامج السلمي ‪ Ladder Diagram‬للـمتحكم المنطقي‪ ،‬سنفترض أن‬

‫‪18‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫محمل بالبرنامج المناسب إلدارة العملية الصناعية‪.‬‬


‫المتحكم المنطقي ّ‬

‫في هذا المشروع العملي تم استخدام متحكم منطقي قابل للبرمجة ‪ PLC‬من شركة ‪ Delta‬نوعه‪،SA‬‬
‫يدعم هذا النوع من المتحكمات المنطقية بروتوكول الـ ‪ Modbus‬عبر منفذ ‪ RS232‬التسلسلي‪ ،‬تم‬
‫ضبط إعدادات االتصال كما يلي‪:‬‬
‫رقم منفذ االتصال ضمن الحاسب (‪Com 3:)Com Port‬‬ ‫‪‬‬

‫عنوان المتحكم المنطقي) ‪1 :( PLC Station Address‬‬ ‫‪‬‬

‫نوع بروتوكول الـ ‪ASCII :Modbus‬‬ ‫‪‬‬

‫معدل النقل) ‪9600 :)Baud Rate‬‬ ‫‪‬‬

‫الندية(‪Even :)Parity‬‬
‫ّ‬ ‫‪‬‬

‫بت التوقف( ‪1 :)Stop Bit‬‬ ‫‪‬‬

‫‪ .2‬حاسب يعمل بنظام التشغيل ويندوز متصل فيزيائيا مع المتحكم المنطقي عبر أحد منافذ الحاسب‬
‫(‪ ، )RS232,Ethernet..etc‬في هذا المشروع تم استخدام منفذ ‪ ،RS232‬رقم المنفذ ‪3‬‬

‫بإتمام الخطوات السابقة تكون البنية التحتية لشبكة صناعية بسيطة تعمل وفق بروتوكول الـ ‪OPC‬قد‬
‫تمت‪.‬‬

‫‪2-1-5‬الجزء البرمجي ‪Software‬‬

‫يشمل الجزء البرمجي ضبط اإلعدادات لكل من الـ ‪ OPC Server‬و الـ ‪.OPC Client‬‬

‫‪ 1-2-1-5‬ضبط اعدادات الـ ‪OPC Server‬‬

‫سبق وشرحنا بالتفصيل أن مخدم الـ ‪ OPC DA‬هو برنامج حاسوبي يعمل على تحصيل البيانات‬
‫من متحكم منطقي والتعديل عليها وفق بروتوكول يفهمه المتحكم‪.‬‬
‫المصنعة‬
‫ّ‬ ‫يمكن الحصول على الـ ‪ OPC Server‬ألي متحكم منطقي من خالل شراءه من الشركة‬
‫للمتحكم أو عن طريقة شركات مستقلة ربحية‪ ،‬حيث أن مخدمات الـ ‪ OPC‬هي برامج غير مجانية‪.‬‬

‫‪19‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫المنتجة لمخدمات الـ ‪ ،OPC‬تقدم هذه الشركات طيف واسع من‬


‫فيما يلي سرد ألشهر الشركات ُ‬
‫مخدمات الـ ‪ OPC‬والتي تدعم الكثير من أنواع ‪:PLCs‬‬
‫‪ :Matrikon‬منتجات هذه الشركة معروفة ولها انتشار واسع‪ ،‬يستخدم برنامج الماتالب‬ ‫أ‪-‬‬
‫مخدمات هذه الشركة لتوضيح وشرح مكتبة الـ‪ OPC‬المتضمنة فيه‪.‬‬
‫ب‪ :KEPServerEx -‬من أشهر مزودات مخدمات الـ‪ ،OPC‬مخدم واحد من هذه الشركة ممكن‬
‫أن يدعم اتصال مع أنواع عديدة من المتحكمات وذلك من خالل تعريف قنوات اتصال‬
‫‪ Channels‬خاصة بكل متحكم‪.‬‬
‫ت‪ : OPCTech -‬تغطي طيف واسع من المتحكمات المنطقية ‪ ،PLCs‬تمتاز مخدمات هذه‬
‫الشركة بواجهات سهلة و بفترة تشغيل مجانية لمدة ساعتين‪ ،‬في هذا البحث تم استخدام مخدم‬
‫من هذه الشركة‪.‬‬
‫يمكن تحميل مخدم الـ‪ OPC‬المناسب لنوع المتحكم الذي نستخدمه من خالل موقع الشركة‬
‫الموجود في الرابط التالي‪:‬‬
‫‪http://www.opctechs.com/products-list.html‬‬
‫سبق ونوهنا أننا في هذا الفصل سنستخدم متحكم منطقي من شركة ‪ Delta‬نوعه ‪ ،SA‬وسنقوم‬
‫باالتصال به من خالل المنفذ التسلسلي‪ ،‬لذا قمنا بتحميل مخدم الـ‪ OPC‬المناسب من الموقع‬
‫السابق وتنصيبه على الحاسب كما يبين الشكل(‪.)2-5‬‬

‫الشكل ‪ :2-5‬مخدم ‪ OPC‬من شركة ‪ OPCTech‬مخصص للمتحكم المنطقي ‪DELTA‬‬

‫من الجدير بالذكر أن ضبط إعدادات مخدمات الـ ‪ OPC‬متشابهة فيما بينها إلى حد بعيد وذلك‬
‫بغض النظر عن الشركة المنتجة للـ ‪ OPC Server‬كونها مبرمجة وفقاً لمواصفات معيارية موحدة‪.‬‬

‫‪74‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫تشمل إعدادات ضبط مخدم الـ ‪ OPC‬على ثالث خطوات‪:‬‬


‫أوالا‪ :‬ضبط منفذ االتصال مع المتحكم‪:‬‬
‫خصص‬
‫الم ّ‬
‫يتم في البداية تعريف برنامج الـ‪ OPC Server‬على منفذ االتصال الفيزيائي في الحاسب و ُ‬
‫لالتصال مع المتحكم المنطقي‪ ،‬نضبط اعدادات االتصال بحيث تكون متطابقة مع اإلعدادات التي‬
‫سبق وضبطنا المتحكم عليها‪ ،‬يبين ذلك الشكل (‪.)3-5‬‬

‫الشكل ‪ :3-5‬واجهة مخدم الـ ‪ OPC‬المخصصة لتعريفه على المنفذ الفيزيائي‬

‫ثانيا‪ :‬تعريف المتحكم المنطقي‪:‬‬


‫عرف الـ‪ OPC Server‬على نوع المتحكم المتصل معه‪ ،‬نحدد اسم ما‬
‫بعد تعريف المنفذ الفيزيائي‪ُ ،‬ن ّ‬
‫للمتحكم ونوعه(‪ )SA‬وعنوانه ‪ Address‬على الشبكة الـصناعية‪ ،‬كما يظهر في الشكل(‪.)4-5‬‬

‫الشكل ‪ :4-5‬واجهة مخدم الـ ‪ OPC‬المخصصة لتعريفه على المتحكم المنظقي‬

‫‪71‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫ثالثا‪ :‬تعريف المجموعات والعناصر‪:‬‬


‫يتم في هذه الخطوة تعريف الـ‪ OPC Server‬على العناصر التي ينبغي عليه قراءتها بشكل دوري‬
‫من المتحكم أو التعديل عليها‪ُ ،‬يصطلح على تسمية هذه العناصر بـ ‪ ،Tags‬العنصر يمكن أن‬
‫يكون متحول منطقي (‪ )1 ،4‬أو متحول تماثلي يمثل قيمة لعدد ما‪.‬‬
‫يمكن تجميع هذه العناصر في مجموعات ‪ Groups‬متنوعة ألغراض التصنيف واإلدارة‪.‬‬
‫لتعريف العنصر ضمن الـ‪ ، OPC Server‬يتم اختيار اسم ما للعنصر و تحديد نوع بياناته (رقمي‪،‬‬
‫‪OPC Server‬‬ ‫تماثلي‪ )..‬ومن ثم يتم ربطه بعنوانه الفيزيائي ‪ Address‬ضمن المتحكم ليتثنى للـ‬
‫تحديده مكانه وتحديث قيمته‪ ،‬كما يظهر في الشكل (‪.)5-5‬‬

‫الشكل ‪ :5-5‬واجهة مخدم الـ ‪ OPC‬المخصصة لتعريف العناصر‬

‫يمكن تحديد صالحية النفاذ إلى العنصر‪ ،‬قراءة فقط‪ ،‬أو ق ارءة وكتابة (أي ممكن التعديل على‬
‫قيمته)‪.‬‬
‫العناصر التي نقوم بتعريفها ضمن المخدم هي فقط العناصر التي يمكن للـ ‪ OPC Client‬طلبها‬
‫فيما بعد‪.‬‬
‫بتعريف العناصر ضمن المخدم‪ ،‬يصبح األخير جاهز لتحصيل البيانات من المتحكم المنطقي‪،‬‬
‫نقوم بحفظ المشروع ومن ثم نجعله بحالة فعالية (من قائمة ‪ File‬نختار ‪.)Make Active‬‬
‫المعرفة‬
‫ّ‬ ‫عرف(‪ )Com3‬وتحديث قيم العناصر‬
‫الم ّ‬
‫يقوم المخدم باالتصال بـ ‪ PLC‬عبر منفذ االتصال ُ‬
‫ضمنه بشكل دوري‪.‬‬
‫مخدم الـ‪ OPC‬يعمل في الخلفية كإجرائية ‪ Process‬وبتالي حتى بعد اغالق واجهة البرنامج يستمر‬

‫‪72‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫مخدم الـ ‪ OPC‬بالعمل‪.‬‬


‫يقدم مخدم الـ‪ OPCTechs‬واجهة عرض سريعة للتحقق من صحة االتصال بين المخدم والمتحكم‬
‫المنطقي ويقوم بعرض قيم البيانات اللحظية المحتواة داخل كل مجموعة وحالتها‪ ،‬كما يبين‬
‫الشكل(‪.)1-5‬‬

‫الشكل ‪ :6-5‬واجهة لعرض القيم اللحظية للعناصر المعرفة ضمن مخدم الـ ‪OPC‬‬

‫‪ 2-2-1-5‬ضبط إعدادات الـ ‪OPC Client‬‬

‫زبائن الـ ‪ OPC‬تكون في الغالب جزء من المكون البرمجي لبرمجيات التحكم والمراقبة(‪.)SCADA‬‬
‫وأيضاً تحوي أغلب مخدمات الـ‪ OPC‬على زبون ‪ OPC‬متضمن داخلها بهدف التقييم السريع لجودة‬
‫االتصال وصحة ضبط اعداداته‪ ،‬إضافة إلى أنه يمكن التأكد من صحة القراءات اللحظية للعناصر‬
‫وعناوينها قبل االنتقال وتعريفها ضمن برمجيات السكادا‪ ،‬الشكل (‪ )7-5‬يبين ذلك‪ ،‬حيث يقوم‬

‫زبون الـ ‪ OPC‬بالبحث عن جميع ُ‬


‫المخدمات المنصبة على الحاسب‪ ،‬ويقوم المستخدم بتحديد المخدم‬
‫المطلوب االتصال به‪.‬‬

‫‪73‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫الشكل ‪ :7-5‬واجهة زبون الـ‪OPC‬ال ُمتَضمنة داخل مخدم الـ ‪OPC‬‬

‫عند الضغط على زر تشغيل برنامج الـ‪ OPC Client‬تظهر قائمة تحوي ّ‬
‫معرفات(‪ ) IDs‬لجميع‬
‫عرف الخاص بمخدم الـ‪ OPC‬الذي‬
‫الم ّ‬
‫نصبة على الحاسب‪ ،‬في مثالنا نختار ُ‬
‫الم ّ‬
‫مخدمات الـ‪ُ OPC‬‬
‫قمنا سابقا بتنصيبه وهو"‪. "OPCTechs.Delta30DA‬‬
‫بعد ذلك تظهر لنا جميع العناصر التي سبق وعرفناها ضمن المخدم‪ ،‬نحدد أي من هذه العناصر‬
‫نرغب بعرض قيمها أو التعديل عليها‪ ،‬الشكل (‪)8-5‬‬

‫الشكل ‪ :8-5‬تحديد البيانات المطلوب عرضها ضمن زبون الـ‪OPC‬‬

‫‪74‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫الشكل (‪ُ )9-5‬يظهر واجهة زبون الـ ‪ OPC‬وفيه تظهر قيمة العنصر الذي سبق وعرفناه في مخدم‬
‫الـ ‪ ، OPC‬هذه القيمة تتغير بالزمن الحقيقي تبعا لحالة المخرج األول في المتحكم المنطقي‬
‫‪ DELTA-SA‬المتصل مع مخدم الـ ‪. OPC‬‬

‫الشكل ‪ :9-5‬واجهة لزبون ‪ OPC‬مدمج مع المخدم تظهر فيها قيمة أحد العناصر‬

‫‪ 2-5‬ربط برنامج الـ ‪ Wincc SCADA‬مع بروتوكول الـ ‪OPC‬‬

‫في هذه الفقرة سنتناول كيفية ربط واحدة من أشهر برمجيات التحكم والمراقبة ‪ SCADA‬بمتحكم‬
‫منطقي عن طريق بروتوكول الـ ‪ ،OPC‬تمثل برمجية التحكم والمراقبة ‪ OPC Client‬والتي يمكن‬
‫ربطها بأي ‪.OPC Server‬‬

‫برنامج ‪ WINCC Explorer‬من شركة ‪ SIEMENS‬األلمانية ُيعتبر من أشهر برامج التحكم‬


‫والمراقبة‪ ،‬لذلك سنعتمده في هذا المثال التوضيحي‪.‬‬

‫هناك ‪ 7‬خطوات ينبغي القيام بها لتهيئة برنامج الـ ‪ Wincc‬الستقبال البيانات من مخدم الـ‪،OPC‬‬
‫الخطوات هي على النحو التالي‪:‬‬

‫‪75‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫‪ .1‬إنشاء مشروع جديد‪ :‬من القائمة ‪ File‬نختار مشروع جديد ‪.New‬‬

‫الشكل ‪ :10-5‬إنشاء مشروع جديد في برنامج ‪WINCC‬‬

‫‪ .2‬تعريف قناة اتصال جديدة‪ :‬من إدارة المتحوالت ‪ ،Tag Management‬نختار نوع قناة االتصال‬
‫الجديدة‪ ،‬في حالتنا نختار ”‪ ،“OPC.chn‬كما يوضح الشكل (‪.)11-5‬‬

‫الشكل ‪ :11-5‬إضافة قناة اتصال لبروتوكول الـ ‪ OPC‬في برنامج ‪WINCC‬‬

‫‪71‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫‪ .3‬تعريف المجموعات‪ :‬نُنشأ مجموعة واحدة على األقل‪ ،‬نختر لها اسم ما وليكن اسمها ‪،OPC‬‬
‫ضمن هذه المجموعة يمكن لنا انشاء العدد الذي نرغب له من قنوات االتصال‪ ،‬كل قناة‬
‫صبة على نفس الحاسب أو على‬ ‫مخصصة لالتصال مع مخدم واحد من مخدمات الـ ‪ OPC‬المن ّ‬
‫حواسب متصلة بالحاسب الذي نعمل عليه‪ ،‬نضغط على زر خصائص ‪ Properties‬لتحديد‬
‫اسم مخدم الـ ‪ OPC‬الذي نرغب باالتصال به‪ ،‬الشكل (‪.)12-5‬‬

‫الشكل ‪ :12-5‬تعريف مجموعة ضمن قناة االتصال ‪ OPC‬في برنامج ‪WINCC‬‬

‫المعرف الخاص بمخدم الـ ‪ OPC‬الذي نتعامل معه‪ ،‬في مثالنا‬


‫ّ‬ ‫‪ .4‬اختيار مخدم الـ ‪ُ :OPC‬ندخل‬
‫هو "‪ "OPCTechs.Delta30DA‬ثم نضغط على زر االختبار للتأكد من جاهزية االتصال‪.‬‬

‫الشكل ‪ :13-5‬اختيار مخدم الـ ‪ OPC‬في برنامج‬


‫‪WINCC‬‬
‫‪77‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫‪ .5‬تعريف متحول (‪ )Tag‬ضمن برنامج ‪ :WINCC‬تحت قناة االتصال التي قمنا بإنشائها‪ ،‬نقوم‬
‫بتعريف متحول وليكون اسمه ‪ ،OUTPUT1‬ثم من قائمة الخصائص الخاصة به نختار الحقل‬
‫‪ Address‬وندخل فيه االسم الكامل للعنصر بالطريقة التي عرفناها سابقاً ضمن ‪OPC‬‬

‫‪ ،Server‬المقصود باالسم الكامل هو اسم المنفذ‪ ،‬يليه اسم المتحكم‪ ،‬يليه اسم المجموعة‪ ،‬يليه‬
‫اسم العنصر‪ ،‬نفصل بين مكونات االسم السابقة بنقطة (‪. ).‬‬
‫مثال ‪:‬‬
‫"‪" Port N_COM3 . PLC_N Delta SA . GROUP1 Digital Signals . output1‬‬

‫في هذه الخطوة قمنا بربط المتحول الـ ‪ OUTPUT1‬المعرف ضمن برنامج الـ‪ WINCC‬بالمتحول‬
‫عرف سابقاً ضمن مخدم الـ ‪ ،OPC‬يوضح ذلك الشكل (‪.)14-5‬‬
‫الم ّ‬
‫ُ‬

‫الشكل ‪ :14-5‬تعريف متحول ضمن برنامج ‪ WINCC‬وربطه بمخدم الـ‪OPC‬‬

‫باالنتهاء من هذه الخطوة‪ ،‬تكون الخطوات الالزمة لتهيئة ‪ OPC Client‬ضمن برنامج الـ ‪WINCC‬‬

‫قد انتهت‪ ،‬كل الذي تبقى هو ربط المتحول ‪ OUTPUT1‬بإظهار رسومي لعرض قيمته‪.‬‬

‫‪78‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫‪ .1‬إنشاء صفحة رسومية‪ :‬من قائمة تصميم الرسومات ‪ُ ،Graphics Designer‬ننشئ صفحة جديدة‪،‬‬
‫الشكل (‪ )15-5‬يوضح ذلك‪.‬‬

‫الشكل ‪ :15-5‬انشاء صفحة رسومية ضمن برنامج ‪WINCC‬‬

‫‪ .7‬نقوم بإدراج عنصر ‪ I/O‬بغرض إظهار قيمة المتحول ‪ ،OUTPUT1‬بعد سحب و إفالت العنصر‬
‫تظهر نافذة نستطيع من خاللها الوصول إلى جميع المتحوالت المعرفة ضمن برنامج ‪،WINCC‬‬
‫نختار المتحول ‪.OUTPUT1‬‬

‫الشكل ‪ :16-5‬تجهيز الواجهة الرسومية ضمن برنامج ‪ WINCC‬لعرض قيمة عنصر ‪OPC‬‬

‫‪79‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫نقوم بحفظ الصفحة وتشغيل البرنامج‪ ،‬نالحظ أن القيمة التي تمثل حالة المخرج األول ‪OUTPUT1‬‬

‫تظهر على الواجهة الرسومية التي أعددناها‪.‬‬

‫الشكل ‪ :17-5‬وضعية التشغيل بالزمن الحقيقي لبرنامج الـ ‪wincc‬‬

‫القيمة التي نراها في الواجهة الرسومية مأخوذة من ‪ OPC Client‬الذي ضبطنا إعداداته ضمن‬
‫برنامج ‪ WINCC‬والذي بدوره يأخذها من برنامج ‪ OPC Server‬والذي بدوره يأخذها من المخرج‬
‫األول للمتحكم المنطقي ‪.DELTA SA‬‬

‫‪ 3-5‬ربط األردوينو مع الـ ‪OPC‬‬

‫إن النجاح الكبير الذي حققه معيار الـ‪ OPC‬جعل أنظار جميع العاملين في مجال األتمتة تتجه‬
‫نحوه‪ ،‬ما لبث هذا االهتمام أن تحول لمحاوالت جدية لالستفادة من هذا المعيار لجعله متوافقاً مع‬
‫منتجاتهم محاولين بذلك االستفادة من شعبية المعيار وانتشاره‪.‬‬
‫سنشرح في هذا الفقرة إحدى هذه المحاوالت في توظيف بروتوكول الـ‪ OPC‬مع متحكمات األردوينو‪.‬‬
‫طريقة ربط األردوينو التي سنستعرضها فيما يلي هي محاولة قيد الدراسة وغير ناضجة بعد بشكل‬
‫كامل‪ ،‬حيث سنالحظ أنها غير متطابقة مع مواصفات معيار الـ ‪ OPC‬التي تناولناها سابقاً وذلك‬
‫من حيث وظيفة المخدم والزبون‪.‬‬
‫ينقسم العمل الذي سنقوم به إلى قسمين‪:‬‬
‫‪ 1-3-5‬تنصيب مخدم الـ ‪ OPC‬الخاص باألردوينو وضبطه‬
‫يمكن تحميل مخدم الـ ‪ OPC‬الخاص باألردوينو من الرابط التالي‪:‬‬
‫‪https://www.st4makers.com/download-opc-server-for-arduino‬‬
‫بعد تحميل الملف نقوم بفك ضغطه في مكانه النهائي على القرص الصلب‪ ،‬ال ينبغي أن نغير‬

‫‪84‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫موضعه بعد تنصيبه أو بعد ضبط إعداداته‪.‬‬


‫بعد تنصيب المخدم‪ ،‬نالحظ ظهور ملفين جديدين‪ ،‬مهمة هذين الملفين هي تسجيل المخدم في‬
‫نظام التشغيل لتتمكن زبائن الـ‪ OPC‬من كشفه وقراءة بياناته‪.‬‬
‫ننتقل إلى نافذة الضبط ‪ Configuration‬ونضبط اعدادات االتصال المتمثلة برقم المنفذ المتصل‬
‫مع األردوينو ومعدل النقل الذي يعمل األردوينو عليه‪ ،‬كما في الشكل( ‪.)18-5‬‬
‫نقوم بحفظ اإلعدادات‪ ،‬فيتولد ملف باسم ‪ “ArduinoOPCDAServer.ini".‬يحتوي هذا الملف على‬
‫اإلعدادات التي قمنا بضبطها‪ ،‬ففي كل مرة سيتم فيها تشغيل مخدم الـ ‪ Arduino OPC‬سيقوم‬
‫المخدم بقراءة اإلعدادات من هذا الملف‪.‬‬
‫ضبط االعدادات يجب القيام بها مرة واحدة فقط طالما لم يتغير منفذ االتصال مع األردوينو أو‬
‫معدل النقل‪.‬‬

‫الشكل ‪ :18-5‬واجهة مخدم الـ‪ OPC‬الخاص باألردوينو‬

‫االن سنقوم بالخطوة األخيرة في عملية التنصيب وهي تسجيل الـ‪ Arduino OPC‬ضمن قائمة‬
‫مخدمات الـ‪ OPC‬في نظام التشغيل‪ ،‬لتنفيذ ذلك نقوم بتشغيل الملف ‪ ،register.bat‬يجب تشغيل هذا‬
‫‪Run As‬‬ ‫الملف بصالحيات مسؤول (نضغط بالفأرة اليمين ومن ثم تشغيل كمسؤول‬
‫‪)Administrator‬‬

‫‪ 2-3-5‬تحميل مكتبة الـ‪OPC‬‬

‫مكتبة الـ‪ OPC‬الخاصة باألردوينو هي مكتبة تستخدم من قبل ‪ Arduino OPC Server‬ليستطيع من‬
‫خاللها الوصول إلى بيانات األردوينو‪.‬‬
‫قدم المكتبة طريقة سهلة لتبادل البيانات مع األردوينو من خالل بروتوكول الـ‪ ،OPC‬تدعم المكتبة‬
‫تُ ّ‬

‫‪81‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫طريقتين للوصول لألردوينو‪ ،‬الطريقة التسلسلية عن طريق المنفذ التسلسلي ‪ Serial‬أو الطريقة‬
‫الشبكية ‪ Ethernet‬بعد وصل األردوينو مع موديول ‪.Ethernet‬‬
‫يمكن تحميل مكتبة الـ‪ OPC‬الخاصة باألردوينو من الرابط التالي‪:‬‬
‫‪https://github.com/SoftwareTools4Makers/OPC‬‬
‫بعد تحميل المكتبة‪ ،‬نقوم بإضافتها إلى البرنامج كما يبين الشكل (‪)19-5‬‬

‫الشكل ‪ :19-5‬إضافة مكتبة الـ‪OPC‬إلى برنامج األردوينو‪.‬‬

‫كل عنصر ‪ Item‬ضمن األردوينو نرغب بالوصول إليه من خالل بروتوكول الـ‪ OPC‬يجب أن‬
‫نقوم بالتصريح عنه (‪ )Publish‬من خالل بعض التوابع التي تقدمها مكتبة الـ‪ OPC‬هذه‪.‬‬

‫‪ 3-3-5‬كيف استخدام مكتبة الـ‪Arduino OPC‬‬

‫أوال‪ :‬تحديد منفذ االتصال‬


‫في البداية يجب أن نحدد فيما إذا كان الـ ‪ OPC‬سيستخدم المنفذ التسلسلي أو منفذ الشبكة‪ ،‬يتم ذلك‬
‫من خالل استخدام أحد هذين التصريحين‪:‬‬
‫للمنفذ التسلسلي نستخدم‪OPCSerial aOPC :‬‬

‫لمنفذ الشبكة نستخدم‪OPCNet aOPC :‬‬

‫‪82‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫ثانيا‪ :‬التصريح عن العناصر‬


‫يمكن أن يكون العنصر حقيقي (مدخل‪/‬مخرج) او افتراضي يمثل قيمة محسوبة ضمن األردوينو‪.‬‬
‫يتم التصريح عن العنصر باستخدام التابع التالي‬
‫;)‪aOPC.addItem("random Name",opc_read, opc_int, callback‬‬
‫‪ :random Name‬اسم ما نختاره للعنصر الذي نرغب بالتصريح عنه‪.‬‬
‫‪ :opc_read‬يحدد صالحية النفاذ إلى العنصر‪ ،‬قراءة فقط أو كتابة فقط أو قراءة وكتابة‪ ،‬فهو يأخذ‬
‫إحدى هذه القيم الثالث (‪.)opc_read ,opc_write ,opc_readwrite‬‬
‫‪ :opc_int‬يحدد نوع العنصر المصرح عنه‪ ،‬هل هو متحول منطقي او عدد صحيح أو بايت‪ ،‬يأخذ‬
‫إحدى هذه القيم(‪.(opc_bool, opc_byte, opc_int, opc_float‬‬
‫‪ :callback‬هو تابع يقوم المبرمج بتعريفه ضمن برنامج األردوينو‪ُ ،‬ينفذ هذا التابع عندما يرغب‬
‫زبون ‪ OPC‬بالقراءة أو الكتابة في هذا المتحول‪ ،‬يسمح هذا التابع بإعادة قيمة العنصر في حالة‬
‫القراءة أو يقوم بتخزين القيمة الجديدة في العنصر في حال الكتابة‪.‬‬

‫بعد كتابة البرنامج نقوم بتحميله ضمن األردوينو‪ ،‬ومن ثم نقوم بتشغيل ‪،Arduino OPC Server‬‬
‫عندها سيكون باإلمكان الوصول لجميع العناصر التي تم التصريح عنها ضمن برنامج األردوينو‬
‫من خالل أي زبون للـ ‪.OPC‬‬
‫يمكن بذات الطريقة التي شرحناها في فقرة ضبط إعدادات الـ ‪ OPC Client‬أن نستعرض جميع‬
‫المتحوالت التي قمنا بالتصريح عنها ضمن برنامج األردوينو‪.‬‬

‫الشكل ‪ : :20-5‬زبون ‪ OPC‬يستعرض بيانات مخدم الـ‪Arduino OPC‬‬

‫‪83‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫‪ 4-5‬بناء زبون ‪ OPC‬باستخدام الماتالب‬

‫يقدم الماتالب مكتبة تدعم بروتوكول الـ‪ ،OPC DA‬تسمح هذه المكتبة ببناء ‪ OPC Client‬متكامل‪.‬‬
‫تم باالعتماد على هذه المكتبة وعلى واجهات الماتالب الرسومية ‪ Matlab GUI‬تصميم زبون‬
‫‪ OPC‬متكامل ‪.‬‬
‫الخوارزمية التي تم اتباعها في كتابة األكواد البرمجية لزبون الـ‪ OPC‬وتصميم واجهة الماتالب تظهر‬
‫في الشكل(‪.)21-5‬‬

‫الشكل ‪ :21-5‬خوارزمية برمجة ‪ OPC Client‬باستخدام الماتالب‬

‫‪84‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫سنقوم فيما يلي بشرح أهم توابع مكتبة الـ‪ OPC‬المستخدمة في برمجة زبون الـ‪:OPC‬‬
‫الخطوة األولى‪ :‬البحث عن جميع مخدمات الـ‪ OPC DA‬المنصبة على الحاسب المحلي أو على‬
‫الحواسب البعيدة‬
‫عملية البحث هذه تتم من خالل استدعاء التابع التالي‪:‬‬
‫بنية التابع‪opcserverinfo('computer Name or IP') :‬‬
‫المنصب عليه مخدم الـ‪ ،OPC‬وفي حال كان نفس الحاسب‬
‫ّ‬ ‫نمرر لهذا التابع االسم الشبكي للحاسب‬
‫الذي يعمل عليه الماتالب‪ ،‬نمرر للتابع القيمة '‪.'localhost‬‬

‫المضيف لمخدم‬
‫يعيد هذا التابع جزئيين من المعلومات‪ ،‬الجزء األول يشير إلى اسم الحاسب ُ‬
‫الـ‪ ،OPC‬القيمة المعادة هي اسم الحاسب على الشبكة‪ ،‬ألنه بالنسبة ألي زبون ‪ OPC‬من الضروري‬
‫نصب عليه المخدم لتحقيق االتصال معه‪.‬‬ ‫جدا تحديد اسم الحاسب الم ّ‬
‫نصبة‬
‫الم ّ‬
‫الجزء الثاني من المعلومات التي ُيعيدها هذا التابع هي مصفوفة بأسماء مخدمات الـ‪ُ OPC‬‬
‫على الحاسب‪ ،‬حيث أن كل مخدم ‪ OPC‬يملك اسم فريد على الحاسب المضيف يدعى‬
‫‪ Server ID‬وأحيانا يدعى ‪ Program ID‬أو ‪.ProgID‬‬
‫فيما يلي مثال على كيفية استخدام هذا التابع مع تبيان ُمخرجاته‪:‬‬
‫)'‪HostInfo = opcserverinfo ('localhost‬‬
‫= ‪HostInfo‬‬
‫‪Host:‬‬
‫'‪'localhost‬‬ ‫الجزء األول من المعلومات ُيشير إلى اسم الحاسب المضيف‪.‬‬
‫منصب على نفس حاسب‬
‫'‪ 'Localhost‬داللة على أن مخدم الـ‪ّ OPC‬‬
‫الزبون‬
‫}‪ServerID: {1x3 cell‬‬

‫الجزء الثاني من المعلومات يمثل مصفوفة خاليا تحوي أسماء‬


‫المنصبة على الحاسب المضيف‬
‫ّ‬ ‫المخدمات‬

‫المنصبة على الحاسب المضيف بشكل أكثر تفصيالً‪ ،‬نقوم بكتابة‬


‫ّ‬ ‫المخدمات‬
‫إذا أردنا استعراض ُ‬
‫االستدعاء التالي‪:‬‬

‫'‪allServers = hostInfo.ServerID‬‬ ‫من خالل هذا التابع تم اكتشاف وجود ثالث مخدمات للـ ‪OPC‬‬
‫'‪'Matrikon.OPC.Simulation.1‬‬
‫منصبة على ذات الحاسب الذي يعمل عليه الماتالب‪ ،‬أسماء‬
‫'‪'OPCTechs.Delta30DA.3‬‬
‫'‪'ArduinoOPCServer.2‬‬ ‫(معرفات)هذه المخدمات هي الظاهرة في المثال‪.‬‬

‫‪85‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫الخطوة الثانية‪ :‬إنشاء كائن برمجي لزبون الـ ‪OPC‬‬

‫بنية التابع‪opcda ('Host' ,'ServerID') :‬‬


‫الغاية من هذه الخطوة بناء غرض برمجي ‪ Object‬يمثل زبون الـ ‪ ،OPC‬وظيفة هذا الغرض هي‬
‫النفاذ إلى بيانات مخدم معين منصب على حاسب محلي أو بعيد‪.‬‬
‫‪ :HOST‬لإلشارة إلى اسم الحاسب المضيف للمخدم‪ ،‬قد يكون محلي أو بعيد‪.‬‬
‫‪ : ServerID‬اسم مخدم الـ‪ OPC‬الذي نرغب باالتصال به‪.‬‬
‫يخصص لكل زبون ‪ OPC‬بعد إنشاءه متحول حالة ‪ Status‬يعبر عن حالة اتصاله مع المخدم‪،‬‬
‫تكون الحالة االفتراضية لهذا المتحول بعد إنشاء الزبون عير متصل'‪'disconnected‬‬

‫فيما يلي مثال على استخدام هذا التابع‪:‬‬


‫;)'‪daObj1 = opcda ('localhost', 'ArduinoOPCServer.2‬‬

‫إنشاء زبون اسمه ‪ daObj1‬من أجل النفاذ إلى بيانات مخدم ‪ ArduinoOPCServer.2‬منصب‬
‫على نفس حاسب الزبون‬

‫;)'‪daObj2 = opcda ('ServerHost1', Matrikon.OPC.Modbus‬‬

‫إنشاء زبون اسمه ‪ daObj2‬من أجل النفاذ إلى بيانات مخدم ‪Matrikon.OPC.Modbus‬‬
‫منصب على حاسب غير حاسب الزبون‪ ،‬اسم الحاسب‪. ServerHost1‬‬

‫الخطوة الثالثة‪ :‬اتصال زبون الـ ‪ OPC‬مع المخدم‬

‫بنية التابع‪connect (Obj) :‬‬


‫في الخطوة السابقة قمنا بإنشاء كائن برمجي يمثل زبون الـ‪ ،OPC‬اآلن سنقوم بتحقيق االتصال بينه‬
‫وبين المخدم التي تم اختياره وفق بنية التابع السابق‪.‬‬
‫مثال على استخدام التابع‪:‬‬
‫;)'‪daObj1 = opcda ('localhost', 'ArduinoOPCServer.2‬‬
‫;) ‪connect ( daObj1‬‬
‫)'‪get(daObj1, 'Status‬‬
‫في حال نجاح االتصال‪ ،‬يأخذ متحول الحالة ‪ Status‬الخاص بالغرض البرمجي ‪ daObj1‬حالة‬
‫متصل ‪ ،connected‬وفي حال فشل االتصال يبقى هذا المتحول بوضعية غير متصل‬
‫‪ ،disconnected‬من خالل التابع ‪ get‬يمكن التأكد من حالة االتصال للزبون ‪. daObj1‬‬

‫‪81‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫بنفس الطريقة في حال رغبنا بقطع االتصال بين زبون الـ‪ OPC‬ومخدمه‪ ،‬نقوم باستخدام‬
‫التابع)‪disconnect(Obj‬‬
‫;)‪disconnect(daObj1‬‬
‫)'‪get(daObj1, 'Status‬‬

‫الخطوة الرابعة‪ :‬تعريف مجموعة ضمن زبون الـ‪OPC‬‬

‫بنية التابع‪addgroup(daObj1,'GName') :‬‬


‫يقوم هذا التابع بتعريف مجموعة اسمها ‪ GName‬داخل الغرض البرمجي ‪ daObj1‬الذي يمثل زبون‬
‫الـ‪.OPC‬‬
‫المجموعة هي عبارة عن وعاء يحوي عناصر البيانات‪ ،‬تستخدم ألغراض المعالجة والتصنيف‪.‬‬
‫لكل مجموعة عدة خصائص ‪ Properties‬أهمها التفعيل ‪ Active‬ومعدل التحديث‪. Update Rates‬‬
‫تأخذ الخاصية ‪ Active‬إحدى حالتين إما تفعيل ‪ ON‬أو إيقاف ‪.OFF‬‬
‫عندما تكون المجموعة في حالة تفعيل) ‪ (Active=on‬يقوم مخدم الـ‪ OPC‬بتحديث قيم جميع العناصر‬
‫المعرفة ضمن المجموعة عندما نقوم بطلب قيمة هذه العناصر باستخدام تابع القراءة )(‪.Read‬‬
‫ّ‬
‫أما عندما تكون المجموعة في حالة إيقاف) ‪ ،(Active=off‬فمخدم الـ‪ OPC‬لن يعيد قيم العناصر‬
‫المعرفة ضمن المجموعة في حال طلبها‪ ،‬علماً أن الوضع االفتراضي عند تعريف مجموعة جديدة‬
‫ّ‬
‫هي حالة التفعيل ‪.Active‬‬
‫لنتمكن من قراءة العناصر من المخدم يجب تعريف مجموعة واحدة على األقل ضمن زبون الـ‪،OPC‬‬
‫لكن عادة ما يتم تعريف عدة مجموعات‪ ،‬تختلف فيما بينها بمعدل التحديث‪.‬‬

‫يمكن تعريف مجموعة ضمن زبون الـ‪ OPC‬بدون تحديد اسم للمجموعة‪ ،‬فتكون بنية التابع السابق‬
‫على الشكل التالي‪GrpObj = addgroup(DAObj) :‬‬

‫في هذه الحالة عندما يكون ‪ DAObj‬متصل بمخدم الـ‪ OPC‬يتم طلب اسم المجموعة منه‪ ،‬أما عندما‬

‫يكون ‪ DAObj‬غير متصل مع المخدم أو ال توجد مجموعات ّ‬


‫معرفة ضمن المخدم‪ ،‬يتم بشكل‬
‫أتوماتيكي إسناد اسم فريد للمجموعة‪ ،‬االسم الفريد يأخذ الصيغة التالية ‪ ،groupN‬حيث ‪ N‬عدد‬
‫صحيح‪.‬‬
‫فيما يلي مثال على تعريف زبون ‪ OPC‬وتعريف مجموعتين ضمنه‪:‬‬
‫‪// create an opcda client:‬‬
‫;)'‪da = opcda('Localhost', 'Matrikon.OPC.Simulation‬‬
‫‪// add groups:‬‬
‫;)'‪Grp1 = addgroup (da, 'Analog_Signals‬‬

‫‪87‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫;)‪Grp2 = addgroup (da‬‬


‫يجب أن يكون اسم المجموعة فريداً ضمن الغرض البرمجي ‪ da‬والذي يمثل زبون الـ‪. OPC‬‬

‫الخطوة الخامسة‪ :‬إضافة عناصر إلى مجموعة‬

‫بنية التابع‪IObj = additem(GObj,'IName'):‬‬

‫يضيف هذا التابع عنصر أو عناصر'‪ 'IName‬إلى المجموعة‪ ، GObj‬حيث يُنشأ هذا التابع‬
‫غرض‪ IObj‬له اتصال مع متحوالت ّ‬
‫معرفة في مخدم الـ‪.OPC‬‬
‫التابع يمكن ان ُينشأ غرض أو أكثر‪ ،‬يحدد ذلك نوع المتحول'‪ 'IName‬هل هو عنصر وحيد أو‬
‫مصفوفة خلوية من العناصر‪.‬‬
‫معرف ضمن زبون الـ ‪ OPC‬له عدة خصائص‪ ،‬أهمها القيمة ‪ Value‬والجودة‪Quality‬‬
‫كل عنصر ّ‬
‫والطابع الزمني‪( Time Stamp‬لحظة أخذ العينة) والفعالية ‪ Active‬وحقوق النفاذ‪. Access‬‬
‫فيما يلي مثال عن طريقة الوصول إلى خصائص كل عنصر ‪ item‬معرف ضمن زبون الـ‪OPC‬‬

‫‪item = additem (grp, a); //a is item defined in OPC Server‬‬


‫‪Itemv=item.Value //real value for physical device‬‬
‫‪Itemq=itm.Quality //good or bad‬‬
‫‪Itema=itm.Active‬‬ ‫‪// on or off‬‬
‫‪Itemc= itm.Accsess // read, write, or read/write‬‬

‫ومن الجدير بالذكر أنه ال يمكن إضافة نفس العنصر إلى مجموعة ما أكثر من مرة‪ ،‬لكن باإلمكان‬
‫أضافة عنصر ما إلى أكثر من مجموعة‪.‬‬

‫المعرفة ضمن مخدم الـ ‪.OPC‬‬


‫ّ‬ ‫الخطوة السادسة‪ :‬تحصيل العناصر‬

‫بنية التابع ‪client_items=serveritems(DAObj):‬‬

‫المعرفة مسبقاً داخل مخدم‬


‫ّ‬ ‫ُيعيد هذا التابع مصفوفة خاليا‪ ItemID‬تحوي بداخلها جميع العناصر‬
‫الـ‪ OPC‬الذي قام الزبون ‪ DAObj‬باالتصال به‪ ،‬يشترط اتصال الزبون مع المخدم لعمل هذا التابع‪.‬‬
‫المخدم مع كافة خصائصها‬
‫ّ‬ ‫يمكن من خالل المتحول ‪ client_items‬الوصول إلى جميع عناصر‬
‫(القيمة‪ ،‬الجودة‪ ،‬حقوق النفاذ‪)..‬‬

‫يمكن أيضا استخدام التابع بالبنية التالية‪ serveritems(DAObj,ItemID):‬حينها يعيد التابع قيمة‬

‫‪88‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫العنصر ‪.ItemID‬‬
‫ويمكن أيضا استخدام التابع مع عملية فلترة للعناصر عندها تصبح بنية التابع كما يلي‪:‬‬
‫)'*‪serveritems(DAObj, ''*Real‬‬
‫حيث سيعيد التابع هنا جميع العناصر الحاوية على الكلمة ‪.Real‬‬
‫فيما يلي مثال على طريقة استخدام التابع‪:‬‬
‫;)'‪da = opcda('localhost', 'Matrikon.OPC.Simulation‬‬
‫;)‪connect(da‬‬
‫تعريف زبون للمخدم '‪ 'Matrikon.OPC.Simulation‬واالتصال به‬

‫;)‪ItmID = serveritems (da‬‬


‫‪Matrikon.OPC. Simulation‬‬ ‫قراءة جميع العناصر المعرفة ضمن المخدم‬
‫;)‪grp = addgroup(da‬‬
‫وتخزينها في المتحول ‪ ItmID‬وتعريف مجموعة ما ُيسميها الماتالب‪.‬‬
‫(لتبسيط المثال‪ ،‬نفترض أن المتحول ‪ ItmID‬يمثل عنصر واحد)‬

‫;)‪item = additem(grp,ItmID‬‬
‫‪Itemv=item.Value‬‬
‫‪Itemq=itm.Quality‬‬ ‫إضافة العنصر ‪ ItmID‬إلى المجموعة الجديدة ‪.‬‬
‫‪Itemc= itm.Accsess‬‬
‫عرض كل من قيمة العنصر وجودته وصالحيات النفاذ إليه‬

‫بذلك يكون زبون الـ‪ OPC‬المنشأ باستخدام الماتالب قد استطاع االتصال مع مخدم و تحصيل‬
‫بيانات منه عبر بروتوكول الـ‪.OPC‬‬

‫توابع إضافية‪:‬‬
‫في تصميم واجهات الماتالب تم أيضاً استخدام بعض التوابع‪ ،‬نذكر منها‪:‬‬

‫أ‪ .‬قراءة قيم عناصر معرفة ضمن مجموعة‪:‬‬

‫لقراءة متحوالت محتواة ضمن مجموعة ما نستخدم التابع ‪.Read‬‬


‫بنية التابع‪S = read (GObj) :‬‬

‫المعرفة ضمن المجموعة ‪ ،GObj‬حيث تمثل ‪S‬‬


‫ّ‬ ‫يقوم هذا التابع بقراءة(تحديث)جميع العناصر‬
‫المعرفة ضمن المجموعة‪ ،‬البيانات‬
‫ّ‬ ‫مصفوفة بنيوية ‪ Structure Array‬تحوي بيانات جميع العناصر‬
‫تشمل االسم‪ ،‬القيم‪ ،‬الجودة‪ ،‬صالحية النفاذ‪ ،‬الخطأ‪.‬‬

‫‪89‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫هناك صيغة أخرى للتابع هي‪S = read (GObj, ‘Source') :‬‬

‫هذا التابع يقوم بقراءة البيانات من أحد مصدرين يحدد ذلك المتحول ‪ ، Source‬حيث يمكن لهذا‬
‫المتحول أن يأخذ إحدى قيمتين إما الجهاز ”‪ ”device‬أو الذاكرة كاش لمخدم الـ‪.“cache” OPC‬‬
‫إذا كان المصدر هو الجهاز‪ ،‬البيانات تأتي مباشرة من الجهاز الفيزيائي دون تخزينها في ذاكرة‬
‫الكاش الخاصة بمخدم الـ‪.OPC‬‬
‫أما إذا كان المصدر هو الكاش‪ ،‬فالبيانات تأتي من ذاكرة الكاش المخصصة للـ‪.OPC Server‬‬
‫البيانات ضمن ذاكرة الكاش هي نسخة عن بيانات الجهاز‪.‬‬
‫في حال لم ُيمرر للتابع قيمة هذا المتحول فالمصدر االفتراضي لجميع عمليات القراءة هو الكاش‬
‫وليس الجهاز‪.‬‬
‫لكن يجب اإلشارة أنه عندما يكون مصدر البيانات هو الجهاز‪ ،‬ممكن أن يكون االتصال أبطأ ألن‬
‫استجابة الجهاز قد تكون بطيئة ويتوجب علينا انتظار الجهاز ليستجيب للطلب‪ ،‬وفي هذه الحالة‬
‫أيضا تصبح خاصية التفعيل ‪ Active‬لكل من المجموعة والعنصر مهملة بال معنى‪.‬‬
‫من الممكن القراءة من الكاش في حالة كانت خاصية التفعيل ‪ Active‬في وضعية تشغيل لكل من‬
‫العنصر وللمجموعة التي تحويه‪.‬‬
‫عندما تنجح عملية القراءة‪ ،‬كل من خصائص القيمة والجودة والطابع الزمني لجميع العناصر‬
‫المحصلة من الجهاز‪.‬‬
‫حدث قيمها بحيث تعكس حالة البيانات ُ‬
‫المقروءة تُ ّ‬

‫ب‪ .‬تغيير قيم عناصر معرفة ضمن مجموعة‬

‫معرفة في مجموعة ما باستخدام التابع التالي‪:‬‬


‫يمكن تغير قيم متحوالت ّ‬
‫بنية التابع‪write(GObj, Values) :‬‬

‫يقوم هذا التابع بكتابة المتحول ‪ Values‬في جميع العناصر المعرفة ضمن المجموعة ‪.GObj‬‬
‫يمثل المتحول ‪ Values‬مصفوفة خاليا تحوي قيم‪ ،‬قيمة واحدة مخصصة لكل عنصر‪.‬‬

‫‪94‬‬
‫الدراسة العملية‬ ‫الفصل الخامس‬

‫فيما يلي مثال عام يحوي أغلب التوابع التي سبق ذكرها‪:‬‬
‫;)'‪a = opcda('localhost', 'Matrikon.OPC.Simulation.1‬‬
‫;)‪connect (da‬‬
‫;)‪grp = addgroup(da‬‬
‫;)'‪itm1 = additem (grp, 'Random.Real8‬‬
‫)‪r = read (itm1‬‬
‫=‪r‬‬
‫'‪ItemID: 'Random.Real8‬‬
‫‪Value: 4.3252e+003‬‬
‫'‪Quality: 'Good: Non-specific‬‬
‫]‪TimeStamp: [2004 3 2 9 50 26.6710‬‬
‫' ' ‪Error:‬‬
‫;)'‪itm2 = additem(grp, 'Bucket Brigade.Real8‬‬
‫)‪write (itm2, 10.34‬‬
‫باالستعانة بمكتبة الواجهات الرسومية في الماتالب وباالعتماد على التوابع التي سبق شرحها‪ ،‬تم‬
‫بناء الواجهة الرسومية التالية لتكون واجهة تخاطب للمستخدم مع أي مخدم ‪ OPC‬منصب على‬
‫نفس الحاسب‪.‬‬

‫الشكل ‪ :22-5‬واجهة زبون الـ‪ OPC‬المبرمجة باستخدام الـ ‪MATLAB‬‬

‫‪91‬‬
‫الفصل السادس‬

‫في‬ ‫بروتوكول الـ‪OPC‬‬ ‫اختبار أداء‬


‫الشبكات المحلية والموزعة‬
‫‪Test OPC Performance in Local and‬‬
‫‪Distributed Network‬‬

‫يبدأ هذا الفصل بعرض طرق اختبار أداء بروتوكول الـ‪ OPC‬التي اعتمدتها بعض الدراسات‬
‫المرجعية ويوضح ماهية البارامترات التي اهتمت بها كل دراسة في تقيم أداء بروتوكول الـ‪.OPC‬‬
‫ومن ثم يتناول البحث مجموعة من االختبارات والتجارب قمنا بإجرائها الختبار أداء بروتوكول‬
‫المعرفة ضمن‬
‫ّ‬ ‫الـ ‪ OPC‬بهدف تحديد أثر كل من زيادة عدد الزبائن وموضعها وعدد المتحوالت‬
‫المخدم على سرعة استجابة المخدم في تلبية طلبات الزبائن المتصلة معه‪.‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫الفصل ‪ : 6‬إختبار أداء الـ‪ OPC‬في الشبكات المحلية والموزعة‬

‫قبل البدء بشرح الطريقة الذي سنتبعها في اختبار أداء بروتوكول ال‪ ،OPC‬سنستعرض بعض‬
‫الدراسات السابقة التي قامت بعمليات اختبار ألداء بروتوكول الـ‪.OPC‬‬
‫االختبارات التي سنقوم بها أو التي قامت بها الدراسات السابقة تهدف بمجموعها إلى بناء مرجعية‬
‫عامة و رسم صورة واضحة عن أداء بروتوكول الـ‪ OPC‬وكفاءته وامكانياته في ظروف العمل‬
‫المختلفة‪.‬‬

‫‪ 1-6‬الدراسة األولى‪ :‬اختبار كفاءة استخدام الموارد ‪Resource Efficiency Testing‬‬


‫ورقة بحثية صادرة عن مؤسسة الـ‪ OPC‬في ‪ 11‬أيار عام ‪2414‬‬
‫توضح هذه الدراسة المنهجية المتبعة من قبل مؤسسة الـ ‪ OPC‬لتقييم أداء منتجات الـ‪ OPC‬الراغبة‬
‫بالحصول على شهادة اعتماد من قبل مؤسسة الـ‪.OPC‬‬
‫اء أكانت‬
‫جميع منتجات الـ‪ OPC‬يمكن توثيقها ومنحها شهادات من قبل مؤسسة الـ‪ ،OPC‬سو ً‬
‫مخدمات أو زبائن وأيضاً لكال نوعي الـ‪ OPC‬الكالسيكي) ‪ (OPC DA‬و ذو البنية الموحدة( ‪OPC‬‬

‫‪.)UA‬‬
‫تقدم هذه الورقة البحثية الخطوات التي يجب تحقيقها للنجاح في اختبار كفاءة استخدام الموارد‬
‫ومن ثم الحصول على شهادة اعتماد لمنتج ما من منتجات الـ‪ ،OPC‬علماً أن هذا االختبار موجه‬
‫بالدرجة األولى ألعضاء منظمة الـ‪.OPC‬‬
‫معظم المنتجات التي ال تنجح في اختبار الحصول على شهادة اعتماد من قبل المؤسسة يكون‬
‫تسرب في الموارد ‪( Resource Leaks‬تحدث عندما ال يقوم البرنامج بتحرير‬
‫بسبب حدوث مشكلة ّ‬
‫مصادر الموارد التي اكتسبها) أو ُيعذى الفشل لحدوث خلل في الحفاظ على سالمة االتصال لمدة‬
‫‪ 31‬ساعة متواصلة وهي مدة االختبار‪.‬‬

‫‪ 1-1-6‬الغاية من اختبار كفاءة استخدام الموارد‬


‫الهدف من هذا االختبار التأكد من أن منتج الـ ‪ OPC‬الجديد ذو بنية برمجية متينة ويمتاز بتوافر‬
‫دائم ‪ Reliable‬وله القدرة على استعادة االتصال بشكل ذاتي عند حدوث انقطاع‪ ،‬ويتمتع بكفاءة في‬
‫استخدام الموارد (أي ال يتسبب مثال بحدوث تسريب او خلل في استخدام الذاكرة ‪No-Memory‬‬

‫‪.)Leaks‬‬

‫‪93‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫المبدأ العام لخطوات االختبار متشابهة إلى حد كبير سواء كان المنتج مخدم ‪ OPC‬أو زبون ‪OPC‬‬
‫ً‬
‫مع وجود بعض نقاط االختالف الطفيفة بينهما‪ ،‬سنبينها فيما يلي‪:‬‬

‫‪ 2-1-6‬اختبار مخدم الـ ‪OPC‬‬

‫ليجتاز مخدم الـ ‪ OPC‬اختبار كفاءة استخدام الموارد‪ ،‬يحتاج إلى تحقيق ما يلي‪:‬‬
‫‪ -1‬االتصال بمصادر متنوعة للبيانات‪ :‬يجب أن يتصل المخدم مع أكثر من مصدر من مصادر‬
‫البيانات‪ ،‬أي يتصل مثالً مع أكثر من جهاز ‪ ،PLC‬أو مع برنامج أو أكثر لمحاكاة بروتوكول‬
‫الـ ‪ ،Modbus‬الحظ الشكل ( ‪.)1-1‬‬
‫تنص شروط االختبار على أن اثنين من مصادر البيانات على األقل يجب أن تكون بعيدة (على‬
‫حاسب غير حاسب المخدم)‪.‬‬

‫الشكل ‪ :1-6‬اتصال المخدم بمصادر بيانات متنوعة ضمن اختبار كفاءة استخدام الموارد‬

‫‪-2‬االتصال بأكثر من زبون ‪: OPC‬‬


‫لتجاوز االختبار‪ ،‬يجب أن يتصل المخدم الذي يخضع لعملية االختبار مع ‪ 5‬زبائن على األقل‪،‬‬
‫الحظ الشكل (‪ ،)2-1‬ويجب أن يحوي كل زبون ‪ OPC‬على ‪ 1444‬عنصر على األقل وذلك‬

‫الشكل ‪:2-6‬اتصال المخدم بأكثر من زبون ضمن اختبار كفاءة استخدام الموارد‬

‫‪94‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫لكل مصدر من مصادر البيانات للمخدم‪.‬‬


‫يحوي الجدول التالي قائمة بأشهر زبائن الـ‪ OPC‬المستخدمة في عمليات االختبار وذلك لكال نوعي‬
‫الـ‪ ،OPC‬الكالسيكي وذو البنية الموحدة ‪.OPC UA‬‬
‫‪Iconics‬‬ ‫‪Indusoft-‬‬ ‫‪Softing Demo‬‬ ‫‪OPCF DA‬‬ ‫‪Kepware-OPC Quick‬‬
‫‪Classic‬‬ ‫‪Genesis64‬‬ ‫‪WebStudio‬‬ ‫‪Client‬‬ ‫‪Sample Client‬‬ ‫‪Client‬‬
‫‪V 10.81+FH2‬‬ ‫‪V 7.1‬‬ ‫‪V 4.30.1 Build 2692‬‬ ‫‪V 334‬‬ ‫‪V 5.11.250.0‬‬

‫‪Iconics‬‬ ‫‪Indusoft-‬‬ ‫‪HB-Soft Comet‬‬ ‫‪OPCF UA‬‬ ‫‪Unified Automation-‬‬


‫‪Genesis64‬‬ ‫‪WebStudio‬‬ ‫‪UA Browser‬‬ ‫‪Sample Client‬‬ ‫‪UA Expert‬‬
‫‪UA‬‬
‫‪V 10.81+FH2‬‬ ‫‪V 7.1‬‬ ‫‪V 1.0.3‬‬ ‫‪V 1.1.334.0‬‬ ‫‪V 1.2.2‬‬

‫جدول ‪ :1-6‬قائمة بأشهر زبائن الـ‪ OPC‬المستخدمة في اختبار كفاءة استخدام الموارد‬

‫‪ -3‬استخدام برمجية مراقبة األداء من شركة ويندوز ‪Windows Performance Monitor‬‬

‫هي أداة موجودة ضمن حزمة نظام التشغيل ويندوز‪ ،‬تساعد في عمليات قياس األداء للتطبيقات‬
‫البرمجية‪ ،‬يمكن الوصول إليها من خالل كتابة التعليمة ”‪ "Perfmon.msc‬ضمن النافذة ‪ Run‬في‬
‫ويندوز‪.‬‬
‫الختبار أداء المخدم‪ ،‬نقوم بضبط هذه األداة بحيث تقوم بتسجيل البيانات لمدة ‪ 31‬ساعة (مدة‬
‫االختبار) ونختار بعض القيم المحددة المتعلقة بتطبيق مخدم الـ‪ OPC‬لتقوم األداة بتخزين قيمها‪،‬‬
‫من األمثلة على القيم التي ستراقبها األداة‪ :‬زمن التنفيذ على المعالج ‪ Processor Time‬و زمن‬
‫المستخدم ‪ User Time‬وغيرها من القيم‪.‬‬

‫‪ -4‬محاكاة حدوث انقطاع في الشبكة‬


‫يقدم المخبر المعني بإجراء االختبارات في مؤسسة الـ‪ OPC‬ملف تنفيذي ‪ Batch file‬يحوي مجموعة‬
‫من األوامر مهمتها محاكاة حدوث انقطاع في االتصال‪ ،‬يقوم هذا البرنامج بتفعيل وإلغاء تفعيل‬
‫االتصال المحلي ‪ Local Area Connection‬في نظام تشغيل الويندوز بهدف محاكاة حدوث انقطاع‬
‫في الشبكة واختبار سلوك مخدم الـ‪ OPC‬في هذه األثناء‪.‬‬
‫هناك نوعان من تجارب قطع االتصال يجب اختبارها ومحاكاتها‪ ،‬يبين ذلك الشكل (‪:)3-1‬‬
‫‪ -1‬محاكاة حدوث انقطاع بين المخدم وأحد مصادر البيانات المتصلة معه‪.‬‬
‫‪ -2‬محاكاة حدوث انقطاع بين المخدم وأحد زبائنه‪.‬‬

‫‪95‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫الشكل ‪ :3-6‬أنواع تجارب قطع االتصال في اختبار كفاءة استخدام الموارد‬

‫‪ 3-1-6‬اختبار زبون الـ ‪OPC‬‬

‫ليجتاز زبون الـ ‪ OPC‬الختبار "كفاءة استخدام الموارد"‪ ،‬يحتاج إلى تحقيق الشروط التالية‪:‬‬
‫‪ -1‬يجب أن يتصل الزبون بعدة مخدمات بنفس الوقت ‪ ،‬خمس مخدمات على األقل‪ ،‬يوضح ذلك‬
‫الشكل (‪ ،)4-1‬ويجب أن يحوي كل مخدم على ‪ 1444‬عنصر على األقل‪.‬‬

‫الشكل ‪:4-6‬اتصال الزبون مع عدة مخدمات في اختبار كفاءة استخدام الموارد‬

‫‪91‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫‪ -2‬بشكل مشابه في اختبار مخدم الـ‪ ،OPC‬يجب تفعيل برمجية مراقبة األداء من شركة ويندوز‬
‫‪ Windows Performance Monitor‬وضبطها لتقوم بتسجيل البيانات المتبادلة بين المخدم والزبائن‪.‬‬
‫قدم من مخبر االختبار في‬
‫الم ّ‬
‫‪ -3‬محاكاة حدوث انقطاع في الشبكة من خالل ملف الـ ‪ُ Batch‬‬
‫وبينا‪.‬‬
‫مؤسسة الـ ‪ OPC‬كما سبق ّ‬

‫‪ 2-6‬الدراسة الثانية‪ :‬اختبار األداء واالنتاجية ‪Throughput Performance Tests‬‬

‫طلح على تسميته بإنتاجية المخدم‪ ،‬وهي كمية البيانات التي‬


‫تركز هذه الدراسة على قياس ما اص ُ‬
‫من الممكن لمخدم الـ ‪ OPC‬أن يزود بها تطبيقات الزبائن‪.‬‬
‫ما تريد الدراسة إثباته أن كمية البيانات التي من الممكن لمخدم الـ‪ OPC‬تأمينها لتطبيقات الزبائن‬
‫اء كانت هذه الزبائن‬
‫تتجاوز كمية البيانات التي يمكن معالجتها من قبل تطبيقات الزبائن‪ ،‬سو ً‬
‫موجودة على نفس حاسب المخدم أو على حواسب أخرى‪.‬‬

‫منذ نشأة بروتوكول الـ ‪ OPC‬كان هناك الكثير من المشككين في قدرة الـ‪OPC‬على توفير مستوى‬
‫عالي من األداء في تبادل البيانات بين التطبيقات(مخدمات‪/‬زبائن)‪ ،‬لذلك فغاية هذه الدراسة كانت‬
‫دحض هذه الشكوك من خالل تجارب علمية مثبتة باألرقام ‪.‬‬
‫المعرفة ضمن المخدم(أو المخدمات) بحيث تكون إما‬
‫ّ‬ ‫في هذه الدراسة تم اختيار جميع العناصر‬
‫عبارة عن كلمة( ‪ )Word 16 bit‬أو مصفوفة من الكلمات( ‪)Array Of Words‬وذلك لضمان إجراء‬
‫االختبارات في الحالة األسوء‪.Worst case‬‬
‫اعتمدت التجارب التي تم القيام بها خالل هذه الدراسة على منتجات الـ‪ OPC‬لشركة ‪Rockwell‬‬

‫األمريكية‬
‫في هذه الدراسة تم اجراء االختبارات على بنى مختلفة لشبكات الـ ‪ OPC‬بحيث تشمل أغلب‬
‫الحاالت الممكنة‪ ،‬هذه البنى هي ‪:‬‬
‫‪ .1‬المخدمات والزبائن على حواسب مختلفة (بنية موزعة)‪.‬‬
‫‪ .2‬عدة زبائن تتصل مع مخدم وحيد‪.‬‬
‫‪ .3‬زبون وحيد يتصل مع عدة مخدمات‪.‬‬
‫‪ .4‬زبون ومخدم على نفس الحاسب (‪)Local‬‬
‫‪ .5‬عدة زبائن تتصل مع عدة مخدمات‪.‬‬

‫‪97‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫فيما يلي توضيح الختبارات االنتاجية التي أجرتها هذه الدراسة‪:‬‬

‫التجربة األولى‪ :‬البيئة موزعة ‪ /‬عدة زبائن ‪ 200,000/‬عنصر‬

‫لتقيم أداء الـ ‪ OPC‬في البيئة الموزعة واختبار انتاجيته‪ ،‬تم استخدام ‪ 1‬حواسب ذات معالجات بنتيوم‪،‬‬
‫خمس حواسب منها تقوم بتشغيل تطبيقات زبائن ‪ ،OPC‬وحاسب وحيد يعمل عليه تطبيق مخدم‬
‫‪.OPC‬‬
‫ضمن تطبيق المخدم تم تعريف وتخصيص ‪ 10,000‬عنصر لكل زبون‪ ،‬وتم ضبط الزبائن لتقوم‬
‫بطلب تحديث بياناتها بشكل دوري كل ‪ 254‬ميلي ثانية (‪ 4‬مرات في الثانية الواحدة)‪ ،‬وتم برمجة‬
‫مصدر البيانات ‪ Data Source‬بشكل مقصود بحيث تتغير جميع قيم العناصر باستمرار (أسوء‬
‫سيناريو)‪.‬‬

‫النتيجة‪ :‬المخدم كان قاد اًر على تحديث قيم ‪ 200,000‬عنصر في كل ثانية بشكل متواصل‪.‬‬
‫نتائج هذه التجربة مبينة في الجدول أداناه‪:‬‬
‫‪Items‬‬ ‫‪Changes / second‬‬ ‫‪Items / second‬‬
‫‪Client 1‬‬ ‫‪10,000‬‬ ‫‪4‬‬ ‫‪40,000‬‬
‫‪Client 2‬‬ ‫‪10,000‬‬ ‫‪4‬‬ ‫‪40,000‬‬
‫‪Client 3‬‬ ‫‪10,000‬‬ ‫‪4‬‬ ‫‪40,000‬‬
‫‪Client 4‬‬ ‫‪10,000‬‬ ‫‪4‬‬ ‫‪40,000‬‬
‫‪Client 5‬‬ ‫‪10,000‬‬ ‫‪4‬‬ ‫‪40,000‬‬
‫‪Server Total‬‬ ‫‪200,000‬‬

‫جدول ‪:2-6‬إنتاجية مخدم في بيئة موزعة وأكثر من زبون و‪ 200‬ألف متحول‬

‫التجربة الثانية‪ :‬البيئة موزعة ‪ /‬عدة زبائن ‪ 1,400,000/‬كلمة‬

‫لتقيم أداء الـ ‪ OPC‬في البيئة الموزعة مع حجوم كبيرة من البيانات‪ ،‬تم استخدام ‪ 1‬حواسب ذات‬
‫معالجات بنتيوم‪ ،‬خمس حواسب منها تقوم بتشغيل تطبيقات زبائن‪ ،‬وحاسب وحيد يعمل عليه تطبيق‬
‫مخدم ‪.OPC‬‬
‫في هذا االختبار‪ ،‬تم تخصيص ‪ 144‬عنصر ضمن المخدم لكل زبون‪ ،‬كل عنصر عبارة عن‬
‫‪ 244‬كلمة(‪ )Word‬من البيانات‪.‬‬
‫تم ضبط الزبائن لتقوم بطلب تحديث قيم عناصرها بشكل دوري كل ‪70‬ميلي ثانية لكل عنصر(‪14‬مرة‬
‫في كل ثانية)‪.‬‬

‫‪98‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫النتيجة‪ :‬المخدم كان قاد اًر على تحديث قيم ‪ 1,400,000‬كلمة في كل ثانية وبشكل مستمر طوال‬
‫فترة االختبار‪.‬‬
‫‪Words /‬‬ ‫‪Changes /‬‬ ‫‪Items‬‬
‫‪Items‬‬ ‫‪Words / second‬‬
‫‪Item‬‬ ‫‪second‬‬ ‫‪/second‬‬
‫‪Client 1‬‬ ‫‪100‬‬ ‫‪200‬‬ ‫‪14‬‬ ‫‪1400‬‬ ‫‪280,000‬‬
‫‪Client 2‬‬ ‫‪100‬‬ ‫‪200‬‬ ‫‪14‬‬ ‫‪1400‬‬ ‫‪280,000‬‬
‫‪Client 3‬‬ ‫‪100‬‬ ‫‪200‬‬ ‫‪14‬‬ ‫‪1400‬‬ ‫‪280,000‬‬
‫‪Client 4‬‬ ‫‪100‬‬ ‫‪200‬‬ ‫‪14‬‬ ‫‪1400‬‬ ‫‪280,000‬‬
‫‪Client 5‬‬ ‫‪100‬‬ ‫‪200‬‬ ‫‪14‬‬ ‫‪1400‬‬ ‫‪280,000‬‬
‫‪Server‬‬
‫‪7000‬‬ ‫‪1,400,000‬‬
‫‪Total‬‬

‫جدول ‪:3-6‬إنتاجية مخدم في بيئة موزعة وأكثر من زبون مع مليون و‪ 400‬ألف متحول‬

‫التجربة الثالثة‪ :‬البيئة محلية ‪ /‬زبون وحيد‪ 50,000/‬عنصر‬


‫لتقيم إنتاجية المخدم في شبكة محلية‪ ،‬تم استخدام حاسب ‪ Pentium‬يعمل عليه كل من برنامج‬
‫المخدم وبرنامج الزبون‪.‬‬
‫تم تعريف ‪10,000‬عنصر ضمن المخدم مخصصة للزبون‪ ،‬العناصر المعرفة ضمن المخدم كانت‬
‫من نوع األعداد الصحيحة المؤشرة ‪.Signed Integer‬‬
‫يطلب الزبون من المخدم تحديث قيم عناصره كل ‪ 244‬ميلي ثانية(‪ 5‬مرات في الثانية الواحدة)‬
‫النتيجة‪ :‬المخدم كان قاد اًر على تحديث قيم‪ 50,000‬عنصر في كل ثانية و بشكل مستمر‬
‫‪Items /‬‬
‫‪Items‬‬ ‫‪Changes / second‬‬
‫‪second‬‬
‫‪Client 1‬‬ ‫‪10000‬‬ ‫‪5‬‬ ‫‪50,000‬‬

‫جدول ‪ :4-6‬إنتاجية مخدم في بيئة محلية و زبون وحيد مع ‪ 50‬ألف متحول‬

‫التجربة الرابعة‪ :‬بيئة محلية ‪ /‬زبون وحيد‪ 800,000/‬كلمة‬

‫في هذه التجربة قام الزبون بتعريف ‪100‬عنصر ضمن المخدم‪ ،‬كل عنصر عبارة عن ‪ 544‬كلمة‬
‫من البيانات‪ ،‬يطلب الزبون من المخدم تحديث قيم عناصره كل ‪ 14‬ميلي ثانية لكل عنصر ( ‪16‬‬

‫مرة في الثانية الواحدة)‬

‫‪99‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫النتيجة‪ :‬المخدم كان قاد اًر على تحديث قيم‪ 800,000‬كلمة في كل ثانية و بشكل مستمر طوال‬
‫فترة االختبار‬

‫‪Words /‬‬ ‫‪Changes /‬‬ ‫‪Items‬‬


‫‪Items‬‬ ‫‪Words / second‬‬
‫‪Item‬‬ ‫‪second‬‬ ‫‪/second‬‬

‫‪Client‬‬ ‫‪100‬‬ ‫‪500‬‬ ‫‪16‬‬ ‫‪1600‬‬ ‫‪800,000‬‬

‫جدول ‪ :5-6‬إنتاجية مخدم في بيئة محلية و زبون وحيد مع ‪ 800‬ألف متحول‬

‫خالصة هذه الدراسة‪:‬‬

‫في جميع االختبارات التي قامت بها هذه الدراسة كان التركيز على تقييم وقياس إنتاجية مخدمات‬
‫الـ‪ OPC‬التي من الممكن الوصول إليها باستخدام بروتوكول تبادل البيانات ‪.OPC DA‬‬
‫ما أثبتته الدراسة أن كمية البيانات التي يستطيع مخدم الـ‪ OPC‬تأمينها لزبائنه دوما أكبر من كمية‬
‫اء كانت الزبائن موجودة على نفس حاسب المخدم‬
‫البيانات التي يمكن أن للزبائن أن تعالجها‪ ،‬سو ً‬
‫أو على حواسب أخرى‪.‬‬
‫بشكل عام‪ ،‬فإن األداء واإلنتاجية تعتمد بشكل كبير على كمية البيانات التي من الممكن لمخدم‬
‫الـ ‪OPC‬تحصيلها من مصدر البيانات األولي ‪.Underlying Data Source‬‬
‫قد تختلف األرقام والنتائج المبينة في هذه الدراسة باختالف مخدمات و زبائن الـ‪OPC‬‬

‫سننتقل في الفقرة القادمة إلى شرح األسلوب الذي قمنا من خالله بتجارب قياس األداء لبروتوكول‬
‫الـ‪. OPC‬‬

‫‪144‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫‪ 3-6‬اختبار أداء بروتوكول الـ ‪ OPC‬من خالل قياس سرعة المخدم في تلبية طلبات زبائنه في‬
‫البيئات المحلية والموزعة‬

‫إن الغاية الرئيسية التي صيغ من أجلها هذا الفصل هي المساهمة في رسم إطار عام يساعد على‬
‫فهم بروتوكول الـ‪ OPC‬واختبار أدائه وتحديد البارامترات التي تؤثر في سلوكه بهدف تحسين أداءه‬
‫وضمان استقرار الشبكة الصناعية التي يعمل بها‪.‬‬
‫رأينا من خالل الدراسات السابقة التي استعرضناها تركيزها على جوانب معينة في تقيمها ألداء‬
‫بروتوكول الـ‪ ،OPC‬فبالنسبة لمؤسسة الـ‪ OPC‬ما يهمها بالدرجة األولى هو ضمان توافق المنتج‬
‫الجديد مع المعايير التي وضعتها وكفاءته في استخدام الموارد المتاحة‪ ،‬ووضحنا كيف أن الدراسة‬
‫الثانية سعت إلثبات قدرة المخدم على تلبية طلبات الزبائن أياً كانت الظروف‪.‬‬

‫أما ما سنقوم به نحن خالل هذا البحث فسيكون تحديد أهم العوامل التي تؤثر على سرعة المخدم‬
‫في االستجابة لطلبات الزبائن‪.‬‬
‫من خالل الخبرة العملية والتطبيقات الواقعية و الدراسات المرجعية‪ ،‬وقع اختيارنا على ثالثة بارامترات‬
‫يادة أو نقصاناً على سرعة استجابة‬
‫سنعتمدها كمتغيرات خالل هذه الدراسة ونقيس أثر تَغيرها ز ً‬
‫المخدم لطلبات الزبائن‪.‬‬

‫هذه المتغيرات هي‪:‬‬

‫‪ .1‬عدد الزبائن المتصلة بالمخدم‪ :‬سنحاول قياس أثر زيادة عدد الزبائن على سرعة ُمخدم‬
‫الـ ‪ OPC‬في تأمين البيانات‪.‬‬
‫‪ .2‬عدد العناصر المعرفة ضمن المخدم‪ :‬من خالل الزيادة المتتالية لعدد العناصر أو‬
‫معرفة ضمن المخدم سنحاول قياس أثر هذه الزيادة على سرعة المخدم في‬
‫المتحوالت ال ّ‬
‫تأمين البيانات للزبائن‪.‬‬
‫‪ .3‬موضع المخدم بالنسبة للزبون‪ :‬ذكرنا سابقاً أنه يمكن للمخدم و للزبون أن يكونا على‬
‫حاسب واحد (‪ )Local‬أو على أكثر من حاسب(‪ ،)Remote‬سنحاول من خالل التجارب‬
‫تغير تموضع المخدم‪/‬زبون على سرعة ُمخدم الـ ‪ OPC‬في تأمين طلبات الزبائن‪.‬‬
‫تحديد أثر ّ‬

‫‪141‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫ما نريد معرفته وتسطيره في هذا البحث هو أثر هذه المتغيرات الثالث على سرعة تحصيل البيانات‬
‫من المخدم‪ ،‬أو بشكل أخر ُنريد دراسة تأثير هذه المتغيرات على سرعة المخدم في تأمين طلبات‬
‫الزبائن المتصلة به‪ ،‬حيث أن سرعة نقل البيانات هي من المؤشرات التي يمكن من خاللها المفاضلة‬
‫بين البروتوكوالت الصناعية‪.‬‬

‫لكن لماذا تم اختيار هذه المتغيرات دون غيرها؟‬

‫ضمن معيار الـ‪ OPC‬ال يوجد أي ُمحدد لعدد الزبائن المتصلة مع المخدم‪ ،‬إذاّ من حيث المبدأ‬
‫يمكن أن يتصل عدد النهائي من الزبائن مع مخدم ما‪ ،‬لكن كنتيجة منطقية متوقعة فإن زيادة عدد‬
‫الزبائن سينتج عنه زيادة في عدد الطلبات المطلوب من المخدم تلبيتها‪ ،‬هذا سيؤدي بشكل أو بآخر‬
‫لبطء في أداء الشبكة الصناعية (شبكة المخدم‪/‬زبون)‪ ،‬انطالقاً من هذه الفرضية تم اختيار عدد‬
‫الزبائن كأحد المتحوالت ضمن تجارب قياس األداء‪ ،‬في التجارب التي سنجريها‪ ،‬سنضيف ثالث‬
‫زبائن بشكل متتالي ونقيس سرعة المخدم في تلبية طلبات الزبائن بعد كل زبون نضيفه‪.‬‬
‫المعرفة‬
‫هذا بالنسبة لعدد الزبائن‪ ،‬أما بالنسبة لعدد المتحوالت‪ ،‬فمن خالل زيادة عدد المتحوالت ُ‬
‫ضمن مخدم الـ‪ OPC‬سنحاول دفع المخدم للعمل عند القيم الحدية من خالل تعامله مع حجوم كبيرة‬
‫من البيانات وقياس أدائه وسرعته في تلبية الطلبات عند ذلك‪ ،‬في التجارب التي سنقوم بها سنزيد‬
‫عدد المتحوالت بشكل تدريجي متسلسل كما يلي (‪.)1,100,1000,5000,10000‬‬
‫وأخي اًر‪ ،‬من المتوقع أن موضع المخدم بالنسبة للزبون سيؤثر على سرعة نقل البيانات بينهما لذلك‬
‫تم اختياره كأحد المتغيرات‪ ،‬بمعنى أننا سنقارن أداء بروتوكول الـ‪ OPC‬في البيئة المحلية مع أدائه‬
‫في البيئة الموزعة‬
‫للقيام بالتجارب السابقة سنحتاج لوسيلة ما تساعدنا في قياس األداء وتدعم كل من المتغيرات الثالث‬
‫السابقة‪.‬‬
‫لذلك وباستخدام الواجهات الرسومية لبرنامج الماتالب ‪ ،Matlab GUI‬تم تصميم و برمجة‬
‫"أداة اختبار أداء بروتوكول الـ‪. OPC‬‬
‫واجهة االختبار تظهر في الشكل (‪.)5-1‬‬

‫‪142‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫الشكل ‪ :5-6‬واجهة أداة اختبار بروتوكول الـ‪OPC‬‬

‫تقوم هذه الواجهة بوظيفتين في آن واحد‪ ،‬األولى تقوم بدور زبون‪ OPC‬حيث تستطيع أن تتصل مع‬
‫نصب على حاسب محلي أو بعيد‪ ،‬والثانية تُمثل أداة لتقييم أداء بروتوكول الـ‪. OPC‬‬
‫أي مخدم ُم ّ‬

‫تم بناء أداة االختبار هذه بأبسط شكل ممكن‪ ،‬بحيث تراعي المتطلبات التالية‪:‬‬

‫‪ .1‬إمكانية االتصال مع المخدمات المحلية ‪ Local‬أو البعيدة ‪.Remote‬‬


‫نصبة على الحاسب المحلي أو الحواسب البعيدة‪ ،‬ومنح‬
‫الم ّ‬
‫‪ .2‬إظهار جميع مخدمات الـ ‪ُ OPC‬‬
‫المستخدم إمكانية اختيار إحداها‪.‬‬
‫‪ .3‬إظهار معلومات كاملة عن المخدم الذي تم اختياره مع إمكانية االتصال به‪.‬‬
‫‪ .4‬إمكانية االطالع على جميع العناصر التي تم جلبها من المخدم‪.‬‬
‫‪ .5‬إمكانية استعراض قيم ‪ Values‬وحالة ‪ Quality‬جميع العناصر التي تم جلبها من المخدم‬
‫بالزمن الحقيقي(‪.)Online‬‬

‫‪143‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫‪ .1‬إمكانية تغيير زمن انتظار الزبون للمخدم ليستجيب لطلبه في إنشاء االتصال( ‪Timeout‬‬

‫‪.)Time‬‬
‫‪ .7‬إمكانية قياس الزمن الالزم لقراءة قيم العناصر المعرفة ضمن مخدم الـ‪ ،OPC‬وهي التي‬
‫سنستخدمها في تجارب األداء‪.‬‬

‫الشكل (‪ )6-6‬يسلط الضوء على أجزاء ووظائف واجهة أداة اختبار األداء‪.‬‬

‫‪-5‬لحساب الزمن الالزم لقراءة‬


‫عناصر المخدم‬
‫‪-1‬اختيار موضع المخدم‪.‬‬

‫‪-2‬اختيار مخدم الـ‪ OPC‬الذي‬


‫نرغب باالتصال معه‪.‬‬
‫‪-4‬البحث عن جميع عناصر المخدم وإضافتها للزبون‬

‫‪-3‬إنشاء زبون الـ‪ OPC‬وتجهيز‬


‫االتصال مع المخدم واختباره‪.‬‬

‫الشكل ‪ :6-6‬مهام واجهة أداة اختبار األداء‬

‫تم برمجة هذه األداة باستخدام التوابع التي سبق شرحها في الفصل الخامس باإلضافة إلى مكتبة‬
‫الواجهات الرسومية ‪ GUI‬في برنامج الماتالب‪.‬‬

‫‪144‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫‪ 4-6‬التجارب والنتائج‬

‫قبل البدء بالتجارب‪ ،‬البد من التعريف بالبيئة التي تم فيها إجراء التجارب‪:‬‬
‫سرعة معالج الحاسب الذي تمت بواسطته عمليات القياس هي‪. i3 /2.4 GHz‬‬
‫‪ ‬تم استخدام مخدم ‪ OPC‬من شركة ‪ OPCTech‬مخصص للمتحكمات المنطقية ‪،Delta‬‬
‫عرف(اسم) هذا المخدم هو ‪. OPCTechs.Delta30DA.3:‬‬ ‫ُم ّ‬
‫‪ ‬في هذا الفصل نحن نختبر أداء بروتوكول الـ‪ OPC DA‬الذي يعمل وفق بنية المخدم‪/‬زبون‬
‫فال يهم مصدر بيانات المخدم‪ ،‬لذلك وألخذ الحالة األسوء ‪ Worse case‬تم ضبط جميع‬
‫المتحوالت على وضعية المحاكاة ‪ Simulate‬بحيث تتغير قيمها بشكل مستمر وعشوائي‪،‬‬
‫المعرفة ضمنه عن‬
‫ّ‬ ‫حيث أنه عند اختيار وضعية المحاكاة يقوم المخدم بعزل المتحوالت‬
‫الجهاز الفيزيائي (‪ )PLC‬ويقوم بإسناد قيم لهذه المتحوالت وفق توابع عشوائية يمكن اختيار‬
‫مجالها ونوعها‪ ،‬كما يبين ذلك الشكل (‪)7-1‬‬

‫الشكل ‪:7-6‬تعريف المتحوالت ضمن مخدم الـ‪ OPC‬وضبطها على وضعية المحاكاة‬

‫‪145‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫ألخذ الحالة األسوء تم تعريف جميع المتحوالت ضمن مخدم الـ‪ OPC‬من النوع ‪INT/16‬‬ ‫‪‬‬

‫‪،bit‬‬
‫‪ ‬ضمن برنامج مخدم الـ‪ OPC‬تم إنشاء ‪ 5‬برامج مختلفة‪ ،‬تختلف عن بعضها بعدد‬
‫المتحوالت‪ ،‬في كل مرة نقوم بتشغيل واحد من هذه البرامج‬
‫البرامج وعدد متحوالتها مبينة في الجدول ‪:1-1‬‬

‫‪Pro10000‬‬ ‫‪Pro5000‬‬ ‫‪Pro1000‬‬ ‫‪Pro100‬‬ ‫‪Pro1‬‬ ‫اسم البرنامج‬

‫‪10000‬‬ ‫‪5000‬‬ ‫‪1000‬‬ ‫‪100‬‬ ‫‪1‬‬ ‫عدد المتحوالت‬

‫جدول ‪ :6-6‬برامج مخدم الـ‪ OPC‬وعدد ما تحويه من متحوالت‬

‫معرف ضمنه ‪ 144‬متحول‪ ،‬كل‬ ‫مثالً‪ :‬البرنامج ‪ Pro100‬هو اسم لمشروع ضمن مخدم الـ‪ّ OPC‬‬
‫متحول من هذه المتحوالت مضبوط على وضعية المحاكاة حيث يقوم المخدم بإسناد قيم عشوائية‬
‫لها في كل لحظة زمنية‪.‬‬
‫خالل التجارب التالية‪ ،‬سنقوم بتشغيل واحد من البرامج السابقة بهدف قياس أثر زيادة عدد المتحوالت‬
‫على سرعة المخدم في تلبية طلبات الزبائن المتصلة معه‪.‬‬

‫‪ ‬تم استخدام برمجيات زبائن الـ ‪ OPC‬المبينة في الجدول التالي‪ ،‬تم اختيار هذه الزبائن‬
‫كونها تعود ألشهر الشركات المنتجة لبرمجيات الـ‪.OPC‬‬

‫‪MATLAB GIU‬‬
‫‪Cogent‬‬ ‫‪Matrikon OPC‬‬ ‫‪Kepware-OPC‬‬ ‫اسم البرنامج‬
‫‪DataHub‬‬ ‫‪Explorer‬‬ ‫‪Quick‬‬

‫جدول ‪ :7-6‬أسماء زبائن الـ ‪ OPC‬المستخدمة في التجارب‬

‫‪ 1-4-6‬التجربة األولى‪ :‬اختبار أداء الـ ‪ OPC‬على حاسب واحد ‪Localhost‬‬

‫منصبة على نفس الحاسب‪ ،‬كما يظهر‬


‫في هذه التجربة كل من برمجية المخدم وبرمجيات الزبائن ّ‬
‫في الشكل (‪.)8-1‬‬

‫‪141‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫خطوات تنفيذ التجربة‪:‬‬

‫‪ -1‬نعرف متحول واحد ضمن مخدم الـ‪( OPC‬البرنامج ‪ Pro1‬في حالة تفعيل)‪.‬‬
‫‪ -2‬نسمح لزبون واحد باالتصال مع المخدم هو الماتالب (من خالل برمجية قياس األداء التي‬
‫تم بناؤها وسبق ذكرها)‪.‬‬
‫‪ -3‬نقيس الزمن الذي استغرقه قراءة هذا المتحول من خالل برمجية قياس األداء‪.‬‬
‫‪ -4‬نقوم بإدخال زبون ثاني إلى الشبكة الصناعية حيث نسمح له باالتصال مع مخدم الـ‪OPC‬‬

‫واستعراض قيمة المتحول‪.‬‬


‫ستغرق لقراءة نفس المتحول‬ ‫‪ -5‬نعود إلى برمجية قياس األداء (الزبون األول) ونقيس الزمن ُ‬
‫الم َ‬
‫بعد إضافة الزبون الثاني‪.‬‬
‫‪ -1‬نضيف الزبون الثالث واألخير‪ ،‬ونقيس الزمن المستغرق لقراءة المتحول‪.‬‬

‫الشكل ‪:8-6‬التجربة األولى‪ :‬توزع المخدم والزبائن على حاسب وحيد‬

‫عرفة ضمن المخدم وفق‬


‫الم ّ‬
‫نكرر ذات الخطوات السابقة‪ ،‬وفي كل مرة نقوم بزيادة عدد المتحوالت ُ‬
‫التسلسل التالي‪ 111 :‬متحول ثم ‪ 1111‬متحول ثم ‪ 5111‬متحول وأخي ار ‪ 11111‬متحول‬
‫و في كل مرة نقيس الزمن المستغرق لقراءة البيانات باستخدام "أداة اختبار األداء"‪.‬‬
‫المبينة في الجدول (‪.)8-1‬‬
‫بعد القيام بهذه الخطوات حصلنا على النتائج ُ‬

‫‪147‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫النتائج في الجدول أدناه تبين أداء بروتوكول الـ‪ OPC‬على حاسب وحيد مع أثر زيادة عدد‬
‫المتحوالت وعدد الزبائن على الزمن الذي يحتاجه المخدم لتلبية طلبات الزبائن‪.‬‬

‫‪Localhost‬‬

‫‪Variable Numb‬‬ ‫‪One OPC Client‬‬ ‫‪Two OPC Clients‬‬ ‫‪Three OPC Clients‬‬
‫‪1‬‬ ‫‪1.31 ms‬‬ ‫‪1.50‬‬ ‫‪1.61‬‬
‫‪100‬‬ ‫‪2.64‬‬ ‫‪2.70‬‬ ‫‪3.33‬‬
‫‪1000‬‬ ‫‪12.28‬‬ ‫‪12.59‬‬ ‫‪16.38‬‬
‫‪5000‬‬ ‫‪55.42‬‬ ‫‪60.58‬‬ ‫‪75.38‬‬
‫‪10000‬‬ ‫‪148.27‬‬ ‫‪197.60‬‬ ‫‪256.11‬‬

‫جدول ‪ :8-6‬أداء بروتوكول الـ‪OPC‬على حاسب وحيد مع زيادة عدد المتحوالت و الزبائن‬

‫فيما يلي بعض المالحظات على النتائج المبينة في الجدول (‪:)8-1‬‬


‫‪ -‬أزمنة القراءة بواحدة الميلي ثانية(‪.)ms‬‬
‫‪ -‬لزيادة لدقة في النتائج‪ ،‬كل نتيجة ظاهرة في الجدول تمثل وسطي لثالث عمليات قراءة‬
‫متتالية بنفس الظروف‪.‬‬

‫يمكن أن نق أر قيم الجدول السابق بالشكل التالي‪:‬‬


‫‪ ‬مثال ‪ :1‬في شبكة صناعية تعمل وفق بروتوكول الـ‪ ، OPC‬تحوي هذه الشبكة على مخدم‬

‫وحيد وزبون وحيد وكالهما ُم ّ‬


‫نصبان على نفس الحاسب‪ ،‬سنحتاج لزمن قدره ‪1.31‬ميلي‬
‫ثانية لقراءة متحول وحيد‪.‬‬
‫‪ ‬مثال ‪ :2‬في شبكة صناعية تعمل وفق بروتوكول الـ‪ ، OPC‬تحوي هذه الشبكة على مخدم‬
‫وحيد وثالث زبائن جميعهم يعملون على نفس الحاسب‪ ،‬سنحتاج لزمن قدره ‪ 16.38‬ميلي‬
‫ثانية لقراءة ‪ 1444‬متحول‪.‬‬
‫عبر عن النتائج السابقة بثالث منحنيات بيانية‪ ،‬منحني لكل زبون كما يبين‬
‫لمزيد من اإليضاح‪ُ ،‬ن ّ‬
‫الشكل (‪ ،)9-1‬حيث أن المحور ‪ X‬يمثل عدد المتحوالت‪ ،‬والمحور ‪ Y‬يمثل زمن قراءة المتحوالت‪.‬‬

‫‪148‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫الشكل ‪ :9-6‬أثر زيادة عدد المتحوالت وعدد الزبائن على زمن استجابة المخدم‪/‬حاسب وحيد‬

‫نتائج تجربة األداء في البيئة المحلية‪:‬‬

‫بشكل عام‪ ،‬من جدول النتائج يمكن أن نستنج بشكل حاسم أن زيادة عدد زبائن الـ‪ OPC‬ينتج‬ ‫‪-‬‬
‫عنه زيادة في الزمن الذي يستغرقه المخدم لتلبية الطلبات‪ ،‬وهذا ما يعني بالضرورة بطء في‬
‫أداء الشبكة الصناعية‪.‬‬
‫‪ -‬لوحظ أيضاً أن الزمن الذي يستغرقه المخدم لتلبية طلبات زبونان كان متقارباً جدا مع الزمن‬
‫الذي يستغرقه لتلبية طلبات زبون وحيد وخاصة ما قبل ‪ 5444‬متحول‪ ،‬لكنه شهد تباطؤ‬
‫ملحوظ عند إضافة الزبون الثالث‪ ،‬يمكن لنا مالحظة ذلك من خالل تقارب منحني الزبون‬
‫الوحيد مع منحني الزبونان وتباعد منحني الثالث زبائن عنهما‪.‬‬
‫‪ -‬النتائج تبين أن زيادة عدد المتحوالت ينتج عنه زيادة في الزمن الذي يحتاجه المخدم لتلبية‬
‫الطلبات‪ ،‬ومن خالل المنحنيات البيانية يمكن أن نلحظ أن نقطة ‪ 5444‬متحول شكلت نقطة‬
‫انعطاف للمنحنيات الثالث‪ ،‬حيث بدءاَ من هذه النقطة لوحظ زيادة أكبر في زمن استجابة‬
‫المخدم وهذا يعني بطء في الشبكة الصناعية‪ ،‬بمعنى أن أداء مخدم الـ‪ OPC‬على حاسب‬
‫وحيد يكون أفضل عندما يكون عدد المتحوالت أقل من ‪ 5444‬متحول‪.‬‬

‫‪149‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫‪2-4-6‬التجربة الثانية‪ :‬اختبار أداء الـ ‪ OPC‬في البيئة الموزعة ‪Remote PCs‬‬

‫في هذه التجربة‪ ،‬تم تنصيب برمجية المخدم على حاسب‪ ،‬وتنصيب برمجيات الزبائن الثالث على‬
‫حاسب أخر‪ ،‬كما يبين الشكل (‪)14-1‬‬

‫الشكل ‪ :10-6‬بنية المخدم‪/‬زبون في البيئة الموزعة‬

‫خطوات تنفيذ التجربة‪:‬‬

‫‪ -1‬نقوم بتفعيل قناة االتصال الـ‪ DCOM‬من خالل تغيير في إعدادات نظام التشغيل‪،‬‬
‫التفعيل يجب أن يتم على الحاسب المحلي والبعيد علماً أن طريقة تفعيل قناة الـ‪ DCOM‬موضحة‬
‫بالتفصيل في الملحقات‪.‬‬
‫عند تفعيل القناة يجب الحذر كونها تالمس إعدادات حرجة في نظام التشغيل ويندوز‪ ،‬والخطأ قد‬
‫يسبب إشكاليات تطال كامل نظام التشغيل‪.‬‬
‫‪ -2‬نصل الحاسب المحلي مع الحاسب البعيد بواسطة شبكة اتصال سلكية(‪ )Ethernet‬ونضبط‬
‫عناوين االتصال ‪ IPs‬لكال الحاسبين بحيث يكونان في نطاق شبكة واحدة‪.‬‬
‫‪ -3‬نعرف متحول واحد ضمن مخدم الـ ‪(OPC‬نستخدم البرنامج ‪ Pro1‬ونضعه في حالة‬
‫تفعيل‪.)Active‬‬
‫‪ -4‬نسمح لزبون واحد باالتصال مع المخدم (الزبون هو الماتالب المتمثل ببرمجية قياس األداء‬
‫التي سبق شرحها)‪.‬‬
‫‪ -5‬نحسب الزمن الذي استغرقه قراءة هذا المتحول من خالل برمجية قياس األداء‪.‬‬

‫‪114‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫‪ -1‬نقوم بإدخال زبون ثاني إلى الشبكة الصناعية حيث نسمح له باالتصال مع المخدم واستعراض‬
‫قيمة المتحول‪.‬‬
‫‪ -7‬نعود إلى برمجية قياس األداء (الزبون األول) ونقيس الزمن المستغرق لقراءة المتحول‪.‬‬
‫‪ -8‬نضيف الزبون الثالث واألخير‪ ،‬ونقيس الزمن المستغرق لقراءة المتحول‪.‬‬
‫المعرفة ضمن المخدم فنحصل على النتائج المبينة‬
‫نكرر الخطوات السابقة مع زيادة عدد المتحوالت ّ‬
‫في الجدول (‪.)9-1‬‬

‫‪Remote PCs‬‬

‫‪Variable Numb‬‬ ‫‪One OPC Client‬‬ ‫‪Two OPC Clients‬‬ ‫‪Three OPC Clients‬‬
‫‪1‬‬ ‫‪2.12 ms‬‬ ‫‪2.34‬‬ ‫‪2.36‬‬
‫‪100‬‬ ‫‪4.35‬‬ ‫‪4.70‬‬ ‫‪4.80‬‬
‫‪1000‬‬ ‫‪25.90‬‬ ‫‪26.45‬‬ ‫‪26.72‬‬
‫‪5000‬‬ ‫‪89.71‬‬ ‫‪96.31‬‬ ‫‪107.66‬‬
‫‪10000‬‬ ‫‪199.45‬‬ ‫‪224.87‬‬ ‫‪270.74‬‬

‫جدول ‪ : 9-6‬أداء بروتوكول الـ‪OPC‬على حواسب متعددة‬

‫النتائج في الجدول ‪ 9-6‬تبين أداء بروتوكول الـ‪ OPC‬في بيئة موزعة (حاسبين) مع أثر زيادة‬
‫عدد المتحوالت وعدد الزبائن على زمن الذي يحتاجه المخدم لتلبية طلبات الزبائن علماً أن أزمنة‬
‫القراءة مقاسة بواحدة الميلي ثانية(‪ ،)ms‬وبهدف زيادة الدقة فجميع النتائج الظاهرة في الجدول تمثل‬
‫وسطي لثالث عمليات قراءة‪.‬‬
‫نق أر قيم الجدول السابق بالشكل التالي‪:‬‬
‫‪ ‬مثال ‪ :1‬في شبكة صناعية تعمل وفق بروتوكول الـ‪ ،OPC‬تحوي هذه الشبكة على مخدم‬

‫منصب على حاسب والزبون ّ‬


‫منصب على حاسب‬ ‫المخدم ّ‬
‫ّ‬ ‫وحيد وزبون وحيد على أن يكون‬
‫أخر‪ ،‬سنحتاج لزمن قدره ‪ 2.12‬ميلي ثانية لقراءة متحول وحيد‪.‬‬

‫‪ ‬مثال ‪ :2‬في شبكة صناعية تعمل وفق بروتوكول الـ‪ ،OPC‬تحوي هذه الشبكة على مخدم‬
‫منصب على حاسب والزبائن على حاسب أخر‪ ،‬سنحتاج لزمن‬
‫وحيد وثالث زبائن‪ ،‬المخدم ّ‬
‫قدره ‪ 107.66‬ميلي ثانية لقراءة ‪ 5000‬متحول‪.‬‬

‫‪111‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫نرسم ثالث منحنيات بيانية لتوضيح الجدول السابق‪ ،‬منحني واحد لكل زبون كما يظهر في الشكل‬
‫(‪ ،)11-1‬يمثل المحور ‪ X‬عدد المتحوالت‪ ،‬ويمثل المحور‪ Y‬زمن قراءة المتحوالت‬

‫الشكل ‪:11-6‬أثر زيادة عدد المتحوالت وعدد الزبائن على زمن استجابة المخدم‪ /‬عدة حواسب‬

‫نتائج تجربة األداء في البيئة الموزعة‪:‬‬

‫تأتي نتائج هذه التجربة في سياق النتائج التي أظهرتها التجربة السابقة ومتوافقة معها‪.‬‬
‫فمن جدول النتائج يمكن أن نستنتج أن زيادة عدد زبائن الـ‪ OPC‬نتج عنه بطء في أداء الشبكة‬
‫الصناعية و أن الزمن الذي يستغرقه المخدم لتلبية طلبات زبونان كان متقارباً جدا مع الزمن الذي‬
‫يستغرقه لتلبية طلبات زبون وحيد‪ ،‬لكنه شهد تباطؤ ملحوظ عند إضافة الزبون الثالث‪.‬‬
‫وكذلك أيضا بالنسبة لزيادة عدد المتحوالت نالحظ أنه نتج عنه زيادة في الزمن الذي يحتاجه المخدم‬
‫لتلبية الطلبات‪.‬‬
‫وتبين النتائج أيضاً أنه في حالة أن المخدم يحوي ألف متحول وما دون فإن تأثير زيادة عدد الزبائن‬
‫نصبة على حواسب بعيدة) تكاد تكون معدومة‪.‬‬
‫الم ّ‬
‫من المعطيات السابقة ممكن أن نستنتج أن نظام يحوي أكثر من زبون في بيئة موزعة يكون ذو‬
‫كفاءة عالية عندما يكون عدد المتحوالت دون األلف‪.‬‬

‫‪112‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫‪ 3-4-6‬مقارنة أداء البروتوكول الـ ‪ OPC‬في البيئة المحلية مع أدائه في البيئة الموزعة‬

‫للمقارنة بين أداء بروتوكول الـ‪ OPC‬عندما يعمل على حاسب محلي وحيد مع حالته عندما يعمل‬
‫على أكثر من حاسب‪ ،‬قمنا بدمج نتائج التجربتين األولى والثانية‪ ،‬لنحصل على المخطط المبين‬
‫بالشكل (‪)12-1‬‬

‫‪Localhost+Remote‬‬
‫‪300.00‬‬
‫‪256.11‬‬
‫‪250.00‬‬

‫‪200.00‬‬ ‫‪197.60‬‬

‫‪150.00‬‬
‫‪148.27‬‬
‫‪100.00‬‬

‫‪50.00‬‬
‫‪16.38‬‬
‫‪55.42‬‬
‫‪0.00‬‬
‫‪12.28‬‬
‫‪0‬‬ ‫‪2000‬‬ ‫‪4000‬‬ ‫‪6000‬‬ ‫‪8000‬‬ ‫‪10000‬‬ ‫‪12000‬‬

‫‪Local/ one Client‬‬ ‫‪Local/ Two Clients‬‬ ‫‪Local/ Three Client‬‬


‫‪Remote/One Client‬‬ ‫‪Remote/Two Clients‬‬ ‫‪Remote/Three Clients‬‬

‫الشكل ‪:12-6‬أثر زيادة عدد المتحوالت وعدد الزبائن على زمن استجابة المخدم‪ /‬حاسب وحيد ‪+‬‬

‫‪ -‬بشكل عام يتضح من المخطط أن أداء بروتوكول الـ‪ OPC‬في البيئة المحلية كان أفضل من‬
‫أدائه في البيئة الموزعة‪ ،‬حيث تبين النتائج أن األزمنة التي لزمت للمخدم لتلبية طلبات‬
‫الزبائن كانت أقل عما كانت عليه عندما كانت الزبائن والمخدم على حاسب وحيد‪.‬‬
‫‪ -‬لم تكن قيمة ‪ 5444‬متحول نقطة انعطاف كبيرة في البيئة الموزعة مقارنة بما كانت عليه في‬
‫البيئة المحلية‪ ،‬بمعنى أن تأثير زيادة عدد المتحوالت على أداء بروتوكول الـ ‪ OPC‬في البيئة‬
‫الموزعة كان أقل من تأثيره في البيئة المحلية‪.‬‬
‫‪ -‬نالحظ تقارب المنحنيات البيانية فيما دون نقطة ‪ 5444‬متحول سواء في البيئة المحلية أو‬
‫في البيئة الموزعة‪ ،‬بمعنى أن زيادة عدد الزبائن في حالة ‪ 5444‬متحول وما دون ال يؤثر‬
‫اء كان تموضع المخدم مع الزبائن محلياً على‬
‫بشكل ملحوظ على أداء الشبكة الصناعية سو ً‬
‫حاسب وحيد أو موزعاً على عدة حواسب‪.‬‬

‫‪113‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫‪ -‬نالحظ من المخطط‪ ،‬عند نقطة ‪ 1444‬متحول تقريبا يتقاطع منحني الزبون الوحيد على‬
‫حاسب بعيد‪ ،‬مع منحني الثالث الزبائن المحلية‪ ،‬بمعنى أنه عندما فاق عدد‬
‫المتحوالت‪ 1444‬أصبح الزمن الالزم للمخدم ليلبي طلبات زبون متموضع على حاسب أخر‬
‫نصبة على نفس حاسبه‪.‬‬
‫أقل من الزمن الذي يلزمه لتلبية طلبات ثالث زبائن محلية ُم ّ‬

‫‪ 5-6‬أداء األنظمة التي تعمل وفق بروتوكول الـ ‪ OPC‬مقارنة مع األنظمة التقليدية‬

‫من خالل التجارب السابقة كنا نحاول استقراء العوامل التي تؤثر على قدرة المخدم في تلبية طلبات‬
‫زبائنه‪ .‬في هذه الفقرة نسعى لمقارنة أداء األنظمة التي تعمل وفق بروتوكول الـ ‪ OPC‬مع األنظمة‬
‫التي تعتمد بروتوكوالت تحكم تقليدية مثل ‪.CAN ،Profibus،Modbus‬‬
‫للقيام بهذه المقارنة‪ ،‬قام أحد الباحثين ببناء نظام تحكم بطريقتين‪ :‬األولى باستخدام بروتوكوالت‬
‫تقليدية والثانية باستخدام بروتوكول الـ ‪ ،OPC‬المقارنة أخذت بعين االعتبار عاملين رئيسين هما‬
‫زمن التنفيذ والتكلفة‪.‬‬
‫فكانت النتائج التالية‪:‬‬

‫‪ 1-5-6‬من حيث زمن التنفيذ‬


‫بعد انتهاء التجربة لوحظ أن زمن ضبط إعدادات النظام وضبط معامالته وتعريف التجهيزات‬
‫والشبكة الصناعية انخفض إلى الثلث تقريبا‪ ،‬حيث استغرق زمن تجهيز النظام الذي يعمل‬
‫المنفذ وفق بروتوكول الـ‪ OPC‬إلى أكثر من‬
‫بالبروتوكوالت التقليدية ‪ 15‬يوم‪ ،‬بينما لم يحتج النظام ُ‬
‫‪ 5‬أيام‪ ،‬كما يبين الشكل (‪.)13-1‬‬

‫الشكل ‪:13-6‬مقارنة بروتوكول الـ‪ OPC‬مع بروتوكوالت أخرى من حيث زمن التنفيذ‬

‫‪114‬‬
‫اختبارات األداء‬ ‫الفصل السادس‬

‫‪ 2-5-6‬من حيث الكلفة‬

‫بينت التجربة أيضاً أن كلفة تنفيذ الشبكة الصناعية بدون استخدام الـ‪ OPC‬وصل إلى ‪،$ 75,444‬‬
‫بينما لم تتجاوز تكلفة تنفيذ نفس الشبكة باستخدام بروتوكول الـ‪ OPC‬هو ‪ $13,444‬كما يبين‬
‫الشكل(‪.)14-1‬‬

‫الشكل ‪:14-6‬مقارنة بروتوكول الـ‪ OPC‬مع بروتوكوالت أخرى من حيث الكلفة‬

‫ُيعزى انخفاض زمن التنفيذ في بروتوكول الـ‪ OPC‬إلى أسباب عديدة منها عدم الحاجة الستخدام‬
‫تجهيزات تقوم بالتحويل بين البروتكوالت (‪ )Protocols Converter‬والتي كانت تُستخدم مع‬
‫البروتوكوالت التقليدية للربط بين المتحكمات وبرمجيات التحكم والمراقبة‪.SCADA‬‬
‫وأيضا من العوامل التي ساهمت في انخفاض التكلفة هو كسر احتكار الشركات المصنعة للتجهيزات‬
‫لعقود الصيانة وما يترتب عليها من كلف‪ ،‬حيث أنه في حال حدوث خلل في أحد المتحكمات‬
‫للتقيد بنفس نوع المتحكم‬
‫المكونة للشبكة الصناعية ولزم استبداله‪ ،‬فال حاجة مع بروتوكول الـ ‪ّ OPC‬‬
‫السابق‪.‬‬
‫وأيضاً يمكن القول بأن انخفاض زمن التنفيذ أدى إلى توفير في أجور الورشات المنفذة والعاملين‬
‫في المشروع مما ساهم أيضاً في انخفاض الكلف المالية‪.‬‬

‫‪115‬‬
‫الفصل السابع‬

‫نت ـ ــائـ ــج البح ــث‬


‫واآلف ــاق المستقبلية‬
‫نتائج البحث واآلفاق المستقبلية‬ ‫الفصل السابع‬

‫الفصل ‪ : 7‬نتائج البحث واآلفاق المستقبلية‬

‫‪ 1-7‬نتائج البحث‬

‫أوالا‪ :‬أداء بروتوكول الـ ‪ OPC‬في البيئة المحلية (المخدم والزبائن على نفس الحاسب)‬

‫من خالل التجارب التي تم إجراؤها على بروتوكول الـ ‪ OPC‬في البيئة المحلية (المخدم والزبائن‬
‫على نفس الحاسب) تم التوصل إلى النتائج التالية‪:‬‬
‫‪ -‬زيادة عدد الزبائن ينتج عنه زيادة الزمن الذي يستغرقه المخدم لتلبية طلبات الزبائن وبالتالي‬
‫بطء عام في الشبكة الصناعية‪.‬‬
‫‪ -‬في شبكة صناعية تحوي مخدم ‪ OPC‬واحد وزبونان‪ ،‬الزمن الذي احتاجه المخدم لتلبية طلبات‬
‫الزبونان كان متقارب جداً مع الزمن الذي احتاجه لتلبية طلبات زبون واحد‪ ،‬لكن عند إضافة‬
‫زبون ثالث لوحظ زيادة كبيرة نسبياً في زمن استجابة المخدم‪.‬‬
‫عرفة ضمن مخدم الـ‪ OPC‬نتج عنه زيادة في الزمن الذي يحتاجه‬
‫الم ّ‬
‫‪ -‬زيادة عدد المتحوالت ُ‬
‫المخدم لتلبية الطلبات‪ ،‬وعند ‪ 5444‬متحول لوحظ ازدياد كبير في زمن استجابة المخدم‬
‫لطلبات الزبائن وهذا ما يعني بطء في أداء الشبكة الصناعية‪.‬‬

‫ثانيا‪ :‬أداء بروتوكول الـ ‪ OPC‬في البيئة الموزعة (المخدم والزبائن على حواسب مختلفة)‬

‫من خالل التجارب التي تم إجراؤها على بروتوكول الـ ‪ OPC‬في البيئة الموزعة (المخدم والزبائن‬
‫على أكثر من حاسب) تم التوصل إلى النتائج التالية‪:‬‬
‫‪ -‬زيادة عدد زبائن الـ‪ OPC‬نتج عنه بطء في أداء الشبكة الصناعية‪ ،‬والزمن الذي احتاجه المخدم‬
‫لتلبية طلبات زبونان كان متقارباً جدا مع الزمن الذي احتاجه لتلبية طلبات زبون وحيد‪ ،‬لكن‬
‫استجابة المخدم شهدت تباطؤ ملحوظ عند إضافة الزبون الثالث‪.‬‬
‫‪ -‬زيادة عدد المتحوالت نتج عنه زيادة في الزمن الذي يحتاجه المخدم لتلبية الطلبات‪.‬‬
‫‪ -‬من خالل النتائج ظهر أنه في حال احتوى المخدم على ألف متحول وما دون فإن تأثير زيادة‬

‫‪117‬‬
‫نصبة على حواسب بعيدة) تكاد تكون معدومة‪ ،‬من هذا نستنتج أن نظام‬ ‫عدد الزبائن (الم ّ‬
‫يحوي أكثر من زبون في بيئة موزعة يكون ذو كفاءة عالية عندما يكون عدد المتحوالت دون‬
‫األلف‪.‬‬

‫ثالثا ‪ :‬نتائج عامة‬

‫من خالل التجارب تم التوصل إلى النتائج العامة التالية‪:‬‬

‫‪ -‬أداء بروتوكول الـ‪ OPC‬في البيئة المحلية كان أفضل من أدائه في البيئة الموزعة‪ ،‬حيث تُبين‬
‫النتائج أن األزمنة التي احتاجها المخدم لتلبية طلبات الزبائن كانت أقل في البيئة المحلية عنها‬
‫في البيئة الموزعة‪.‬‬
‫‪ -‬تأثير زيادة عدد المتحوالت على أداء بروتوكول الـ ‪ OPC‬في البيئة الموزعة كان أقل من تأثير‬
‫زياداتها في البيئة المحلية‪.‬‬
‫‪ -‬في حال كان المخدم يحوي ‪ 5444‬متحول وما دون‪ ،‬فإن زيادة عدد الزبائن ال يؤثر بشكل‬
‫اء كان تموضع المخدم مع الزبائن محلياً على حاسب‬
‫ملحوظ على أداء الشبكة الصناعية سو ً‬
‫وحيد أو موزعاً على عدة حواسب‪.‬‬

‫‪ 2-7‬اآلفاق المستقبلية‬

‫أوالا‪ :‬جميع االختبارات على أداء بروتوكول الـ‪ OPC‬التي قمنا بها خالل هذا البحث كانت تفترض‬
‫بناء على هذه الفرضية تم‬ ‫ن‬
‫وجود مخدم وحيد مع زبو أو أكثر كونها الحالة األكثر شيوعاً‪ ،‬و ً‬
‫تصميم وبرمجة "أداة اختبار األداء"‪.‬‬
‫مستقبالً يمكن تطوير "أداة اختبار األداء" و السماح لها باالتصال مع أكثر من مخدم للـ‪ OPC‬بنفس‬
‫الوقت وتوظيف ذلك في إجراء اختبارات على أداء بروتوكول الـ‪ OPC‬في شبكات صناعية أكثر‬
‫تعقيداً ‪.‬‬
‫ثاني ا‪ :‬في هذا البحث تم إجراء اختبارات األداء على بروتوكول ‪ OPC‬النافذ إلى البيانات ( ‪OPC‬‬

‫‪ )DA‬كونه هو السائد حتى اآلن في السوق العالمية‪.‬‬


‫مستقبالً‪ ،‬يمكن إجراء اختبارات مشابهة لالختبارات التي تم إجراؤها في هذه الدراسة لكن على‬

‫‪118‬‬
‫إصدار الجيل الثاني من بروتوكول الـ ‪ OPC‬وهو ‪.OPC UA‬‬
‫يمكن القيام بما يلي‪:‬‬

‫اختبار أداء الـ ‪ OPC UA‬في الشبكات المحلية والموزعة ومقارنتها مع أداء ‪OPC‬‬ ‫‪-‬‬
‫‪ DA‬في نفس البيئة‪.‬‬
‫‪ -‬مقارنة أداء ‪ OPC DA‬مع ‪ OPC UA‬من حيث التكلفة وزمن التنفيذ وسهولة العمل‬
‫ومدى االنتشار‪.‬‬

‫‪119‬‬
‫الملحقات‬
‫ُ‬

‫‪124‬‬
‫الملحقات‬

‫‪ - 1‬نواة الـ ‪OPC‬‬

‫برنامج تقدمه مؤسسة الـ‪ ،OPC‬يحوي على جميع المكونات الالزمة للسماح لتطبيقات الـ‪OPC DA‬‬

‫بالعمل‪.‬‬
‫تنصب هذا البرنامج ة‪،‬‬
‫يجب على جميع الحواسب الراغبة بالتعامل مع بروتوكول الـ‪ OPC DA‬أن ّ‬
‫لن تستطيع مخدمات وال زبائن الـ‪ OPC‬العمل بصورة صحيحة بدون تنصيب نواة الـ‪.OPC‬‬
‫هناك إصداران من هذه النواة‪ ،‬اإلصدار األول مخصص ألنظمة التشغيل ‪ 32‬بت‪ ،‬والثاني‬
‫ألنظمة التشغيل ‪ 14‬بت‪.‬‬
‫يمكن الحصول على هذه النواة من موقع مؤسسة الـ‪ OPC‬من خالل الرابط التالي‪:‬‬

‫‪https://opcfoundation.org/developer-tools/developer-kits-classic/core-components‬‬

‫‪121‬‬
‫‪ - 2‬خطوات تفعيل قناة الـ ‪DCOM‬‬

‫المنصبة على حواسب منفصلة‬


‫ّ‬ ‫قناة الـ ‪ DCOM‬حل قدمته أنظمة ويندوز بهدف السماح للتطبيقات‬
‫باالتصال ما بينها‪.‬‬
‫المنصبة على حواسب‬
‫ّ‬ ‫يستخدم بروتوكول الـ‪ OPC‬هذه القناة في تحقيق االتصال بين مخدم و زبائنه‬
‫أخرى‪.‬‬
‫لغايات تتعلق بأمن المعلومات على الحواسب‪ ،‬تأتي هذه القناة غير مفعلة في أنظمة تشغيل ويندوز‪.‬‬
‫إن صعوبة تّفعيل هذه القناة كانت من العيوب التي دعت الباحثين لمحاولة إيجاد بديل أسهل والذي‬
‫تمثل الحقاً بإصدار بروتوكول الـ‪OPC‬ذو البينة الموحدة ‪.OPC UA‬‬
‫هناك طريقتان لضبط هذه القناة‪ ،‬األولى من خالل تفعيل األمان بين المخدم والزبون‪ ،‬العمل بهذه‬
‫الطريقة أكثر أمنا ولكن ضبطها أكثر صعوبة‪ ،‬الطريقة الثانية عن طريق إلغاء األمان في االتصال‬
‫بين المخدم والزبون‪ ،‬هذه الطريقة أقل أمناً ولكن أسهل في الضبط‪ ،‬يمكن استخدامها في الشبكات‬
‫المحلية الموثوقة‪.‬‬
‫في الفقرة التالية سنشرح خطوات تفعيل وضبط القناة وفق الطريقة الثانية‪.‬‬
‫‪-1‬تفعيل حساب المستخدم الضيف (‪:) Guest user account‬‬
‫في نظام التشغيل ويندوز ‪ 7‬وما يليه أصبح المستخدم ‪ Guest user‬يأتي غير مفعل ‪.Disable‬‬

‫بشكل افتراضي‪ ،‬لتفعيله‪ ،‬نتبع المسار التالي‪:‬‬


‫‪Control panel - administrative tool- Local Users and Group – Guest (Right Click)-‬‬
‫‪Properties‬‬

‫الشكل ‪ :01‬تفعيل حساب الـ‪Guest‬‬

‫‪122‬‬
:DCOM ‫تفعيل قناة‬-2
:‫ نتبع المسار التالي‬،‫لتفعيل القناة‬
Control panel - Administrative tool- Component Services- Computers-My Computer
(Right-click) and select Properties-Default Properties tab.
)2( ‫نقوم بتفعيل القناة ونضبط بقية اإلعدادات كما هي هو موضحة بالشكل‬

DCOM ‫ تفعيل قناة‬:2 ‫الشكل‬

‫ منح سماحية النفاذ‬-3


:‫ نتبع المسار التالي‬،‫لتفعيل السماحية‬
Control panel - Administrative tool- Component Services- Computers-My Computer
(Right-click) and select Properties-Com Security tab.

‫ و‬Everyone ‫ ونتأكد أن كل من‬Access Permissions ‫ من الجزء‬Edit Limits ‫نحدد‬


Local Access ‫ كل منهما يعطي سماحية النافذ المحلي والبعيد‬ANONYMOUS LOGON

)3(‫ كما هو موضح بالشكل‬and Remote Access


‫ غير موجودة نقوم من خالل الزر‬ANONYMOUS LOGON ‫ أو‬Everyone ‫في حال كان‬
.‫ بإضافتها‬Add

123
‫الشكل ‪ :03‬منح سماحية النفاذ‬

‫‪-4‬تفعيل وإطالق األذونات‬


‫من نفس النافذة السابقة‪ ،‬نحدد ‪ Edit Limits‬من الجزء ‪Launch and Activation Permissions‬‬

‫يفعل ويطلق سماحية‬


‫ونتأكد أن كل من ‪ Everyone‬و ‪ ANONYMOUS LOGON‬كل منهما ّ‬
‫النافذ المحلي والبعيد كما هو موضح بالشكل(‪.)4‬‬
‫في حال كان ‪ Everyone‬أو ‪ ANONYMOUS LOGON‬غير موجودة نقوم من خالل الزر‬
‫‪ Add‬بإضافتها‪.‬‬

‫الشكل ‪ :04‬تفعيل وإطالق األذونات‬

‫‪124‬‬
‫المراجع‬

[1] OPC Foundation, (Mar 4, 2003), “OPC DA 3.0 Specification”.


[2] OPC Foundation, (July 12, 2003), “OPC XML-DA Specification Version 1.0”.
[3] OPC Foundation, (2010), “Specifications of OPC”.
[4] OPC Foundation, (2009), “Resource Efficiency Testing”.
[5] OPC Foundation, (2009), “OPC Unified Architecture Specification Part 1:
Overview and Concepts”.
[6] OPC Foundation, (August 2008), “OPC UA Specification: Part 1 – Concepts,
Release Candidate Version 1.01.04”.
[7] OPC Foundation, (October 2008),”OPC UA Specification: Part 2 – Security Model,
Release Candidate Version 1.01.53”.
[8] Lieping, Zhang, Zeng Aiqun, and Zhang Yunsheng, (2007),” On remote real-time
communication between MATLAB and PLC based on OPC technology”.
[9] Kepware Technologies, (2009), “Data Exchange Client Help”.
[10] Tony Paine, (2013), “Understanding OPC: Open Connectivity via Open
Standards”.
[11] MATLAB Corporation, (2014), “OPC Toolbox Help”.
[12] Zheng, Zhou Xinmin Tu, (2008), “ Real Time Communication between PC
and S7-200 PLC”.
[13] Mahnke, Wolfgang, Stefan-Helmut Leitner, and Matthias Damm, ( 2009),
“OPC unified architecture”.
[14] Microsoft Corporation , (October 24, 1995), “The Component Object Model
Specification”,
[15] MatriconOPC, (2002), “Introduction to OPC”.
[16] Matrikon OPC, (2007), “Keys To Developing an Embedded UA Server”.
[17] Adriel Michaud, (2007), “Creating Secure OPC Architectures”.
[18] Randy Kondor, (December 2007), “OPC and DCOM 5 things you need to
know”.
[19] Stojan Persin, Boris Tovornik and Nenad Muskinja, )2003(, “OPC-driven
Data Exchange between MATLAB and PLC-controlled System”
[20] Thomas J. Burke, (June 1998), “The Performance and Throughput of OPC”.
[21] OPC Training institute, (2008), “OPC UA: An End User perspective”.
[22] Colin Winchester, Nathan Pocock, (2008), “Understanding OPC: Basic
Overview”.
[23] Cowell, John, (1996), “Object Linking and Embedding (OLE)”.
125
[24] Schwarz, M. H., and J. Boercsoek, (2007), “A survey on OLE for process
control (OPC)”.
[25] Siemens, (2003), “Excel OPC-Automation Client for access to S7-200 with
CP243-1”.
[26] ARC Corporation, (2009), “PcVue SCADA HELP”.
[27] Lange, J., Iwanitz, F., Burke, T, (2010), “OPC From Data Access to Unified
Architecture”.
[28] )2114( ،‫ جامعة دمشق‬،‫ محاضرات في مقرر الشبكات الصناعية‬،‫ مسعود األتاسي‬.‫د‬
[29] https://opcfoundation.org/about/what-is-opc/

[30] https://opcfoundation.org/about/opc-technologies/opc-classic/

[31] https://opcfoundation.org/developer-tools/developer-kits-

classic/automation-wrapper/

[32] https://opcfoundation.org/about/opc-technologies/opc-net-4-0/

[33] https://opcfoundation.org/about/opc-technologies/opc-ua/

[34] http://www.opctechs.com.

[35] https://en.wikipedia.org/wiki/Open_Platform_Communications

[36] https://opcfoundation.org/developer-tools/specifications-classic/data-

access/

121

You might also like