Siemens (6ES7241-1AA22-0XA0) SIMATIC S7-200 Bilgisayarlarda Kullanılan Haberleşme Ara Birim Cihazları
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