Merhabalar scl dilinde gelen sinyalin üzerine birer birer sayacak durumu yazmam lazım fakat saymayı sayıcı kullanmadan yapmam gerekiyor. Bunu nasıl yapabilirim fikri olan var mı? Örneğin random bir sayı geldi 5 bunun üzerine bir bir durmadan sayacak
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.
PROGRAM PLC_PRG
VAR
setvalue:INT:=0; (*Degeri degistirilen deger ben INT aldim, REAL veya baska bisi olabilir *)
reset:BOOL:=FALSE; (*Degerin degistigini anladiktan sonra tekrar kurmak için reset girisi *)
oldvalue:INT; (*Bir önceki set degeri tuttugumuz ara degisken *)
changed:BOOL; (*Degerin degistigini isaret eden bit! *)
RandomSayi: REAL;
END_VAR
Kod:
IF setvalue <> oldvalue THEN (* giris ile bir önceki deger karsilastirilir *)
RandomSayi := setvalue;
changed:=TRUE; (* Deger degisti bilgisi setleniyor *)
oldvalue:=setvalue; (* yeni deger eski degere aktariliyor *)
ELSIF reset THEN (* Reset sartina bakiliyor *)
changed:=FALSE; (* Reset varsa RandomSayi Saymayi durdurur *)
reset := FALSE;
END_IF;
IF changed THEN (* Deger değiştiyse reset gelene kadar Say *)
RandomSayi := RandomSayi + 1;
END_IF
PROGRAM PLC_PRG
VAR
setvalue:INT:=0; (*Degeri degistirilen deger ben INT aldim, REAL veya baska bisi olabilir *)
reset:BOOL:=FALSE; (* Degerin degistigini anladiktan sonra tekrar kurmak için reset girisi *)
oldvalue:INT; (*Bir önceki set degeri tuttugumuz ara degisken *)
changed:BOOL; (*Degerin degistigini isaret eden bit! *)
RandomSayi: REAL;
END_VAR
Kod:
IF setvalue <> oldvalue THEN (* giris ile bir önceki deger karsilastirilir *)
RandomSayi := setvalue;
changed:=TRUE; (* Deger degisti bilgisi setleniyor *)
oldvalue:=setvalue; (* yeni deger eski degere aktariliyor *)
ELSIF reset THEN (* Reset sartina bakiliyor *)
changed:=FALSE; (* Reset varsa RandomSayi Saymayi durdurur *)
reset := FALSE;
END_IF;
IF changed THEN (* Say *)
RandomSayi := RandomSayi + 1;
END_IF
PROGRAM PLC_PRG
VAR
setvalue:INT:=0; (*Degeri degistirilen deger ben INT aldim, REAL veya baska bisi olabilir *)
reset:BOOL:=FALSE; (*Degerin degistigini anladiktan sonra tekrar kurmak için reset girisi *)
oldvalue:INT; (*Bir önceki set degeri tuttugumuz ara degisken *)
changed:BOOL; (*Degerin degistigini isaret eden bit! *)
RandomSayi: REAL;
END_VAR
Kod:
IF setvalue <> oldvalue THEN (* giris ile bir önceki deger karsilastirilir *)
RandomSayi := setvalue;
changed:=TRUE; (* Deger degisti bilgisi setleniyor *)
oldvalue:=setvalue; (* yeni deger eski degere aktariliyor *)
ELSIF reset THEN (* Reset sartina bakiliyor *)
changed:=FALSE; (* Reset varsa RandomSayi Saymayi durdurur *)
reset := FALSE;
END_IF;
IF changed THEN (* Say *)
RandomSayi := RandomSayi + 1;
END_IF