OEE'nin nasıl doğru hesaplandığını bilmek, rakamın kendisinden daha önemlidir; çünkü küçük tanım tercihleri sonucu birçok puan oynatabilir. Bu rehber üç faktörü açıklıyor, eksiksiz bir vardiya örneğini adım adım çözüyor, OEE'yi sessizce şişiren hataları sıralıyor ve OEE'yi MQTT üzerinden yayınlanan makine durumu mesajlarından hesaplayan Python kodunu gösteriyor. Sonunda OEE'yi hem elle hem de canlı veriden hesaplayabilecek ve her girdiyi savunabileceksiniz.
OEE Neyi Ölçer?
Toplam Ekipman Etkinliği (OEE), bir makinenin gerçekte ürettiği miktarı, çalışması planlanan sürede üretebileceği miktarla karşılaştırır. Tek bir soruyu yanıtlar: planlanan üretim süresinin ne kadarı ideal hızda sağlam parça üretmekle geçti?
OEE üç kaybı birleştirir:
- Kullanılabilirlik duruşları kapsar: arızalar, ürün değişimleri ve beklemeler.
- Performans hızı kapsar: idealden yavaş çalışma ve duruş olarak kaydedilmeyen kısa duruşlar.
- Kalite hataları kapsar: hurda ve yeniden işleme.
Üç faktörün çarpımı OEE'yi verir. Kullanılabilirliği ve kalitesi mükemmel ama yarı hızda çalışan bir makinenin OEE'si yüzde 50'dir; bu da tam olarak görmek istediğiniz sinyaldir.
OEE Formülü
| Faktör | Formül | Kullandığı veri |
|---|---|---|
| Kullanılabilirlik | Çalışma süresi / Planlanan üretim süresi | Duruş süreleri |
| Performans | (İdeal çevrim süresi x Toplam adet) / Çalışma süresi | Adet ve ideal çevrim süresi |
| Kalite | Sağlam adet / Toplam adet | Sağlam ve red adetleri |
| OEE | Kullanılabilirlik x Performans x Kalite | Üçü birden |
Eşdeğer bir kısayol OEE = (Sağlam adet x İdeal çevrim süresi) / Planlanan üretim süresi formülüdür. Aynı sonucu verir ve hesabınızı kontrol etmek için kullanışlıdır. Yine de üç faktörlü versiyonu hesaplamaya değer, çünkü kayıpların nerede olduğunu size o söyler.
Başlamadan önce sabitlenmesi gereken tanımlar:
- Planlanan üretim süresi, vardiya süresinden molalar ve planlı bakım gibi planlı duruşların çıkarılmasıyla bulunur. Ürün değişimlerinin planlı mı plansız mı sayılacağı bir tesis kararıdır; yalın üretim uygulayıcılarının çoğu, görünür kalmaları için bunları kullanılabilirlik kaybı olarak ele alır.
- Çalışma süresi, planlanan üretim süresinden tüm plansız duruş sürelerinin çıkarılmasıyla bulunur.
- İdeal çevrim süresi, makinenin parçayı güvenilir şekilde üretebileceği en hızlı süredir; genellikle maliyetlendirmede kullanılan standart değil, ekipman tasarımından veya kanıtlanmış en iyi hızdan alınır.
- Toplam adet, sağlam ve reddedilen parçaları içerir.
Çözümlü Örnek: Bir Dolum Makinesinde Tek Vardiya
İki adet 15 dakikalık molası olan sekiz saatlik (480 dakika) bir vardiya alalım.
- Planlanan üretim süresi = 480 - 30 = 450 dakika.
- Vardiya boyunca duruşlar: 25 dakikalık bir ürün değişimi ve 20 dakikalık bir arıza; yani toplam 45 dakika duruş.
- Çalışma süresi = 450 - 45 = 405 dakika.
- İdeal çevrim süresi adet başına 1,0 saniyedir; dolayısıyla ideal hız dakikada 60 adettir.
- Toplam adet = 21.000 adet.
- Red = 420 adet; dolayısıyla sağlam adet = 20.580.
Şimdi faktörler:
- Kullanılabilirlik = 405 / 450 = 0,900 (yüzde 90,0)
- Performans = (1,0 sn x 21.000) / (405 x 60 sn) = 21.000 / 24.300 = 0,864 (yüzde 86,4)
- Kalite = 20.580 / 21.000 = 0,980 (yüzde 98,0)
- OEE = 0,900 x 0,864 x 0,980 = 0,762 (yüzde 76,2)
Kısayolla kontrol edin: (20.580 x 1,0 sn) / (450 x 60 sn) = 20.580 / 27.000 = 0,762. İki yöntem aynı sonucu verir.
Bu, ekibe ne anlatıyor? En büyük tekil kayıp performanstır: 405 dakikalık çalışmada makine, üretebileceğinden 3.300 adet daha az üretmiştir. Bu kayıp, manuel bir kayıtta nadiren görünen mikro duruşlardan ve düşük hızdan oluşur. Ambalaj hattı izleme yazısı, performans kaybının nasıl daha ayrıntılı ayrıştırılacağını gösteriyor.
OEE Hesaplarken Sık Yapılan Hatalar
Bunlar OEE'yi gerçekte olduğundan iyi gösteren veya makineleri karşılaştırılamaz hale getiren hatalardır:
- Yavaş bir ideal çevrim süresi kullanmak. "İdeal" değer pay eklenmiş planlama standardıysa performans yüzde 100'ü aşabilir veya yapay olarak yüksek görünebilir. Gerçek tasarım hızını veya kanıtlanmış en iyi hızı kullanın.
- Ürün değişimlerini hariç tutmak. Her ürün değişimini "planlı" saymak, büyük bir iyileştirme fırsatını görünmez kılar.
- Performansta yalnızca sağlam parçaları saymak. Performans toplam adedi kullanır. Sağlam adedi kullanmak kalite kaybını iki kez sayar.
- OEE yüzdelerinin makineler arasında ortalamasını almak. Küçük bir makine ile büyük bir makine eşit ağırlığa sahip olmamalıdır. Altta yatan süreleri ve adetleri toplayın, sonra hesaplayın.
- Bir hattaki her istasyonda saymak. Bir hat için OEE, son istasyonun çıktısını ve darboğaz makinenin ideal hızını kullanmalıdır.
- Farklı çevrim sürelerine sahip ürünleri karıştırmak. Tüm vardiya için tek bir hız kullanmak yerine ürün başına ideal süreyi (her ürün için adet x ideal çevrim süresi) hesaplayıp toplayın.
Çok ürünlü vardiyalarda kısayol formu karışımları temiz biçimde ele alır: OEE = ürünler üzerinden (sağlam adet x ideal çevrim süresi) toplamı / planlanan üretim süresi.
İdeal Çevrim Süresini Seçmek
İdeal çevrim süresi en çok tartışılan girdidir ve performans üzerinde en büyük etkiye sahiptir. Üç yaygın kaynak vardır:
- Ekipman tedarikçisinden gelen etiket veya tasarım hızı. Dürüsttür, ancak bazen belirli bir ürün için ulaşılamazdır.
- Kanıtlanmış en iyi hız: makinenin o üründe anlamlı bir süre boyunca sürdürdüğü en hızlı çevrim. Pratik ve savunulabilirdir.
- Maliyetlendirme veya planlamadan gelen standart hız. Genellikle pay eklenmiştir ve bu nedenle OEE için yanlış seçimdir.
Tasarım hızını veya kanıtlanmış en iyi hızı seçin, ürün ve makine başına kaydedin ve yalnızca bilinçli bir gözden geçirmeyle değiştirin. Bu tür ana verileri makine başına bir retained MQTT mesajında tuttuğunuzda (örneğin ConnectMQ broker'ınızda bir config topic'i), her hesaplama servisi ve pano aynı değeri okur ve bir değişiklik herkese aynı anda görünür.
MQTT Makine Verisinden OEE Nasıl Hesaplanır?
Elle hesaplama bir eğitim oturumu için uygundur, ancak pratikte OEE makine sinyallerinden gelmelidir. Tipik bir kurulum, makine başına iki tür mesajı bir MQTT broker'a yayınlar:
connectmq/demo/<your-id>/plant1/line2/filler/state {"state": "RUNNING", "ts": 1792130400}
connectmq/demo/<your-id>/plant1/line2/filler/counts {"total": 21000, "reject": 420, "ts": 1792159200}
Durum mesajları her değişimde yayınlanır; adetler ise vardiya için kümülatiftir ve periyodik olarak yayınlanır. Aşağıdaki fonksiyon, durum olaylarının bir listesinden ve başlangıç ile bitiş adetlerinden bir zaman penceresi için OEE hesaplar. PLANNED_STOP durumunu planlanan süreden hariç tutar ve çalışma dışındaki diğer tüm durumları duruş olarak ele alır.
from dataclasses import dataclass
@dataclass
class StateEvent:
ts: float # unix saniyesi
state: str # RUNNING, DOWN, IDLE, SETUP, PLANNED_STOP
def calculate_oee(events, window_start, window_end, total_count, reject_count, ideal_cycle_s):
"""Return availability, performance, quality and OEE for one window."""
events = sorted(events, key=lambda e: e.ts)
planned_stop = 0.0
run_time = 0.0
for i, ev in enumerate(events):
start = max(ev.ts, window_start)
end = events[i + 1].ts if i + 1 < len(events) else window_end
end = min(end, window_end)
if end <= start:
continue
duration = end - start
if ev.state == "PLANNED_STOP":
planned_stop += duration
elif ev.state == "RUNNING":
run_time += duration
planned_time = (window_end - window_start) - planned_stop
if planned_time <= 0 or run_time <= 0 or total_count <= 0:
return {"availability": 0.0, "performance": 0.0, "quality": 0.0, "oee": 0.0}
availability = run_time / planned_time
performance = min((ideal_cycle_s * total_count) / run_time, 1.0)
quality = (total_count - reject_count) / total_count
return {
"availability": round(availability, 4),
"performance": round(performance, 4),
"quality": round(quality, 4),
"oee": round(availability * performance * quality, 4),
}
if __name__ == "__main__":
t0 = 0
shift = [
StateEvent(t0, "RUNNING"),
StateEvent(t0 + 120 * 60, "PLANNED_STOP"), # mola
StateEvent(t0 + 135 * 60, "SETUP"), # ürün değişimi 25 dk
StateEvent(t0 + 160 * 60, "RUNNING"),
StateEvent(t0 + 300 * 60, "PLANNED_STOP"), # mola
StateEvent(t0 + 315 * 60, "RUNNING"),
StateEvent(t0 + 400 * 60, "DOWN"), # arıza 20 dk
StateEvent(t0 + 420 * 60, "RUNNING"),
]
print(calculate_oee(shift, t0, t0 + 480 * 60, 21000, 420, 1.0))
Çalıştırdığınızda çözümlü örneği yeniden üretir: kullanılabilirlik 0.9, performans 0.8642, kalite 0.98, OEE 0.7622. Performanstaki min(..., 1.0) sınırına dikkat edin. Bu sınıra düzenli olarak takılıyorsanız ideal çevrim süresi yanlıştır; sınıra güvenmek yerine ana veriyi düzeltin.
Bunu canlı bir rakama dönüştürmek için durum ve adet topic'lerine abone olun, mevcut vardiyanın olaylarını bellekte tutun ve her dakika yeniden hesaplayın. Gerçek zamanlı OEE izleme eğitimi tam olarak bu servisi kuruyor; OEE ve TEEP karşılaştırması ise planlanan süre yerine takvim süresine göre ölçtüğünüzde neyin değiştiğini açıklıyor.
Gerçek Bir Broker Üzerinde Denemek
Mesaj akışını hiçbir donanım olmadan broker.connectmq.com adresindeki ücretsiz herkese açık MQTT broker ile test edebilirsiniz. Bir durum değişikliğini elle yayınlayın:
mosquitto_pub -h broker.connectmq.com -p 1883 -i oee-test-h4v7 -t "connectmq/demo/h4v7/plant1/line2/filler/state" -m '{"state":"RUNNING","ts":1792130400}' -r
Herkese açık alanın herkes tarafından okunabildiğini unutmayın. Gerçek üretim verisi için ConnectMQ, kimlik bilgileri, TLS ve topic'leri canlı izleyebileceğiniz bir portal içeren özel bir yönetilen MQTT broker sunar. OEE'nin diğer tesis metrikleriyle nasıl bir araya geldiğini görmek için akıllı üretim rehberine bakın.
ConnectMQ ile Başlayın
Kredi kartı olmadan app.connectmq.com adresinde ücretsiz bir Serverless broker oluşturun, makine durumlarınızı ve adetlerinizi yayınlayın ve OEE'yi vardiya sonu tahminleri yerine gerçek veriden hesaplayın.
Sık Sorulan Sorular
İyi bir OEE puanı nedir?
Bu, prosese ve girdileri ne kadar katı tanımladığınıza bağlıdır. OEE'yi genel kıyaslama değerleriyle karşılaştırmak yerine, sabit tanımlarla aynı makinedeki iyileşmeyi takip etmek için kullanın.
Performans yüzde 100'den yüksek olabilir mi?
İdeal çevrim süresi doğruysa olamaz. Yüzde 100'ün üzerindeki bir performans, ideal çevrim süresinin fazla yavaş olduğu ve düzeltilmesi gerektiği anlamına gelir.
Ürün değişimleri kullanılabilirlikten düşülmeli mi?
İyileştirme programlarının çoğu, kurulum süresi azaltma çalışmalarının görünür kalması için bunları kullanılabilirlik kaybı olarak dahil eder. Neyi seçerseniz seçin, makineler ve vardiyalar arasında tutarlı şekilde uygulayın.
Bütün bir hat için OEE nasıl hesaplanır?
Son istasyonun çıktı adedini, darboğaz makinenin ideal hızını ve hat seviyesindeki duruş süresini kullanın. Tek tek makinelerin OEE değerlerinin ortalamasını almayın.



