calismalar mitsubishi’nin FX3U-16MT/DSS plc’si icin yapildi.
projede kullandiklarim:
youtube video’lari icin buraya
zaman sayıcıları – counter’lar, set edilen değere ulaşınca kontak verirler.
rising pulse veya falling pulse eklenince giriş sadece pulse olarak çalışıyor.
timer’lardaki 50 değeri 5 sn demek. timer değeri : t0 k50 (burdaki k harfi constant demek)
çıkış tarafında pulse oluşturmak için pls y. 1 kereligine pulse verip sonra LOW oluyor.
sm413 ismindeki girişler clock pulse uretirler. pulse aralığını değiştirme istenirse girişin ismi değiştirilmeli. bunların hangilerinin ne olduğuna help’ten bakilabilir. special relay/register help başlığı altında.
counter : girise SM413. çıkışa C0 K5. 5’e kadar sayar. counter’ların resetlenmesi mecburidir. belirlenen değerinden fazla sayamaz.
counter resetleme: girişe herhangi bir giriş kontağı. çıkışa da rst C0 ile resetlemek istenen counter değişkeni. burada C0 ismindeki counter resetlenmiş olur. counter’ların resetlenmesi mecburidir. belirlenen değerinden fazla sayamaz.
comparator’ler, karşılaştırıcılar: giriş yerine herhangi bir giriş. çıkıştan önce bir karşılaştırıcı ayarlanıyor. asagidaki durum, K2 sabiti (yani 2 değeri) C0’dan küçük ise Y1’i set et demek.
asagidakinde ise K2 sabiti (yani 2 değeri) C0’dan küçük veya eşit ise Y1’i set et demek.
bu yukarıdaki 2 örnek kontak içinde karşılaştırma diye geçiyor. bir de CMP komutu ile karşılaştırma diye bir şey var.
CMP komutu ile karşılaştırma : bu karşılaştırma türünde tek bir karşılaştırma ile 3 değer kontrol ediliyor. yani kontrol edilen 3 değerinde kullanıldığı durumlarda CMP ile karşılaştırma kullanışlıdır.
yukarıdaki CMP ile karşılaştırma örneğinde M0,M1 ve M2 bitlerinin 3’ü de işgal ediliyor, edilmek zorunda.
increment pulse : x4’ün her set edilmesinde d2 değişkeni 1 arttırılıyor. counter’dan farkı var bence. counter için max bir sayı giriliyor. counter o sayıya kadar sayıyor. bunda ise sanki son sayı yok gibi.
increment : X0 set edildiği anda D0 increment etmeye başlar. D0 değeri takır takır artmaya başlar ta ki X0 sıfırlanana kadar. bunu engellemek için X0 yerine “Rising Pulse” veya “Falling Pulse” falan koymak gerekiyor
aynı şekilde decrement olayı için de DEC komutu kullanılabiliyor.
branch’lar VEYA demek. yani hattı OR’luyorlar.
latch’ler ile ilgili olarak şu söylenebilir : M’lere benzer L’ler de. ama M’ler power off olduğunda statuslerini kaybederler yani false durumuna düşerlerken L’ler durumlarını korurlar ve power off olsa bile true olarak kalırlar. hem M’lere hem de L’lere flag denilmesi daha mantıklı
D değişkenlerine değerler verilirken 0-199 arasındaki değerler power off olduğunda değerlerini koruyamıyorlarmış. ama 200-399 arasındaki değerler koruyabiliyorlarmış. bundan 16. vidyoda bahsediyor.
veri saklayıcılardaki değerlerin negatif olarak gösterilmesi : ikinin komplementi : önce ikilik sayının tüm bitlerini tersle. sonra tüm ikilik sayıyı 1 ile topla.
ikilik sayılardaki işaret bitleri 0 ise +’dır, 1 ise –‘dir.
k ve h sabitleri :
k sabiti :
- 16 bit veri kullanırken -32,768 ile +32,767 arasında ,
- 32 bit veri kullanılırken -2,147,483,648 ile +2,147,483,647 arasında onluk
h sabiti :
- 16 bit veri kullanırken 0 ile FFFF arasında ,
- 32 bit veri kullanılırken 0 ile FFFFFFFF arasında onaltılık
ladder diyagram komut işletim sırası :
PLC’nin ilk satırdan son satırdaki END komutuna kadar taramasına 1 tarama zamanı deniyor. PLC programlamasının yapıldığı programın altındaki barda “Scan Time” olarak görünen zaman bu süredir.
5 sn sonra kontak kapatmak :
switch case yapısı ile input’lara göre output’ların ayarlanması:
örnek konveyör – sensör uygulaması :
timer’lar bitince counter’lar timer olarak kullanılabiliyor. counter’ların timer olarak kullanılması :
ALT komutu önündeki şart sağlanınca M0 switch eder. yani high ise low olur, low ise high olur. (alter: değiştir)
aşağıdaki durumlar ladder diyagramın baştan sona nasıl tarandığını göstermek için birer örnek: örnekte 1. satırda X0 HIGH (START) olunca konveyör (Y0) calışmaya başlıyor. 2. satırda fotosel’den (X2) gelen pulse 10 tane olunca C0 (KUTU SAYICI) HIGH oluyor. 3. satırda C0 counter’ı resetleniyor.
aşağıdaki ladder’da C0 counter’ı 10’a kadar sayıp resetlense bile Y0 konveyör’ü hiç durmaz.
aşağıdaki ladder’da ise C0 counter’ı 10’a kadar sayıp resetlenince Y0 konveyör’ü bir anlık duracaktır.
plc’deki genişletme seçenekleri :
genişletme modülleri 3 kategoriye ayrılmış:
function block hazırlarken constant’lara değer atamak için örnekler:
aşağıdaki function block için, EN aktif olduğunda ENO da aktiftir diyemeyiz. ENO’nun aktif olması için s’nin ve EN’in aktif edilmesi gerekir.
image memory diye bir kavram var.
aşağdaki diyagramdaki, 2 tane Y03’ün bu şekilde 2 farklı girişe bağlanması normalde uygun değildir. ama bu şekilde bağlandığı takdirde X01 HIGH olduğunda Y03 HIGH olmaz. ama X01’den gelen veriyi image memory olarak hafızasına kaydeder. bu sayede Y04’u HIGH yapabilir. ama kendisi LOW’da kalır. ta ki X02 HIGH olana kadar. yani Y03 HIGH olmak için X01’i takmaz. X02’yi ciddiye alır. HIGH olmak için X01’i takmaz ama Y04’ü X01’den gelen HIGH komutu ile HIGH yapabilir. bu image memory sayesinde oluyor. ama bu şekilde diyagram çizmek uygun değil.
2 girişe 1 çıkış bağlamaktansa aşağıdakini yapmak gerekir.
diyagramda soldaki gibi 2 yönde akım durumu varsa, sağdaki şekle çevirmek gerekiyor.
plc forumu buraya
bu fonksiyona girilebilecek olan datalar :
label name’i d olan data 3 elemanlı bir array. global değişkenlere aşağıdaki gibi giriliyor.
s1 ve s2 değişkenleri eşit ise sonuç değişkeni aşağıdaki gibi çıkıyor, sadece 1. indisli elemanı 1 çıkıyor.
s1, s2’den büyük ise sonuç değişkeni aşağıdaki gibi çıkıyor, sadece 0. indisli elemanı 1 çıkıyor.
bu fonksiyonun çıktılarına Y0,Y1 ve Y2 çıkışlarından erişilebiliyor. ama bu çıktıları aşağıdaki gibi bağlamamalı. bu şekilde bağlanırsa sonuç ne olursa olsun tüm Y’ler HIGH oluyor.
bunlar aşağıdaki şekilde bağlanmalılar. yani sonralarına birer tane output konulunca adam gibi sonuç veriyorlar.
bir kontak açıldığında bunun sonucu dışarı pulse olarak verilmek istenirse kullanılıyor.
yukarıdaki timer 2’den başlıyor ve 10 sn’ye kadar sayıyor, yani toplam 8 sn sayıyor. 10. sn’de CIKIS değeri HIGH oluyor. Sayma değerleri SAYI_1’de anlık olarak görülüyor.