Gönder ve Al Komutları (Freeport)

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

  1. oguzturk Administrator Staff Member


    İlet ve Al Komutları (Freeport)


    [​IMG]


    İlet (Transmit: XMT) komutu, freeport modunda iletişim portu yoluyla veri iletilmesini sağlar.

    Al (Receive: RCV) komutu mesaj alma fonksiyonunu başlatır veya sonlandırır. Al işlemi için başlangıç ve bitiş koşulları tanımlanmalıdır. Belirtilen port (PORT) üzerinden alınan mesajlar veri alanına (TBL) yazılır. Veri alanının ilk baytı alınan bayt sayısını gösterir.

    ENO = 0 yapan hata koşulları
    • 0006 (endirekt adresleme)
    • 0009 (Port 0da aynı anda İlet/Al işlemi)
    • 000B (Port 1de aynı anda İlet/Al işlemi)
    • Alım parametre hatası (SM86.6 veya SM186.6 set olur)
    • S7-200 CPU freeport konumunda değil
    [​IMG]

    Freeport modu hakkında daha kapsamlı bilgi için Bölüm 7 sayfa 222deki Freeport Modu ile Kişiye Özel Protokol Oluşturma bölümüne bakınız.

    Seri İletişim Portunu Kontrol Etmek için Freeport Konumunun Kullanımı
    Kullanıcı programı yoluyla, seri iletişim portu üzerinden seri iletişim kurmak için freeport konumunu kullanabilirsiniz. Freeport konumunu seçtiğinizde programınız iletişim portunun kumandasını Al komutu, İlet komutu, alım interruptı ve iletim interruptı ile kontrol eder. Freeport konumundayken iletişim protokolu tamamıyla ladder programının denetimindedir. İletişim hızı ve parite ayarları SMB30 (port 0) ve SMB130 (port 1, eğer S7-200’ünüzde 2 port varsa) üzerinden yapılır.

    S7-200 STOP konumundayken freeport konumu sona erer ve normal iletişim (örneğin programlama cihazı erişimi) yeniden kurulur.

    En basit durumda, bir yazıcıya veya seri girişli ekrana sadece İlet (XMT) komutu kullanarak mesaj gönderebilirsiniz. Diğer örnekler barkod okuyucusu, dijital tartı, başka marka ve tipte kontrol cihazları olabilir. Her durumda, S7-200 ile seri port üzerinden iletişim kuracak cihazın desteklediği protokolü programınızda yazmanız gereklidir.

    Freeport iletişim yalnızca S7-200 RUN konumundaysa gerçekleşir. Freeport konumunu seçmek için SMB30 (Port 0) veya SMB130 (Port 1)in protokol seçim alanına 01 yazın. Freeport konumundayken programlama cihazıyla iletişim mümkün değildir.

    Bilgi Notu
    Freeport konumu, çalışma konum şalterinin pozisyonu gösteren SM0.7 bitiyle kontrol edilebilir. SM0.7 = ise, şalterTERM pozisyonunda, SM0.7 = 1 ise şalter RUN pozisyonundadır. Eğerfreeport konumuna geçişi, şalter sadece RUN pozisyonundayken izin verecek olursanız, programlama cihazıyla erişimi şalter konumunu değiştirerek sağlayabilirsiniz.
     



  2. oguzturk Administrator Staff Member

    SMB30 ve SMB130 sırasıyla iletişim portları 0 ve 1i ayarlar. Bu bayt ile iletişim hızı, parite seçimi, veri biti sayısı ve freeport konumu seçilir. Resim 67de freeport kontrol baytı görülmektedir. Tüm seçeneklerde bir stop biti kullanılır.

    [​IMG]

    Veri İletimi
    İlet (XMT) komutu, 1 ila 255 karakter arasındaki bir alanın iletilmesini sağlar.


    [​IMG]

    Resim 68 iletim alanının formatını göstermektedir.

    Eğer iletim tamamlandı olgusu bir interruptla ilişkilendirildiyse, iletim alanındaki son karakter de gönderildiği anda S7200 bir interrupt oluşturur (port 0 için interrupt olgusu 9 ve port 1 için interrupt olgusu 26).


    SM4.5 ve ve SM4.6 bitleri izlenerek iletimin tamamlandığı farkedilebilir ve böylece interrupt kullanmadan da (örneğin bir yazıcıya) bilgi gönderilebilir.

    İletilecek bayt sayısı sıfır girilerek ve İlet komutu çalıştırılarak bir BREAK durumu da yaratılabilir. Bu durum, seçilen iletişim hızında 16 bitlik bir zaman kadar sürecektir. Bu şekilde iletilen BREAK durumu, her hangi bir mesaj iletilmiş gibi işlenir; iletim tamamlandığında bir interrupt oluşur ve SM4.5 veya SM4.6 bitleri iletim işleminin durumunu izler.

    Veri Alımı
    Al (RCV) komutuyla 1 ila 255 karakter arasındaki bir veri alanının iletilmesi sağlanır.


    [​IMG]

    Resim 69da alım alanının formatı gösterilmektedir.

    Eğer mesaj alımı tamamlandı olgusu bir interrupt ile ilişkilendirildiyse, son karakterin alımı tamamlandığında S7-200 bir interrupt oluşturur (port 0 için olgu 23 ve port 1 için olgu 24).

    Port 0 için SMB86 ve port 1 için SMB186 izlenerek interrupt kullanmadan da alım işlemi gerçekleştirilebilir. Bu bayt, alım işlemi aktif değil veya sona ermiş ise 0dan farklı, alım işlemi devam ederken ise 0dır.
     
  3. oguzturk Administrator Staff Member

    Tablo 612de görülebileceği gibi, Al komutu mesaj başlangıç ve bitiş koşullarınızı tanımlamanıza izin verir. Bu amaçla port 0 için SMB86 ila SMB94 arası baytlar, port 1 için SMB186 ila SMB194 arası baytlar kullanılır.

    Bilgi Notu
    Birtaşma veya parite hatası durumunda mesaj alımı otomatik olarak sona erdirilir. Mesaj alım fonksiyonunun çalışabilmesi için başlangıçve bitiş koşullarının tanımlanmasışarttır.

    [​IMG]
     
  4. oguzturk Administrator Staff Member

    Al komutu, mesaj alımı kontrol baytındaki (SMB87 veya SMB187) bitleri kullanarak mesaj alımı başlatma ve bitiş koşullarını saptar.

    Bilgi Notu
    Al komutu işlendiğinde iletişim portuyla başka cihazlar arasına zaten süren bir iletişim trafiği varsa, yeni alımfonksiyonu önceki mesajın herhangi bir noktasından alıma başlayacakve muhtemelen parite hatasıyla işlemin kesilmesi sonucu doğacaktır. Eğer parite kontrolu devrede değilse, alınan mesaj geçersiz karakterler içerebilir. Bu durum, aşağıda 2. ve 6. maddelerde gösterilen şekilde, herhangi veya belli bir karakterin alımıyla işlemin başlamasının seçilmiş olması durumunda ortaya çıkabilir.
    Al komutu, değişik başlatma koşullarını destekler. Break veya boş hat saptama yönteminin seçilmesiyle bu istenmeyen durum engellenebilir. Şöyleki, bu yöntem Al komutunu, bir mesajı alım alanına yerleştirmeden önce mesajın başlangıcıyla alınan karakterin başlangıcını senkronize etmeye zorlar.

    Al komutu, değişik başlatma koşullarını destekler:
    1. Boş hat saptama: Boş hat durumu, iletişim hattında boş veya sessiz geçen süre olarak tanımlanır. SMW90 veya SMW190da tanımlanan kadar milisaniye süresince iletişim hattında sessizlik varsa, alım işlemi başlatılır. Programınızdaki Al komutu işletildiğinde, mesaj alım fonksiyonu hattı boş süre için dinlemeye başlar. Boş hat süresi dolmadan bir karakter alınırsa, o karakter dikkate alınmaz ve süre sıfırdan tekrar sayılmaya başlar. Bkz Resim 6-10. Boş hat süresi geçince, tüm karakterler alınır ve alım alanına saklanır.

    Boş hat süresi, seçilen iletişim hızındaki karakter (start biti, veri bitleri, parite ve stop bitleri) iletim süresinden uzun olmalıdır. Tipik bir değer olarak seçilen iletişim hızındaki karakter iletim süresinin 3 misli verilebilir.

    Boş hat saptama yöntemi, genellikle ikili sistem protokollerinde kullanılır. Bu tarz protokollerde belli bir başlangıç karakteri kullanma olanağı yoktur veya mesajlar arasında minimum süre şartı vardır.

    Ayar: il = 1, sc = 0, bk = 0, SMW90/SMW190 = milisaniye cinsinden boş hat süresi


    [​IMG]

    2. Başlangıç karakteri saptama: Başlangıç karakteri, mesajın ilk karakteri olarak kullanılan herhangi bir karakterdir. SMB88 veya SMB188de tanımlanan başlangıç karakteri alındığında mesaj alımı başlatılır ve alım alanına hem başlangıç karakteri hem de sonraki değerler yazılır. Başlangıç karakterinden önce alınan tüm karakterler ihmal edilir.

    Başlangıç karakteri saptama yöntemi genellikle ASCII protokolleriyle iletişim için kullanılır. Zira, bu protokollerde tüm mesajlar önceden belirlenmiş ve veri içerisinde kullanılmayan bir başlangıç karakteri ile başlar.

    Ayar: il = 0, sc = 1, bk = 0, SMW90/SMW190 = dikkate alınmaz, SMB88/SMB188 = başlangıç karakteri
     
  5. oguzturk Administrator Staff Member

    3. Boş hat ve başlangıç karakteri saptama: Al komutu, boş hat ve başlangıç karakteri saptama

    yöntemlerinin bileşkesi ile de başlatılabilir. Al komutu işletildiğinde, mesaj alımı fonksiyonu boş hat saptamaya başlar. Boş hat bulunduktan sonra, belirlenen başlangıç karakteri beklenir. Start karakteri dışında alınan herhangi bir başka karakter boş hat süresini yeniden başlatır. Her iki şartın karşılanmasından önce alınan tüm karakterler ihmal edilir. Bu şartlara uygun olarak gelen mesaj, başlangıç karakteriyle birlikte alım alanına yazılır.

    Boş hat süresi, seçilen iletişim hızındaki karakter (start biti, veri bitleri, parite ve stop bitleri) iletim süresinden uzun olmalıdır. Tipik bir değer olarak seçilen iletişim hızındaki karakter iletim süresinin 3 misli verilebilir.

    Genellikle bu tarz başlatma koşulu mesajlar arasında minimum süre olmasını gerektiren ve ilk karakterin bir adres veya belli bir cihazı işaret ettiği protokollerde kullanılır. Bu özellikle aynı iletişim hattına bağlı birden çok cihazın bulunduğu durumlarda çok kullanışlıdır. Bu durumda, sadece başlangıç karakterinde tanımlanan cihaz alım işlemini yapar.

    Ayar: il = 1, sc = 1, bk = 0, SMW90/SMW190 > 0, SMB88/SMB188 = başlangıç karakteri

    4.Break saptama: Bir break, alınan veri, bir tam karakter iletim süresinden uzun süre boyunca sıfır ise sözkonusudur. Tam karakter iletim süresi start, data, parite ve stop bitlerinin iletimi için gereken toplam süredir. Eğer Al komutu bu tarzda ayarlandıysa, break durumundan sonra alınan her türlü karakter alım alanına yazılır, daha önceki karakterler ihmal edilir.

    Tipik olarak break saptama bir başlatma koşulu olarak yalnızca kullanılan protokol bunu gerektiriyorsa uygulanır.

    Ayar: il = 0, sc = 0, bk = 1, SMW90/SMW190 = dikkate alınmaz, SMB88/SMB188 = dikkate alınmaz

    5. Break ve başlangıç karakteri saptama: Al komutu, bir break durumunu takip eden başlangıç karakteri yoluyla başlatılabilecek şekilde ayarlanabilir. Break durumundan sonra mesaj alma fonksiyonu belirlenen başlangıç karakterini bekler. Başlangıç karakteri dışında alınan her türlü karakter tekrar break koşulunun sağlanmasını gerektir. Bu koşullara uymayan tüm karakterler ihmal edilir, koşul sağlandıktan sonra alınan karakterler ve başlangıç karakteri alım alanına yazılır.

    Ayar: il = 0, sc = 1, bk = 1, SMW90/SMW190 = dikkate alınmaz, SMB88/SMB188 = başlangıç karakteri

    6.Herhangi bir karakter: Al komutu, herhangi bir karakter görüldüğünde başlatılacak şekilde de ayarlanabilir. Bu durumda herhangi başka bir koşul aranmaksınızın tüm karakterler alım alanına kaydedilir. Bu yöntem aslında boş hat saptamanın özel bir şeklidir. Boş hat süresi (SMW90 veya SMW190) sıfıra ayarlanır. Böylece al komutu işlendiği anda karakterlerin alımına başlar.

    Ayar: il = 1, sc = 0, bk = 0, SMW90/SMW190 = 0, SMB88/SMB188 = dikkate alınmaz

    Mesaj alımının herhangi bir karakterle başlatılması zaman aşımının mesaj alımı için kullanılabilmesine olanak sağlar. Bu durum freeport iletişiminin protokolün master/host kısmı için kullanıldığı uygulamalarda, slave cihazlardan belli bir süre içinde tepki gelmemesi durumunda iletişimin kesilmesi için kullanışlıdır. Al komutu işlendiğinde mesaj süresi derhal çalışmaya başlar; girilen zaman aşıldığında ve diğer bitiş koşulları halen sağlanmamışsa mesaj alım fonksiyonu kesilir.

    Ayar: il = 1, sc = 0, bk = 0, SMW90/SMW190 = 0, SMB88/SMB188 = dikkate alınmaz c/m = 1, tmr = 1, SMW92 = milisaniye cinsinden mesaj zaman aşımı süresi
     
  6. oguzturk Administrator Staff Member

    Al komutu, mesajın hataya veya isteğe bağlı olarak kesilmesine değişik şekillerde olanak tanır. Mesaj, aşağıdakilerin herhangi biri veya birkaçının kombinasyonu ile kesilebilir:

    1. Bitiş karakteri saptama: Bitiş karakteri, mesajın sona erdiğini gösterir herhangi bir karakter olabilir. Başlama koşulu sağlandıktan sonra, Al komutuyla başlatılan işlev, alınan her karakterin bitiş karakteri olup olmadığına bakar. Bitiş karakteri, alım alanına yazılır ve alım işlemi sona erdirilir.

    Bu yöntem genellikle ASCII protokollerinde kullanılır. Bu protokollerde her mesaj belli bir karakter ile sonlandırılır. Bitiş karakteri saptamayı karakterler arası zaman aşımı, mesaj zaman aşımı veya maksimum karakter sayısı ile birlikte kullanabilirsiniz.

    Ayar: ec = 1, SMB89/SMB189 = bitiş karakteri

    2. Karakterler arası zaman aşımı: Karakterler arası zaman, bir karakterin bitişi (stop biti) ile bir sonrakinin bitişi arasındaki zamandır. Eğer karakterler arası zaman, milisaniye cinsinden SMW92 veya SMW192de girilen süreyi aşarsa mesaj alım işlemi sona erdirilir. Her yeni karakter alımında zaman aşımını izleyen zamanlayıcı sıfırlanır. Bkz Resim 611.

    Karakterler arası zaman aşımını belli bir bitiş karakteri içermeyen protokollerde kullanabilirsiniz. Zaman aşımı değeri, seçilen iletişim hızındaki bir karakter (start biti, data bitleri, parite ve stop btileri) iletim süresinden uzun olmalıdır.

    Karakterler arası zaman aşımı yöntemini bitiş karakteri saptama ve maksimum karakter sayısı ile birlikte kullanabilirsiniz.

    Ayar: c/m = 0, tmr = 1, SMW92/SMW192 = milisaniye cinsinden zaman aşımı

    [​IMG]

    3. Mesaj zaman aşımı: Mesaj zamanlayıcısı, mesajın alınmaya başlamasından itibaren SMW92 veya SMW192de milisaniye cinsinden belirlenen süre sonunda mesajın alımını keser. Bkz Resim 612.

    Bu yöntem genellikle karakterler arasında geçen sürenin belli olmadığı durumlarda ve modemli uygulamalarda kullanılır. Karakterlerin iletim sürelerin oldukça değişken olduğu modemlerde (başka bir seçenek yoksa) özellikle bu yöntem önerilir. Zaman aşımı süresi için önerilebilecek tipik değer, maksimum uzunluktaki bir mesajın seçilen iletişim hızındaki iletim süresinin 1.5 katıdır.

    Mesaj zaman aşımını bitiş karakteri saptama ve maksimum karakter sayısı ile birlikte kullanabilirsiniz.

    Ayar: c/m = 1, tmr = 1, SMW92/SMW192 = milisaniye cinsinden zaman aşımı süresi

    [​IMG]


    4. Maksimum karakter sayısı: Her durumda Al komutuna alınacak maksimum karakter sayısı SMB94 veya SMB194 ile bildirilmelidir. Alınan karakter sayısı bu değere eşit olur veya aşar ise mesaj alımı sonlandırılır. Alım işleminin kesilmesi istenmese bile buraya bir değer girilmelidir, aksi taktirde alınan baytlar kullanıcının tanımlanan alım alanının hemen sonrasındaki verilerinin üzerine yazılabilir.

    Maksimum karakter sayısıyla iletişimin sonlandırılması yöntemi, alınacak mesaj uzunluğunun sabit olduğu durumlar için uygundur. Yöntem, bitiş karakteri saptama, karakterler arası zaman aşımı veya mesaj zaman aşımı ile birlikte kullanılabilir.

    5. Parite hataları: Donanım, bir parite hatası saptarsa alım işlemi otomatik olarak sonlanır. Ancak, SMB30 veya SMB130da parite seçimi yapılmış olmalıdır. Seçildikten sonra bu fonksiyonun verdiği hatalar ihmal edilemez, zira donanımdan (örneğin iletişim kablosunda parazitten) kaynaklanan geçersiz bilgi alımı sözkonusudur.

    6. Kullanıcı talebi ile: Kullanıcı, yürürlükte olan alma işlemini SMB87 veya SMB187de yer alan EN bitini kullanarak yeni bir alma işlemi ile sonlandırabilir. Bu durumda mesaj alma fonksiyonu anında sonlanır (ve yeni alım işlemine geçilir).
     
  7. oguzturk Administrator Staff Member

    Mutlaka gerekli olmamakla beraber bazı protokollerde Al komutunu hiç kullanmadan karakter alım interrupt’ı da kullanmanız gerekebilir. S7-200, bu amaçla her karakter alımında bir interrupt oluşturma yeteneğine sahip olarak donatılmıştır. İlişkilendirilen interrupt altprogramına sıçranmadan önce alınan karakter SMB2ye yerleştirilir ve (eğer seçildiyse) parite durumu SM3.0da yer alır. SMB2, freeport modundaki karakter alım alanıdır. Freeport konumunda alınan her bir karaktere (ancak bir anda sadece bir karakter olmak üzere) buradan da erişilebilir. SMB3, yine freeport modunda kullanılır ve sıfırıncı bit, alınan karakterde parite hatası olup olmadığını gösterir. Bu biti kullanarak alınan karakteri geçersiz saymanız veya mesajın hatalı olduğunu belirtmeniz mümkündür. SMB3deki diğer bitler rezervedir.

    Yüksek iletişim hızlarında (38.4 kbaud ila 115.2 kbaud), interruptlar arası zaman çok kısadır. Örneğin, 38.4 kbaud için bu değer 260 mikrosaniye, 57.6 kbaud için 173 mikrosaniye ve 115.2 kbaud için 86 mikrosaniyedir. İnterrupt altprogramının taranması için gereken süre bu sürelerden uzun ise Al komutunu kullanın, aksi taktirde bazı karakterlerin alınması mümkün olmayabilir.

    Bilgi Notu
    İki portlu cihazların her iki portunun da freeport mesaj alımı için kullanılması durumunda şunları dikkate alınız:
    SMB2 ve SMB3, Port 0 ve Port 1 tarafından ortak olarak kullanılır. İnterrupt olgusu 8 gerçekleştiğinde port 0dan veri alınmış demektir. Bu durumda SMB2deki değer port 0dan alınan değeri ve SMB3 de bu alımla ilgili pariteyi gösterir. İnterrupt olgusu 25 gerçekleştiğinde ise, port 1den alım vardır, ama yine de alınan değer SMB2den, parite SMB3den okunacaktır.

    [​IMG]


    [​IMG]
     

Sayfayı Paylaş