Acil Stop ile Reset Aynı Anda Geldi: Latch Hangisini Tuttu?
Acil stop ile reset aynı anda basılınca, latch hangisini tuttu? Bir SR latch'in set ve reset'in aynı anda ON olduğu anda neden bir 'öncelik' kuralı gerektiğini, ve çoğu endüstriyel latch'in neden reset'i (güvenli tarafı) kazandırdığını kendi vaka üzerinden anlatıyorum.

Çarşamba, öğleden sonra. Bir “makine aktif” latch’imiz vardı. Acil stop basıldığında latch OFF, reset basıldığında latch ON. Normalde sorunsuzdu. Ama bir gün, operatör acil stop’u baserken, başka biri aynı anda reset’e bastı. İki düğme, aynı anda ON oldu. Latch, hangisini tuttu? Tutmadı — belirsiz kaldı. Ve makine, “aktif” görünüp çalışmaya devam etti. İşte o an, latch’in öncelik kuralıyla tanıştım.
SR Latch: Set ve Reset Aynı Anda ON Olursa
Klasik bir SR latch (set-reset):
// Set (S) ON ise Q = 1, Reset (R) ON ise Q = 0
// Peki S ve R aynı anda ON olursa: Q = ?
Birçok PLC’nin R_S / S_R latch bloklarında, set ve reset aynı anda ON olduğunda, biri kazanır — ve bu, bloğun adıyla belirlenir. S_R (set-reset) bloğunda set kazanır; R_S (reset-set) bloğunda reset kazanır. Yani “öncelik,” bloğun adında yazılıdır.
Ama benim latch’im, bloğun değil, benim yazdığım bir if zinciriydi:
if (#reset_dugme) #makine_aktif := true;
if (#acil_stop) #makine_aktif := false;
İkisi de aynı anda ON oldu. reset önce true yazdı, acil_stop sonra false yazdı. Son yazan kazandı → false. Bu durumda aslında makine OFF oluyordu. Ama if satırlarının sırasını ters yazdığım bir network’te, acil_stop önce, reset sonra çalıştı → true. Makine, aktif kaldı.
Sorun, “latch” değil, sıralamaya bırakılmış bir önceliktir. İki düğme aynı anda basıldığında, sonucun hangi düğmeye ait olması gerektiğini, sen belirlemelisin; “hangi satır altta”ya bırakma.
Önceliği Kodla, Sıralamaya Bırakma
Kural şu: set ve reset aynı anda gelebilir. Hangisinin öncelikli olduğunu, açıkça yaz. Güvenlik sisteminde, reset/stop öncelikli olmalı:
if (#acil_stop) then
#makine_aktif := false; // stop, her zaman kazanır
elsif (#reset_dugme) then
#makine_aktif := true; // reset, yalnızca stop yoksa
end if;
if / elsif yapısı, önceliği kodlar: acil_stop ON ise, reset’e hiç bakılmaz. İki düğme aynı anda basılsa bile, stop kazanır. Makine, güvenli yöne (OFF) çözülür.
Bir de ek: bunu her güvenlik latch’inde yap. Acil stop, güvenlik perdesi, kapak sensörü — hepsinde, “güvenli durum” (OFF, dur, açma) öncelikli olmalı. “Çalışma” durumu, yalnızca güvenlik sinyali yoksa geçerli olmalı. Bu, IEC 61131’in ve güvenlik standardlarının temelidir: belirsizlik, güvenli tarafa çözülür.
O çarşamba, o “aktif kalarak çalışan makine,” bir if / elsif ile gitti. Artık acil stop, reset’le aynı anda gelse bile, stop kazanıyor. Operatör “abi ikisini birden basalım, makine duruyor” dedi. Ben de o an anladım ki, latch’in önceliği, “hangi satır altta”nın tesadüfü değildi; kodu ben yazmalıydım. Güvenlikte, tesadüf yok.
Bir sonraki yazıda, “iki sensör aynı adımı ayarlıyordu, hangisinin kazandığını bilmiyordum” diye anlatıyorum. İki farklı kaynağın aynı çıkışı sürdüğünde, “race condition” (yarış durumu) oluştuğunu ve bunu “tek yazıcı + öncelik” ile nasıl çözdüğümü.