سؤال

نحن بحاجة إلى أخذ العشرات من البروتوكولات المختلفة من أنظمة مثل أنظمة الأمان وأجهزة إنذار الحريق وأنظمة الكاميرات وما إلى ذلك.ودمجها في بروتوكول مشترك واحد.

أود أن يكون هذا خادم مراسلة يمكن للعديد من الأنظمة الاشتراك فيه أو التواصل من خلاله.

  • "برامج تشغيل" الاقتراع وغير الاقتراع (محولات البروتوكول)
  • التعامل مع RS232 / RS485 / برنامج التعاون الفني
  • "برامج تشغيل" قابلة للبرمجة بلغة مُدارة مثل Java أو C#
  • قواعد قدرة المحرك

هل يناسب biztalk هذا؟

هل هناك بدائل مفتوحة المصدر؟

هل هناك طريقة Java/Java EE للقيام بذلك؟

في أحد طرفي النظام سيكون نظام SCADA وفي الطرف الآخر يكون بمثابة خادم وسيط/مراسلة.

سيكون موضع تقدير أي أفكار حول أفضل طريقة للمضي قدما.أعلم أنه سيكون هناك قدر كبير من البرمجة المتضمنة من جانب السائق، ولكن بقدر ما أغريني، فإن بناء النظام بأكمله من الصفر لن يكون مناسبًا.

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

المحلول

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

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

لإضافة بروتوكولات مخصصة جديدة، فإن أبسط طريق هو البناء فوق بروتوكولات مكون مينا الذي يعتني بجميع الشبكات ومعالجة المقابس والخيوط وما إلى ذلك (على سبيل المثال.NIO مقابل BIO وآخرون).

ثم تقوم فقط بتمديده لإضافة برنامج ترميز البروتوكول الخاص بك (كيفية تنظيم/إلغاء تنظيم الرسائل على المقبس مع إمكانية استخدام الإطارات وما إلى ذلك).

ال مكون HL7 مثال على القيام بذلك.أكثر التفاصيل حول كتابة برامج الترميز MINA هنا.

ثم بمجرد حصولك على مكون الجمل الخاص بك (دعنا نسميه foo) يمكنك بعد ذلك الربط من أي بروتوكول إلى أي بروتوكول آخر باستخدام عناوين URI بسيطة لتنفيذ أي من أنماط التكامل المؤسسي مثل جهاز التوجيه القائم على المحتوى, قائمة المستلمين, قسيمة توجيه إلخ

على سبيل المثالفي كود جافا

// route all messages from foo
// to a single queue on JMS
from("foo://somehost:1234").
  to("jms:MyQueue");

// route all messages from foo component
// to a queue using a header
from("foo://somehost:1234").
  recipientList().
    simple("activemq:MyPrefix.${headers.cheese}");

نصائح أخرى

سأتجنب BizTalk لـ SCADA وRS232/RS485 لأنها تتطلب عادةً حلولًا في الوقت الفعلي (أو على الأقل زمن استجابة منخفض).تم تحسين BizTalk لتحقيق إنتاجية عالية، ولكن لديه عيبًا يتمثل في وجود زمن استجابة مرتفع بشكل افتراضي.

يمكنك تعديل BizTalk لتقليل زمن الوصول، ولكن في هذه المرحلة ستجد أنك تتجاوز تقريبًا كل شيء مدمج في BizTalk ومن المحتمل أن يعيقك بدلاً من مساعدتك.

www.livedata.com

إنه باهظ الثمن بعض الشيء ولكنه محرك يعتمد على لغة بايثون ويمكنه استخدام بروتوكول واحد وإصدار بروتوكول آخر، وقد تم إعداده بالفعل لبروتوكولات SCADA متعددة مثل ICCP وmodbus وOPC وDNP خارج الصندوق.ثم يمكنك التحدث بما تريد في اتجاه مجرى النهر.

  • جون

أقترح OpenSCADA.موقع الويب في الوقت الحالي في حالة من الفوضى بعض الشيء، لكن البرنامج قيد الاستخدام النشط وفي التطوير النشط.الهدف الواضح هو إنشاء واجهة مشتركة ومستقلة عن التكنولوجيا لحالات استخدام SCADA (على الرغم من أن الاتجاه في الوقت الحالي موجه بشكل أو بآخر نحو Java [لكننا نجرب أيضًا مع ikvm لإنشاء إصدار .NET]).

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

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