g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
PROGRAMLANABøLøR DENETLEYøCøLER
DERS – 07
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
Arttırma ve Azaltma Komutları
Bayt øçeri÷i Arttırma ( INC_B) Komutu
Bu komut EN giriúi her enerjilendi÷inde, IN giriúinde bulunan bayt uzunlu÷undaki operant içeri÷ini bir artırarak sonucu OUT çıkıúı ile belirtilen bayt uzunlu÷undaki operant alanına yazar.
Word uzunlu÷undaki de÷erler için INC_W, Double word uzunlu÷undaki de÷erler
için INC_DW komutları kullanılır.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
Bayt øçeri÷i Azaltma ( DEC_B) Komutu
Bu komut EN giriúi her enerjilendi÷inde, IN giriúinde bulunan bayt uzunlu÷undaki operant içeri÷ini bir azaltarak sonucu OUT çıkıúı ile belirtilen bayt uzunlu÷undaki operant alanına yazar.
Word uzunlu÷undaki de÷erler için DEC_W, double word uzunlu÷undaki de÷erler için DEC_DW komutları kullanılır.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
Tablo Oluúturma
Bu komut, verilerin periyodik olarak kaydedilmesinde kullanılır. Tablo oluúturma komutunun EN giriúine lojik süreklilik sa÷landı÷ında DATA adresindeki 16 bitlik veriyi TBL ile belirtilen adresteki tabloya yazar.
Tabloya Ekle Komutu, word cinsinden de÷erleri (DATA) bir tabloya (TBL) ekler. Tablonun ilk de÷eri maksimum tablo uzunlu÷u (TL) ve ikinci de÷eri ise girdi sayısıdır (EC).Tabloya eklenen yeni de÷erler son de÷erin “altına” yazılır. Tabloya her yeni de÷er eklendi÷inde, EC de÷eri otomatik olarak bir arttırılır. Bir tabloya 100 adede kadar veri giriúi yapılabilir.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
Tabloda Bul
Tabloda Bul komutu (FND), bir tablo içinde verilen kritere uyan veriyi arar. Tabloda Bul komutu TBL tablosunu, INDX
‘den baúlayan girdiden itibaren, veri de÷eri PTN’ye CMD’de verilen kritere göre bir araútırma yapar. Komut parametresi CMD, 1 ila 4 arasında nümerik bir de÷er olarak girilir ve sırasıyla =, <>, < ve > kriterlerine karúılık gelir.
E÷er kritere uyan bir de÷er bulunursa, INDX uygun girdinin sıra numarasını gösterir. Bir sonraki uygun de÷eri bulmak için Tabloda Bul komutu tekrar çalıútırılmadan önce INDX parametresinin bir arttırılması gerekir. E÷er uygun bir de÷er bulunamazsa, INDX’in de÷eri girdi sayısına eúit olur.
Bir tabloya 100 adede kadar veri girilebilir. Araútırılabilecek veri numarası da bu nedenle 0 ila 99 arasındadır.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
ølk Giren ølk Çıkar (FIFO) ve Son Giren ølk Çıkar (LIFO)
Bir tabloya 100 adede kadar veri giriúi yapılabilir.ølk Giren ølk Çıkar (First–In–First–Out:FIFO)
ølk Giren ølk Çıkar komutu (FIFO) bir tablodaki (TBL) en eski (veya ilk) girdiyi DATA’da belirtilen alana taúır. Taúınan de÷er tablodan çıkarılır, di÷er tüm de÷erler bir yukarı kaydırılır ve tablonun girdi sayısı bir eksilmiú olur.
Son Giren ølk Çıkar (Last–In–First–Out:LIFO)
Son Giren ølk Çıkar komutu (LIFO) bir tablodaki (TBL) en yeni (veya son) girdiyi DATA’da belirtilen alana taúır. Taúınan de÷er tablodan çıkarılır ve tablonun girdi sayısı bir eksilmiú olur.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
ølk Giren ølk Çıkar (FIFO) ve Son Giren ølk Çıkar (LIFO)
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
ølk Giren ølk Çıkar (FIFO) ve Son Giren ølk Çıkar (LIFO)
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
Hafızayı Doldur
Hafızayı Doldur komutu (FILL), OUT’dan baúlayarak birbirini takip eden N adet worde IN’deki de÷eri yazar.
N 1 ila 255 arasında olabilir.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
Bir Programın Temel Bileúenleri
Bir program blo÷u, icra edilebilir koddan ve notlardan oluúur. øcra edilebilir kod, ana programı, her türlü altprogramı içerir.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
Ana Program
Uygulamanıza kumanda eden esas program parçasıdır. S7–200 burada yer alan komutları sürekli olarak tarar. Ana programa OB1 de denir.
Altprogramlar
Programınızın bu seçime ba÷lı bileúenleri sadece ça÷ırıldıkları zaman icra edilirler. Ça÷ırılma iúlemi ana programdan, bir interrupt altprogramından veya bir baúka altprogramdan yapılabilir.
Altprogramlar, bir iúlemi birden çok yapaca÷ınız zaman özellikle çok yararlıdırlar.
Oluúturaca÷ınız fonksiyonu programın içerisinde birden çok yerde yazmak yerine sadece bir kere yazar ve ana programdan diledi÷iniz kere ça÷ırırsınız. Altprogramlar birkaç yarar sunar:
1.Altprogramlar genellikle programınızın toplam boyutunu azaltır.
2.Altprogram kullanımı genellikle toplam tarama süresini azaltır. Zira, her taramada icra edilmeyecek olan program parçası ana program dıúına aktarılmıú ve sadece gerekti÷i (yani ça÷rıldı÷ı zaman) icra edilecek duruma getirilmiútir. S7-200, ça÷rılmayan alt programları taramaz.
3.Altprogramlar, oluúturulan kodu taúınabilir hale getirir. Belli bir amaç için bir altprograma yazdı÷ınız kodu, baúka bir alana kolaylıkla taúıyabilirsiniz.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
Altprogram Komutları
Altprogram Ça÷ır komutu (CALL), program akıú kontrolunu SBR_N altprogramına aktarır. Altprogram Ça÷ır komutunu parametreli ve parametresiz olarak kullanabilirsiniz. Altprogram tamamlanınca, program akıúı altprogramın ça÷rıldı÷ı yerin bir alt satırından (bir sonraki komuttan) devam eder.
Altprogramdan Koúullu Dönüú komutu (CRET) önceki loji÷in sa÷lanması koúuluna göre altprogramı sonlandırır.
Bir altprogram eklemek için Edit > Insert > Subroutine menü komutunu kullanın.
Ana programdan, bir altprograma 8 kademeye kadar dallanabilirsiniz (altprogramdan baúka bir altprogramın ça÷rılması). Bir interrupt altprogramından, sadece 1 kademeli altprogram ça÷rısı yapılabilir.
Bir baúka deyiúle, interrupt altprogramından bir altprogram ça÷rısı yapıldıysa, bu altprogramda CALL komutu kullanılamaz. Altprogramının içinden kendisinin ça÷rılması engellenmiú de÷ildir, ancak bu durum hatayla sonuçlanacaktır.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
Altprogram Komutları
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
ønterrupt Altprogramları
Bu, seçime ba÷lı program bileúenleri belirli interrupt olgularına ba÷lı olarak hareket ederler.
Önceden bilinen bir interrupt olgusunda ne yapılması gerekti÷ini burada tanımlarsınız.
Sözkonusu olgu gerçekleúti÷inde S7–200 belirtilen interrupt altprogramını çalıútırır.
Interrupt altprogramlarının çalıúması programınızın de÷il, interrupt olgularının
kontrolundadır. Bir interrupt olgusuyla bir altprogramı iliúkilendirirsiniz ve S7–200 o olgu her gerçekleúti÷inde iliúkilendirilmiú interrupt altprogramını (mevcut program akıúını keserek) çalıútırır.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
ønterrupt Komutları
ønterrupt’lara øzin Ver ve ønterrupt øznini Kaldır
ønterrupt’lara øzin Ver komutu (Enable ønterrupt:ENI), tüm iliúkilendirilmiú interrupt olgularının iúlenmesine izin verir.ønterrupt øznini Kaldır komutu (Disable ønterrupt:DISI), tüm interrupt olguların iúlenmesini engeller.
S7-200 RUN konumuna geçti÷inde, interupttlar baúlangıçta devrede de÷ildir. ønterruptların iúlenmesini RUN konumunda ENI komutunu iúleterek devreye alabilirsiniz. ønterrupt øznini Kaldır komutuyla birlikte yeni interrupt oluúumuna izin verilmez, ancak yürürlükte olanlar iúlemeye devam eder.
ønterrupt’tan Koúullu Dönüú
ønterrupt’tan Koúullu Dönüú komutu (CRETI), bir interrupt altprogramının önceki loji÷e ba÷lı olarak bitirilmesi için kullanılabilir.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
ønterrupt øliúkilendir
ønterrupt øliúkilendir komutu (ATCH), EVNT’de tanımlanan bir interrupt olgusunu INT’de numarası girilen interrupt altprogramı ile iliúkilendirir ve o olguya izin verir.
ønterrupt Komutları
ønterrupt øliúkisini Kaldır
ønterrupt øliúkisini Kaldır komutu (DTCH), EVNT’de tanımlanan interrupt olgusunun tüm altprogramlarla iliúkisini kaldırır ve o olguyu devre dıúı bırakır.
S7–200 ønterrupt Altprogramlarını Nasıl øúliyor?
ønterrupt altprogramı, iliúkilendirilen harici veya dahili bir olguya cevap olarak iúletilir. Altprogramdaki son komut da iúletilince, kumanda ana programa aktarılır. ønterrupt’tan Koúullu Dönüú (CRETI) komutunu kullanarak altprogramdan çıkabilirsiniz.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
S7–200’ün Destekledi÷i ønterrupt Çeúitleri
S7–200, aúa÷ıdaki interrupt çeúitlerini destekler:• øletiúim port interrupt’ları: S7–200 programınızın iletiúim portuna kumanda etmesi için olgular üretir.
• I/O interrupt’ları: S7–200, de÷iúik giriú/çıkıúlardaki de÷iúiklikler durumunda olgular üretir. Bu olgular, programınızın hızlı sayıcılara, darbe çıkıúlarına ve giriúlerin düúen veya yükselen kenarlarına tepki vermesini sa÷lar.
• Zaman kontrollu interrupt’lar: S7–200, programınızın belirli zaman aralıklarında tepki vermesi için olgular üretir.
ønterrupt Komutları
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
ønterrupt Komutları
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
ønterrupt Komutları
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
Sıçrama Komutları
Etikete Sıçrama komutu (JMP), program içerisinde Etiket (label) N’e bir dallanma gerçekleútirir.
Etiket komutu (LBL), sıçrama noktası N’i iúaretler.
Sıçrama komutunu ana programda, altprogramda ve interrupt altprogramında kullanabilirsiniz. Sıçrama ve ona ait olan Etiket komutu, aynı program parçası içinde yer almalıdır (aynı altprogramda veya ana programda).
Ana programdan bir altprogram veya interrupt altprogramındaki etikete sıçrama yapamazsınız. Aynı úekilde farklı altprogramlar arasında sıçrama da mümkün de÷ildir.
Sıçrama komutu SCR parçası içinde kullanabilirsiniz, ancak ona ait Etiket de aynı SCR parçasında yer almalıdır.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
Lojik øúlem Komutları Ters Çevirme Komutları
Bayt, Word ve Double Word Ters Çevir
Bayt (INVB), Word (INVW) ve Double Word (INVD) Ters Çevirme komutları, IN’de yer alan de÷iúkenin 1’li tümleyenini alır ve sonucu OUT’a yazar.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
AND, OR ve Exclusive OR Komutları
AND Bayt, AND Word ve AND Double WordAND Bayt (ANDB), AND Word (ANDW) ve AND Double Word (ANDD) komutları, IN1 ve IN2’de yer alan giriúlerin karúılıklı bitlerini lojik olarak AND’ler ve sonucu OUT’a yazar.
OR Bayt, OR Word ve OR Double Word
OR Bayt (ORB), OR Word (ORW) ve OR Double Word (ORD) komutları IN1 ve IN2’de yer alan giriúlerin karúılıklı bitlerini lojik olarak OR’lar ve sonucu OUT’a yazar.
Exclusive OR Bayt, Exclusive OR Word ve Exclusive OR Double Word
Exclusive OR Bayt (XROB), Exclusive OR Word (XORW) ve Exclusive OR Double Word (XORD) komutları IN1 ve IN2’de yer alan giriúlerin karúılıklı bitlerini lojik olarak XOR’lar ve sonucu OUT’a yazar.
Lojik øúlem Komutları
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
Kaydır ve Döndür Komutları
Sa÷a Kaydır ve Sola Kaydır Komutları
Kaydırma komutları, IN’de verilen giriú de÷erini N bit kadar sa÷a veya sola kaydırır ve sonucu OUT’a yazar.
Kaydırılan her bitin yerine 0 doldurulur. E÷er kaydırma sayısı (N), maksimum sayıdan (bayt için 8, word için 16 ve double word için 32) büyük veya eúitse, maksimum izin verilen de÷er kadar kaydırma gerçekleútirilir. E÷er kaydırma sayısı 0’dan büyük ise, taúma biti (SM1.1) son kaydırılan bitin de÷erini taúır. Kaydırma iúleminin sonucu 0 ise sıfır biti (SM1.0) set edilir.
Bayt iúlemleri iúaretsizdir. Word ve double word iúlemlerde, iúaret biti de kaydırma iúlemine tabi tutulur.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
Kaydır ve Döndür Komutları Sa÷a Dönür ve Sola Döndür
Döndürme komutları, IN’de verilen giriú de÷erini N bit kadar sa÷a veya sola kaydırır ve sonucu OUT’a yazar. Ancak bir taraftan kaydırılan bitler, de÷erin di÷er tarafına aynı sırayla yazılır.
E÷er kaydırma sayısı (N), maksimum sayıdan (bayt için 8, word için 16 ve double word için 32) büyük veya eúitse, S7–200 bir mod alma iúlemi gerçekleútirerek kaydırılacak geçerli bit rakamını hesaplar.
Sonuçta, bayt iúlemleri için 0 ila 7, word iúlemleri için 0 ila 15 ve double word iúlemleri için 0 ila 31 bitlik kaydırma de÷erine ulaúılır.
E÷er kaydırma sayısı 0 ise, döndürme iúlemi yapılmaz. Döndürme iúlemi yapıldı÷ında, döndürülen son bitin de÷eri taúma bitine (SM1.1) kopyalanır.
Döndürülecek de÷er sıfır ise sıfır biti (SM1.0) set edilir.
Bayt iúlemleri iúaretsizdir. Word ve double word iúlemlerde, iúaret biti de kaydırma iúlemine tabi tutulur.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
Kaydır ve Döndür Komutları
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
Shift Register Bit Komutu
Shift Register Bit (SHRB) komutu, kaydırma kütü÷ü (shift register) alanına bir biti kaydırarak yazar. Bu komut, ürün veya veri akıúının sıralanması için kolay bir yöntem sa÷lar. Bu komutu kullanarak, önceden tanımladı÷ınız bir kaydırma kütü÷ünün tamamını, bir taramada en fazla bir bit olmak üzere kaydırabilir, böylece çok sayıda (örne÷in bir ürüne karúılık gelen) bitin durumunu ve kütük içerisindeki yerini takip edebilirsiniz.
SHRB komutu, DATA’da verilmiú olan giriúin de÷erini kaydırma kütü÷üne kaydırarak yazar. S_BIT, kaydırma kütü÷ünün en az anlamlı (baúlangıç) bitidir. N, kaydırma kütü÷ünün uzunlu÷unu ve kaydırma yönünü belirler (Negatif N sa÷a, pozitif N sola kaydırma sa÷lar).
SHRB komutu ile dıúarı atılan her bit taúma bitine (SM1.1) yerleútirilir.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
Kaydırma kütü÷ünün en anlamlı (MSB) bitini hesaplamak için aúa÷ıdaki formülü kullanabilirsiniz (MSB.b):
MSB.b = [(S_BIT’in baytı) + ([N] - 1 + (S_BIT’in biti)) / 8] . [8’e bölüm sonunda kalan de÷er]
Shift Register Bit Komutu
Örne÷in: E÷er S_BIT =V33.4 ve N=14 ise, aúa÷ıdaki hesaplama sonucu MSB biti V35.1 olarak bulunur.
MSB.b = V33 + ([14] - 1 +4)/8
= V33 + 17/8
= V33 + 2 (1 kalanıyla)
= V35.1
Negatif N için, giriú de÷eri (DATA) kaydırma kütü÷ünün en anlamlı bitine yerleútirilir, tüm kütük bir sola kaydırılır ve en az anlamlı bit (S_BIT) dıúarı atılır. Dıúarı atılan S_BIT’in de÷eri taúma bitine (SM1.1) taúınır.
Pozitif N için, giriú de÷eri (DATA), kaydırma kütü÷ünün en az anlamlı bitine (S_BIT) yazılır, tüm kütük bir sa÷a kaydırılır ve en anlamlı bit dıúarı atılır. Dıúarı atılan bitin de÷eri taúma bitine (SM1.1) taúınır.
Kaydırma kütü÷ünün maksimum de÷eri pozitif veya negatif 64 bittir.
Ancak, uygun programlama tekni÷i kullanılarak birden çok kaydırma kütü÷ü biraraya getirilebilir. Örnekte pozitif ve negatif N de÷erleri için bit kaydırmanın úekli gösterilmektedir.
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP
Shift Register Bit Komutu
g]HUû(1<857
g]HUù(1<857 ZZZR]HUVHQ\XUWFRP± ZZZRUEHHWHFKFRP