CTU (counter up) CV(currentValue) Kalıcı Data Tutma...!!

bunal55

Üye
Katılım
4 Şub 2010
Mesajlar
185
Puanları
1
Yaş
31
Merhaba;
Twincat PLC programında,
CTU sayıcımızın PV giriş değerini kalıcı datada tutabiliyorum. Fakat Cv (current value) kalıcı data yapamıyorum.
Örnek;
PV: 255 CV:150 saymaya devam ederken pano enerjisi kesilince CV değeri 0 oluyor.
Pano enerjisi açılınca kaldığı yerden devam etmesini istiyorum.

Yardım edebilirmisiniz.?

Kolay gelsin.
 

Ekli dosyalar

  • Sayıcı.JPG
    Sayıcı.JPG
    37.8 KB · Görüntüleme: 47
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.
Merhaba bunal55 ,
Kullanıdığınız CTU fonksiyon bloğunda PV (Counter Limit) girişini kalıcı olarak ayarlayıp CV(Current Counter Value ) değerini ayarlayamamanızın sebebi, fonksiyon blok yapısının çıkışlarına müdahale edememenizden kaynaklanmaktadır.

Bu uygulamayı yapabilmek için CTU fonksiyon bloğunu kendiniz yazarsanız istediğiniz değişkeni istediğiniz şekilde ayarlayabilirsiniz.

Örnek vermek gerekirse, sizin istediğniz gibi çalışan bir sayıcı bloğu ve program içerisindeki kullanımı aşağıdaki gibidir.

// FB //
(* FB Degisken Tanımlama Alanı *)
FUNCTION_BLOCK CTU_Manual
VAR_INPUT
CU : BOOL;
RESET : BOOL;
PV : WORD;
INIT_CV : WORD;
END_VAR
VAR_OUTPUT
Q : BOOL;
CV : WORD;
END_VAR
VAR
bInit : BOOL;
rTrig_CU :R_TRIG;
END_VAR

(*FB Lojik Alani*)
IF NOT bInit THEN (*PLC Kapandigi Andaki Degeri Baslangicta CV ' ye Yazdirma *)
CV := INIT_CV;
bInit := TRUE;
END_IF

rTrig_CU(CLK:= CU , Q=> ); (* Yukselen Kenar Ile Anlik Sayici Degeri 1 Arttirma *)
IF rTrig_CU.Q THEN
CV := CV + 1;
END_IF

IF PV > CV THEN (* Sayicinin Anlik Degeri Limit Degerine Ulastiginda Cikis Verme *)
Q := FALSE;
ELSE
Q := TRUE;
END_IF

IF RESET THEN (* Anlik Sayilan Degeri Resetleme *)
CV := 0;
END_IF

// FB' yi Programda Kullanma//
(*Programda Degisken Tanimlama alanı*)
PROGRAM MAIN
VAR
TestCounter : CTU_Manual;
bCU : BOOL;
bReset : BOOL;
bQ : BOOL;
END_VAR
VAR PERSISTENT
wPv : WORD;
wLastCv : WORD;
END_VAR

(*Program Lojik Alanı*)
TestCounter(
CU := bCU,
RESET := bReset,
PV := wPV,
INIT_CV := wLastCv,
Q => bQ,
CV => wLastCv);

Umarım uygulamanızda faydalı olur.
 
Merhaba Semih Bey;

Desteklerinizden ötürü teşekkür ederim. En kısa sürede deniycem kolay gelsin.
 

Yeni mesajlar

Forum istatistikleri

Konular
128,153
Mesajlar
915,493
Kullanıcılar
449,897
Son üye
alcaponee

Yeni konular

Geri
Üst