İnterrupt Komutları (S7-200)

Konusu 'Otomasyon' forumundadır ve oguzturk tarafından 6 Nisan 2008 başlatılmıştır.

  1. oguzturk Administrator Staff Member


    İnterruptlara İzin Ver ve İnterrupt İznini Kaldır
    İnterruptlara İ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.


    ENO = 0 yapan hata koşulları:
    • 0004 (ENI, DISI veya HDEF komutlarının interrupt altprogramında çağrılması girişimi)
    İnterrupttan Koşullu Dönüş
    İnterrupttan Koşullu Dönüş komutu (CRETI), bir interrupt altprogramının önceki lojiğe bağlı olarak bitirilmesi için kullanılabilir.

    İnterrupt İlişkilendir
    İnterrupt İlişkilendir komutu (ATCH), EVNTde tanımlanan bir interrupt olgusunu INTde numarası girilen interrupt altprogramı ile ilişkilendirir ve o olguya izin verir.


    ENO = 0 yapan hata koşulları:
    • 0002 (HSC giriş tanımlamasında çelişki)
    İnterrupt İlişkisini Kaldır
    İnterrupt İlişkisini Kaldır komutu (DTCH), EVNTde tanımlanan interrupt olgusunun tüm altprogramlarla ilişkisini kaldırır ve o olguyu devre dışı bırakır.

    [​IMG]

    İnterrupt İlişkilendir ve İnterrupt İlişkisini Kaldır Komutlarının Çalışma Şekli
    Herhangi bir interrupt olgusu gerçekleştiğinde belli bir altprogramının çağırılması için, interrupt olgusuyla altprogram arasında ilişki kurulması gereklidir. Böylece S7-200, programın neresine (hangi altprograma) sıçrama yapacağını bilebilir. İnterrupt İlişkilendir komutunu kullanarak, belli bir numarayla tanımlı interrupt olgusu ve interrupt altprogramı arasındaki bu bağlantıyı kurmanız gerekir. Birden çok olgu tek bir altprogramla ilişkilendirilebilir, ancak tersi doğru değildir; tek olgu birden çok interrupt altprogramı ile ilişkilendirilemez.

    Bir olguyu bir altprogramla ilişkilendirdiğinizde, o interrupt otomatik olarak devreye alınmış olur. İnterrupt İlişkisini Kaldır komutuyla tüm interruptları devre dışı bıraktığınızda, olgunun her gelişinde interrupt özel bir kayıt alanında sıralanır ve bu alan taşıncaya kadar veya interruptlara tekrar izin verilinceye kadar bu sıralama devam eder.

    Tek tek olguları devre dışı bırakmak için DTCH komutunu kullanıp olguyla altprogram arasındaki ilişkiyi koparmanız gerekir. Bu durumda interrupt olgusu ihmal edilir. Tablo 644de interrupt olgularının listesi verilmektedir.

    [​IMG]
     



  2. oguzturk Administrator Staff Member

    İ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. İnterrupttan Koşullu Dönüş (CRETI) komutunu kullanarak altprogramdan çıkabilirsiniz. Tablo 6-45de interrupt kullanımı için bazı yönerge ve sınırlamalar vurgulanmaktadır.

    [​IMG]

    İnterruptlar için Sistem Desteği
    Kontak, bobin, akümülatör değerleri interuptlar 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 STLde 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 LADde 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 wordden oluşuyorsa, interrupt altprogramın işlenmesini kontrol etmek için interruptlara 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.
     
  3. oguzturk Administrator Staff Member

    İnterrupt altprogram çağrısı sadece bir dallanma derinliğine sahip olabilir. Yani, çağırılan altprogramdan başka bir altprogram çağrısı yapılmamalıdır. İnterrupt altprogramıyla çağrılan altprogram, akümülatörleri ve lojik yığını paylaşırlar.

    S7-200’ün Desteklediği İnterrupt Çeşitleri
    S7-200, aşağıdaki interrupt çeşitlerini destekler:
    • İletişim port interruptları: S7-200 programınızın iletişim portuna kumanda etmesi için olgular üretir.
    • I/O interruptları: 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 interruptlar: S7-200, programınızın belirli zaman aralıklarında tepki vermesi için olgular üretir.
    İletişim Port İnterruptları
    S7-200’ün seri iletişim portu programınız tarafından kontrol edilebilir. İletişim portunun bu şekilde kullanımına Freeport denir. Freeport modundayken, programınız iletişim hızını, karakter başına bit sayısını, pariteyi ve protokolü tanımlar. Al ve İlet interruptlarını kulllanarak program kontrollu iletişim için değişik imkanlar yaratabilirsiniz. Detaylı bilgi için Al ve İlet komut açıklamalarına bakınız.

    I/O İnterruptları
    I/O interruptları düşen/yükselen kenar interruptları, hızlı sayıcı interruptları ve darbe çıkışı interruptlarından oluşur. S7-200, bir girişin (I0.0, I0.1, I0.2 veya I0.3) düşen ve/veya yükselen kenarında interrupt oluşturabilir. Yükselen veya düşen kenar olguları bu noktaların herhangi birinde ayrı ayrı yakalanabilir. Bu olgular, derhal işlem yapılması gereken durumlarda olgunun çok hızlı olarak saptanması amacıyla kullanılırlar.
    Hızlı sayıcı interruptları ayar değerine erişim, dönüş yönü değişimi veya harici resetleme gibi durumları içerir. Bu hızlı sayıcı olgularının her biri, PLC normal tarama süresinde yakalanamayacak kadar hızlı gelişen durumlara gerçek zamanda tepki verilebilmesini sağlar.

    Darbe dizisi çıkış interruptlarıönceden tanımlanmış olan darbe sayısının sona erdiğini anında bildirir. Bunun tipik uygulaması step motor kumandasıdır.
     
  4. oguzturk Administrator Staff Member

    Zamana bağlı interruptlar zaman kontrollu interruptlar ve zaman rölesi T32/T96 interruptlarından oluşur. Zaman kontrollu interrupt kullanarak belli işlemleri sabit zaman aralığında sürekli yapabilirsiniz. Çevrim süresi 1 msnlik artımlarla 1-255 msn arasında olabilir. Zaman kontrollu interrupt 0 için çevrim süresini SMB34e, zaman kontrollu interrupt 1 için ise SMB35e yazmalısınız.

    Zaman kontrollu interrupt olgusu, tanımlanan zamanın her seferinde kontrolu ilişkilendirilen interrupt altprogramına aktarır. Tipik olarak zaman kontrollu interruptlar, analog girişlerin örneklenmesi ve PID döngüsünün belli aralıklarla çalıştırılması için kullanılır.

    Zaman kontrollu interrupt ilişkilendirimesi yapıldığı anda olgu, girilen süreye bağlı olarak çalışmaya başlar. Yani, SMB34 ve SMB35de sonradan yapılacak değişiklikler çevrim süresini etkilemez. Çevrim süresini değiştirmek için, özel hafıza baytındaki değer yenilenmeli ve ardından ilişkilendirme işlemi tekrar yapılmalıdır. Yeni ilişkilendirmeyle birlikte o andaki sayılmış değer sıfırlanır ve zamanlama yeni ayar değeriyle sıfırdan başlar.

    Bir kere devreye alındıktan sonra, zaman kontrollu interruptlar periyodik olarak çalışırlar ve ayarlanan sürenin her bitiminde bir interrupt oluştururlar. İnterrupt ilişkisi DTCH komutuyla kesilince veya RUN konumundan çıkılınca zaman kontrollu interrupt devre dışı kalır. İnterrupt iznini kaldır komutu işlense dahi zaman kontrollu interruptlar kayıt alanına yazılmaya devam eder ve ENI komutuna veya kayıt alanı doluncaya kadar sıralanmaya devam eder.
    Zaman rölesi T32/T96 interruptları, sürekli değil de belli bir girişten belli bir süre sonra bir işlem yapılması gerektiğinde kullanılır. Bu interruptlar sadece 1 msn çözünürlüğe sahip çekmede ve düşmede gecikmeli T32 ve T96 zaman röleleri tarafından desteklenir. Bu şekilde kullanılmayan T32 ve T96 zaman röleleri normal davranırlar. İnterrupt bir kere devreye alındıktan sonra, zaman rölesinin anlık değeri ayar değerine eşit olduğunda, ilişkilendirilen interrupt altprogramına sıçrama yapılır.

    İnterrupt Öncelikleri ve Sıralama
    S7-200, interruptları kendi içlerindeki öncelik grubuna göre ilk gelen ilk hizmet alır prensibine göre değerlendirir. Bir anda sadece bir interrupt altprogramı işletilebilir. İşletilmeye başlanan interrupt altprogramı, sonlanıncaya kadar işletilmeye devam edilir. Daha yüksek önceliğe sahip bir başka interrupt gelse bile bu durum ihlal edilmez. Bir interrupt işletilirken gelen bir başka interrupt, daha sonra değerlendirilmek üzere sıraya kaydedilir.

    Tablo 646da sıra kayıt alanında saklanabilecek interrupt sayısı görülebilir.

    [​IMG]

    [​IMG]


    [​IMG]
     

Sayfayı Paylaş