Siemens (6ES7241-1AA22-0XA0) SIMATIC S7-200 Bilgisayarlarda Kullanılan Haberleşme Ara Birim Cihazları
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. Tablo 6–45’de interrupt kullanımı için bazı yönerge ve sınırlamalar
vurgulanmaktadır.
Tablo 6–45 İnterrupt Altprogramı Kullanımında Yönerge ve Sınırlamalar
Yönergeler
İnterrupt işleme, özel harici veya dahili olgulara hızlı reaksiyon verme amacıyla kullanılır. Bu nedenle interrupt
altprogramınızı olabildiğince kısa tutmalısınız.
Kısa tutulan interrupt altprogramları, işlemin hızlı olmasını ve diğer işlemlerin uzun süre boyunca ertelenmemesini
sağlar. Eğer bu yapılmazsa, ana program tarafından kumanda edilen ekipmanın beklenmedik şekillerde davranması
olasıdır. İnterruptlar için “Kısa olan iyidir” yargısı kesinlikle doğrudur.
Sınırlamalar
Bir interrupt altprogramında İnterrupt İznini Kaldır (DISI), İnterrupt’lara İzin Ver (ENI), Hızlı Sayıcı Tanımlama (HDEF)
ve Son (END) komutlarını kullanamazsınız.
İnterrupt’lar için Sistem Desteği
Kontak, bobin, akümülatör değerleri interupt’lar tarafından değiştirilebileceğinden sistem; lojik yığını,
akümülatörleri ve özel hafıza bitlerini saklar ve yeri geldiğinde geri yükler. Bu şekilde bir interrupt
altprogramına sıçrama dolayısıyla ana programın lojiğinin yanılması engellenmiş olur.
Ana Program ve İnterrupt Altprogramları Arasında Veri Paylaşımı
Ana programla bir veya daha çok altprogram arasında veri paylaşımı mümkündür. Bir interrupt’ın ne
zaman oluşacağını önceden bilmek mümkün olmadığından, hem interrupt altprogramı, hem de programın
başka yerinde ortaklaşa kullanılan değişkenlerin sayısının sınırlanması arzu edilir. Ana programın bir
komutu işletmesi esnasında gerçekleşecek interruptın komutu yarıda kesmesi nedeniyle, paylaşılan
verinin tutarlılığı ile ilgili problemler oluşabilir. Bu nedenle, geçici hafıza alanı olarak interrupt
altprogramının lokal değişken tablosunun kullanılması önerilir. Böylece altprogram, başka bir yerde yer
alan veriyi değiştirmemiş olur.
Ana programla interrupt altprogramı arasındaki veri paylaşımının doğru olması için uygulayabileceğiniz
birkaç programlama tekniği vardır. Bu yöntemler ya ortak veri alanlarına erişim yollarını sınırlar veya ortak
veri alanını kullanan komut dizilerinin kesintiye uğramasını engeller.
❑ Tek bir değişkenin paylaşıldığı STL programı: Eğer paylaşılan veri tek bir bayt, word veya double
word ise ve programınız STL’de yazıldıysa, ortak veriye ulaşımda kullanılan ara sonuçların ortak
olmayan hafıza alanlarına veya akümülatörlere yazılması ile doğru veri paylaşımı garanti edilmiş
olur.
❑ Tek bir değişkenin paylaşıldığı LAD programı: Eğer paylaşılan veri tek bir bayt, word veya double
word ise ve programınız LAD’de yazıldıysa, ortak veriye erişim sadece Taşı komutları (MOVB,
MOVW, MOVD, MOVR) ile yapıldığı zaman doğru veri paylaşımı garanti edilmiş olur. Pek çok LAD
komutu bir dizi kesintiye uğratılabilir STL komutunun bileşkesi olsa da, Taşı komutları tek bir STL
komutundan oluşur ve bu nedenle bir interrupt tarafından kesintiye uğratılamaz.
❑ Birden çok değişkenin paylaşıldığı STL veya LAD programı: Eğer paylaşılan veri, birden çok
birbiriyle ilintili bayt, word veya double word’den oluşuyorsa, interrupt altprogramın işlenmesini
kontrol etmek için interrupt’lara izin ver/kaldır (DISI and ENI) kullanılabilir. Programınızın ortak
hafıza alanlarıyla ilgili kısmının başldığı noktada, intrerrupt iznini kaldırın. Paylaşılan alanlarla ilgili
işlemler bittiğinde interruptlara tekrar izin verin. İnterruptların devre dışı olduğu zamanda interrupt
altprogramları çalışmayacağından ortak alana erişmeleri sözkonusu değildir. Ancak, bu yaklaşım
interrupt olgularına tepkinin gecikmesine neden olabilir.
157