RS Fonksiyon Blok RS Fonksiyonu Stop öncelikli Start‐Stop devresi işlemini gerçekleştiren bir fonksiyon bloğudur. RS fonksiyonunun matematiksel ifadesi; Q1 = RESET1 AND (Q1 OR SET) şeklindedir. Matematiksel ifadeden de anlaşılacağı üzere SET ve RESET1 girişleri aynı anda geldiğinde (SET=TRUE ve RESET1=TRUE), Q0 çıkış vermemektedir (Q0=FALSE). Başka bir deyişle RESET öncelikli fonksiyon bloğudur. CAL LD ST {RS_FF değişkeni RS tanımlanmalıdır.} RS_FF(SET:= S0,RESET1:=S1) RS_FF(SET:= S0, RESET1:=S1 ); RS_FF.Q1 Q0 := RS_FF.Q1 ; Q0 SR Fonksiyon Blok SR Fonksiyonu Start öncelikli Start‐Stop devresi işlemini gerçekleştiren bir fonksiyon bloğudur. RS fonksiyonunun matematiksel ifadesi; Q1 = (RESET AND Q1) OR SET1 şeklindedir. Matematiksel ifadeden de anlaşılacağı üzere SET1 ve RESET girişleri aynı anda geldiğinde (SET1=TRUE ve RESET=TRUE), Q0 çıkış vermektedir (Q0=TRUE). Başka bir deyişle SET öncelikli fonksiyon bloğudur. CAL LD ST {SR_FF değişkeni SR tanımlanmalıdır.} SR_FF(SET1:= S0,RESET:=S1) SR_FF(SET1:= S0, RESET:=S1 ); SR_FF.Q1 Q0 := SR_FF.Q1 ; Q0 Yükselen Kenar Algılama Fonksiyon Blok (Rising Trigger) BOOL tipinde bir değişkenin, başka bir ifadeyle bir dijital girişin Lojik 0’dan Lojik 1’e değişmesi durumuna yükselen kenar yada pozitif kenar adı verilmektedir. Böyle bir değişimin PLC tarafından tespit edilebilmesi için Yükselen kenar algılama fonksiyon bloğu kullanılır. CAL LD ST Yukselen(CLK := S0) Yukselen.Q Q0 {Yukselen değişkeni R_TRIG tanımlanmalıdır.} Yukselen(CLK:= S0); Q0:= Yukselen.Q; Düşen Kenar Algılama Fonksiyon Blok (Falling Trigger) BOOL tipinde bir değişkenin, başka bir ifadeyle bir dijital girişin Lojik 1’den Lojik 0’a değişmesi durumuna düşen kenar yada negatif kenar adı verilmektedir. Böyle bir değişimin PLC tarafından tespit edilebilmesi için Düşen kenar algılama fonksiyon bloğu kullanılır. CAL LD ST Dusen(CLK := S0) Dusen.Q Q0 {Dusen değişkeni F_TRIG tanımlanmalıdır.} Dusen(CLK:= S0); Q0:= Dusen.Q; Periyodik Çalışan Çıkış Blok (Blink Function) Periyodik çalışan çıkış bloğunda ENABLE girişi geldiğinde (ENABLE=TRUE); TIMELOW girişinde ayarlanan süre kadar blok çıkış vermez (OUT=FALSE), TIMEHIGH girişinde ayarlanan süre kadar ise blok çıkış verir (OUT=TRUE). {Periyod değişkeni BLINK tanımlanmalıdır.} CAL Periyod(ENABLE:=S0, TIMELOW:=T#1s, TIMEHIGH:=T#1s) Periyod(ENABLE:=S0, TIMELOW:=T#1s, TIMEHIGH:=T#1s); LD ST Periyod.OUT Q0 Q0:=Periyod.OUT; YAPISAL METİN (STRUCTURED TEXT) DİLİ İLE PLC PROGRAMLAMA IF … THEN … ELSIF … END_IF DEYİMİ IF deyimi bir koşul deyimidir. Koşullar sağlandığı zaman IF deyimi içerisindeki komutlar işletilir. Örnek 1: IX4000.2 girişi kontak verdiği zaman QX4000.1 çıkışını aktif yapan programı yapısal metin (ST), komut dili (IL) ve merdiven diyagramı (LD) ile yazınız? PROGRAM_PLC {Değişken Tanımlama} VAR GIRIS AT %IX4000.2 :BOOL; CIKIS AT %QX4000.1 :BOOL; END_VAR {YAPISAL METİN PLC Programı} PROGRAM_PLC {Değişken Tanımlama} VAR GIRIS AT %IX4000.2 :BOOL; CIKIS AT %QX4000.1 :BOOL; END_VAR {KOMUT DİLİ PLC Programı} IF (GIRIS=TRUE) THEN CIKIS:=TRUE; END_IF LD S GIRIS CIKIS Örnek 2: IX4000.2 girişi kontak verdiği zaman QX4000.1 çıkışını aktif yapan aksi halde çıkış vermeyen programı yapısal metin (ST), komut dili (IL) ve merdiven diyagramı (LD) ile yazınız? PROGRAM_PLC {Değişken Tanımlama} VAR GIRIS AT %IX4000.2 :BOOL; CIKIS AT %QX4000.1 :BOOL; END_VAR {YAPISAL METİN PLC Programı} PROGRAM_PLC {Değişken Tanımlama} VAR GIRIS AT %IX4000.2 :BOOL; CIKIS AT %QX4000.1 :BOOL; END_VAR {KOMUT DİLİ PLC Programı} IF (GIRIS=TRUE) THEN CIKIS:=TRUE; ELSE CIKIS:=FALSE; END_IF LD ST GIRIS CIKIS Örnek 3: IX4000.2 girişi geldiği zaman QX4000.1 çıkışını aktif yapan (TRUE), IX4000.1 girişi geldiği zaman QX4000.1 çıkışını pasif (FALSE) yapan programı yapısal metin (ST), komut dili (IL) ve merdiven diyagramı (LD) ile yazınız? PROGRAM_PLC {Değişken Tanımlama} VAR GIRIS1 AT %IX4000.2 :BOOL; GIRIS2 AT %IX4000.1 :BOOL; CIKIS AT %QX4000.1 :BOOL; END_VAR {YAPISAL METİN PLC Programı} PROGRAM_PLC {Değişken Tanımlama} VAR GIRIS1 AT %IX4000.2 :BOOL; GIRIS2 AT %IX4000.1 :BOOL; CIKIS AT %QX4000.1 :BOOL; END_VAR {KOMUT DİLİ PLC Programı} IF (GIRIS1=TRUE) THEN CIKIS:=TRUE; END_IF IF (GIRIS2=TRUE) THEN CIKIS:=FALSE; END_IF LD S GIRIS1 CIKIS LD R GIRIS2 CIKIS Örnek 4: Bir kola şişesi yürüyen bant üzerinde ilerlerken şişeyi, 1 nolu sensör algıladığında yeşil lambanın, 2 nolu sensör algıladığında turuncu lambanın, 3 nolu sensör algıladığında mavi lambanın yanması istenmektedir. Gerekli programı yapısal metin (ST) dili ile yazınız? PROGRAM_PLC {Değişken Tanımlama} VAR SENSOR1 AT %IX4000.1 :BOOL; SENSOR2 AT %IX4000.2 :BOOL; SENSOR3 AT %IX4000.3 :BOOL; YESIL AT %QX4000.1 :BOOL; TURUNCU AT %QX4000.2 :BOOL; MAVI AT %QX4000.3 :BOOL; END_VAR {YAPISAL METİN PLC Programı} IF (SENSOR1=TRUE) THEN YESIL:=TRUE; TURUNCU:=FALSE; MAVI:=FALSE; ELSIF (SENSOR2=TRUE) THEN YESIL:=FALSE; TURUNCU:=TRUE; MAVI:=FALSE; ELSIF (SENSOR3=TRUE) THEN YESIL:=FALSE; TURUNCU:=FALSE; MAVI:=TRUE; ELSIF (SENSOR1=FALSE AND SENSOR2=FALSE AND SENSOR3=FALSE) THEN YESIL:=FALSE; TURUNCU:=FALSE; MAVI:=FALSE; END_IF Örnek 5: Bir buton yardımıyla bir doğru akım motoru dönüş yönünün kontrolü yapılacaktır. Butona 1 kez basıldığında motor saat yönünde dönecek, butona 2. kez basıldığında motor duracak ve motora 3. kez basıldığında motor saat yönünün tersi yönünde dönecektir. Bu durum periyodik olarak devam edecektir. Gerekli programı yapısal metin (ST) dili ile yazınız? NOT: Sayıcı kullanılmayacaktır. PROGRAM_PLC {Değişken Tanımlama} VAR BUTON MTR_SAAT MTR_TERS_SAAT MTR_DURUM END_VAR AT %IX4000.0 AT %QX4000.1 AT %QX4000.2 :BOOL; :BOOL; :BOOL; :USINT; {YAPISAL METİN PLC Programı} IF (BUTON=TRUE AND MTR_DURUM=0) THEN MTR_SAAT:=TRUE; MTR_TERS_SAAT:=FALSE; ELSIF (BUTON=FALSE AND MTR_SAAT=TRUE) THEN MTR_DURUM:=1; ELSIF (BUTON=TRUE AND MTR_DURUM=1) THEN MTR_SAAT:=FALSE; MTR_TERS_SAAT:=FALSE; ELSIF (BUTON=FALSE AND MTR_SAAT=FALSE AND MTR_TERS_SAAT=FALSE AND MTR_DURUM=1) THEN MTR_DURUM:=2; ELSIF (BUTON=TRUE AND MTR_DURUM=2) THEN MTR_SAAT:=FALSE; MTR_TERS_SAAT:=TRUE; ELSIF (BUTON=FALSE AND MTR_TERS_SAAT=TRUE) THEN MTR_DURUM:=3; ELSIF (BUTON=TRUE AND MTR_DURUM=3) THEN MTR_SAAT:=FALSE; MTR_TERS_SAAT:=FALSE; ELSIF (BUTON=FALSE AND MTR_SAAT=FALSE AND MTR_TERS_SAAT=FALSE AND MTR_DURUM=3) THEN MTR_DURUM:=0; END_IF Örnek 6: Bir motor periyodik olarak çalıştırılacaktır. Start butonuna basıldığında bir sistem değişkeni çıkış verecektir. Sistem ile beraber motor periyodik olarak çalışmalıdır. Motor 30s çalışıp, 20s durarak çalışacaktır. Bu periyodik çalışma stop butonuna basılmasıyla sonlanacaktır. Gerekli programı yapısal metin (ST) dili ile yazınız? PROGRAM_PLC {Değişken Tanımlama} VAR Start AT %IX4000.0 :BOOL; Stop AT %IX4000.1 :BOOL; Motor AT %QX4000.0 :BOOL; Sistem :BOOL; T1 :TON; T2 :TON; END_VAR {YAPISAL METİN PLC Programı} IF (Start=1) THEN Sistem:=1; END_IF IF (Stop=1) THEN Sistem:=0; END_IF IF Sistem=1 THEN T1(IN:=NOT(T2.Q), PT:=T#30s); Motor:=NOT(T1.Q); T2(IN:=(T1.Q), PT:=T#20s); END_IF Örnek 7: Tek zaman rölesi kullanarak bir motoru periyodik olarak çalıştırınız. Start butonuna basıldığında bir sistem değişkeni çıkış verecektir. Sistem ile beraber motor periyodik olarak çalışmalıdır. Motor 10s çalışıp, 5s durarak periyodik çalışacaktır. Bu periyodik çalışma stop butonuna basılmasıyla duracaktır. Gerekli programı yapısal metin (ST) dili ile yazınız? PROGRAM_PLC PROGRAM_PLC {Değişken Tanımlama} VAR Start AT %IX4000.0 :BOOL; Stop AT %IX4000.1 :BOOL; Motor AT %QX4000.0 :BOOL; Sistem :BOOL; T1 :TON; Zaman :UINT; END_VAR {YAPISAL METİN PLC Programı} IF (Start=1) THEN Sistem:=1; END_IF IF (Stop=1) THEN Sistem:=0; END_IF {Değişken Tanımlama} VAR Start AT %IX4000.0 :BOOL; Stop AT %IX4000.1 :BOOL; Motor AT %QX4000.0 :BOOL; Sistem :BOOL; Periyod :BLINK; END_VAR {YAPISAL METİN PLC Programı} IF (Start=1) THEN Sistem:=1; END_IF IF (Stop=1) THEN Sistem:=0; END_IF IF Sistem=1 THEN T1(IN:=NOT(T1.Q), PT:=T#15s); Zaman:=TIME_TO_UINT(T1.ET); IF (Zaman>=1 AND Zaman<10000) THEN Motor:=1; ELSE Motor:=0; END_IF END_IF Periyod(ENABLE:=S, TIMELOW:=T#5s, TIMEHIGH:=T#10s); Motor:=Periyod.OUT; Örnek 8: Bir start buton ile 3 motorun kontrolü yapılacaktır. Start butonuna basıldıktan 10s sonra 1 nolu motor, 1. motor çalıştıktan 10s sonra 2 nolu motor, 2. motor çalıştıktan 10s sonra 3 nolu motor çalışacaktır. Start butonu bırakıldığında motorlar duracaktır. Gerekli programı yapısal metin (ST) dili ile yazınız? PROGRAM_PLC {Değişken Tanımlama} VAR Start AT %IX4000.0 :BOOL; M1 AT %QX4000.1 :BOOL; M2 AT %QX4000.2 :BOOL; M3 AT %QX4000.3 :BOOL; T1 :TON; T2 :TON; T3 :TON; END_VAR {YAPISAL METİN PLC Programı} T1(IN:=Start,PT:=T#10s); T2(IN:=T1.Q,PT:=T#10s); T3(IN:=T2.Q,PT:=T#10s); M1:=T1.Q; M2:=T2.Q; M3:=T3.Q; CASE … OR ELSE … END_CASE Çok sayıda iç içe IF blokları kullanıldığında ve şartların hep aynı kritere bağlı olduğu durumlarda IF deyimi yerine CASE deyimi kullanılabilir. Örnek 9: Bir start bir stop butonu yardımıyla motor kontrolü yapılacaktır. Motor start butonuna basıldığında çalışmaya başlayacak ve 10s çalışıp kendiliğinden duracaktır. Stop butonuna basıldığında zamanlayıcı hangi zaman değerinde olursa olsun motor duracaktır. Zamanlayıcının zaman değeri; 0‐2s aralığında iken yeşil lamba yanacak, 2‐4s aralığında iken sarı lamba yanacak, 4‐6s aralığında iken kırmızı lamba yanacak ve kalan sürede tüm lambalar sönük kalacaktır. Gerekli programı yapısal metin (ST) dili ile yazınız? PROGRAM_PLC {Değişken Tanımlama} VAR Start AT %IX4000.0 :BOOL; Stop AT %IX4000.1 :BOOL; Motor AT %QX4000.0 :BOOL; Yesil AT %QX4000.1 :BOOL; Sari AT %QX4000.2 :BOOL; Kirmizi AT %QX4000.3 :BOOL; Zaman :TON; END_VAR {YAPISAL METİN PLC Programı} IF (Start=TRUE OR Motor=TRUE) AND (Stop=FALSE) AND (ZAMAN.Q=FALSE) THEN Motor:=TRUE; ELSE Motor:=FALSE; END_IF Zaman(IN:=Motor, PT:=T#10s); CASE TIME_TO_UINT(Zaman.ET) OF 1..2000: Yesil:=TRUE; Sari:=FALSE; Kirmizi:=FALSE; 2001..4000: Yesil:=FALSE; Sari:=TRUE; Kirmizi:=FALSE; 4001..6000: Yesil:=FALSE; Sari:=FALSE; Kirmizi:=TRUE; ELSE Yesil:=FALSE; Sari:=FALSE; Kirmizi:=FALSE; END_CASE FOR … TO … BY … DO … END_FOR FOR döngüsü sayaç döngüsüdür. Verilen alt ve üst limitler arasında istenilen artım değeri kadar döngü içerisinde bulunan komutları tekrarlar. Diğer programlama dillerindeki gibi FOR döngüsü bittiği anda program döngüden çıkar. Ancak PLC her tarama süresinin (scantime) sonunda sürekli komutları yenilediğinden dolayı FOR döngüsünün başında herhangi bir koşul yok ise döngüyü tekrar çalıştıracaktır. Bu sebepten dolayı FOR döngüsü kullanılırken bu duruma dikkat etmek gerekir. Örnek 10: Bir start butonu ve bir stop butonu ile bir motor kontrol edilmektedir. Motor çalıştığı zaman 1’den 5’e kadar olan sayıların toplanması istenmesi gerekmektedir. Gerekli programı yapısal metin (ST) dili ile yazınız? PROGRAM_PLC {Değişken Tanımlama} VAR Start AT %IX4000.0 :BOOL; Stop AT %IX4000.1 :BOOL; Motor AT %QX4000.0 :BOOL; Deger :USINT; Toplam :USINT; END_VAR {YAPISAL METİN PLC Programı} IF (Start=TRUE OR Motor=TRUE) AND (Stop=FALSE) THEN Motor:=TRUE; ELSE Motor:=FALSE; END_IF IF (Motor=TRUE AND Toplam=0) THEN FOR Deger:=1 TO 5 BY 1 DO Toplam:=Toplam+Deger; END_FOR END_IF WHILE … DO … END_WHILE WHILE deyimi bir koşullu döngüdür. Koşullar sağlandığı sürece döngü içerisindeki komutlar işletilir. Örnek 11: Bir start butonu ve bir stop butonu ile bir motor kontrol edilmektedir. Motor çalıştığı zaman 1’den 10’a kadar olan sayıların toplanması istenmesi gerekmektedir. Gerekli programı yapısal metin (ST) dili ile yazınız? PROGRAM_PLC {Değişken Tanımlama} VAR Start AT %IX4000.0 :BOOL; Stop AT %IX4000.1 :BOOL; Motor AT %QX4000.0 :BOOL; Deger :USINT; Toplam :USINT; END_VAR {YAPISAL METİN PLC Programı} IF (Start=TRUE OR Motor=TRUE) AND (Stop=FALSE) THEN Motor:=TRUE; ELSE Motor:=FALSE; END_IF WHILE (Motor=TRUE AND Deger<10) DO Deger:=Deger+1; Toplam:=Toplam+Deger; END_WHILE ÖDEV : Yapısal Metin (ST) Dili ile cevapları verilmiş olan Örnek4 ile Örnek 11 arasındaki soruları Komut Dili (IL) ve Merdiven Diyagram (LD) dili ile yazınız? 
Download

RS Fonksiyon Blok RS Fonksiyonu Stop öncelikli Start