• Mübarek Ramazan Bayramını sevdiklerinizle beraber sağlıklı ve huzur içinde geçirmenizi dileriz.

TC 2 Analog işlemler

kemaleris

Üye
Katılım
27 Eki 2010
Mesajlar
132
Puanları
3
Yaş
37
Merhaba Twincat 2 de analog işlemler için hangi fonksiyonları kullanabiliriz ( scale unscale gibi ). Örneğin giriş değerine göre çıkışta alt ve üst limitlerini belirleyebileceğimiz bir fonksiyon var mıdır. Yada giriş real değerlerine göre çıkışta analog karta int değer yazabileceğimiz bir hazır fonksiyon var mıdır.? Standart bir proje yazarken hangi kütüphaneleri kullanmamızı önerirsiniz. Teşekkürler.
 
Konu Sah
K

kemaleris

Üye
Katılım
27 Eki 2010
Mesajlar
132
Puanları
3
Yaş
37
İnternet te şöyle bir FB buldum denedim çalışıyor. Sizde programa karşılaştırma komutları ekleyip hatalı min_max hatalı çıktısı ekleyebilirsiniz.
Ayrıca 0 a bölüm olduğunda hata verip plc stop olabiliyor onuda ;

Bu linkteki https://infosys.beckhoff.com/englis...lccontrol/html/TcPlcCtrl_CheckDivReal.htm&id=

fonksiyonu real döndürüp yazarsanız plc stop olmaz. Ben bu fonksiyondaki ''CheckDivReal := 1;'' değerini 0 olarak değiştirdim. Hiç değer yok iken sonuç 1 görünmesin diye. CheckDivReal fonksiyonunu outscaled 'e bağlayın.

FUNCTION_BLOCK SCALING_SENSOR
VAR_INPUT
IN_DUMMY : BOOL;
INPUT_RAW: INT;
IN_SCALING_MAX: REAL;
IN_SCALING_MIN: REAL;
IN_RAW_MAX: INT;
IN_RAW_MIN: INT;
END_VAR
VAR_OUTPUT
OUT_DUMMY :BOOL;
OUT_SCALED: REAL;
END_VAR
VAR
GAIN: REAL;
END_VAR
_________________________

GAIN :=(IN_SCALING_MAX - IN_SCALING_MIN) / (IN_RAW_MAX - IN_RAW_MIN);
OUT_SCALED :=(INPUT_RAW - IN_RAW_MIN) * GAIN +IN_SCALING_MIN;
 

Üye
Katılım
23 Şub 2018
Mesajlar
133
Puanları
3
Yaş
27
#8
4-20 için analog scala programı yapmak istiyorum beckhoff kullanıyorum scala işlemini el ile yazdım fakat kafama takılan ben sensörden 4 ma aldığımda bunu %0 20 aldığımda bunu %100 olarak göstermek ama bunun için 16 bit çözünürlükteki 0-32767 değerini 16 ya mı ayıracagım kafam karıştı yani demek istediğim kısacası 4 mA değer geldiğinde sanalog kartım 4*20/32767 değerinimi alıcak yoksa 4 min değer olduğu için 0 mı gelicek beni aydınlatrsanız çok ama çok duacı olurum.Teşekkürler
rAmper_Input :=20 * INT_TO_REAL (nInput)/32767;


Gercek_rAmper :=(16 * INT_TO_REAL (nInput)/32767)+4;

Oran:=(nInput*(InputHiVal-InputLowVal)/(32767)+InputLowVal);



Gercek_Oran:=((rAmper_Input-4)/16)*(InputHiVal-InputLowVal)+InputLowVal;
IF Gercek_Oran <0 THEN
Gercek_Oran :=0;
END_IF


Ekli dosyalar
 

Mustafa Göktaş

Beckhoff Automation Temsilcisi
Katılım
8 May 2018
Mesajlar
29
Puanları
3
Yaş
30
nIntValue 0-32767 arasındaki raw değer olmak üzere;

%Deger = 6.25 * (0.00048829 * nIntValue + 4)-25;

şeklinde bir formül kullanabilirsiniz.
 

Üye
Katılım
23 Şub 2018
Mesajlar
133
Puanları
3
Yaş
27

Sponsor Bağlantı

Forum istatistikleri

Konular
110,066
Mesajlar
776,089
Kullanıcılar
406,917
Son üye
Hekiimoglu

Yeni konular

Üst