OMRON PLC PROGRAMLAMA -8
Omron plc nasıl programlanır ? Omron plc programlama da dikkat edilmesi gereken kurallar nedir ? Omron plc programlamanın temelleri nedir ? Bu ve benzeri sorulara cevap aradığımız Omron Plc Programlama -3 adlı yazımızla karşınızdayız.
Başlayalım.
OMRON PLC PROGRAMLAMA
Index Registers :
Plc hafıza adresini I/O hafıza içerisinde belirleyen bir pointer fonksiyonudur.
Index Registerları MOVR(560) ya da MOVRW(561) ile adres depolandıktan sonra , Index Register girişi operand olarak dolaylı adresleme yapılır ve diğer komutlarla beraber kullanılabilir.
Index Register’ın avantajı ise , timer , counter vb. dahil I/O hafızası içerisinde herhangi bir bit ya da word’ü belirleyebilir.
MOVR(560)-> |IR[](Index Register)| -> Pointer -> |I/O Hafıza Alanları|
Index Register Kullanımı :
Index Registerları for-next döngüleri gibi döngülerde kullanılabilirdir ve güçlü bir araçtır.Index Register içeriği artırılabilir , azaltılabilir ve kolayca ofsetlenebilirdir.
|Komut : IR| -> Dolaylı Adresleme -> IR0 -> IR0’ı artır ve komutu tekrarla -> |Data Tablosu|
Index Registerlar İçin Direkt Adresleme Komutları
Binary Add (+L) , Binary Subtract (-L) , Double Increment Binary (++L) , Double Decrement Binary (-L)
Örnek ;
Komut A m
Komut A m+1
Komut A m+2 vb. yazmak yerine ;
MOVR(560) m IR0
Komut A , IR0+ şeklinde kullanılabilir.
Örnek ;
LD P_Off
Out , IR0+
Buradaki işlem ; Plc adresi CIO 0.13 IR0 içinde depolandığında , Giriş koşulu kapalı (off) olduğu için , çıkış CIO 0.13 dolaylı olarak IR0’a atanır.Koşul çalışır ve IR0 1 artar.Böylece Plc hafıza adresi CIO 0.14 olur.
Örnek ;
LD P_Off
SET ,IR0+
Buradaki işlem ; Plc adresi CIO 0.13 IR0 içerisinde depolandığında , giriş koşulu off olduğu için SET komutu çalışmaz.Böylece IR0 aynı kalır.
Dikkat edilmesi gereken kurallar ;
Bir yerde yada fonksiyon bloğunda kullandığımız Index Registerlarını bir başka yerde kullanmak istediğimizde Index Registerlarını bir yere kaydetmelisiniz.Aksi durumda , hataya sebep olabilirler.
Ek olarak kullandığımız değerleri daha önceden ya da en başta kaydetmeliyiz.Yani , Index Registerlara bir değeri set etmez isek daha başta işlemler hatalı ilerleyebilirler.
Index Register Uygulama Örneği
D0-D99 dataları ile D100-D199 datalarını toplayıp ;
D0 için IR0 , D100 için IR1 ve D200 için IR2 Index Registerları kullanılacaktır.
Bu işlemi nasıl gerçekleştirebiliriz.
Kodlar :
|—-|↑a|————–|MOVR D0 IR0|——-|
|—-|↑a|————–|MOVR D100 IR1|——-|
|—-|↑a|————–|JMP &1000|——-|
|—–|FOR &100|——-|
|—-|a|———|+ ,IR0+ , IR1+ , IR2+|—|
|—————|NEXT|
|—————–|JME &1000|
Not : ‘a’ yükselen kenar tetiklendiğinde Index R set edilir.Off->On olmadan for-next döngüsü çalışmaz.
Not : JME &1000 için , Jump destination komut ‘a’ yükselen kenarı tetiklenmediğinde çalışır.
Devam edelim..
Not : Index registerlar şu komutlar ile direkt adreslenebilir ;
MOVR , MOVRW , SETR , GETR , RSRCH[] , RSORT[] , MOVL , XCGL , =L , <>L , <L , <=L , >L , >=L , CMPL , ++L , –L, +L , -L , FRMCV , TOCV
Index Registerlar Monitoring İşlemi :
Host link komutları ya da FINS komutlarını kullanarak Index Registerları izleyebiliriz ve bunları DM alanları vb. içerisinde tutarak değerlerini görebiliriz.
Örnek :
|——–|a|——|MOVR 0005 IR0|
|——-|P_On|—–|MOVL IR0 D2000| (D2000 ve D2001 adreslerinden okuyabiliriz)
Devam ..
Tasklar Arasında Index ve Data Registerlarını Paylaştırma
Normal ayarlarda; her bir task için registerlar birbirinden ayrılır.
Ayar : CX- Programmer içerisinde Proje Ağacı (Project Tree) kısmında PLC’e sağ tıklayın ve “properties”e basarak ilerleyin.Burada PLC properties dialog box görünecektir.General seçeneğinin alt tarafında bulunan “Use |R|DR independently per task” seçeneğindeki tik’i kaldırmalısınız.
Not : Yardımcı alan bayrakları ve Wordleri :
Adres: A99.14 -> 0 : Her bir task için registerları ayrı (default) , 1 : Tüm tasklar için registerları paylaştır.
Not : Index ve Data registerlarının paylaşımı , depolama ihtiyacını azaltır.
Not : Paylaşım olursa , tasklar arasındaki değişim zamanı hızlanacaktır.
Adres Ofseti Belirleme :
Belirli adres için köşeli parantez arası ofset değiştirilebilir.
Örnek :
D000[w0] -> w0 = &2 ise -> 2 eklenir ve sonuç D0.2 olacaktır.
10.00[4] -> 10.4’e eşittir.
D100[w1] -> w1 = &3 : D103’e eşittir.
Ofsetleme yalnızca -> H , W , DM ve EM alanlarında kullanılabilirdir.
Adres Ofsetleme Örneği :
D0-D99 ve D100-D199 arası D200-299.Eğer w0=30 olarak girilirse, ilgili Wordler d30-d99 ve d130-d199 ve d230-d299 olmalıdır.
|——–|↑a|—————-|MOV w0 w1|———|
|——————————|FOR &100|———-|
|——|a|————-|< w1 &100|———–|+ D0[W1] D100[W1] D200[W1]|——|
|——-|+ +W1|—————-| (< W1 &100’ün sağ tarafına bağlıdır.)
|———————-|NEXT|——————–|
Condition (Koşul) Flags
Koşul bayrakları direk olarak sol tarafta bulunan bus bar’a bağlanamaz.
Örnek :
Doğru olan :
|———–||—————Komut A
|—–|P_EQ|—–Komut B (Burada P_EQ ile başlayan satır komut A ile kontağın arasına bağlıdır.)
Yanlış :
|———|P_EQ|————Komut A
|———|P_EQ|————Komut B
Condition (Koşul) Bayraklarında Ana Turning On Durumları
Error Flag (P_ER) : Hata bayrağı
Equals Flag (P_EQ) : Eşittir bayrağı
Carry Flag (P_CY) : Elde bayrağı
Less than and greater than (P_LT , P_GT) : Büyüktür ya da küçüktür bayrağı
Negative Flag (P_N) : Eksi,Negatif bayrağı
Özel Program Bölümleri :
1.Subroutine : SBS , SBN ve RET , GSBS , GSBN , GRET Komutları
2.IL/ILC : IL ve ILC komutları
3.Step Ladder : Step komutları
4.FOR-NEXT : For ve Next Komutları
5.JMP0-JME0 : JMP0 ve JME0 komutları
6.Blok programlama alanı : BPRG ve BEND komutları
OMRON PLC PROGRAMLAMA -8 SONUÇ :
Bugün Omron Plc Programlama -3 adlı yazımızı sizlerle paylaştık.Umuyorum faydalı olmuştur.Temel olarak altyapıyı oluşturmak adına uğraşıyorum.İlerleyen zamanlarda umuyorum bol uygulamalı yazılarla birlikte oluruz.
İyi Çalışmalar