בקרת תהליכים סטטיסטית: הבסיס לאיכות
תרשימי בקרה הם אבן הפינה של בקרת תהליכים סטטיסטית (SPC), המשתמשים בסטיית תקן כדי לנטר את יציבות התהליך לאורך זמן. פותחו על ידי וולטר שוהארט במעבדות בל בשנות ה-20, כלים רבי עוצמה אלה מבדילים בין שונות מסיבה שגרתית (טבועה בתהליך) לבין שונות מסיבה מיוחדת (המצביעה על בעיות הדורשות טיפול).
הגאונות של תרשימי בקרה טמונה בפשטותם: סרטטו את המדידות שלכם לאורך זמן, הוסיפו גבולות בקרה המבוססים על סטיית תקן, ועקבו אחר נקודות או דפוסים המסמנים בעיה. ניטור בזמן אמת זה מונע פגמים לפני שהם מתרחשים, במקום לתפוס אותם באמצעות בדיקה בדיעבד.
ייצור מודרני, שירותי בריאות ותעשיות שירות מסתמכים על תרשימי בקרה לשמירה על איכות. מייצור מוליכים למחצה הדורש דיוק בסקאלת ננומטר ועד לשיעורי זיהום בבתי חולים, SPC מספקת מסגרת אוניברסלית לשיפור תהליכים.
סיבה שגרתית לעומת סיבה מיוחדת
סוגי תרשימי בקרה
סוגי נתונים שונים דורשים תרשימי בקרה שונים. בחירת התרשים הנכון מבטיחה ניטור מדויק של התהליך:
| סוג תרשים | סוג נתונים | שימוש |
|---|---|---|
| X̄-R (ממוצע וטווח) | רציפים, תת-קבוצות n≤10 | מדידות ייצור |
| X̄-S (ממוצע וסט“ת) | רציפים, תת-קבוצות n>10 | דגימות אצוות גדולות |
| I-MR (פרטני-טווח נע) | מדידות בודדות | בדיקות יקרות/הרסניות |
| תרשים p | שיעור פגומים | בדיקת עובר/נכשל |
| תרשים c | ספירת פגמים | פגמים ליחידה |
לנתונים רציפים (מדידות כמו אורך, משקל, טמפרטורה), תרשים X̄-R הוא הנפוץ ביותר. אוספים תת-קבוצות של דגימות, מסרטטים את הממוצע (X̄) על תרשים אחד ואת הטווח (R) על תרשים אחר. יחד, הם מנטרים הן את מיקום התהליך והן את השונות שלו.
חישוב גבולות בקרה
גבולות הבקרה מגדירים את תחום השונות הצפויה. הם מוגדרים ב-±3 סטיות תקן מקו המרכז, ולוכדים 99.73% מהנקודות כאשר התהליך תחת שליטה:
Control Limits
לתרשים X̄ בשיטת הטווח, הנוסחאות הן:
X-bar Chart Limits
כאשר X̿ הוא הממוצע הכללי, R̄ הוא הטווח הממוצע, ו-A₂ הוא קבוע התלוי בגודל תת-הקבוצה (לדוגמה, A₂ = 0.577 עבור n=5).
גבולות בקרה ≠ גבולות מפרט
קבועי גבולות בקרה
| n | A₂ | D₃ | D₄ |
|---|---|---|---|
| 2 | 1.880 | 0 | 3.267 |
| 3 | 1.023 | 0 | 2.574 |
| 4 | 0.729 | 0 | 2.282 |
| 5 | 0.577 | 0 | 2.114 |
כללי ווסטרן אלקטריק לזיהוי בעיות
נקודה בודדת מחוץ לגבולות הבקרה אינה האות היחיד לבעיה. כללי ווסטרן אלקטריק מזהים דפוסים עדינים יותר על ידי חלוקת התרשים לאזורים המבוססים על סטיות תקן:
- אזור C:בתוך 1σ מקו המרכז
- אזור B:בין 1σ ל-2σ מהמרכז
- אזור A:בין 2σ ל-3σ מהמרכז
ארבעת הכללים העיקריים
כלל 1: נקודה בודדת
כלל 2: רצף של 9
כלל 3: מגמה של 6
כלל 4: דפוס אזורים
זיהוי דפוסים נפוצים
מומחים מנוסים לומדים לזהות דפוסים חזותיים המצביעים על בעיות ספציפיות:
| דפוס | מראה | סיבה סבירה |
|---|---|---|
| הסטה | שינוי רמה פתאומי | מפעיל חדש, אצוות חומר, כיוון ציוד |
| מגמה | סחף הדרגתי למעלה/למטה | בלאי כלי, סחף טמפרטורה, עייפות |
| מחזוריות | דפוס חוזר למעלה/למטה | החלפת משמרות, מחזורים סביבתיים, לוח רוטציה |
| ריכוז | נקודות מתקבצות ליד המרכז | גבולות שגויים, נתונים מעוגלים/ערוכים |
| ריבוד | נקודות נמנעות מהמרכז | זרמים מעורבים, מכונות מרובות |
מימוש ב-Python
יצירת תרשים בקרה X̄-R עם בדיקת כללים אוטומטית:
import numpy as np
import matplotlib.pyplot as plt
def create_xbar_chart(data, subgroup_size=5):
"""Create X-bar control chart with control limits."""
# Reshape data into subgroups
n_subgroups = len(data) // subgroup_size
subgroups = data[:n_subgroups * subgroup_size].reshape(n_subgroups, subgroup_size)
# Calculate subgroup means and ranges
xbar = subgroups.mean(axis=1)
R = subgroups.max(axis=1) - subgroups.min(axis=1)
# Control chart constants (for n=5)
A2 = 0.577
D3, D4 = 0, 2.114
# Calculate control limits
xbar_bar = xbar.mean()
R_bar = R.mean()
UCL = xbar_bar + A2 * R_bar
LCL = xbar_bar - A2 * R_bar
# Check for out-of-control points
ooc = (xbar > UCL) | (xbar < LCL)
# Plot
plt.figure(figsize=(12, 5))
plt.plot(xbar, 'b-o', markersize=4)
plt.axhline(xbar_bar, color='g', linestyle='-', label='CL')
plt.axhline(UCL, color='r', linestyle='--', label='UCL')
plt.axhline(LCL, color='r', linestyle='--', label='LCL')
plt.scatter(np.where(ooc)[0], xbar[ooc], color='red', s=100, zorder=5)
plt.xlabel('Subgroup')
plt.ylabel('X-bar')
plt.title('X-bar Control Chart')
plt.legend()
plt.show()
return {'xbar': xbar, 'UCL': UCL, 'LCL': LCL, 'ooc': ooc}
# Example: Monitor a manufacturing process
np.random.seed(42)
# Simulate 100 measurements (20 subgroups of 5)
measurements = np.random.normal(100, 2, 100)
# Add a shift at subgroup 15
measurements[75:] += 3
result = create_xbar_chart(measurements)