Bilgi Kaynağı
Programlama İpucu
Programlama İpucu kategorisindeki teknik yazılar.

AB'nin Cyber Resilience Act'i PLC Üreticisine Ne Yükümlülük Getirdi? Sahadan Bir Okuma
AB'nin Cyber Resilience Act'i (CRA) 2026'da yürürlüğe giriyor; PLC üreticilerine yeni yükümlülükler getiriyor. NIS2'den farkını, sahadaki mühendisin ne yapması gerektiğini ve 'bunu üretici mi, ben mi çözerim?' sorusunu anlatıyorum.

TIA V21'in AI Önerisini Kabul Ettim, 3 Hafta Sonra Eksik Kenarı Sahada Gördüm
TIA V21'in AI kod asistanı bir öneri verdi, kabul ettim; 3 hafta sonra o önerinin eksik kenarını sahadaki bir arızada gördüm. AI önerisini 'kabul etmeden önce' sorduğum 3 soruyu anlatıyorum.

OPC UA FX Geldi, 4-20mA'nin Geleceği Değişti mi? Sahadan Dürüst Bir Bakış
OPC UA FX'in saha seviyesinde deterministik iletişim vaadi, 4-20mA'nin yerini alacak mı? 2026'daki gerçek durumu, mevcut altyapıyla uyumu ve 'ne zaman geçeriz?' sorusunu sahadan anlatıyorum.

TSN Sahaya Girdi, Switch Seçerken 3 Hafta Kaybettiğim Detay
PROFINET 2.0 ile TSN'nin sahaya girdiği projede, switch seçimi 3 hafta sürdü; 'TSN-capable' etiketi tek başına yetmedi. TSN switch seçiminde 3 kritik soruyu ve sahadaki karşılığını anlatıyorum.

Fiziksel AI Robotu Gece %15 Parametre Kaydı Yaptı, Sabah Operatör Ne Yapacaktı?
Kendini ayarlayan fiziksel AI robotu gece vardiyasında %15 parametre kaydı yaptı; sabah operatör 'bu normal mi?' diye sordu. Kendini ayarlayan robotların sahadaki gerçek riskini ve operatörün karşısındaki 3 soruyu anlatıyorum.

M580'ın OTA Güncellemesi Geldi, 0.3'lük Scaling Değişti, Hat Bilmeyerek Çalıştı
Schneider M580'ın OTA firmware güncellemesiyle 0.3'lük bir scaling farkı oluştu; hat 'sorunsuz' görünüyordu ama değer 0.3 kaymıştı. OTA güncellemesinde rollback prosedürünü ve scaling doğrulamasını anlatıyorum.

5G Özel Ağda AGV 30 Saniye Kopuyordu, PLC Bunu Bilmiyordu
5G özel ağına bağladığımız AGV, hücre geçişinde 30 saniye kopuyordu; PLC 'ağ gitti' alarmı vermeden durmuştu. Standalone 5G'de handover'in sahadaki gerçek maliyetini ve PLC tarafında eklediğim 3 kontrolü anlatıyorum.

Dijital İkizde 3 Hata Yakaladık, Gerçekte 1 Günlük Duruşu Önledik
Türk Telekom'un dijital ikiz merkezini görünce 'gösteri' sandım; sonra kendi projemizde PLC programını sanal ikizde çalıştırıp 3 hata yakaladık. Dijital ikizin sahadaki gerçek karşılığını ve maliyet hesabını anlatıyorum.

Teklifte PROFINET 2.0 mı Yazayım, 1.x mi? Bir Proje Başında Verdiğim Karar
PROFINET 2.0'ın TSN ve 5G entegrasyonuyla geldiği dönemde yeni bir teklife ne yazacağımı düşünürken, sahadaki 1.x altyapısıyla 2.0 arasındaki pratik farkı ve karar kriterlerimi anlatıyorum.

OPC UA 52 Milyon Cihazda Var Diyor, Bizim İki Cihaz Yine Konuşamadı
OPC Foundation 52 milyon OPC UA cihazı sayıyor; bizdeki iki cihaz aynı standardı taşıyordu yine de el sıkışamadı. Sürüm uyuşmazlığını sertifika metaforuyla ve 40 dakikalık sahada geçen bir vaka ile anlatıyorum.

Aynı Analog Girişini İki Network'te Okudum, İki Değer Gördüm
Aynı analog girişini iki ayrı network'te okudum ve iki farklı değer gördüm. Bir analog girişin, bir scan içinde birden fazla okunmasının neden 'tutarlı' olmayabileceğini, ve değeri bir ara değişkende bir kez okuyup her yerde ondan kullanma kuralını kendi vaka üzerinden anlatıyorum.

İki Sensör Aynı Adımı Ayarlıyordu, Hangisinin Kazandığını Bilmiyordum
Bir 'hazır' sinyalini hem basınç sensörü hem seviye sensörü ayarlıyordu; iki kaynak, aynı çıkışı sürüyor ve hangisinin kazandığını bilmiyordum. İki farklı kaynağın aynı tag'i sürmesinin neden bir yarış durumu (race condition) olduğunu, ve 'tek yazıcı + öncelik' ile nasıl çözdüğümü kendi vaka üzerinden anlatıyorum.

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.

Aynı Tag'e Üç Farklı Network'ten Yazıyordum: Son Yazan Kazandı
Bir 'adım' değişkenine üç farklı network'ten yazıyordum, makine ise yalnızca sonuncunun yazdığını yapıyordu. Bir scan içinde aynı tag'e birden fazla yazmanın neden 'son yazan kazanır' (last-writer-wins) kuralı olduğunu, ve bu kuralın neden bir adımı sessizce ezdiğini kendi vaka üzerinden anlatıyorum.

R_TRIG Sandım, F_TRIG Yazdım: Alarmı Yakalamak İçin Ters Kenarı Seçtim
Bir alarmı tetiklemek için yükselen kenar (R_TRIG) sandım, alçalan kenar (F_TRIG) yazdım. Kenar tetiklemenin '0'dan 1'e' mi '1'den 0'a' mı geçtiği anı yakaladığını, ve kenarı ters seçince alarmın neden asla tetiklenemediğini kendi vaka üzerinden anlatıyorum.

Zamanlayıcıya Start Verdim, Reset'i Unuttum, Bir Daha Hiç Kapanmadı
Bir zamanlayıcıya start verdim ama reset girişini unutunca, bir kez tetiklenip sonsuza kadar ON kaldı. IEC zamanlayıcının neden 'doğru seviyede donduğunu,' reset'in neden ayrı bir giriş olduğunu ve 'start'ın seviye, 'reset'in olay' kuralını kendi vaka üzerinden anlatıyorum.

Kazanç 0.75 ile Çarptım, INT'te Hep 0 Çıktı
Analog değeri 0.75 kazançla çarptım, sonuç hep 0 geldi. Çarpmanın INT'te yapıldığını, 4.7'nin önce 4'e yuvarlandığını, ve REAL'e çevirirken (cast) nerede kesildiğini; 'çarpma INT'te kalırsa ondalık kaybolur' kuralını kendi vaka üzerinden anlatıyorum.

Debi Hesabımda Zaman Sıfır Oldu, Sayfa NaN Gösterdi
Debiyi 'hacim / zaman' olarak hesaplıyordum; makine durduğunda zaman sıfıra yaklaştı, sayfa 'NaN' gösterdi. Sıfıra bölmenin neden 'sonsuz' değil 'NaN' (sayı değil) ürettiğini, NaN'ın her karşılaştırmada 'yanlış' sayılıp alarmımı susturduğunu ve 'zaman < 0.1 ise bölme yapma' kuralını kendi vaka üzerinden anlatıyorum.

Sayacım 32767'de Takıldı, Ertesi Gün Açtığımda Eksi Bir Sayı Gösteriyordu
Bir üretim sayacım 32767'de takılıp ertesi gün -28000 gösterdi. 16 bitlik bir INT'in neden 32768'de -32768'e sarıp geri döndüğünü, taşmayı (overflow) 'sayı büyüdü' sanmanın neden tehlikeli olduğunu ve REAL/DINT'e geçme kararını kendi vaka üzerinden anlatıyorum.

Bit Maske mi, Karşılaştırma mı? 8'lik Biti İki Yoldan Okuyan İki Program
Bir hata kelimesinin 8'lik bitini 'kelime & 8' ile okudum, 'kelime = 8' ile okuyan meslektaşım ise yalnızca tek hatanın geldiği anda görüyordu. Bit maskenin neden 'kelimenin geri kalanı ne olursa olsun' çalıştığını ve & 8'in 0'dan farklı olması ile = 8'in farkını kendi vaka üzerinden anlatıyorum.

PLC Açılınca Neden Alarm Verdi? İlk Tur Bayrağı (First-Scan) Koymadım
Makine her açılışta 7 saniye alarm verdi, kimse nedenini bilmiyordu. Bir 'ilk tur bayrağı' (first-scan) koymadığım için, sıfırlanmamış bir sayacın açılışta 'hata' olarak görünmesi ve bir R_TRIG ile tüm değişkenleri ilk turda sıfırlamak — kendi vaka üzerinden.

Aynı Formülü 12 Kez Yazmak: 12'nci Tankta Farkı Bulan Gün
Bir tank için yazdığım PID hesaplama bloğunu 12 tanka kopyala-yapıştır yaptım. 12'nci tankın Kp değeri 0.8 değil 8 olmuş. Bir hatayı düzeltmek için 12 yeri açmak zorunda kalmak ve 'fonksiyon bloğu' kuralını kendi vaka üzerinden anlatıyorum.

Sensör Koptu mu, Değer Gerçekten Sıfır mı? 0 Gösteren Bir Seviye Göstergesi
Bir seviye göstergesi 0 gösterdiğinde, boş tank ile kablo kopukluğunu nasıl ayırt ettim: '0'ın iki yüzü, 4 mA ile 0 mA farkı, ve 'son iyi değer 5 saniyedir değişmediyse alarm' kuralını kendi vaka üzerinden anlatıyorum.

37 Zamanlayıcı, Tek %T: Yeni Bir Adım Ekleyince 40 Dakikayı Harcadım
Bir panoda 37 zamanlayıcı vardı, hepsi sırayla %T1'den %T37'ye. Bir müşteri 'araya bir rötuş adımı koy' dedi, ben de find-replace ile %T1'i %T2 yaptım — %T10'dan %T19'a kadar da değişti. Neden zamanlayıcıyı numara değil isimle adresselediğim, kendi vaka üzerinden anlatıyorum.

Geçiş Koşulu mu, Hedef Durum mu? İki Adım Sıçrayan Dolum Hattı
Üç gün sorunsuz dönen bir şişe dolum hattı, hızı artırdığımız gün şişeyi görmeden kapak basmaya başladı. Adım merdiveninde geçiş koşulunu 'hedef durum'la karıştırdığım hatayı ve 'her geçiş önce şu an hangi adımdayım diye sormalı' kuralını kendi vaka üzerinden anlatıyorum.