analog giriş kanallarından okunan değerler program içerisinde genellikle skala edilerek kullanılırlar.Skala etmedeki amaç; sınırları bizim istediğimiz değerlere oranlamak yani indirgemektir.
örnegin; analog kanalda "0-27648" arasında okunan sayısal değer,bizim için "0-500°C"yi ifade ediyorsa bu oranlamayı yapmak gerekir.Ancak eger alt limitlerimiz "-" degerlerdeyse yani sıfırın altındaysa işleme biraz matematik girebilir.
bir örnekle açıklamak gerekirse;
0°C-100°C arasında degişen suyun sıcaklıgı ölçülsün ve bir skada ekranına taşınsın.Ekranda da 0-100 arasında ifade edilsin.bunun için şu STL dilinde yazılmış olan program uygun olacaktır;
L PIW 256
DTR
L 27648.0
/R
RND
T DB1.DBW
Programın açıklaması; suyun sıcaklıgı analog giriş kanalından(piw256) okunup direk olarak data modul alanına(db1.dbw0) yazılsaydı,göreceğimiz deger,0-27648 olacaktı.bu degeri 0-100 aralıgına indirgemek için 276,48 değerine bölmek gerekir.okunan analog deger ivirgullu bir sayıya bolmek için, önce o degeri de virgülü sayıya dönüştürmek(dtr) gerekir.bölme işleminden sonra elde edilen virgüllü sayıyı panel ekranına direk gönderirsek birşey anlayamayız.bu degeri de yuvarlatıp yani tam sayıya dönüştürülmesi(rnd) gerekir.
işte bu uygulamada yapılan işlem skala etme işlemidir
*istersek bu şekilde skala ederiz istersek de siemens'in hazır FC'sini(fc105) kullanabiliriz.bunun için;
*siamtic maneger-libary-standart lib-ti-s7 converitons blocks-buradan da fc105 seçilir
*eğer sürekleyip yazılım ekranına taşırsanız sizden bazı degerleri girmenizi isteyecktr.bunlar;
in: skala edilmek istenen veri(int)
hi_lim: skala degerinin üst sınırı(real,virgullu sayı)
lo_lim: skala degerinin alt sınırı(real,virgullu sayı)
bipolar: 1; bipolar=-27648,+27648
0;unipolar=0,+27648
ret_val: hata(integer,word)
out: çıkış(real,virgüllü)
"fc105" blogunun "in" girişine uygulanan "0-27648" arasındaki integer deger "lo_lim" ve hi_lim" arasında tanımlanan real sayıya dönüştürülerek "out" çıkışına yazar.
"lo_lim" altında ve ya "hi_lim" üstünde deger girilmesi durumunda hata kodu olan "ret_val(w#16#0008)" alınır ve "eno" çıkışı "0" olur
bu olayı da bir örnekle açıklayalım;
CPU'nun 1.analog giriş kanalından(piw128) okunan "0-100" aralıgını skala edelim
in: piw128
hi_lim: 1.000000e+002(100)
lo_lim: 0.000000e+000(100)
bipolar: m 40.0
ret_val: mw42
out: md44
md44 içerisindeki virgüllü sayı bcd sayıya dönüştürülerek çıkış kanalına atanmak istersek ;
l md44
rnd
dtb
t qw 124
NOT:fc105 scala , fc106 unscala etmek içindir.ikisinin arasındaki fark scala girişe uygulanır,unscala da çıkışa uygulanır.