Kullanım Kılavuzları
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