s7 300 Scale algoritması

djkursun

Üye
Katılım
13 May 2008
Mesajlar
298
Puanları
1
diyelimki sıvı seviye cihazı alt seviyede 4 , üst seviyede 20 mA referans veriyor gelen bu referansa göre invertör frkansı ayarlıyor üst seviyede invertör 0hz,alt seviyede ise 50hz olmasını istiyorum yani gelen 27648 sayısını tersleyip ters orantı kurmak istiyorum giren 0 iken çıkan 27648 olacak,giren 27648 iken çıkan 0 olacak çok uğraştım ama malesef işin içinden çıkamadım şimdiden yardımlarınız için teşekkür ederim.
 
Yazımızda endüstrinin can damarı sayılabilecek PLC’yi inceleyeceğiz.
KNX Standardı, küçük bir rezidansın içerisindeki aydınlatma, perde panjur, klima kontrolünden, Dünya’nın en büyük havalimanlarındaki aydınlatma otomasyonu gibi çözümler için tercih edilen bir Dünya standardıdır.
tum plc lerde tersleme komutları var bunları kullanabılırsın
 
plc programını degistirmene gerek yok , inverter bunu yapıyor yanı ters calısıyor
 
benimde derdim tam olarak bu işte invertörle değilde plc programıyla yapmak istiyorum murat arkadaşıma gelince;tersleme komutu olarak sadece negatif-pozitife tersleyen komutları biliyorum
 
]bunu ıcın basıt bır ornek ama fc 105 ve106 ıle
 

Ekli dosyalar

  • Yeni WinRAR archive.rar
    274.7 KB · Görüntüleme: 286
Son düzenleme:
hocam teşekkür ederim ama bu benim işimi görmez heralde bölme işlemi yaptım 27648 ile 25800 arası değişiyor
 
Nacizane bir örnekte benden Ayrıca Ters orantıyı Sıfır bozar.:)
Tabi Örnegi Real sayıya cevirib yapmakta fayda var!

ORAN - ORANTI KONU ANLATIMI

Kod:
PROGRAM Hesab
VAR
	AktuelSeviye: REAL; (* 4-20 mA Seviye Prostati *)
	AktuelSeviyeLimitli: REAL; (* Program icerisindeki yardimci Real Deger *)
	SurucuCikis: REAL; (* Sürücü Cikis Degeri *)
END_VAR


(*Ters orantida 0 kullanilamaz eger Sifira gecis engellenirse ters oranti rahat calisacaktir.*)
IF AktuelSeviye<=0.1 THEN
AktuelSeviyeLimitli:=1;
ELSE
AktuelSeviyeLimitli:=AktuelSeviye;
END_IF

(*Ters Oranti Formulu*)
SurucuCikis:= 27468.0 / AktuelSeviyeLimitli ;

İkinci örnek daha fonksiyoneldir giriş ve cıkışı istediğiniz gibi scale edilebilir.

Kod:
PROGRAM Scale
VAR
	X : REAL;  (*Giris Degeri*)
	I_LO : REAL; (*Giris min. Degeri 0 dan büyük olmak zorundadir*)
	I_HI : REAL; (*Giris max Degeri 0 dan büyük olmak zorundadir*)
	O_LO : REAL;(*Cikis min. Degeri 0 dan büyük olmak zorundadir*)
	O_HI : REAL;(*Cikis miax. Degeri 0 dan büyük olmak zorundadir*)
      SCALE_R:REAL; (*Cikis*)
END_VAR

SCALE_R := (O_HI - O_LO) / (I_HI - I_LO) * (LIMIT(I_LO, X, I_HI) - I_LO) + O_LO;
 
Son düzenleme:
çok özür dilerim ben alttaki fc106 bloğu görmemiştim ve simülasyonda denemiştim şimdi plc ye attım gayet güzel olmuş emeğinize sağlık tekrar teşekkür ederim..
 
Aşağıdaki kodlada scale işlemi yapabiliriz daha önce SCL dilinde vermiştim bu kodu iki noktası belli doğru denklemini düşünelim (Lineer bir sistem için)
Birinci istedigimiz nokta X1=27648.0 iken Y1=0.0 olmalı
ikinci istediğimiz nokta X2=0.0 iken Y1=27648.0 OLSUN İSTİYORUZ
aşağıdaki fonksiyonu çağırın noktaları girin, X girişinden gelen bilgiyi verin size scale etsin ;)

Kod:
FUNCTION FC10: REAL  (* Fonk. sonucu y degeri *) 

(*this function calculates the linear equation f_lin = a*x + b given by two points x1/y1 and x2/y2. *)


VAR_INPUT       (*Değişkenleri tanıtma kısmımız *)
    X : REAL;   (* X için sonucu hesaplanacak değişken*)
    X1: REAL;   (* Varolan x1 degeri *)
    Y1 : REAL;  (* Varolan  y1 degeri *)
    X2 : REAL;  (* Varolan x2 degeri *)
    Y2 : REAL;  (* Varolan y2 degeri *)
END_VAR

BEGIN    (* Programımız burdan başlıyor *)

     FC10 := (Y2 - Y1) / (X2 - X1) * (X - X1) + Y1;  

END_FUNCTION
 
Son düzenleme:

Forum istatistikleri

Konular
129,673
Mesajlar
928,934
Kullanıcılar
452,377
Son üye
yasin6060

Yeni konular

Geri
Üst