Selam, önceki bölümden devam edeceğiz nasipse. Devam etmeden önce özellikle acil duruş butonu gibi dijital girişler için programa yaptığım bir ilaveden bahsedeyim. Ekranda dikkati o elemanın gösterildiği yere çekmek ve bir sıkıntı olduğunu belirtmek gerekiyor. Bu amaçla faceplate içinde yaptığımız alarm animasyonunu kullanabiliriz. Yapacağımız şey, PLC programı içerisinde o dijital girişin işlendiği yerde eğer fiziksel giriş beklenen gibi değilse girişi temsil eden tamsayı değerin ikinci bitini setlemek. Bu amaçla INPUTS programına şu ilaveyi yaptım.
Bu durumda fiziksel giriş yoksa ekranda acil stop girişinin sembolü sürekli kırmızı yanıp sönecektir. Eğer operatör manuel olarak girişi gösterirse otomasyon programını kandırabilir ama hala ekranda bu sefer kırmızı-yeşil olarak yanıp sönmeye devam eder. Tabi bu arada bu girişin alarmının kontrolünü tamamen fiziksel girişe bağladığınızı unutmayın, gerekirse başka alarmlar için bu kod değişebilir.
Dijital Çıkışlar
Sıra geldi dijital çıkışlara. Proses otomasyonu ve daha birçok otomasyon tekniklerinde çıkışlar üzerinde geri besleme alarak istediğimiz işlemin gerçekleştiğine dair emin olmak isteriz. Örneğin bir motora start verdiğimizde , motorun döndüğüne dair geri besleme bilgisi alabiliriz. Bir vanayı açtığımızda bir süre içinde kapalı olduğunu gören swicin görmeyi bırakıp açık olduğunu gören swicin görmesini bekleriz gibi.
Ayrıca dijital çıkışlar için de manuel kontrol edilebilmesi proses otomasyonunun vazgeçilmez bir ihtiyacıdır. Otomasyonda beklenmeyen bir durum oluştuğunda yetkili kişi üretimi kurtarmak adına bir vanayı veya pompayı manuel olarak durdurmak ya da çalıştırmak isteyebilir. Özellikle gıda proses otomasyonunda bir üretimin çökmesi hem ürün kaybına hem de siparişlerin yetiştirilmesinde çok önemli olan zaman kaybına neden olabilir.
Geri Besleme (feedback) Mantığı
Bir dijital çıkışın sağlıklı çalıştığına dair 2 adet geri besleme girişi alabiliriz. Biri çıkışta enerji yokken beklenen geri besleme, mesela bir vananın kapalı olduğunu gören swiç. Diğeri çıkışta enerji varken beklenen giriş, örneğin pompanın çalışıyor olduğunu belirten bir kontak bilgisi veya vananın açık olduğunu gören swiç. Bu geri besleme girişlerinin olup olmamasına göre değişik modlarda belli bir süre sonunda alarm veririz. Bu alarm tipleri için şöyle bir öngörüde bulunalım.
- Alarm tipi 0 : Alarm yok, yani bu çıkışla ilgili bir geri besleme sinyali almıyoruz.
- Alarm tipi 1 : Sadece enerjili olduğuna dair geri besleme alıyoruz. Başka bir deyişle çıkış yokken enerjili olduğuna dair sinyal geliyorsa ya da çıkış varken enerjili olduğuna dair sinyal gelmiyorsa bir süre sonra alarm vereceğiz.
- Alarm tipi 2 : Sadece enerjisiz olduğuna dair geri besleme alıyoruz. Bu tip nadir kullanılır, en yaygın kullanımı bazı önemli vanaların kesinlikle kapalı olduklarından emin olmaktır. Mantığı öncekinin tersi. Yani enerji yokken gelecek, enerji varken gelmeyecek.
- Alarm tipi 3 : Hem enerjili hem de enerjisiz durum için geri besleme sinyali alıyoruz. Buna çift feedback de diyoruz.
Bu mantık doğrultusunda plan yapmaya başlayalım. Öncelikle her dijital çıkışın alarm verme süresini hesaplamak için bir timer veya bir data blok harcamak pek akıl karı değil. Bana lazım olan süreler 5 bilemedin 10 saniye olacak. Benim kullandığım ekipmanlar en en fazla bu sürede feedback sinyali gönderir. Bu da 4 bilemedin 5 bitlik bir sayaç bana yeter demek oluyor. Elimde de 16 bitlik çıkışı (aynı girişlerde olduğu gibi) temsil eden bir hafıza bulunursa bunun 5 bitini alarm sayacı olarak kullanabilirim.
Bu sayacı saydıracak saniyede bir tarama çıkış veren bir bit lazım ilk önce. Bu puls'i Task100ms fonksiyonum içinde üretebilirim. Biliyoruz ki bu fonksiyon 100 ms'de bir çalışıyor.
counter adında bir değişken tanımlayıp bunun değerini bu fonksiyon her çağırıldığında bir arttırıyoruz. Yani 100 ms'de bir counter değeri artıyor. Bu değer 10 olunca (yani 1 saniye olunca) SEC adında bool bir değişkene çıkış veriyoruz. Daha sonra da counter değerini sıfırlıyoruz. Mantık kafanızı karıştırmasın, mikro işlemcilere assembler kod yazmaktan geldiğim için bu tip şeyleri çok yaparım. SEC değişkeni bir kere True değer aldı, counter değerini ondan sonra sıfırlasak da artık SEC değeri bir sonraki taramaya kadar True kalacaktır. Program geri gitmez hep ileri akıyor.
Dijital çıkışları (daha doğrusu dijital/analog tüm çıkışları) işleyen OTUPUTS fonksiyonunu da bu Task100ms fonksiyonundan çağırırsak SEC değişkeni o fonksiyon içinde saniyede sadece bir tarama True olacaktır. Artık bu SEC değişkenini geri besleme hatalarının sayaçlarında kullanabiliriz.
DIGOUT_FC (FC201)
Bu fonksiyon DIGIN_FC fonksiyonuna benzer şekilde ama bu sefer dijital çıkışlar için çalışacak. Çıkışların ne olacağına otomasyon programı karar verecek, yani otomasyon programı DIGOUT_BITS data bloğundaki dijital çıkışla aynı isme sahip bite yazacak. Biz o değeri alıp DIGOUT_FC fonksiyonumuza sokacağız manuel işlemleri ve alarmları işledikten sonra fiziksel çıkışa vereceğiz. Dikkat ederseniz girişlerin tersine bir işlem var. Orada fiziksel giriş alınıp işlendikten sonra otomasyon programına veriliyordu, burada otomasyon programı çıktısı alınıp işlendikten sonra fiziksel çıkışa verilecek. Zavallı otomasyon programı da bir şeyleri kontrol ettiğini zannedecek.
Öncelikle fonksiyonumuzun giriş ve çıkışlarında neler olacak ona bir karar verelim.
Sırayla bakalım,
- LOG_INP : Lojik giriş olarak adlandırdım. Otomasyon programından gelecek olan bool çıkış değeri buraya bağlanacak. Yani DIGOUT_BITS... değişkeni.
- ALR_TYP : Feedback alarm tipi. Yukarıda bahsetmiştik. Çıkış için kullanılacak feedback'lere göre bu alarm tipi değerine 0,1,2 ya da 3 değeri sabit olarak girilecek.
- ALR_TIME : Saniye olarak feedback alarmı verme süresi. Bu süre kadar beklenen geri besleme sinyalleri gelmezse alarm biti (bit-2) setlenecek. Tabi ki bunları yaparken alarm tipine de bakacağız.
- FBON : Çıkış enerjilendirildiğinde gelmesi beklenen geri besleme sinyalinin fiziksel girişi buraya bağlanacak. FB yoksa False değeri girilecek.
- FBOFF : Çıkış enerjisizkengelmesi beklenen geri besleme sinyalinin fiziksel girişi buraya bağlanacak. FB yoksa False değeri girilecek.
- AL_RST : Alarm sıfırlama girişi. Dijital çıkışların alarmlarını sıfırlamak için tanımlayacağımız bir bool değişkeni buraya bağlayacağız. HMI üzerinden bu değişkene bağlı bir butonla alarm sıfırlama işi yapılacak.
- FIZ_OUT : İşlenmiş olan dijital çıkış değeri burada olacak ve direk fiziksel çıkışa bağlanacak.
Devam edecek...




Hiç yorum yok:
Yorum Gönder