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
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