Tia Portal SCL Kullanımı Örnek Uygulama:
Örnekte Yürüyen ışık programını Tia Portal da SCL ile deneme
yaptım.
Programda deneme olarak sadece 3 adet çıkış ile bu projeyi
yaptım.
Program çıkışları sırasıyla 1-2-3 aktif eder 3-2-1 sırasıyla
pasif eder.
(Proje Dosyası En altta)
Projeyi açınca Main dışında FC (Ladder) ve FB (SCL yazım
dili) açtım
FC de yardımcı kontakları çıkışlara verdim.
FB de SCL ile programı yazdım
Main de yazdığım FC ve FB’yi çağırdım.
Mainde genel ayarlamaları yaptım (Timer süreleri ayarı gibi.)
Burada da Sadece iki çıkışı kullanarak deneme yaptım daha sonra SCL kodlarına geçtim
SCL kodları bu şekilde açıklama yazdım.
Timer sürekli döngüde olması için kendimce yardımcı bitlerle
bir tarama boyunca Timer girişini pasif ettim.
PLC çıkışlarını da yardımcı bitlerle kontrol ediyorum bu
şekilde istediğim kadar kullanabiliyorum.
Direk çıkışları bir kez kullanabiliyoruz.
Program Kodları:
IF "yardımcı_2"=0 THEN //*** *** *** *** Adım 1
*** *** ***
"döngü_başla":=1; //
*** *** ileri giden döngü
END_IF;
"led_soft_1":=1;"Led_1":="led_soft_1";//***
*** led1 yan
"IEC_Timer_0_DB_5".TON(IN:="döngü_başla", //*** *** led1 yanma süresi
PT:=T#800mS,
Q=>"led_soft_2",ET=>"timer_geçen süre_1");
"Led_2":="led_soft_2";//*** *** led2 yan
"IEC_Timer_0_DB_7".TON(IN:="led_soft_2", //*** *** led2 yanma süresi
PT:=T#800ms,
Q=>"led_soft_3",ET=>"timer_geçen süre_2");
"Led_3":="led_soft_3";//*** *** led3 yan
"IEC_Timer_0_DB_2".TON(IN:="led_soft_3", //*** *** led3 yanma süresi
PT:=T#800ms,
Q=>"led_sön_3",ET=>"timer_geçen süre_3");
//*** *** *** *** Adım 2 *** *** *** *** *** Geri Giden
döngü
IF "led_sön_3"=1 THEN
"led_soft_3":=0;
"Led_3":=0;
"led_sön_3":=1;
END_IF;
"IEC_Timer_0_DB_8".TON(IN:="led_sön_3",//***
*** *** ***led3 sön süre
PT:=T#800ms,Q=>"led_sön_2",ET=>"timer?led?sön_geçen_süre_3");
IF "led_sön_2"=1 THEN
"led_soft_2":=0;
"Led_2":=0;
"led_sön_2":=1;
END_IF;
"IEC_Timer_0_DB_9".TON(IN:="led_sön_2",//***
*** *** ***led2 sön süre
PT:=T#800ms,Q=>"led_sön_1",ET=>"timer?led?sön_geçen_süre_2");
IF "led_sön_1"=1 THEN
"led_soft_1":=0;
"Led_1":=0;
"led_sön_1":=1;
"led sönük
bekle":=1;
END_IF;
"IEC_Timer_0_DB_11".TON(IN:="led sönük
bekle", //*** *** *** ***led1 sön süre
PT:=T#800ms,Q=>"yardımcı_3",
ET=>"timer?led?sön_geçen_süre_1");
"R_TRIG_DB"(CLK:="IEC_Timer_0_DB_11".Q,
Q=>"yardımcı_2"); /// yükselen kenar
// bir döngü boyunca "Yardımcı_2" pasif et
IF "yardımcı_2"=1 THEN
"döngü_başla":=0;
"led sönük
bekle":=0;
END_IF;
Program işleyişi:
Yardımcı_2 yoksa döngü başlat aktif olur.
Led_soft_1 aktif olur ardından timer_1 saymaya başlar. Süre
bitiminde
Led_soft_2 aktif olur. timer_2 saymaya başlar. Süre
bitiminde
Led_soft_3 aktif olur. timer_3 saymaya başlar. Süre
bitiminde Led_sön aktif olur.
Timer_4 aktif olur
süre sonunda Led_3 pasif olur
Timer_5 aktif olur süre sonunda Led_2 pasif olur
Timer_6 aktif olur süre sonunda Led_1 pasif olur Led_1
Sönük_bekle aktif olur
Timer_7 aktif olur süre sonunda timer_7 çıkışı aktif
olduğunda yükselen kenar yardımcı_2 aktif olur
1 döngü boyunca da döngü başka pasif olur.
Bir döngü bittiğinde yardımcı_2 pasif olur ve program
başında yazdığım IF komutu içinde yardımcı_2 pasif olduğu için döngü_başla
aktif olur tekrardan timer döngüsü başlar.
SCL Timer kullanımı:
"IEC_Timer_0_DB".TON(IN:=_bool_in_,
PT:=_time_in_,
Q=>_bool_out_,
ET=>_time_out_);
ET=> timer geçen süreyi bir data alanına yazmamız
gerekiyor, boş bırakmamıza izin vermiyor.
Q=> timer süresi dolduğunda verdiği çıkış
PT=> Sayacağı süreyi giriyoruz. Dword girmezsek T#2s
şeklinde girmemiz gerekiyor bunun dışındakileri kabul etmiyor.
TON Timer Çalışma Grafiği:
SCL Yükselen Kenar ve Düşen Kenar Kullanımı:
"R_TRIG_DB"(CLK:=false,
Q=>_bool_out_);
CLK=> girdiğimiz bit aktif olduğunda Q çıkışındaki bit
bir döngü boyunca aktif olur.
"F_TRIG_DB"(CLK:=false,
Q=>_bool_out_);
CLK=> girdiğimiz bit aktif olup pasif konuma geçtiğinde
(yani düşen kenarı olduğunda) Q çıkışındaki bit bir döngü boyunca aktif olur.
Proje Dosyasını
Buradan İndirebilirsinizDiğer yazılarım:
Sinamics V20 Modbus RTU Modbus RTU ile kontrol edilmesi ile
ilgili paylaşımımda da PLC den Modbus kontrolü ile sürücünün açıp kapama,
frekans değişimini anlatıyorum.
Dop-B HMI ile S7-1200 plc Modbus RTU Kontrolü, HMI master
PLC slave olarak örnek uygulama yapıyorum.
HMI kullanarak RS485 alt yapısını üzerinden plc kontrol edilmesi uygulamasını anlattım.
S7-1200 PLC ve Delta DVP14ss2 PLC iki plcyi Modbus RTU
üzerinden haberleştirdim.
Arduino MPU6050 Gyroscope ve Accelerometer kullanımı ve
örnek kodlar bulunuyor.
Delta DVP14ss2 PLC ve Dop-B HMI Modbus ASCII üzerinden iki
kablo ile haberleşmesi örneği
Anlattım.
Delta PLC DVP14ss2 plc Step motor kontrol ve sürümü işlemini
anlattım.
(Leadshine Microstep Driver M542 Modelli sürücü ile)
Delta PLC DVP14ss2 PLC bağlantı şeması Bağlantı kablolarını
anlattım.
S7-1200 Encoder Kullanımı
Hiç yorum yok:
Yorum Gönder