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

  • Konbuyu başlatan Konbuyu başlatan bunal55
  • Başlangıç tarihi Başlangıç tarihi

bunal55

Üye
Katılım
4 Şub 2010
Mesajlar
184
Puanları
1
Yaş
34
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: 151
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.
 

Forum istatistikleri

Konular
133,423
Mesajlar
971,420
Kullanıcılar
459,419
Son üye
tasarimcitonton

Yeni konular

Çevrimiçi üyeler

Geri
Üst