Karakter Dönüştürme Komutları

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

  1. oguzturk Administrator Staff Member


    Karakter Dizisi Dönüştürme Komutları


    Nümerik Değerleri Karakter Dizisine Dönüştürme
    Tamsayıdan (ITS), Double Tamsayıdan (DTS) ve Reel Sayıdan (RTS) karakter dizisine dönüştürme komutları, INde yer alan tamsayı, double tamsayı veya reel sayıyı OUTdan başlayan alana ASCII karakter dizisi olarak yazar.

    Tamsayıdan Karakter Dizisine Dönüştürmenin Çalışma Şekli
    Tamsayıdan Karakter Dizisine Dönüştürme komutu (ITS), IN ile başlayan tamsayı değerlerini 8 baytlık ASCII dizisine dönüştürür. Format FMT, tamsayı kısmının rakam sayısını ve tamsayı/ondalık kısım arasında nokta mı virgül mu kullanılacağını belirler. Dönüşüm, OUT ile başlayan alana (1 bayt alanın uzunluğunu göstermek üzere) 9 sıralı bayt olarak yazılır. Karakter dizisi hakkında daha detaylı bilgi için Bölüm 4e bakınız.

    ENO = 0 yapan hata koşulları
    • 0006 (endirekt adresleme)
    • 0091 (operand tanım aralığı dışında)
    • Geçersiz format (nnn > 5)
    Resim 6-17 Tamsayıdan Karakter Dizisine Dönüştürme komutunun format (FMT) operandını açıklamaktadır. Dönüştürülen dizi her zaman 8 bayttır. Noktanın sağında yer alacak rakam sayısı nnn alanında tanımlanır. nnn alanının aralığı 0 ila 5tir. Noktanın sağında yer alacak rakam sayısının 0 seçilmesi noktanın kullanılmamasıyla sonuçlanır. 5den büyük nnn değeri kullanıldığı zaman çıkış alanı boşluk karakteriyle doldurulur. c biti, tamsayı ve ondalık kısım arasında ayraç olarak virgül (c=1) veya nokta (c=0) kullanılmasını belirler. En soldaki 4 bit 0 olmalıdır.

    [​IMG]

    Resim 6-17deki örnekte ayraç olarak nokta (c=0) ve noktadan sonra üç rakam (nnn=011) kullanılmıştır. OUTdaki değer dizinin uzunluğunu gösterir. Çıkış alanı aşağıdaki kurallara göre formatlanmaktadır:
    • Pozitif değerler çıkış alanına bir işaret olmaksızın yazılır.
    • Negatif değerlerin başına eksi işareti (-) yerleştirilir.
    • Noktanın solundaki sıfırlar (noktadan sonraki ilk rakam hariç) yazılmaz.
     



  2. oguzturk Administrator Staff Member

    [​IMG]

    Double Tamsayıdan Karakter Dizisine Dönüştürmenin Çalışma Şekli

    ENO = 0 yapan hata koşulları
    • 0006 (endirekt adresleme)
    • 0091 (operand tanım aralığı dışında)
    • Geçersiz format (nnn > 5)
    Tamsayıdan Karakter Dizisine Dönüştürme komutu (DTS), IN ile başlayan tamsayı değerlerini 12 baytlık ASCII dizisine dönüştürür. Format FMT, tamsayı kısmının rakam sayısını ve tamsayı/ondalık kısım arasında nokta mı virgül mu kullanılacağını belirler. Dönüşüm, OUT ile başlayan alana (1 bayt alanın uzunluğunu göstermek üzere 13 sıralı bayt olarak yazılır. Karakter dizisi hakkında daha detaylı bilgi için Bölüm 4e bakınız.

    Resim 6-18 Double Tamsayıdan Karakter Dizisine Dönüştürme komutunun format (FMT) operandını açıklamaktadır. Dönüştürülen dizi her zaman 12 bayttır. Noktanın sağında yer alacak rakam sayısı nnn alanında tanımlanır. nnn alanının aralığı 0 ila 5tir. Noktanın sağında yer alacak rakam sayısının 0 seçilmesi noktanın kullanılmamasıyla sonuçlanır. 5den büyük nnn değeri kullanıldığı zaman çıkış alanı boşluk karakteriyle doldurulur. c biti, tamsayı ve ondalık kısım arasında ayraç olarak virgül (c=1) veya nokta (c=0) kullanılmasını belirler. En soldaki 4 bit 0 olmalıdır.

    Resim 6-18deki örnekte ayraç olarak nokta (c=0) ve noktadan sonra dört rakam (nnn=100) kullanılmıştır. OUTdaki değer dizinin uzunluğunu gösterir. Çıkış alanı aşağıdaki kurallara göre formatlanmaktadır:
    • Pozitif değerler çıkış alanına bir işaret olmaksızın yazılır.
    • Negatif değerlerin başına eksi işareti (-) yerleştirilir.
    • Noktanın solundaki sıfırlar (noktadan sonraki ilk rakam hariç) yazılmaz.
    • Değerler çıkış alanına sağa hizalanmış olarak yazılır.
    [​IMG]
     
  3. oguzturk Administrator Staff Member

    ENO = 0 yapan hata koşulları
    • 0006 (endirekt adresleme)
    • 0091 (operand tanım aralığı dışında)
    • Geçersiz format: nnn > 5 ssss < 3 ssss < gerekli karakter sayısı
    Reel Sayıdan Karakter Dizisine Dönüştürme komutu (RTS), IN ile başlayan tamsayı değerlerini bir ASCII dizisine dönüştürür. Format FMT, tamsayı kısmının rakam sayısını ve tamsayı/ondalık kısım arasında nokta mı virgül mü kullanılacağını ve çıkış alan uzunluğunu belirler. Dönüşüm, OUT ile başlayan alana yazılır. Dönüştürülen dizinin uzunluğu formatta tanımlanır ve 3 ila 15 bayt (karakter) arasında seçilebilir. Karakter dizisi hakkında daha detaylı bilgi için Bölüm 4e bakınız.

    S7-200de kullanılan reel sayı formatı en fazla 7 anlamlı rakamı desteklemekte olup bundan daha fazla sayıda rakamın gösterilme girişimi halinde yuvarlama hatası oluşur.
    Resim 6-19da RTS komutunun format (FMT) operandı gösterilmektedir. Çıkış alanının boyutu ssss alanında tanımlanır. 0, 1 veya 2 bayt boyutu geçerli değildir. Noktanın sağında yer alacak rakam sayısı nnn alanında tanımlanır. nnn alanının aralığı 0 ila 5tir. Noktanın sağında yer alacak rakam sayısının 0 seçilmesi noktanın kullanılmamasıyla sonuçlanır. 5den büyük nnn değeri kullanıldığı veya çıkış alanı dönüştürülen değeri kaydedemeyecek kadar küçük olduğu zaman çıkış alanı boşluk karakteriyle doldurulur. c biti, tamsayı ve ondalık kısım arasında ayraç olarak virgül (c=1) veya nokta (c=0) kullanılmasını belirler.

    Resim 6-19daki örnekte ayraç olarak nokta (c=0) ve noktadan sonra bir rakam (nnn=001) ve 6 baytlık çıkış alanı (ssss=0110) kullanılmıştır. OUTdaki değer çıkış dizisinin uzunluğudur. Çıkış alanı aşağıdaki kurallara göre formatlanmaktadır:
    • Pozitif değerler çıkış alanına bir işaret olmaksızın yazılır.
    • Negatif değerlerin başına eksi işareti (-) yerleştirilir.
    • Noktanın solundaki sıfırlar (noktadan sonraki ilk rakam hariç) yazılmaz.
    • Değerler çıkış alanına sağa hizalanmış olarak yazılır.
    • Noktanın sağındaki değerler burası için seçilmiş rakam sayısına uygun olarak yuvarlatılır.
    • Çıkış alanının uzunluğu noktadan sonraki rakam sayısından en az 3 bayt fazla olmalıdır.
    [​IMG]
     
  4. oguzturk Administrator Staff Member

    Altdiziden Tamsayıya (STI), Altdiziden Double Tamsayıya (STD) ve Altdiziden Reel Sayıya (STR) Dönüştürme komutları, INde yer alan karakter dizisi içerisinde INDX kadar kaydırılmış bir alandaki altdiziyi tamsayıya, double tamsayıya veya reel sayıya dönüştürür, sonucu OUT ile başlayan alana yazar.

    ENO = 0 yapan hata koşulları
    • 0006 (endirekt adresleme)
    • 0091 (operand tanım aralığı dışında)
    • 009B (indeks = 0)
    • SM1.1 (taşma)
    Altdiziden tamsayıya veya double tamsayıya dönüştürme komutu, şu formdaki dizileri dönüştürür: [boşluklar] [+ veya -] [0 - 9 rakamları]

    Altdiziden reel sayıya dönüştürme komutu şu formdaki dizileri dönüştürür: [boşluklar] [+ veya -] [0 - 9 rakamları] [. veya ,] [0 - 9 rakamları]

    INDX değeri, eğer dönüşüm ilk karakterden başlatılacaksa 1 olarak girilir. Karakter dizisinin içerisinde nümerik olmayan değerler varsa, bunların INDX parametresi ile atlanması mümkündür. Örneğin, giriş dizisi Sıcaklık: 77.8 olsun. Bu durumda INDX değeri 10 olarak girilir ve böylece baştaki Sıcaklık: sözcüğü atlanmış olur.

    Altdiziden reel sayıya dönüştürme komutu 10un kuvvetlerini kullanarak gösterimin yapıldığı bilimsel formatı (1.234E6 gibi) desteklemez. Böyle bir durumda taşma biti set edilmez; dizi üssel kısma kadar dönüşümü yapar ve burada kalır. Örneğin, 1.234E6dizisi 1.234e hatasız olarak dönüştürülür.

    Dönüştürme dizinin sonuna erişildiğinde veya ilk geçersiz karaktere rastlandığında bitirilir. Geçersiz karakter rakam (0-9) olmayan herhangi bir değerdir.

    Çıkışa sığmayacak kadar büyük bir tamsayı değeri üretildiğinde taşma biti (SM1.1) set edilir. Örneğin, Altdiziden Tamsayıya dönüştürme komutu eğer giriş dizisi 32767den büyük veya 32768ten küçük bir değer üretecekse hata bitini set eder.

    Taşma biti (SM1.1) ayrıca herhangi bir dönüşümün mümkün olmadığı durumda da set edilir. Örneğin A123 dizisi bu biti set eder ve çıkış değiştirilmez. Ancak, 12A3 dizisi hata oluşturmaz; sonuç 12 olarak çıkışa yazılır.

    [​IMG]


    [​IMG]
     

Sayfayı Paylaş