5- محاكاة نظام التحكم في جودة

عرض المشكلة:

تصنع قطعة عن طريق متتابعة من العمليات، كل منها تتبع بدقيقتين للفحص. العملية الأولى تحتاج إلى 20% من القطع ليعاد تصنيعها. العمليتين الثانية والثالثة تحتاج كل منهما إلى 15% و 5% من القطع ليعاد تصنيعها على التوالي. 60% من القطع المعاد تصنيعها تكون تالفه و تنبذ scrapped ، والـ 40% الباقية تحتاج الي إعادة معالجة من العملية التي تم منها الرفض.

صناعة قطعة جديدة يتم في المتوسط كل 30 دقيقة بتوزيع اسي. الزمن للعملية الاولى يعطى بالجدول التالي:

Time For First Process

Frequency                .05 .13 .16 .22 .29 .15

Process time (mins)  10  14  21  32  38  45

العملية الثانية تستغرق 15±6 دقائق وزمن العملية الأخيرة له توزيع طبيعي بمتوسط 24 دقيقة و إنحراف معياري 4 دقائق.

1-    حاكي عمليات التصنيع لـ 100 قطعة مكتملة.

2-    عين الزمن الآزم لذلك وعدد القطع المرفوضة.

عرض البرنامج:

; GPSS World Sample File - QCONTROL.GPS, by Gerard F. Cummings

*****************************************************************

*                                                               *

*           Quality Control Program                             *

*           Time units are in minutes                           *

*****************************************************************

            RMULT        93211     

*  Definitions

Transit     TABLE        M1,100,100,20        ;Transit Time

Process     FUNCTION     RN1,D7

0,0/.05,10/.18,14/.34,21/.56,32/.85,38/1.0,45

*****************************************************************       

            GENERATE     (Exponential(1,0,30))

            ASSIGN       1,FN$Process         ;Process time in P1

Stage1      SEIZE        Machine1

            ADVANCE      P1                   ;Process 1

            RELEASE      Machine1

            ADVANCE      2                    ;Inspection

            TRANSFER     .200,,Rework1        ;20% Need rework

*****************************************************************

Stage2      SEIZE        Machine2

            ADVANCE      15,6                 ;Process 2

            RELEASE      Machine2

            ADVANCE      2                    ;Inspection

            TRANSFER     .150,,Rework2        ;15% Need rework

*****************************************************************

Stage3      SEIZE        Machine3

            ADVANCE      (Normal(1,24,4))     ;Process 3

            RELEASE      Machine3

            ADVANCE      2                    ;Inspection 3

            TRANSFER     .050,,Rework3        ;5% need rework

            TABULATE     Transit              ;Record transit time

            TERMINATE    1

*****************************************************************

Rework1     TRANSFER     .400,,Stage1

            TERMINATE

Rework2     TRANSFER     .400,,Stage2

            TERMINATE

Rework3     TRANSFER     .400,,Stage3

            TERMINATE

وصف النموذج سطرا بسطر:

RMULT

لبدء نواة مولد الأرقام العشوائية رقم 1 . عند الحاجة لإجراء تكرارات للمحاكاة فإننا نغير نواة مولد الأرقام العشوائية فقط.

TABLE

الجدول الإنتقالي  Table Transit سوف يجمع البيانات للمدرج التكراري والذي سيشاهد تفاعليا.

FUNCTION

دالة لغة  GPSS  المسماه  PROCESS  تعطي القيمة (إقرأ من اليسار لليمين) 10, 14, 21, 32, 38,  45بحسب الإحتمالات المعطاة. لاحظ انه في دوال GPSS Functions يجب إستخدام دالة التوزيع التراكمي  Cumulative Distribution Functions لتعيين الإحتمالات.

GENERATE

تصنع قطع جديدة كل 30 دقيقة في المتوسط بتوزيع اسي. أستخدمنا التوزيع الأسي الداخلي للغة GPSS.

ASSIGN

زمن التصنيع للمرحلة الاولى للعمل وضع في العامل الأول parameter number 1 للمتعامل Transaction

SEIZE

العمل او الوظيفة تمتلك أو تنتظر كائن التسهيلة Facility Entity المسمي Machine1

ADVANCE

تبقي الوظيفة Machine1 مشغولة بمقدار الزمن المخزن في العامل الأول parameter 1 للمتعامل الممثل للوظيفة.

 

RELEASE

المتعامل الممثل للوظيفة يترك Machine1 والتي يمكن عندئذ إشغالها بالمتعامل المنتظر إذا وجد.

ADVANCE

القالب  ADVANCE Block يحاكي زمن الفحص.

TRANSFER

قالب TRANSFER Block  سوف يختار بشكل عشوائي 20% من المتعاملين ليذهب إلى القالب المرمز Rework1 . هذا يمثل فشل القطعة الناتجة من Stage1 . الـ 80% من المتعاملين الاخر يستمروا للمرحلة التالية.

 

SEIZE

المتعامل الذي مر من الفحص يتملك او ينتظر التسهيلة Facility Entity المسماة Machine2.

ADVANCE

القالب  ADVANCE Block يحاكي زمن المرحلة الثانية stage 2.

RELEASE

المتعامل الممثل للوظيفة يترك Machine2 والتي يمكن عندئذ إشغالها بالمتعامل المنتظر إذا وجد.

ADVANCE

القالب  ADVANCE Block يحاكي زمن الفحص.

TRANSFER

قالب TRANSFER Block  سوف يختار بشكل عشوائي 15%  من المتعاملين ليذهب إلى القالب المرمز Rework2 . هذا يمثل فشل القطعة الناتجة من Stage2 . الـ 85%  من المتعاملين الاخر يستمروا للمرحلة التالية.

 

SEIZE

المتعامل الذي مر من الفحص يتملك او ينتظر التسهيلة Facility Entity المسماة Machine3.

 

ADVANCE

القالب  ADVANCE Block يحاكي زمن المرحلة الثانية stage 3. الزمن المستغرق موزع طبيعيا.

 

RELEASE

المتعامل الممثل للوظيفة يترك Machine3 والتي يمكن عندئذ إشغالها بالمتعامل المنتظر إذا وجد.

ADVANCE

القالب  ADVANCE Block يحاكي زمن الفحص.

TRANSFER

قالب TRANSFER Block  سوف يختار بشكل عشوائي 5%   من المتعاملين ليذهب إلى القالب المرمز Rework3 . هذا يمثل فشل القطعة الناتجة من stage 3 . الـ 95%   من المتعاملين الاخر يمثلوا القطع المكتملة.

TABULATE

قالب TABULATE Block يضيف زمن الإكمال الى المدرج التكراري الخاص بالجدول المسمى Transit ، تكتب الجداول تلقائيا في التقرير المعياري وتشاهد كمدرجات تكرارية في نوافذ الجداول كل علي حدة.

TERMINATE

قالب TERMINATE Block ينهي المتعامل وينقص عداد الإنهاء. يمكننا محاكاة عدد معين من القطع المكتملة بإستخدام عداد قطع في العامل A (operand A ) من عبارة START statement.

TRANSFER

عندما يفشل متعامل (قطعة) فحص القطع في المرحلة الاولى فإن له إحتمال 40% في ان يعاد إلى المرحلة الاولى. وهذا يمثل قطعة يعاد تصنيعها.

TERMINATE

المتعاملين الآخرين يتم إنهائهم من المحاكاة بدون إنقاص عداد القطع المكملة. وهذا يمثل نبذ scrapping القطع.

TRANSFER

عندما يفشل متعامل (قطعة) فحص القطع في المرحلة الثانية ويرسل الى هذا القالب TRANSFER Block يكون له إحتمال 40% في ان يعاد الى المرحلة الثانية. . وهذا يمثل قطعة يعاد تصنيعها.

TERMINATE

المتعاملين الآخرين يتم إنهائهم من المحاكاة بدون إنقاص عداد القطع المكملة. وهذا يمثل نبذ scrapping القطع.

TRANSFER

عندما يفشل متعامل (قطعة) فحص القطع في المرحلة الثالثة فإن له إحتمال 40% في ان يعاد إلى المرحلة الثالثة. وهذا يمثل قطعة يعاد تصنيعها.

 

TERMINATE

المتعاملين الآخرين يتم إنهائهم من المحاكاة بدون إنقاص عداد القطع المكملة. وهذا يمثل نبذ scrapping القطع.

النموذج منظم في عدة أجزاء. بعد تعريف جدول إنتقالي Transit Table ودالة عملية Process Function نجد انه يوجد ثلاثة أجزاء للنموذج كل منها يمثل عملية تصنيع. كل متعامل يمثل قطعة في احد مراحل التصنيع. وحدات الزمن هي الدقائق. كل خطوة لها إحتمالات فشل، واللتي في هذه الحالة يرسل المتعامل إلى أحد القوالب المرمزة Rework1 أو Rework2 أو Rework3 على التوالي. القطع المعاد تصنيعها لها إحتمال 60% في ان تنبذ وإلا تعيد خطوتها الأخيرة.

إجراء المحاكاة:

في النافذة الرئيسية نختار   File / Openومن صندوق الحوار نختار  QCONTROLونضغط على Open ومن ثم يجب خلق المحاكاة بإختيار  Command / Create Simulation ثم نختار Command / START  في صندوق الحوار بدل 1 بـ 100 ثم إضغط  OK

تنتهي المحاكاة عندما يدخل 100 متعامل Transactions قالب TERMINATE Block وهذا يمثل 100 قطعة مصنعة كاملة. كالمعتاد يكتب تقرير معياري الى الملف QControl.1.1 . هذا التقرير يظهر ايضا بشكل تلقائي في نافذة التقارير.

مناقشة النتائج:

 من زمن الإنتهاء End Time في التقرير المعياري نرى انه استغرق 4153.8 دقائق أو حوالي 69 ساعة لإكمال 100 قطعة. من تعداد دخول القوالب Block entry counts نستطيع إيجاد عدد القطع المرفوضة. العدد الكلي لدخول القوالب Rework1 و Rework2 و Rework3 يبين ان هناك 22 قطعة فشلت في المرحلة الاولى و 14 قطعة فشلت في المرحلة الثانية و 4 قطع فشلت في المرحلة الثالثة. هذا يشكل 40 قطعة فاشلة منها 21 (11+7+3) قطعة نبذت.

داخل المحاكاة:

لنستكشف حالة نهاية المحاكاة التي تولد عندها التقرير المعياري السابق. لنستخدم الأمر SHOW Command للنظر إلى بعض الصفات العددية للنظام System Numeric Attributes. اولا لنتأكد من زمن نهاية المحاكاة لنختار  Command / SHOW وفي صندوق الحوار أكتب  AC1 ثم اضغط  OKفي سطر الحالة Status Line سنشاهد ان الزمن الحالي مساويا زمن نهاية المحاكاة في التقرير السابق. لنختار  Command / SHOW وفي صندوق الحوار أكتب  N$Rework1 ثم اضغط  OK ، هذه القيمة (22) هو عدد القطع التي فشلت في المرحلة الاولى.

لنشاهد بعض نوافذ الرسومات، لنختار

Window / Simulation Window / Facilities Window

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

الجدول Table Transit هو مدرج تكراري لأزمنة الإكمال، لننظر إليه بإختيار

 Window / Simulation Window / Table Window

وفي صندوق الحوار سنرى كلمة Transit فقط حيث انه يوجد جدول واحد في المحاكاة نضغط على  OK

برغم ان متوسط زمن الإنهاء كان 321 دقيقة الا ان بعض القطع اخذ اكثر من 800 دقيقة. الآن أقفل نوافذ التسهيلات والجداول.

اننظر الآن أين القطع؟ نافذة القوالب سوف تعطينا هذه المعلومات. لنختار

 Window / Simulation Window / Blocks Window

لاحظ انه توجد 30 قطعة تنتظر Machine1 في قالب ASSIGN . سوف نجلري المحاكاة من جديد ولنشاهدها من خلال بعض نوافذ الرسومات. لنبدأ بفتح نافذة العبارات ونعبئها ببعض القيم التي نرغب في ملاحظتها. لنبقي نافذة القوالب مفتوحه لكي نشاهد إنسياب المحاكاة ونفتح نافذة التعابير لمشاهدت بعض القيم المختارة بينما تجرى المحاكاة. لنختار

 Window / Simulation Window / Expressions Window

في صندوق تحرير العبارات وفي خانة الرمز أكتب   Rework1 وفي خانة التعبير  أكتب  N$Rework1 عندما نشاهد النافذة سوف نرى كم قطعة ارسلت لإعادة تصنيعها لاحظ ان جزء منها سوف ينبذ. اضغط على  View و على   Memorize ثم انظر الى إعادة التصنيع بعد المعالجة بالآلة الثانية. في نافذة تحرير العبارات وفي صندوق الحوار استبدل القيمة الحلية في خانة الرمز بالقيمة   Rework2 وفي خانة التعبير استبدل القيمة الحالية بـ  N$Rework2 أخيرا أنظر الى إعادة التصنيع بعد المعالجة بالآلة الثالثة في نافذة العبارات كالسابق بدل الرمز بـ   Rework3 والتعبير بـ  N$Rework3 ثم اضغط على  View و  Memorize. هذا سيمكننا من مشاهدت القطع الفاشلة، ايضا في نافذة القوالب سوف نشاهد المتعاملين الفاشلين الداخلين لقوالب Rework1 و  Rework2 و  Rework3

لننظر الى رقم القطعة للمتعامل النشط، في صندوق الحوار وفي خانة الرمز أكتب  Part number وفي خانة العبارات أكتب XN1 اضغط  View  و   Memorize ثم   OK

لنتخلص من كل المتعاملين ونصفر العدادات الإحصائية. من القائمة الرئيسية نختار  Command / Clear و  OK . القيمة Part no. لم تصفر لأنها لا تتأثر بلأمر Clear سوف تتغير بمجرد بدء المحاكاة. حرك افذتي القوالب والتعبير بحيث تظهر معا. نختار  Command / START وبدل 1 بـ 50 ثم   OK

لاحظ نافذتي القوالب والتعبير. أكتب ملاحظاتك؟

الآن اقفل نافذة التعابير. كما لاحظت فإن معظم القطع لم تفشل. دعنا نوقف المحاكاة عند حدوث فشل لقطعة في المرحلة الأولى. أوقف المحاكاة Halt (Ctrl+Alt+H) وفي نافذة القوالب نختار View / Entity Details لكي نحول الي المشاهدة المختصرة، ضع مؤشر الفارة علي القالب المرمز Rework1 وأضغط عليه فيصبح مختارا (يتغير لونه) ثم اضغط على Place في سطر الأدوات. إستمر المحاكاة بالضغط علي (Ctrl+Alt+C) . ستتوقف المحاكاة عند فشل متعامل عند Rework1 الآن اجرى المحاكاة خطوة خطوة بالضغط على (Ctrl+Alt+1) مرتين. الآن قم بالتجربة على النموذج بنفسك. جرب بدائل اخرى ودون ملاحظاتك؟