أفضل إطار أو بنية نظام لتصميم وبرمجة نظام القياس عن بُعد / SCADA [مغلق

StackOverflow https://stackoverflow.com/questions/4611111

سؤال

انا سألت سؤال حول كتاب جيد لهذا الموضوع.

لا تحصل على العديد من الردود ، لذلك ربما لا توجد كتب جيدة (على الرغم من أنني أجد ذلك غريبًا ؛ يجب أن أذهب إلى Amazon عن نفسي).

في غياب كتاب ، ربما يكون هناك إطار جيد ، أو بعض عناوين URL الجيدة ، أو مجرد نصيحة عامة.

كما سألت في السؤال الآخر:

أنا أبحث في العديد من المشاريع ، كل ذلك بنفس الوظيفة تقريبًا.

تقوم بعض الأدوات بجمع بعض البيانات (أو تتحكم في بعض الوظائف). إنهم يتواصلون عبر الإنترنت (Ethernet/WiFi/GPRS/Satellite) مع خادم قاعدة بيانات يخزن القياسات ويوفر وسيلة تعتمد على المتصفح للاستعلام عن البيانات ، وإنتاج التقارير ، وما إلى ذلك (وربما يتيح أيضًا التحكم في المعدات البعيدة).

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

من أجل "كتاب" ، يرجى استبدال "إطار عمل ، بعض عناوين URL الجيدة ، أو مجرد نصيحة عامة".

هذا نمط نظام شائع جدا. من يمكنه تقديم المشورة؟

هل كانت مفيدة؟

المحلول

لقد كتبت نظام SCADA كامل (باستثناء أجهزة الأجهزة المخصصة). تم تصميم النظام ليكون عامًا للسماح بإنشاء نماذج جديدة وأدوات وجمع البيانات - لم يتم كتابتها مثل العديد من أنظمة SCADA لشركة/مصنع فردي ولكن تستخدم دوليا لآلاف الشركات/النباتات.

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

لم أعد مع تلك الشركة ، ومع ذلك ، ما زالوا يستخدمون برامجي حصريًا وتركت بشروط ممتازة. سأكون سعيدًا بالإجابة على أي أسئلة عامة لديك وللمساعدة في توجيهك في الاتجاه الصحيح.

بنية النظام

فيما يلي نظرة عامة رفيعة المستوى لما يتكون منه النظام من:

  • الأجهزة الخلوية المخصصة التي لديها مدخلات عامة لاستيعاب أدوات متعددة من أنواع مختلفة (التناظرية ، الرقمية ، الضغط ، amperage ، عوامات ، إلخ)
  • تم إرسال حزم UDP/TCP للتنسيق المخصص بواسطة الوحدات عبر شبكة الخلايا (GPRS) إلى خوادمنا (مشغل برامج وندوز 2003 R2). تم إرسال المعلومات بانتظام لتقارير ، وعلى تغييرات الحالة القابلة للتخصيص التي يمكن برمجتها على الجهاز أو عبر الإنترنت (تم إرسال التكوين عبر شبكة الخلايا).
  • مخصص متعدد الخيوط .صافي التطبيق باستخدام مستمعي TCP/UDP الذين أمسكوا بالحزم الواردة (عدة مئات الألف في اليوم), ، فك الرؤوس المخصصة ، وتوجيه الحزم دون مزيد من التفسير إلى قاعدة البيانات الصحيحة (بعض العملاء يتطلبون نظامهم المستقل)
  • أ Microsoft SQL 2005 قاعدة البيانات التي كانت بمثابة الدماغ للنظام بأكمله. تم تفسير الحزم باستخدام وظائف CLR وتشغيل الإنذارات تلقائيًا (كما تم تكوينه), ، التقارير المترجمة ، وحافظت على تاريخ كامل
  • عادة .صافي تطبيق للتعامل مع التنبيهات عن طريق تقديم المكالمات الهاتفية ، وإرسال رسائل الرسائل القصيرة ، وإرسال رسائل البريد الإلكتروني. تم التعامل مع منطق الهاتف بواسطة بطاقة الحوار Intel عبر الخطوط التناظرية باستخدام مزيج من المطالبات المسجلة ونص إلى كلام.
  • 3 ASP.NET المواقع:
    • مواجهة العميل التي سمحت لهم بإدارة حساباتهم/مستخدميهم الفرعيين ، وتتبع التنبيهات ، وتكوين الوحدات والتنبيهات ، وبيانات الرسم البياني ، وأجهزة الخريطة ، وتقارير التصدير ، إلخ.
    • موقع المبيعات الذي سمح بتوزيع المواد لأفراد المبيعات ، وتتبع الأجهزة الفردية ، وتقارير صحة الجهاز ، إلخ.
    • موقع الإدارة الداخلية التي سمحت بإنشاء حسابات العملاء ، وتكوين/بناء الوحدات ، وجميع الميزات الإدارية الأخرى كما هو مطلوب.
  • كان هناك أيضًا نظام مراقبة داخلي مخصص للتحقق من صحة النظام وتنبيه الفنيين من المشاكل حسب الضرورة لأن النظام يحتاج إلى 24/7.
  • بالإضافة إلى ذلك ، أنشأنا تطبيق iOS, ، أ موقع الجوال, وخدمة ويب مخصصة/عميل (API) للسماح لاسترجاع بيانات العميل مباشرة من قبل العملاء للسماح لهم بدمج حلنا مع الحالي (عادة مخصص) أنظمة SCADA.

تلك هي المكونات التي استخدمناها وعملوا. القيام بذلك مرة أخرى سأغير بعض الأشياء. سأستخدم Windows Server 2008 R2, SQL 2008 R2, وبدلاً من بطاقة حوار ، أود استخدام Microsoft أخبرني باستخدام VoIP. سأستخدم أيضًا Silverlight بدلا من ASP.NET. أنا حقًا أحب ASP.NET ، لكن Silverlight يمكن أن تقدم عرضًا تقديميًا أفضل بكثير ويمكن استخدامه خارج المتصفح حسب الضرورة - طلب مشترك من مشغلي SCADA.

جميع المواقع المستخدمة مكونات الطرف الثالث بحيث لا يلزم كتابة الرسم ، والجداول من الصفر. هناك بعض المكونات المحددة SCADA (إلى حد كبير مقر جافا) في الخارج. ومع ذلك ، وجدنا أن معظمهم يكونون خامين أو قبيحين أو محددين للغاية لاستخدامه في نظامنا العام (باهظة الثمن أيضًا! كان من الأسهل وأكثر مرونة تخصيص حزمة المقياس/الرسم "لصنع" خاص بنا).

كما ذكر، كان دماغ النظام قاعدة البيانات. تم ذلك لأن Microsoft SQL هو منتج رائع ومدعوم جيدًا مصمم للأوقات الصعود الشديدة مع خيارات النسخ الاحتياطي والأداء الرائع. لقد تأثرنا أيضًا حقًا بـ .NET CLR تكامل كان ذلك ممكنًا للسماح بتشغيل رمز .NET المخصص الخاص بنا كجزء من هذه العملية. جاءت الوحدات التي كنا ندعمها في مجموعة متنوعة من النماذج ويمكن تكوينها لاستخدام أي مجموعة من الأدوات ، وبالتالي فإن الحفاظ على مرونة قاعدة البيانات كان مفتاحًا. استخدمنا الكثير من التطبيع!

الشيء الوحيد الذي ساعد حقًا هو الاستخدام CTEs العودية لتزوير وجود البيانات عندما كانت القيم لا تزال الافتراضي. لقد فعلنا ذلك لتوفير المساحة في قاعدة البيانات ، ولكن هذا مكّننا أيضًا من تقديم طبقة من التجريد في قاعدة البيانات التي سمحت للاستعلامات بأن تكون مرنة أيضًا.

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top