دراسة حالة صناعية

ماجد تك S7 — تشغيل مصنع خرسانة من برنامج حديث بدل برنامج من التسعينات.

كان مصنع خلط خرسانة مقيّدًا ببرنامج Visual Basic قديم يتخاطب مع وحدة التحكم (PLC) المتوافقة مع Siemens ببروتوكول رسائل خاص. أعدنا هندسة البروتوكول من التقاطات حيّة، وبنينا عميل مصنع بـ .NET 10 يقرأ بيانات المصنع ويرسل أوامر الإنتاج، وأضفنا فوقه لوحة ويب وواجهة API ولوحة إدارة — الخلّاط يبدأ الآن من برنامجنا.

القطاع
مواد البناء — خرسانة جاهزة
العتاد
وحدة تحكم VIPA Speed7 (فئة S7-300)، مصنع ELBAMATIC
المستخدمون
مشغّلو المصنع، مديرو الإنتاج، الملّاك
الإنجاز
أول خلطة من التطبيق على المصنع الفعلي، أغسطس ٢٠٢٦
.NET 10 WPF AGLink (S7) Blazor ASP.NET Core API SQL Server ترحيل من Access القديم xUnit
MajidTek S7 — التحكم بالإنتاج
ماجد تك S7 — التحكم بالإنتاج مع الوزن والجرعات مباشرة
كيف يعمل

من بايتات غير موثّقة إلى خلّاط يعمل.

لم تكن هناك أي وثائق من المصنّع. كل ما يلي أُثبت على المصنع الفعلي، وكل قاعدة في البروتوكول مثبّتة باختبارات آلية تتحقق من بايتات حقيقية ملتقطة. اللقطات من النظام الفعلي، وبيانات العميل وزبائنه مموّهة.

فك بروتوكول صندوق بريد لم يوثّقه أحد
الهندسة العكسية للبروتوكول

فك بروتوكول صندوق بريد لم يوثّقه أحد

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

  • سبعة أنواع أوامر، كل طول مؤكَّد على المصنع
  • المصافحة: وحدة التحكم تمسح بايتات الأمر عند استهلاك الرسالة
  • سجل حيّ لوحدة التحكم بالأعطال والتحذيرات وقيم الموازين
  • البيانات الحيّة تغلب الكود المفكك — قاعدة تعلّمناها بصعوبة
كل ميزان مباشرة في طريقه إلى الخلّاط
الوزن والجرعات

كل ميزان مباشرة في طريقه إلى الخلّاط

الركام والإسمنت والسيليكا والماء والإضافات والثلج لكلٍّ منها بطاقة حيّة بمستوى التعبئة والوزن والمستهدف والفرق لكل مادة. خطوط متحركة تُظهر ما يتدفق إلى الخلّاط، وتحتها زمن الخلط وبوابة الخلّاط وتصحيح الرطوبة.

  • ستة موازين مع المستهدف مقابل الفعلي لكل مادة
  • خطوط تدفق إلى الخلّاط تتبع الجرعات الفعلية
  • أعطال وحدة التحكم كشريط تنبيه، والإقرار بها بـ F8
  • زمن الخلط وفتحة البوابة وحرارة الخرسانة
التشغيل ينتج خرسانة حقيقية، لذا كل بوابة أمان صريحة
السلامة

التشغيل ينتج خرسانة حقيقية، لذا كل بوابة أمان صريحة

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

  • التشغيل عن بُعد معطّل افتراضيًا؛ تفعيل من ١٥ دقيقة إلى ٨ ساعات
  • رمز خاص لكل مصنع لعميل المصنع
  • تأكيد يعرض كل وزن، ثم إعادة قراءة طازجة
  • وضع معاينة لا يكتب شيئًا إلى وحدة التحكم
مستويات الصوامع لكل مادة
مخزون المواد

مستويات الصوامع لكل مادة

يرسل عميل المصنع القيم الحيّة إلى واجهة REST، وتعرض شاشة المخزون كل صومعة ركام وإسمنت وماء وإضافات بمستواها ورصيدها الجاري. بيانات الإنتاج تصل إلى المتصفح من أي مكان، على SQL Server بحماية JWT.

  • صوامع الركام والإسمنت والماء والإضافات بنظرة واحدة
  • رصيد جارٍ لكل صومعة يُحدَّث من المصنع
  • تنبيه عند توقف إرسال بيانات الإنتاج
  • ترحيل قاعدة Access القديمة إلى SQL Server
الوصفات وأزمنة الآلات، قابلة للتعديل في مكان واحد
الوصفات والأزمنة

الوصفات وأزمنة الآلات، قابلة للتعديل في مكان واحد

تحمل وصفات الخرسانة فئة المقاومة ونسبة الماء للإسمنت وأزمنة الخلط والخلط الجاف ووزن كل ركام وإسمنت وماء وإضافات لكل متر مكعب — مستوردة من النظام القديم. وتُعدَّل أزمنة الوزن والخلّاط التي تستخدمها وحدة التحكم في التطبيق نفسه.

  • وصفات مستوردة من ملف الوصفات القديم
  • الإضافات تُجرَّع كنسبة من وزن الإسمنت
  • أزمنة الوزن لكل مادة: ركام وإسمنت وماء وإضافات وثلج وسيليكا
  • أزمنة بوابة الخلّاط والتفريغ
صمّم تذكرة التسليم المطبوعة بصريًا
تذاكر التسليم

صمّم تذكرة التسليم المطبوعة بصريًا

تطبع المصانع على ورق مطبوع مسبقًا، لذلك يضع مصمّم التذاكر كل حقل — رقم التذكرة والعميل والموقع والخلطة والكميات والشاحنة والسائق وجدول المواد — فوق صورة النموذج الحقيقي بالمليمتر، ويحفظه لكل مصنع.

  • اسحب الحقول على التذكرة وأظهر أو أخفِ كل حقل
  • مساطر بالمليمتر وتكبير وتراجع
  • حجم الورق والخلفية لكل قالب تذكرة
  • يُطبع النص الأسود فقط — النموذج موجود على الورق
dotnet test 56 passed
✓ PutL_matches_the_live_plant_big_endian
✓ Real_EL_start_telegram_decodes_field_for_field
✓ LooksLikeOrder_accepts_a_real_order_and_rejects_everything_else
✓ MailboxReady_accepts_spaces_and_zeros_but_not_a_command
✓ BuildAck_matches_the_captured_EQ_telegram
✓ DosingOffsets_cover_every_weight_channel
… 50 more
التحقق

اختبارات تتحقق من بايتات حقيقية ملتقطة

لا يمكن اختبار الكود الصناعي بالتجربة على المصنع. مُرمّز البروتوكول نقيّ ومغطّى بالكامل: رسالة التشغيل الحقيقية تُفكّ حقلًا حقلًا، والمرمّزات تعيد إنتاج ثمانية أوزان ملتقطة بدقة، وخطآن كلّفا أيامًا لن يعودا أبدًا.

  • مُرمّز نقي بلا اعتماد على وحدة التحكم
  • رسائل ملتقطة مؤرشفة مع ملاحظات مفكّكة
  • نسخة احتياطية من البناء الذي شغّل المصنع بالضبط
  • توثيق تقني من ١٤ صفحة تم تسليمه
1
مصنع فعلي شُغّل من البرنامج الجديد
7
أنواع أوامر وحدة التحكم مفكّكة ومؤكَّدة
56
اختبار آلي، كلها ناجحة
0
وثائق مطلوبة من المصنّع

هل أنت مستعد لإطلاق شيء يستحق الحديث عنه؟

اشرح لنا فكرتك باختصار. سنردّ خلال يوم عمل واحد برأي صريح — هل المشروع مناسب لنا، وما الذي يتطلبه، وما الذي سنبنيه أولًا.

An unhandled error has occurred. Reload 🗙
MajidTek logo MajidTek ماجد تك
جارٍ الاتصال أنت غير متصل بالإنترنت غير متصل متوقف مؤقتًا

جارٍ إعادة الاتصال… ما زلنا نحاول… انقطع الاتصال الجلسة متوقفة مؤقتًا تعذّر استئناف الجلسة

انقطع الاتصال بموقع ماجد تك للحظة. انتظر قليلًا، نعيد الاتصال الآن. المحاولة التالية خلال 0 ث. يمكنك المحاولة الآن. تعذّر الوصول إلى الخادم. تحقق من اتصالك بالإنترنت ثم أعد المحاولة أو حدّث الصفحة. أوقف الخادم هذه الجلسة مؤقتًا لتوفير الموارد. استأنف لتكمل من حيث توقفت. تعذّر استئناف الجلسة. أعد المحاولة أو حدّث الصفحة.

نحافظ على موضعك في الصفحة أثناء إعادة الاتصال.