Kullanım Kılavuzları
S7–200 PLC Kullanma Kılavuzu S7–200 Hafıza Alanlarının Endirekt Adreslenmesi için Pointer Kullanımı Endirekt adresleme, hafızadaki bir veriye erişim için ‘pointer’ kullanır. Pointer’lar double hafıza birimleri olup başka bir hafıza alanını göstermek için kullanılırlar (pointer=işaretçi). Sadece V ve L hafızaları ile akümülatörleri (AC1, AC2, AC3) pointer olarak kullanabilirsiniz. Bir pointer yaratmak için Move Double Word komutuyla endirekt olarak adreslenecek alanı pointer alanına taşımanız gerekir. Pointer’lar bir altprograma parametre olarak da aktarılabilirler. S7–200 şu hafıza alanlarına pointer ile erişim imkanı verir: I, Q, V, M, S, T (sadece anlık değer) ve C (sadece anlık değer). Tek tek bitlere endirekt adreslemeyle erişemeyeceğiniz gibi AI, AQ, HC, SM ve L hafıza alanlarına da bu şekilde erişemezsiniz. Endirekt erişim için, (&) işareti ve adreslenecek hafıza alanını girerek bir pointer oluşturmanız gerekir. Burada (&) işareti, pointer’a aktarılacak olan bilginin alanın içeriği değil, adresi olduğunu gösterir. Bir komutta kullanılan operandın başına (*) işaretinin konması onun bir pointer olduğunu gösterir. Resim 4–11’de görüleceği gibi, *AC1 girilmesi ve MOVW komutu kullanılması, AC1’in word boyutunda bir pointer olduğunu gösterir. Bu örnekte VB200 ve VB201’deki değerler AC0’a aktarılmaktadır. AC1 V199 VW200’ün adresiMOVD &VW200, AC1 V200 1 2 VB200’ü (VW200’ün başlangıç baytı) AC1’e aktararak bir pointer oluşturuluyor. V201 3 4 V202 5 6 AC0 V203 7 8 1 2 3 4 MOVW *AC1, AC0 AC1’in işaret ettiği alan AC0’a aktarılıyor. Resim 4–11 Bir Pointer Oluşturma ve Kullanma V199 AC1 VW200’ün adresi MOVD &VW200, AC1 V200 1 2 VB200’ü (VW200’ün başlangıç baytı) AC1’e aktararak bir pointer oluşturuluyor V201 3 4 AC0 V202 5 6 1 2 3 4 MOVW *AC1, AC0 V203 7 8 AC1’in işaret ettiği alan AC0’a aktarılıyor. AC1 V199 VW202’nin adresi+D +2, AC1 V200 1 2 Yeni hafıza alanını göstermek üzere pointer’a 2 ekleniyor. AC0 V201 3 4 5 6 7 8 MOVW *AC1, AC0 V202 5 6 AC1’in işaret ettiği alan (artık VW202) AC0’a aktarılıyor. V203 7 8 Resim 4–12’de görüleceği gibi, pointer’ın işaret ettiği alanı değiştirebilirsiniz. Pointer’lar 32 bit değerler olduğundan, pointer değerlerini değiştirmek için double word komutları kullanın. Toplama veya arttırma gibi basit aritmetik işlemler pointer değerlerini değiştirmek için kullanılabilir. Resim 4–12 Bir Pointer’ın Değiştirilmesi Bilgi Notu Erişmek istediğiniz verinin boyutuna dikkat ediniz: Pointer değerini bir bayta erişmek için 1, word’e erişmek için 2, double word’e erişmek için 4 arttırmalısınız. 32