Σ
SDCalc
MellannivåTillämpningar·14 min

Styrdiagram och statistisk processtyrning

Bemästra statistisk processtyrning (SPC) med styrdiagram. Lär dig att ställa in styrgränser med standardavvikelse, tillämpa Western Electric-regler och upptäcka processdrift.

Statistisk processtyrning: Grunden för kvalitet

Styrdiagram utgör hörnstenen i statistisk processtyrning (SPC) och använder standardavvikelse för att övervaka processstabilitet över tid. Dessa kraftfulla verktyg utvecklades av Walter Shewhart vid Bell Labs på 1920-talet och skiljer mellan slumpmässig variation (inneboende i processen) och systematisk variation (som indikerar problem som behöver åtgärdas).

Styrdiagrammens genialitet ligger i deras enkelhet: plotta dina mätningar över tid, lägg till styrgränser baserade på standardavvikelse och håll utkik efter punkter eller mönster som signalerar avvikelser. Denna realtidsövervakning förebygger defekter innan de uppstår, istället för att fånga dem genom inspektion i efterhand.

Modern tillverkning, sjukvård och tjänstesektorn förlitar sig på styrdiagram för att upprätthålla kvalitet. Från halvledartillverkning som kräver nanometerprecision till sjukhusinfektionstal – SPC ger ett universellt ramverk för processförbättring.

Slumpmässig vs systematisk variation

Slumpmässig variation är den naturliga, förväntade variabiliteten i varje process. Systematisk variation indikerar att något har förändrats – en ny operatör, slitet verktyg eller kontaminerat material. Styrdiagram hjälper dig att skilja mellan de två.

Typer av styrdiagram

Olika datatyper kräver olika styrdiagram. Att välja rätt diagram säkerställer korrekt processövervakning:

DiagramtypDatatypAnvändningsområde
X̄-R (X-streck och variationsvidd)Kontinuerlig, delgrupper n≤10Tillverkningsmätningar
X̄-S (X-streck och standardavvikelse)Kontinuerlig, delgrupper n>10Stora batchstickprov
I-MR (Individ-glidande variationsvidd)Individuella mätningarDyra/destruktiva tester
p-diagramAndel defektaGodkänd/underkänd-inspektion
c-diagramAntal defekterDefekter per enhet

För kontinuerliga data (mätningar som längd, vikt, temperatur) är X̄-R-diagrammet vanligast. Man samlar in delgrupper av stickprov, plottar medelvärdet (X̄) i ett diagram och variationsvidden (R) i ett annat. Tillsammans övervakar de både processcentrering och variabilitet.

Beräkning av styrgränser

Styrgränser definierar gränserna för förväntad variation. De sätts vid ±3 standardavvikelser från centerlinjen och fångar 99,73 % av punkterna när processen är under kontroll:

Control Limits

UCL = x̄ + 3σ, CL = x̄, LCL = x̄ - 3σ

För ett X̄-diagram som använder variationsviddmetoden blir formlerna:

X-bar Chart Limits

UCL = X̿ + A₂R̄, LCL = X̿ - A₂R̄

Där X̿ är totalmedelvärdet, R̄ är den genomsnittliga variationsvidden och A₂ är en konstant beroende på delgruppsstorlek (t.ex. A₂ = 0,577 för n=5).

Styrgränser ≠ Specifikationsgränser

Styrgränser beräknas från dina data och återspeglar vad processen faktiskt gör. Specifikationsgränser sätts av kunder/ingenjörer och återspeglar vad processen borde göra. En process kan vara under kontroll men ändå producera delar utanför specifikationen.

Konstanter för styrgränser

nA₂D₃D₄
21,88003,267
31,02302,574
40,72902,282
50,57702,114

Western Electric-regler för att upptäcka problem

En enskild punkt utanför styrgränserna är inte den enda signalen om problem. Western Electric-reglerna upptäcker mer subtila mönster genom att dela in diagrammet i zoner baserade på standardavvikelser:

  • Zon C:Inom 1σ från centerlinjen
  • Zon B:Mellan 1σ och 2σ från center
  • Zon A:Mellan 2σ och 3σ från center

De fyra primära reglerna

1

Regel 1: Enskild punkt

En punkt bortom 3σ (zon A eller utanför). Sannolikheten att detta inträffar naturligt är bara 0,27 %.
2

Regel 2: Serie av 9

9 konsekutiva punkter på samma sida om centerlinjen. Indikerar en förskjutning av processmedelvärdet.
3

Regel 3: Trend av 6

6 konsekutiva punkter med stigande eller sjunkande trend. Antyder processdrift eller verktygsslitage.
4

Regel 4: Zonmönster

2 av 3 konsekutiva punkter i zon A eller utanför (samma sida). Tidig varning om förskjutning.

Identifiering av vanliga mönster

Erfarna utövare lär sig känna igen visuella mönster som indikerar specifika problem:

MönsterUtseendeTrolig orsak
FörskjutningPlötslig nivåförändringNy operatör, materialbatch, utrustningsjustering
TrendGradvis drift uppåt/nedåtVerktygsslitage, temperaturdrift, trötthet
CyklerUpprepat upp/ned-mönsterSkiftbyten, miljöcykler, rotationsscheman
KlungningPunkter klustrar nära centerFelaktiga gränser, avrundade/redigerade data
SkiktningPunkter undviker centerBlandade strömmar, flera maskiner

Python-implementering

Skapa ett X̄-R-styrdiagram med automatisk regelkontroll:

python
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)