SCL ile Timer Olayı.

Açıkçası bende bu konuya 2 gündür eğiliyorum ve anlamaya çalışıyorum. İşe yarar örnekler oluşturabilirsem elbette paylaşırım.
 
Arkadaşlar; SCL diliyle oluşturulan bir fonsiyon bloğumuz var ve biz gene SCL ile ana blok (OB1) oluşturmak ve aşağıdaki kodları OB1 içine SCL şeklinde yazmak istiyorum ne yapmam gerekir?


NETWORK 1
CALL FB 1 , DB2
NOP 0

NETWORK 2
A I 124.0
= DB2.DBX 44.0

NETWORK 3
A I 124.1
= DB2.DBX 44.1

NETWORK 4
A DB2.DBX 54.0
= Q 124.0

NETWORK 5
A DB2.DBX 54.1
= Q 124.1
 
Sayın Elektronikmuh. Arkadaşın vermiş olduğu örnek üzerinde çalışarak SCL diliyle oluşturulan FB yi gene SCL ile OB1 den çağırarak
gerçekleştirdiğim bir uygulamadır.



//I124.0=1 İSE GECIKMELI OLARAK Q124.0=1 OLSUN
//I124.1=1 İSE Q124.1 HEMEN 1 OLUP daha sonra I124.1=0 YAPILDIĞINDA
//GECIKMELI OLARAK Q124.1=0 yapan program

//*********FB1 DONGUSU **********
FUNCTION_BLOCK FB1
TITLE = ' TON ve TOFF Uygulaması '
VAR
On : TON;
Off : TOF;
END_VAR
VAR_INPUT
START1 : BOOL := FALSE;
START2 : BOOL := FALSE;
ZAMAN1 : TIME := T#20s;
ZAMAN2 : TIME := T#15s;
END_VAR
VAR_OUTPUT
CIKIS1 : BOOL := FALSE;
CIKIS2 : BOOL := FALSE;
END_VAR
BEGIN
//TON
On (
IN := Start1, //ZAMANLAYICI GİRİŞİ
PT := ZAMAN1); //SÜRE ATAMASI

CIKIS1 := On.Q;
//TOFF
Off (
IN := START2, //ZAMANLAYICI GİRİŞİ
PT := ZAMAN2); //SÜRE ATAMASI

CIKIS2 :=OFF.Q;
END_FUNCTION_BLOCK //FB1 SONU

//*********ORGANIZASYON BLOCK OB1 DONGUSU **********
ORGANIZATION_BLOCK OB1
VAR_TEMP
systemdata : ARRAY[0..20] OF BYTE; // Area for OB1
END_VAR
BEGIN
FB1.DB2(START1:=I124.0,START2:=I124.1);
Q124.0:=DB2.CIKIS1;
Q124.1:=DB2.CIKIS2;


END_ORGANIZATION_BLOCK //OB1 SONU
//********************************
 
Arkadaşlar şu timerı kendi içerisinden 10 Sn. Bir çalışıp duracak şekilde restletip tekrar çalıştıramadım. Birkere çalıştıktan sonra bir türlü çıkış kontağını False yapamadım.Sizce ne yapmam lazım gelir.

SAyi := Sayici;
IF startTime= 1 AND start2=0 THEN
start2 := 1;
END_IF;
On ( //Start on delay
IN := Start2,
PT := Duration2);
Status2 := On.Q;
Tvalue2 := On.ET;


//*****************************************************************************
IF On.Q = 1 AND startTime = 1 THEN
GercekHiz := Sayi;
On.Q := 0;
Start2 := 0;
END_IF;
 
Ya bir türlü Timer yenilenmiyor. StartTime sinyali kesilene kadar sürekli dönmesini istiyorum ancak bir türlü olmuyor.
While Do döngüsüne soktum PLC Stop a geçti. Farklı kontak varyasyonlarını denedim olmadı. Status2 True oluyor sonra bişi yok.
 
Son düzenleme:
On delay timer ın tekrar start alabilmesi için "IN :=" girişinin kesilip tekrar verilmesi gerekir. "Start2 " değişkenin true yapınca, Duration2 süresi sonunda sürekli reset alıp tekrar çalışır.

Kod:
FUNCTION_BLOCK FB1
TITLE = 'SCL ve çeşitli zaman elemanlarıyla çalışma örnekleri '

VAR
   On        : TON;         
   Start2    : BOOL := FALSE;
   Tvalue2   : TIME := T#0s;
   Duration2 : TIME := T#1s;
   Status2   : BOOL := FALSE;
END_VAR

BEGIN
//*****************************************************************************
On    (      //Start on delay
  IN := [B](Start2 AND NOT Status2)[/B],
  PT := Duration2);
  
Status2 := On.Q;
Tvalue2 := On.ET;


//*****************************************************************************
END_FUNCTION_BLOCK
 
Son düzenleme:
Evet ElektronikMuh ustadın verdiği örneği şu şekilde değiştirerek kullandım ve şuanda istediğim gibi çalışıyor çok şükür.

IF startTime = 1 THEN
Start2 := 1;
Duration2 := T#10S;
ELSE;
Start2 := 0;
END_IF;


On ( //Start on delay
IN := (Start2 AND NOT Dur),
PT := Duration2);
Status2 := On.Q;
Tvalue2 := On.ET;


IF Status2 = 1 THEN
GercekHiz := Sayi;
Dur := 1;
ELSE;
Dur := 0;
END_IF;
 
arkadaşlar bana timer ile ilgili soru ve cevabı lazım. Pek birşey bilmiyorum bu plc ile ilgili dönem ödevim için yardım edin lütfen. cevaplarınızı en kısa zamanda bekliyorum. sadece 1 soru ve cevabı yeter. şimdiden teşekkür ediyorum.
 

Forum istatistikleri

Konular
131,457
Mesajlar
950,161
Kullanıcılar
455,370
Son üye
abidininmehmet

Yeni konular

Geri
Üst