Konveyör Adım Mantığı: Sensör, Kaldırıcı ve 'Ürün Geldi'
Komşu fabrikadaki 20 metrelik bant, 120 satırlık bir S7 programıydı. Ürün S3'ten geçerken sayacın neden 47'ye fırladığını, P komutunun tek taramada neden 1 olduğunu ve FULL lambası yanınca bandın neden durduğunu kendi saha vakamla anlatıyorum.

Antalya’da bir gıda fabrikası. Paketleme hattının sonunda 20 metrelik bir konveyör bant vardı. Bandın üzerinde üç indüktif sensör, bir hidrolik kaldırıcı ve bir ayırıcı palet. İşin özü basitti: ürün S2’den geçince kaldırıcı kalksın, ürünü yukarı itip ayırıcıya bıraksın; ürün S3’ten geçince sayaç artsın, ayırıcı 1 saniye palet alsın.
Bu iş, kağıt üzerinde beş satırlık mantıktı. Sahada, bir yaz yazımı, iki gece devreye alma ve bir “sayaç neden 47?” tartışması aldı.
Sensör Saniyelerce 1 Kalır, Sayaç Yüzlerce Kez Sayar
İlk taslakta — aslında benim ilk taslağım — sayaç, S3 sensörüne doğrudan bağlanmıştı: S3 = 1 ise sayaç +1. Bandı başlattık. İlk ürün geçti. Sayaç: 1. İkinci ürün. Sayaç: 3. Üçüncü. Sayaç: 8.
Operatör: “Sayacı sıfırlayın, bir şey bozuk.”
Bozuk olan sensör değildi. Sensör, ürünün altında 1.5 saniye boyunca 1 kaldı. PLC, 10 ms’de bir tarama yapıyordu. 1.5 saniye = 150 tarama. Sayaç, her taramada +1 yapıyordu. 150’nin bir kısmı, “ürün hâlâ sensörde” diye sayılıyordu.
Çözüm, P (positive edge) komutu. P, adresin 0’dan 1’e geçtiği tek taramada 1 olur; sonraki taramada, adres hâlâ 1 olsa bile, P = 0. Sayaç, P’nin 1 olduğu o tek taramada +1 yapar. Ürün, sensörün altında bir saniye de kalsa, bir buçuk saniye de, tam bir kez sayılır.
Bu, sıralı kontrolların kalp ritmidir. Her “olay” — ürün geçişi, buton tiki, seviye bandı aşımı — bir kenardır, bir seviye değil. Kenarı yakalamazsanız, olayı sayarsınız; seviyeyi yakalarsanız, olayı tarama adedine çevirirsiniz.
Kaldırıcı Neden Bir Latch, Bir Bobin Değil?
Kaldırıcı, hidrolik. Açılışı 0.3 saniye, kapanışı 0.5 saniye. Ürün S2’den geçerken kaldırıcı kalkmalı, ürünü itmeli, ve PT kadar yukarıda kalmalı — ürün, kaldırıcının üzerinden ayırıcıya düşsün.
Burada iki karar var. Birincisi: kaldırıcı bobini, S2’ye doğrudan bağlı olamaz. S2, 0.45 saniyelik bir bölge. Kaldırıcı, o 0.45 saniyede kalkıp kapansa, ürün hâlâ kaldırıcının altındayken palet kapanır. Kaldırıcı, S2 kenarıyla bir latch (M bitini S komutuyla set) yapar; TON zamanlayıcı, PT kadar sayar; süre dolunca latch R ile düşer. Kaldırıcı bobini = latch VE (süre dolmadı).
İkincisi: PT, sabit değildir. Hattın hızı değişir; bant hızlıysa kaldırıcı daha uzun kalmalı, yavaşsa kısa. PT, bir MW kelimesinde tutulur; operatör HMI’den kaydırır. TON, her taramada o kelimeyi canlı okur.
FULL: Bant Neden Kendi Kendine Durur?
Bandın sonunda bir fotohücre var. Ürün çıkışa ulaşınca, hücre 1 olur ve 1 saniye kalır (latch). Bu 1 saniyede bant durur. Neden? Çünkü çıkış istasyonu — paletleme robotu — ürünün üstünden geçene kadar yeni ürün koyamaz. Yeni ürün koyalım, robotun kolu ürünle çarpışsın.
FULL lambası, operatöre “çıkış dolu, bant durdu” der. Bant, FULL = 1 iken çalışmaz: BANT = RUN VE (FULL değil). Bu, program tarafında bir kilit. Ama asıl korunma, süreç tarafında: ürün çıkışa ulaşmadıkça, yeni ürün spawn olmaz. Program bantı durdurur; süreç, dolu istasyona yeni ürün basmaz. İkisi birlikte, “istasyon taşması”nı iki kattan engeller.
120 Satır, Bir Gün
Program, 10 network. RUN latch, BANT kilidi, S2 kenarı, TON, latch düşürme, kaldırıcı bobini, S3 kenarı, sayaç, ayırıcı TP, lambalar. Her network bir görev. 120 satır.
Devreye alma, bir gün. Ertesi sabah, operatör sayacı sordu: “Gece 412 ürün geçti, sayaç 412.” Ben o gece, 47’ye fırlayan sayaçla, 412’ye oturan sayaç arasındaki farkı biliyordum. Aradaki fark, beş satırlık bir P komutu ve bir gecelik bir kavgaydı.
Bu hattı, kendi parmaklarınızla çalıştırın: sensör olaylarını, kaldırıcı latch’ını, sayaç darbelerini ve FULL kilitlerini kendi gözünüzle görün — Konveyör Dizisi Simülatörü. Ürün S2’den geçerken kaldırıcının kalktığını, S3’ten geçerken sayacın tek bir tık attığını, ve FULL yanınca bandın durduğunu izleyin.
O fabrikada, operatör bana bir şey sordu: “Sensör, ürünün altında neden 1.5 saniye kalıyor? 0.45 saniyelik bir bölge değil mi?”
Dedim ki, “Bölge 0.45 saniyelik. Ama ürün, sensörün üzerinden geçiyor; sensör, ürünün gölgesini ölçüyor. Ürün 30 cm, sensörün algılama alanı 15 cm. Ürünün gölgesi, sensörün üzerinde 1.5 saniye kalır.”
Bu, P komutunun var olma sebebi. Sensör, ürünün gölgesini ölçer; P, gölgenin baştaki o tek anını ölçer.