BÖLÜM 20 MATEMATĐKSEL KOMUTLAR VE UYGULAMALARI PLC cihazlarının içersinde toplama,çıkarma,çarpma,bölme,karekök alma, gibi işlevleri yerine getirebilecek fonksiyonlar bulunmaktadır. Bu fonksiyonların kullanılmasıyla kumanda ve kontrol sistemlerinde hacim, alan devir sayısı ölçümü, uzunluk ölçümü, faktöryel hesaplama gibi işlemleri yapmak mümkün olmaktadır. 20.1 -Tam sayı toplama : Bu komut, iki adet 16 bit tam sayıyı (), (), toplar ve sonucu çıkışa () yazar. Yani + = Đki 16 bit sayının toplamı 16 bit'ten büyük ('a sığmayacak kadar uzun) olabilir. Bu durumda sadece sağdaki 16 bit 'a yazılırve SM1.1 (taşma) bit'i set edilir. ADD_I O, (word) : VW, T, C, IW, QW, MW, SMW, SW, AC, AIW, sabit sayılar (word) : VW, T, C, IW, QW, MW, SMW, SW, AC, *VD, *AC, *LD 32 bitlik sayıların toplama işlemi için "double sayı toplama" komutu kullanılmalıdır. ADD_DI O, (word) : VD, ID, QD, MD, SMD, SD, LD, AC, HC, Sabit sayılar, *VD, *AC, *LD (Double word) : VD, ID, QD, MD, SM, SD, LD, AC, *VD, *AC, *LD Đşlem sonucu negatif ( - ) çıkarsa SM1.2 özel hafıza bit' set edilir. Đşlem sonucu "0" çıkarsa SM1.0 özel hafıza bit' i set edilir. Đşlem sonucu taşmaya neden olmuşsa SM1.1 bit' i set edilir. 20.2 -Tam sayı çıkarma : Bu komut, iki adet 16 bit tam sayıyı (), (), çıkarır ve sonucu çıkışa () yazar. Yani - =. negatif olursa SM1.2 ( negatif) bit' i set edilir. SUB_I O 340
, (word) : VW, T, C, IW, QW, MW, SMW, SW, AC, AIW, sabit sayılar, *VD, *AC, *LD (word) : VW, T, C, IW, QW, MW, SMW, SW, AC, *VD, *AC, *LD 32 bitlik sayıların çıkarma işlemi için "double tam sayı çıkarma" komutu kullanılmalıdır. SUB_DI O, (Double word):vd, ID, QD, MD, SMD, SD, LD, AC, HC, Sabit sayılar, *VD, *AC, *LD ( Double word) : VD, ID, QD, MD, SM, SD, LD, AC, *VD, *AC, *LD Đşlem sonucu negatif ( - ) çıkarsa SM1.2 özel hafıza bit' set edilir. Đşlem sonucu "0" çıkarsa SM1.0 özel hafıza bit' i set edilir. Đşlem sonucu taşmaya neden olmuşsa SM1.1 bit' i set edilir. 20.3 -Tam sayı çarpma : Bu komut, iki adet 16 bit tam sayıyı (), (), çarpar ve sonucu 16 bit olarak çıkışa () yazar. Yani * = Çıkış ve giriş operant'ları arasındaki çakışmalar komutu geçersiz kılar. MUL_I O, (word) : VW, T, C, IW, QW, MW, SMW, SW, AC, AIW, sabit sayılar, *VD, *AC, *LD (word) : VW, IW, QW, MW, SMW, SW, LW, T, C, AC, *VD, *AC, *LD 32 bitlik sayıların çarpma işlemi için "double tam sayı çarpma" komutu kullanılmalıdır. MUL_DI O, (Doble word) : VD, ID, QD, MD, SMD, SD, LD, AC, HC, Sabit sayılar, *VD, *AC, *LD ( Double word) : VD, ID, QD, MD, SM, SD, LD, AC, *VD, *AC, *LD 341
Đki word değerin çarpımı tam sayı sonuçlu yani virgüllü çıkacaksa ya da sonuç Doble word olarak çıkacaksa aşağıdaki komut kullanılmalıdır. Sonuç 32 bit' tir. MUL O, ( word) : VW, IW, QW, MW, SMW, SW, LW, AC, HC, Sabit sayılar, *VD, *AC, *LD (Double word) : VD, ID, QD, MD, SM, SD, LD, AC, *VD, *AC, *LD Đşlem sonucu negatif ( - ) çıkarsa SM1.2 özel hafıza bit' set edilir. Đşlem sonucu "0" çıkarsa SM1.0 özel hafıza bit' i set edilir. Đşlem sonucu taşmaya neden olmuşsa SM1.1 bit' i set edilir. Đşlemde sıfıra bölme işlemi yapılmaya çalışılırsa SM1.3 özel hafıza bit' i set olur. 20.4 -Tam sayı bölme: Bu kutu, iki adet 16 bit tam sayıyı (), (), böler ve sonucu 16 bit olarak çıkışa () yazar. Yani / = Çıkış ve giriş operant'ları arasındaki çakışmalar komutu geçersiz kılar. 16 bit sonuç () ikinci girişle () aynı adrese sahip olamaz. DIV_I O, (word) : VW, T, C, IW, QW, MW, SMW, SW, AC, AIW, sabit sayılar, *VD, *AC, *LD (word) : VW, IW, QW, MW, SMW, SW, AC, *VD, *AC, *LD 32 bitlik sayıların bölme işlemi için "double tam sayı bölme" komutu kullanılmalıdır. DIV_DI O, (Doble word) : VD, ID, QD, MD, SMD, SD, LD, AC, HC, Sabit sayılar, *VD, *AC, *LD (Double word) : VD, ID, QD, MD, SM, SD, LD, AC, *VD, *AC, *LD Double word'ünün küçük word'ü kalanı, büyük word' ü bölümü içerir. Đki word değerin sonucu double word çıkarsa aşağıdaki komut kullanılabilir. Ya da bölme sonucu kalanlı ise bu komut kullanılmalıdır. Sonuç 32 bit' tir. Sonucun 16 bit' lik kısmı kalandır. Kalanlı bölmelerde en değerli 16 bit kalanı, en değersiz 16 bit ise bölümü içerir. 342
DIV O, (word) : VW, IW, QW, MW, SMW, SW, LW, AC, HC, Sabit sayılar, *VD, *AC, *LD (Double word) : VD, ID, QD, MD, SM, SD, LD, AC, *VD, *AC, *LD Đşlem sonucu negatif ( - ) çıkarsa SM1.2 özel hafıza bit' set edilir. Đşlem sonucu "0" çıkarsa SM1.0 özel hafıza bit' i set edilir. Đşlem sonucu taşmaya neden olmuşsa SM1.1 bit' i set edilir. Đşlemde sıfıra bölme işlemi yapılmaya çalışılırsa SM1.3 özel hafıza bit' i set olur. 20.5 - Aritmetik işlemlerin DATA BLOKLARI kullanılarak gerçekleştirilmesi : Data bölgesine yazılan iki değer için matematiksel işlem yapılacaktır. I0.0 butonuna basıldığında data içersindeki bilgilerin toplamı, I0.1 butonuna basıldığında data içersindeki bilgilerin farkı, I0.2 butonuna basıldığında data içersindeki bilgilerin çarpımı çıkış word'- üne aktarılacaktır. Girişten herhangi bir sinyal gelmediğinde çıkıştan bir değer okunmayacaktır. Bu işlem için önce "data blok" oluşturulmalı ve sayı değerleri 16 bit'lik alan içinde bulunmalıdır. Bir hafıza bölgesini kullanmak için o bölgeyi veri tipi ve numarasıyla birlikte adreslemek gerekir. Örneğin işlemi değişken hafıza bitleri ile gerçekleştirelim. Hafıza alanlarına bit, bayt, word ve double word olarak erişim mümkündür. Bir data blok'un yüklenmesi : Bu işlemi gerçekleştirebilmek için Wiew menüsünden Data Block sayfası açılmalıdır. Data blok' da sadece V değişken hafıza alanları kullanılabilir. Data Blok oluşturmak : VW0 16#0007 // 7 sayısının VW0 alanına yüklenmesi 16#0005 // 5 sayısının alanına yüklenmesi Burada VW0 değişken hafıza alanına 7 sayısı ve değişken alanına da 5 sayısı, heksadesimal olarak yüklenmiştir. VW0 = VB0 + VB1 olmak üzere 2 bayt' lık alandan oluşur. Buna göre 7 sayısı VW0 alanında aşağıdaki gibi oluşmaktadır. (16#0007) : VW0 VB0 VB1 0 1 1 1 0 0 0 7 = VB2+ VB3 olmak üzere 2 bayt' lık alandan oluşur. Buna göre 5 sayısı alanında aşağıdaki gibi oluşmaktadır. (16#0005) : VB2 VB3 0 1 0 1 0 0 0 5 343
Eğer toplama veya çıkarma işlemlerinin sonuçlarını ikilik sistemdeki karşılığı olarak PLC' nin çıkış alanında görmek istiyorsak PLC' mizin çıkış alanı 1 word uzunluğunda (8 çıkıştan fazla). olması gerekir. Değilse SWAP komutu kullanmalısınız. Bu durumda 7 + 5 = 12 işlem sonucunu (1100) olarak QB1 bayt alanında görmek mümkün olacaktır. VW0 VB0 VB1 0 1 1 1 (16#0007) 0 0 0 7 VB2 VB3 T O P L A 0 0 0 S 5 QW0 QB1 0 1 0 1 Q0.7 Q0.6 Q0.5 Q0.4 Q0.3 Q0.2 Q0.1 Q1.7 Q1.6 Q1.5 Q1.4 Q1.3 Q1.2 Q1.1 Q1.0 O N U Ç 1 1 0 0 (16#0005) (16#000C) 0 0 0 12 Uyarı! : Eğer elimizdeki PLC' cihazının çıkış sayısı 1 word uzunluğunda değilse, başka bir değişle 8 çıkıştan fazla değilse bu cihazda QB1 çıkış bayt' ı olamayacaktır. Bu durumda QB1 alanı içindeki bilgiler ile alanındaki bilgilerin yer değiştirilmesi gerekir. Bu işlem aşağıdaki komutla gerçekleştirilebilir. SWAP O SWAP O QB1 QW0 PLC programının gerçekleştirilmesi : Network 1 I0.0, I0.1, I0.2 girişleri pasifken (OFF iken) QW0 çıkış byte' ına "0" değeri (heksadesimal olarak) yüklensin. Girişler (I0.0, I0.1,I0.2 ) pasifken QW0 çıkışı hiçbir değer göstermemelidir. I0.0 I0.1 I0.2 MOV_W NETWORK 1 O LDN I0.0 AN I0.1 AN I0.2 16#0 QW0 MOVW 16#0, QW0 Uyarı : Data blok içersindeki değerler 255' den büyükse MOV_ W kullanınız. Bu durumda girişine 16#0 yazılmalıdır. 255' den küçük değerler için MOV_B kullanınız. 344
Network 2 I0.0 aktif yapılırsa 7 + 5 = 12 toplama işlemi data blok, içinde bulunan VW0 ve ' nin değerlerini okur. Bu komut, toplama sonucunu QW0 alanı içersine yazar. I0.0 ADD_I O VW0 QW0 NETWORK 2 LD I0.0 MOVW VW0, VW4 +I, VW4 Network 3 I0.1 aktif yapılırsa 7-5 = 2 çıkarma işlemi data blok, içinde bulunan VW0 ve ' nin değerlerini okur. Bu komut, çıkarma sonucunu QW0 alanı içersine yazar. I0.1 SUB_I O VW0 QW0 NETWORK 3 LD I0.1 MOVW VW0, VW4 -I, VW4 Network 4 I0.2 aktif yapılırsa 7 x 5 = 35 çarpma işlemi data blok içinde bulunan VW0 ve ' nin değerlerini okur. Bu komut, çarpma sonucunu QW0 alanı içersine yazar. I0.2 VW0 MUL_I O QW0 NETWORK 4 LD I0.2 MOVW VW0, VW4 *I, VW4 Network 5 Elinizde bulunan PLC cihazı, 8 çıkış veya daha az ise bu PLC alanına sahiptir. Bu örnekte işlem sonuçları QB1 alanı içersinde gerçekleşmektedir. Bu nedenle yer değiştir komutu (SWAP) kullanılmalıdır. Bu komutla QB1 ile alanı içindeki bilgiler yer değiştirir. Bu durumda mevcut bilgileri alanında binary olarak görebilirsiniz. SWAP O Bu komut kullanıldığında örneğin çarpma işlemi sonucunu (35 değerini) aşağıdaki gibi görebiliriz. QW0 Şekil 20.1 : Aritmatiksel işlemler LADDER ve STL devresi Q0.7 Q0.6 Q0.5 Q0.4 Q0.3 Q0.2 Q0.1 Q1.7 Q1.6 Q1.5 Q14 Q1.3 Q12 Q1.1 Q1.0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 = 35 SWAP QB1 Q0.7 Q0.6 Q0.5 Q0.4 Q0.3 Q0.2 Q0.1 Q1.7 Q1.6 Q1.5 Q14 Q1.3 Q12 Q1.1 Q1.0 0 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 QB1 345
20.6 - Bir elektrik devresi probleminin PLC' de DATA BLOK' ların kullanılması ile çözülmesi Aşağıdaki elektrik devresinde istenenleri hesaplayalım. I I1 I2 R 1 10Ω R 2 20Ω U 1 = U 2 U= 32 V R 3 4Ω U 3 = 12 V Şekil 20. 2 : Karışık bir elektrik devresinde PLC ile hesaplama Đstenenler : U1 =U2 =? I1 kol akımı =? I2 kol akımı =? I devre akımı =? R1 direnç gücü (P1)=? Giriş butonlarından hiç birisi uyarılmamışsa çıkışı sıfır değerini göstersin. I0.0 sensörü aktif yapıldığında hesaplanmış U1=U2 değeri, çıkış bayt'ında ikilik sistem karşılığı olarak okunabilsin (U1=U2= U -U3 = 32-12 = 20 v). I0.1 sensörü aktif yapıldığında hesaplanmış I1 değeri, çıkış bayt'ında ikilik sistem karşılığı olarak okunabilsin (I1= U1 / R1 yani 20 / 10 = 2 A). I0.2 sensörü aktif yapıldığında hesaplanmış I2 değeri, çıkış bayt'ında ikilik sistem karşılığı olarak okunabilsin (I2= U2 / R2 yani 20 / 20 = 1 A). I0.3 sensörü aktif yapıldığında hesaplanmış I değeri, çıkış bayt'ında ikilik sistem karşılığı olarak okunabilsin (I = I1 + I2 yani 2 + 1 = 3 A). I0.4 sensörü aktif yapıldığında hesaplanmış P1 değeri, çıkış bayt'ında ikilik sistem karşılığı olarak okunabilmelidir (P1 = I1. U1 yani 2. 10 = 20 w ). Data bloğunun yazılması : Data blok sayfasını açabilmeniz için View menüsünden Data Block' u ya da ekranın sol tarafındaki Data Block ikonunu tıklayınız. Data Blok VWO 32 // "U" gerilim değerinin VW0 alanına yüklenmesi 10 // "R1" direnç değerinin alanına yüklenmesi VW4 20 // "R2" direnç değerinin VW4 alanına yüklenmesi VW6 4 // "R3" direnç değerinin VW6 alanına yüklenmesi VW8 12 // "U3" gerilim değerinin VW8 alanına yüklenmesi Data blok bilgilerini yazabilmeniz için Data Blok sayfasını açmanız gerekmektedir. Network 1 // I0.0, I0.1, I0.2, I0.3, I0.4 girişleri pasifken (OFF iken) çıkış bayt'ında "0" değeri okunsun. I0.0 I0.1 I0.2 I0.3 I0.4 MOV_B O 0 NETWORK 1 LDN I0.0 AN I0.1 AN I0.2 AN I0.3 AN I0.4 MOVB 0, 346
Network 2 // U1,U2 = U - U3 işleminin gerçekleştirilmesi : U1,U2 = 32-12 = 20 v. Sonuç AC0 alanına yazılsın. VW0 SUB_I O NETWORK 2 LD MOVW VW0, AC0 -I VW8, AC0 VW8 AC0 ( akümülatör 0) Network 3 // I0.0 girişi aktif hale getirildiğinde AC0 içindeki VW0, VW8 farkı sonucu çıkış bayt'ına aktarılır. Değer ikilik sistem karşılığı olarak çıkıştan okunur. Çıkışta 20 rakamının lojik karşılığı Q0.2 ve Q0.4 çalışır. I0.0 MOV_B O NETWORK 3 LD I0.0 MOVB AC0, AC0 20 1 0 1 0 0 Q0.4 Q0.3 Q0.2 Q0.1 Network 4 // I1 = U1 / R1 işleminin gerçekleştirilmesi : I1 = 20 /10 = 2 A. Sonuç AC1 alanı içersine yazılsın MicroW6' da DIV komutunu kullanınız. AC0 DIV_I O NETWORK 4 LD MOVW AC0, AC1 / I, AC1 AC1 (Akümülatör 1) Network 5 // I0.1 girişi aktif hale getirildiğinde AC1 içindeki AC0, bölümü sonucu çıkış bayt'ına aktarılır. Değer ikilik sistem karşılığı olarak çıkıştan okunur. Çıkışta 2 rakamının lojik karşılığı Q0.1 çalışır. I0.1 MOV_B O NETWORK 5 LD I0.1 MOVB AC1, AC1 2 0 0 1 0 Q0.3 Q0.2 Q0.1 Network 6 // I2 = U2 / R2 işleminin gerçekleştirilmesi : I2 = 20 / 20 = 1 A. Sonuç AC2 alanı içersine yazılsın. MicroW6' da DIV komutunu kullanınız. DIV_I O NETWORK 6 LD AC0 MOVW AC0, AC2 VW4 / I AC2 (Akümülatör 2) VW4, AC2 347
Devre 7 // I0.2 girişi aktif hale getirildiğinde AC2 içindeki AC0, VW4 bölümü sonucu çıkış bayt'ına aktarılır. Değer ikilik sistem karşılığı olarak çıkıştan okunur. Çıkışta 1 rakamının lojik karşılığı çalışır. I0.2 MOV_B O NETWORK 7 LD I0.2 MOVB AC2, AC2 1 0 0 0 1 Q0.3 Q0.2 Q0.1 Devre 8 // I = I1 + I2 işleminin gerçekleştirilmesi : I = 2 + 1 = 3 A. Sonuç AC3 alanı içersine yazılsın. AC1 AC2 ADD_I O AC3 NETWORK 8 LD MOVW AC1, AC3 + I AC2, AC3 Devre 9 // I0.3 girişi aktif hale getirildiğinde AC3 içindeki AC1, AC2 toplamı sonucu çıkış bayt'ına aktarılır. Değer ikilik sistem karşılığı olarak çıkıştan okunur. Çıkışta 3 rakamının lojik karşılığı ve Q0.1 çalışır. I0.3 MOV_B O NETWORK 9 LD I0.3 MOVB AC3, 3 0 0 1 1 AC3 Q0.3 Q0.2 Q0.1 Devre 10 // P1 = I1xU1 işleminin gerçekleştirilmesi P1 = 2 x 20 = 40 Watt. Sonuç AC0 alanına yazılsın. Uyarı! : PLC' de 4 adet akümülatör bulunduğundan AC4 yazılamaz. AC1 AC0 MUL_I O AC0 MicroW6' da MUL komutunu kullanınız. NETWORK 10 LD MOVW AC1, AC0 *I AC0, AC0 Devre 11 // I0.4 girişi aktif hale getirildiğinde AC0 içindeki AC1, AC0 çarpımı sonucu çıkış bayt'ına aktarılır. Değer ikilik sistem karşılığı olarak çıkıştan okunur. Çıkışta 40 rakamının lojik karşılığı Q0.3, Q0.5 çalışır. I0.4 AC0 MOV_B O NETWORK 11 LD I0.4 MOVB AC0, 40 1 0 1 0 0 0 Şekil 20.3: Elektrik devresi çözümü için LADDER devresi Q0.5 Q0.4 Q0.3 Q0.2 Q0.1 348
Örnek : Bir tavuk çiftliğinde içerideki ısı ile dışarıdaki ısı farkı 10 0 C olduğunda pnömatik bir sistem pencereyi açsın. Isı farkı 4 0 C olduğunda ise pnömatik sistem pencereyi kapatsın. Ancak 12 0 C' nin altında hiçbir şekilde pencere açılmasın. Uyarı : Bu işlem için analog giriş modülü kullanılması gerekir. Analog modül girişinde LM35 ısı sensörü kullanıldığı kabul edilirse LM35 CZ bağlantısı : + 5 V LM 35 CZ V0 (çıkış) 10 mv / 0 C 1 K -50 0 C = - 0.5 v +1500 0 C = 1.5 v Şekil 20.4 : LM 35 CZ bağlantısı - 50 0 C...0 0 C...+ 4 0 C...+ 10 0 C...+150 0 C - 500 mv... 0 mv...+ 40 mv... + 100mV...+ 1500 mv - 0.5V.... 0 V...+ 0.04V... + 0.1V...+ 1.5 V - 32000 0 + 854 + 2134 + 32000 LM35' in 4 0 C ve 10 0 C ısı değerliği için karşılığı olan dijital sayı değerlerini bulalım. Dijital karşılık : 1500 mv için 32000 ise 1500 mv için 32000 ise 40 mv için x 100 mv için x X = 32000 x 40 / 1500 = 854 X = 32000 x 100 / 1500 = 2134 olur. 4 0 C 10 0 C PLC' de yazılımın gerçekleştirilmesi : Network 1 PLC, RUN moduna alındığında içeride bulunan sensörün Analog modül giriş değeri lojik olarak alanına atanır. MOV_W O IAW0 349
Network 2 PLC, RUN moduna alındığında dışarıda bulunan sensörün Analog modül giriş değeri lojik olarak VW4 alanına atanır. MOV_W O IAW1 VW4 Network 3 ile VW4 arasındaki fark VW6 alanına yazılır. SUB_I O VW4 VW6 Network 4 VW6 alanı içersindeki değer, 2134' den (10 0 C' dan) büyük ve eşitse çıkış rölesi set olur. Pnömatik valf ve silindir çalışarak pencereleri açar. Đçerinin sıcaklığının 12 0 C' nin altında olması halinde çalışmaz. VW6 >=I S < I 2550 2134 1 12 0 C ısı değerinin dijital karşılığı 2550' dir 12 0 C 10 0 C (hesaplayınız). Network 5 VW6 alanı içersindeki değer, 854' den küçük ve eşitse (4 0 C ise). çıkış rölesi reset olur. Pnömatik valfin enerjisi kesilir ve silindir geri gelerek pencereleri kapatır. VW6 <=I 854 4 0 C +24V R 1 A S1 K1 K1 4 2 A B 0V K1 Y1 Y1 5 S R P 1 3 Şekil 20.5 : Çıkarma işlemi ile ilgili örnek bir devre 350
Örnek : Bir bant sistemi 0.8 m/sn (80 cm/sn) hızla hareket etmektedir. Taşıyıcı bant üzerinde bulunan bir parçanın uzunluğu ölçülecek ve cismin uzunluk değeri cm cinsinden bir adrese kaydedilecek, parçanın istenen değerde olmaması halinde bir uyarı sinyali gelecek ve parça pnömatik bir sistemle bant dışına itilecektir. Çözüm için yapılacak işlemler : Parça D noktasına geldiğinde optik sensörün kontağı kapanır. Kontak, parça D noktasından geçinceye kadar kapalı kalır. Kontağın kapalı kaldığı süre küçük çözünürlüklü bir zamanlayıcı ile belirlenmelidir. Süre ve hız çarpılarak uzunluk bulunabilir. Parça D noktasına geldiğinde I0.1 sensörü için yükselen kenar, D noktasını terkettiğinde ise düşen kenar kullanılmalıdır. +24V I0.1 Sinyal çıkışı K Optik Sensör V( hız) D Taşıyıcı bant 0V K 24 v Röle Y1 Valf bobini Network 1: Parçanın uzunluğunun diyelim ki 1480 cm den kısa, 1520 cm den uzun olması durumunda çıkışının çalışmasını istiyoruz. Bu durumda 1480 ve 1520 değerleri PLC RUN konumuna alındığında ilk döngüde 1520 değeri ve 1480 değeri VW4 alanlarına yüklensin. SM0.1 MOV_W O STL komut listesi 1520 MOV_W O Network 1 LD SM0.1 MOVW +1520, MOVW +1480, VW4 1480 VW4 Network 2: Parça D noktasına terkettiğinde I0.1sensörünün M0.0 rölesini çalıştırması. I0.1 I0.1 N M0.0 S 1 Network 3 : I0.1 sensörü algılama yaptığı sürece T40 zamanlayıcısının çalıştırılması ve M0.0 rölesinin RESET edilmesi. RESET' in amacı sensör algılama yaptığı süre içinde çarpma işleminin gerçekleştirilmemesi. T40 TON Network 2 LD I0.1 ED S M0.0, 1 Network 3 32760 PT LD I0.1 TON T38, +32760 P M0.0 R 1 351 EU R M0.0, 1
Network 4:. I0.1 sensörünün algılama işlemi sona erdiğinde Network 2' deki M0.0 dahili rölesi SET olur ve Network 4' de T 40 zamanlayıcının değeri ile bandın hızı olan 80 cm/sn çarpılır. Sonuç VW10 alanına yazılır. M0.0 MUL_I O T40 80 VW10 Network 4 LD M0.0 MOVW T38, VW10 *I 80, VW10 Network 5:. Eğer VW10 alanı içindeki çarpım sonucu değeri alanı içindeki değerden büyükse çıkışı senoid valfe kumanda ederek Pnömatik silindir parçayı bant dışına itsin. Örneğin T40' ın I0.1 sensörünün algıla işlemi sona erdiğindeki değeri 20sn. olsun. Çarpım sonucu 20* 80 = 1600 cm. olur. Sonuç 1520 cm. den büyük olduğundan çıkışı çalışır ve Pnömatik silindir parçayı bant dışına iter. VW10 > I P S 1 Parçanın boyu ile ilgili hesaplama : T40 zamanlayıcısı 100 msn tabanlı olduğuna göre 32760 * 100 = 3276000 msn = 3276 sn zamanlayıcının I0.1 sensörü açıldığı yani sensörün algılama işlemi sona erdiği andaki örnek değer 200 olduğu görülürse geçen zaman = 3276 * 200 / 32760 =20 saniyedir. Parçanın uzunluğu : 20 * 80 = 1600 cm. = 16.0 metredir. Maksimum uzunluğun 1520 cm. olması istendiğinden parça bant dışına itilir. Uyarı!!! : Sistemin hassas çalışması için çözünürlüğü düşük olan T32 veya T33 gibi zamanlayıcıların kullanılması daha uygun olur. Örnekte zamanlayıcı değerlerinin ve sonuçların Onlıne olarak bilgisayar ekranında görebilmek için T40 zamanlayıcısı seçilmiştir. Network 6:. Uzun veya kısa parçaları bant dışına atacak olan selenoid valfi çalıştıran çıkışı yarım saniye süre ile çalışsın Pnömatik silindirin çalışması için bu süre yeterlidir. T37 zamanlayıcısı 0.5 saniye süre ile çıkışını çalıştırır. T37 TON Network 5 LDW> VW10, EU S, 1 Network 6 LD TON T37, +5 Network 7:. T37 zamanlayıcısı 0.5 saniye sonunda çıkışının çalışmasını durdurur. T37 5 R 1 PT Network 8 : Eğer parçanın boyu 14.8 metreden küçük ise parça bant dışına itilir. I0.1 N VW10 < I 1480(VW4) Şekil 20.6 : Çarpma işlemi ile ilgili örnek bir devre S 1 Network 7 LD T37 R, 1 Network 8 LD I0.1 ED AW< VW10, +1480 S, 1 Parçanın boyunun maksimum 1520 santimetre minimum boyunun 1480 santimetre olması istenmektedir. Bu durumda VW10 alanı içindeki sonuç 1480 den az ise yine çıkışı çalışarak parçayı bant dışına iter. Parçanın maksimum boyu için geçen süre 19 saniyedir. (3276 * 190 / 32760= 19 sn. (19 * 80 = 1520 cm = 15.2 m.) Örneğin : parçayı algılama süresi 18 saniye ise 18 * 80 = 1440 cm = 14.4 m bu boy hedeflenen uzunluğun altında olduğundan çıkışı çalışır ve parçayı bant dışına iter. Eğer Matematiksel işlemlerde gerçel (ondalıklı 25.4, 325.8 gibi) sayılar kullanılacaksa komutlar bölümünden Floating point Math menüsündeki ADD_R, SUB_R, MUL_R, DIV_R komut kutularını kullanmalısınız. Örneğin 351. ve 352. sayfalardaki örnekte bant hızı 0.8 m olarak verilseydi sayıcının içeriğini (16 bit tam sayıdır) DI_R komutu ile gerçel sayıya çevirdikten sonra MUL_R komutu ile bu iki değeri çarpınız. Sonucu TRUNC komutu ile yuvarlayınız. Gerçel sayı komutlarında DW alanının kullanıldığını unutmayınız. 352