S7–200 Verilerine Erişim

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

  1. oguzturk Administrator Staff Member


    S7200 Veri Alanlarına Erişim

    S7200 bilgiyi müstakil bir adrese sahip değişik veri alanlarında saklar. Erişmek istediğiniz hafıza adresini kesin olarak ifade edebilirsiniz. Bu şekilde programınız bilgiye direkt olarak ulaşabilir. Tablo 41de değişik veri boyutlarıyla erişilebilecek sayı değerleri gösterilmektedir.

    [​IMG]

    Bir hafıza alanındaki belli bir bite erişim için adres tarif edilir. Bu adres, bayt ve bit adresleriyle hafıza alanı belirtecinden oluşur. Resim 43, bir bite erişim örneğini göstermektedir (buna bayt.bit adreslenmesi de denmektedir). Bu örnekte, hafıza alanı (I=Input) ve bayt adresini (3=bayt 3) takiben nokta konmakta ve ardından bit adresi (4=bit 4) gelmektedir.


    [​IMG]

    Bayt adres formatını kullanarak pek çok hafıza alanına (V, I, Q, M, S, L ve SM) bayt, word veya double word olarak erişebilirsiniz. Bu amaçla hafıza alanı belirteci, veri alanı büyüklüğü ve bayt, word veya double word’ün başlangıç adresi belirtilir (Resim 44).
    Diğer hafıza alanlarına (Yani T, C, HC ve akümülatörler) ise alan belirteci ve cihaz numarası ile erişilir.

    [​IMG]


    Hafıza Alanlarındaki Veriye Erişim

    [​IMG]
     



  2. oguzturk Administrator Staff Member

    S7-200, 1 msn, 10 msn veya 100 msnnin katlan olarak ayarlanabilecek zaman röleleri sağlar. Bir zaman rölesinin iki değişkeni bulunur:
    • Anlık değer: Bu 16 bitlik işaretli tamsayı, zaman rölesi tarafından sayılmışolan süreyi gösterir.
    • Zaman rölesi biti: Bu bit, anlık değerle ayar değerinin karşılaştırma işlemi sonucunda 1 veya 0 olur. Ayar değeri, zaman rölesi komutunun bir parçasıolarak girilir.
    Her iki değişkene de zaman rölesinin adresi girilerek ulaşılır (T + zaman rölesi numarası). Zaman rölesi bitine mi, anlık değere mi erişileceği kullanılan komuta bağlıdır: Bit operandları içeren komutlar, zaman rölesi bitine erişim sağlarken, word operandı içeren komutlar anlık değere erişim sağlar. Resim 4-5de görüldüğügibi, Normalde Açık Kontak komutu zaman rölesi bitine erişirken Move Word komutu zaman rölesi anlık değerini kullanır.

    [​IMG]


    Sayıcı Hafıza Alanı: C

    S7-200, herbiri sayıcı girişlerinin düşük sinyalden yüksek sinyale geçişinde (yükselen kenarda) sayan üç tip sayıcı içerir: Bir tip sadece yukan sayar, bir diğeri sadece aşağısayar, diğeri ise hem aşağıhem de yukan sayar. Bir sayıcmın iki değişkeni bulunur:
    • Anlık değer: Bu 16 bitlik işaretli tamsayı, sayıcı tarafından sayılmışolan değeri gösterir.
    • Sayıcıbiti: Bu bit, anlık değerle ayar değerinin karşılaştırma işlemi sonucunda 1 veya 0 olur. Ayar değeri sayıcıkomutunun bir parçasıolarak girilir.
    Her iki değişkene de sayıcmın adresi girilerek ulaşılır (C + sayıcı rölesi numarası). Sayıcıbitine mi, anlık değere mi erişileceği kullanılan komuta bağlıdır: Bit operandları içeren komutlar, sayıcıbitine erişim sağlarken, word operandı içeren komutlar anlık değere erişim sağlar. Resim 4-6de görüldüğügibi, Normalde Açık Kontak komutu sayıcıbitine erişirken Move Word komutu sayıcı anlık değerini kullanır.

    [​IMG]



    Hızlı Sayıcılar: HC
    Hızlı sayıcılar, yüksek süratli darbe girişlerini CPU tarama süresinden bağımsız olarak sayarlar. Hızlı sayıcıların 32 bitlik bir sayma (veya anlık) değeri vardır. Bu değere erişim için hafıza tipi (HC) ile hızlı sayıcı numarasını birlikte kullanırsınız (örneğin HC0). Anlık değer, salt-oku değerdir ve sadece double word (32 bit) olarak erişilebilir.

    Format: HC[hızlı sayıcı numarası] HC1
     
  3. oguzturk Administrator Staff Member

    Akümülatörler, okuma ve yazma yapılabilecek hafıza benzeri alanlardır. Örneğin, bir altprograma parametre atamak için çeşitli değişkenleri akümülatörler içine yazar ve altprogramda bu değerleri kullanabilirsiniz. S7200de dört adet 32 bit akümülatör bulunur (AC0, AC1, AC2 ve AC3). Akümülatör içeriğine bayt, word veya double word olarak erişebilirsiniz.

    Akümülatörde kullanacağınız verinin boyutu kullandığınız komutla ilişkilidir. Resim 47de görüleceği gibi, bayt veya word erişimi halinde akümülatörün En Düşük Anlamlı Baytı (LSB=Least Significant Byte) veya 2 baytı kullanılır. Akümülatöre double word olarak eriştiğiniz zaman tüm 32 bitini de kullanmış olursunuz.

    İnterrupt altprogramlarında akümülatör kullanırken dikkat etmeniz gereken konular için Bölüm 6ya bakınız.

    [​IMG]


    Özel Hafıza (Special Memory): SM

    SM bitleri CPUnun işletim sistemi ve dahili bazıözellikleriyle programınız arasında bir iletişim imkanı sağlar. Bu bitleri kullanarak S7-200 CPUnun bazıözel işlevlerinden yararlanabilirsiniz. Örneğin: Hazır flaşör, PLC ilk açıldığında 1 olan bit, sürekli 1 olan bit (SM bitleri hakkında detaylı bilgi için, bkz Ek D). SM hafıza alanına bit, bayt, word veya double word olarak erişebilirsiniz:

    Bit: SM [bayte adresi].[bit adresi] SM0.1
    Bayt, Word veya Double Word: SM [boyut] [başlangıçbayt adresi] SMB86
     
  4. oguzturk Administrator Staff Member

    S7-200, 64 baythk lokal hafıza sunar ki bunlardan 60 baytlık kısım yazboz alanı olarak veya altprogramlara değişken parametreler göndermek için kullanılabilir.

    Bilgi Notu
    Eğer LAD veya FBD gösterim şeklinde programlama yapıyorsanız, STEP 7-Micro/WIN son dört L baytmı kendi kullanımı için rezerve etmektedir. STLde ise türn 64 bayta erişilebilir, ancak yine de son 4 baytı kullanmanız önerilmez.

    Lokal hafızayla V hafıza benzer olmakla beraber bir önemli istisna vardır: V hafızanm global bir kapsamı varken, L hafıza lokal kapsama sahiptir. Global kapsam, aynı hafıza alanına değişik program parçasından (ana program, altprogram, interrupt altprogramı) erişilebilir demektir. Lokal kapsam ise o hafıza alanı belli bir program parçasıyla ilişkilendirilmiş anlamına gelir. S7-200, ana program için 64 baythk, her altprogram için de aynca 64 baytlık L hafızası tahsis eder.

    Ana program için tahsis edilmişolan 64 baytlık L hafızasına altprogramlardan erişilemez. Bir altprogram, ana programa tahsis edilen L hafızasına erişemediği gibi, diğer altprogramlara ait L hafızalarma da erişemez.

    L hafıza tahsisi, gereksinim olduğu zaman yerine getirilir. Yani, ana program çalıştırılıyorken, henüz bir gereksinim olmadığı için, altprogramlara ait L hafızası henüz oluşturulmamıştır. Bir interrupt olgusu oluştuğunda veya bir altprogram çağrıldığında gerekli lokal hafıza tahsis edilir. Yeni L hafıza tahsisi, başka bir altprograma ait lokal hafıza alanmm yeniden kullanılmasım gerektirebilir.

    Değişkenli bir altprogram çağrıldığında, parametrelerin değerleri gerekli L hafızasına aktarılır. L hafıza alanlan, bu aktarma esnasmda belli bir değere çekilmeyeceğinden tahsis anında herhangi bir değer içerebilir. Aynı altprogramın birden çok çağrıldığıuygulamalarda bu duruma dikkat edilmelidir.

    Bit: L[bayt adresi].[bit adresi] LO.O
    Bayt, Word veya Double Word: Lfboyut] [başlangıçbayt adresi] LB33
     
  5. oguzturk Administrator Staff Member

    Analog Girişler: AI
    S7200 (sıcaklık veya basınç gibi) analog değerleri 16 bitlik dijital bir değer haline çevirir. Bu değerlere alan belirteci (AI), veri boyutu (W) ve başlangıç bayt adresi ile erişilir. Analog girişler 2 baytlık değerler olduğundan ve her zaman çift sayıyla başladıklarından, onlara erişim de sadece çift sayılı bayt adresleriyle olur (AIW0, AIW2, AIW4 gibi). Analog giriş değerleri salt oku değerlerdir.

    Format: AIW [başlangıç bayt adresi] AIW4

    Analog Çıkışlar: AQ
    S7200 16 bitlik bir değeri, dijital değerle orantılı bir akım veya voltaj değerine dönüştürebilir. Bu değerlere alan belirteci (AQ), veri boyutu (W) ve başlangıç bayt adresi ile erişilir. Analog çıkışlar 2 baytlık değerler olduğundan ve her zaman çift sayıyla başladıklarından, onlara erişim de sadece çift sayılı bayt adresleriyle olur (AQW0, AQW2, AQW4 gibi). Analog giriş değerleri salt yazılabilen değerlerdir.

    Format: AQW [başlangıç bayt adresi] AQW4

    Sıralama Kontrol Rölesi (SCR) Hafıza Alanı: S
    SCRler veya S bitleri, birbirlerini takip eden lojik adımlarla ifade edilebilen makinalar/prosesler için programlama kolaylığı sağlar. SCRler kumanda programının lojik segmentler halinde ifade edilmesine olanak verir. S bitlerine bit, bayt, word veya double word olarak erişebilirsiniz.

    Bit:S[bayt adresi].[bit adresi] S3.1
    Bayt, Word veya Double Word: S[boyut][başlangıç bayt adresi] SB4


    Reel Sayı Formatı
    Reel (veya gerçel veya kayar nokta) sayılar ANSI/IEEE 754-1985 standartına göre tarif edilen 32 bitlik sayılardır. Bkz Resim 48. Reel sayılara sadece double word olarak erişilebilir.

    S7200de, reel sayıların çözünürlüğü 6 ondalık basamaktır. Dolayısıyla bir reel sayı sabiti girerken en fazla 6 rakam girebilirsiniz.

    [​IMG]


    Reel Sayılarla İşlem Yaparken Çözünürlük
    Çok büyük ve çok küçük sayılar arasında yapılan hesaplamalarda çözünürlüğün 6 rakamla sınırlı olduğu gözönüne alınmalıdır. Örneğin:

    100 000 000 + 1 = 100 000 000
    sonucunu verecektir.

    Karakter Dizisi Formatı
    karakter dizisi, herbir karakterin bir bayt yer kapladığı bir dizidir. Dizinin ilk baytı, dizi boyutunu bayt cinsinden gösterir. Resim 49da karakter dizisi formatı görülmektedir. Bir dizide 0 ila 254 net karakter, artı uzunluk gösteren baytla birlikte toplam 255 bayt bulunabilir.

    [​IMG]


    S7200 Komutları için Sabit Değerler Kullanmak
    Pek çok S7200 komutunda sabit değerler kullanabilirsiniz. Sabitler bayt, word veya double word olabilir. S7200 tüm sabitleri ikili sayı formatında saklar. Bunlar daha sonra ondalık, onaltılık sistemlerde ASCII veya reel sayı formatında gösterilebilir. Bkz Tablo42.

    [​IMG]

    Bilgi Notu
    S7-200 CPU, verinin hangi formatta kaydedildiğini bilemez. Örneğin VD100 alanma reel sayı olarak bir değer aktardıysanız, bu alanı kullanarak tamsayı double word işlem yaptığınızda anlamsız gibi görünebileceksonuçlarla karşılaşabilirsiniz. Bu alanm reel sayı olduğuna programınızda sizin dikkat etmeniz gerekir.
     
  6. oguzturk Administrator Staff Member

    CPU üzerinde yer alan girişçıkışlar sabit adreslere sahiptir. CPUnun sağ tarafına ekleyeceğiniz genişleme modülleri ile bir giriş/çıkışdizisi oluşturabilirsiniz. Modülün üzerindeki kanalların adresi modülün tipi, giriş veya çıkış modülü olması ve dizi üzerindeki yeri tarafından belirlenir. Sırada daha önce yer alan aynı tipteki modül, sözkonusu modülün adresini etkiler. Örneğin, bir çıkış modülü, bir giriş modülünün adresini, bir analog modül, bir dijital modülün adresini değiştirmez. Tersi de doğrudur.

    Bilgi Notu
    Dijital genişleme modülleri Pll alanında herzaman 8 bitin (1 bayt) katları cinsinden yer kaplarlar. Bir modül, 8 bitlik fiziksel kanal içermese dahi, yine de bu 8 bitlik alanı işgal eder ve sonraki modül kullanılmayan bu alanı kapsayamaz. Örneğin, 4 girişlik ve 4 çıkışlık kombinasyon modülü, 8 bit giriş ve 8 bit çıkışlık bir alan işgal eder. Giriş modülleri için, kullanılamayacak bitler her tarama süresince sıfır olarakokunur.
    Analog genişleme modülleri herzaman 2 kanalın (4 baytın) katlarıcinsinden yer kaplarlar. Fiziksel olarak bu boyuta sahip olmasalar bile yine de bu alanıkullanmaya devam ederler. Örneğin, 4 analog girişve 1 analog çıkışlık kombinasyon modülü 8 baytlık girişve 4 baytlık çıkış alanı işgal eder.

    [​IMG]

    Resim 410da belirli bir donanım için örnek adresleme görülmektedir. Gri renkte gösterilen adres boşlukları programınız tarafından kullanılamaz.
     
  7. oguzturk Administrator Staff Member

    Endirekt adresleme, hafızadaki bir veriye erişim için pointerkullanır. Pointerlar 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. Pointerlar bir altprograma parametre olarak da aktarılabilirler.

    S7200 ş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, pointera 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 411de görüleceği gibi, *AC1 girilmesi ve MOVW komutu kullanılması, AC1in word boyutunda bir pointer olduğunu gösterir. Bu örnekte VB200 ve VB201deki değerler AC0a aktarılmaktadır.

    [​IMG]




    Bilgi Notu
    Erişmek istediğiniz verinin boyutuna dikkat ediniz: Pointer değerini bir bayta erişmek için 1, worde erişmek için 2, double worde erişmek için 4 arttırmalısınız.

    [​IMG]

    [​IMG]
     
  8. OrKuN Well-Known Member

    teşekkurler paylaşım için
     
  9. erim ergin New Member

    gercekten eğitici teşekkürler
     
  10. Smithf884 Guest

    I am so grateful for your blog article. Really thank you! Fantastic.

    John
     

Sayfayı Paylaş