Scl dilinde eklemeli sistem

Aslnfkrt

Üye
Katılım
29 Ağu 2019
Mesajlar
90
Puanları
1
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
 
Kod:
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

https://www.kontrolkalemi.com/forum...7-scl-programlama-dili.1047/page-2#post-67777
 
Son düzenleme:
Kod:
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

https://www.kontrolkalemi.com/forum...7-scl-programlama-dili.1047/page-2#post-67777
Kod:
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

https://www.kontrolkalemi.com/forum...7-scl-programlama-dili.1047/page-2#post-67777
Hocam elinize beyninize sağlık Scl de simülasyonu yaparken sadece INT e bit atamam gerekir yanlış mı anladım yoksa
 
Gelen değeri 1 bir arttırmak istiyorsan setvalue := gelen_deger olmalı(yani aynı tipte) ki arttırma işlemi gerçekleşebilsin, kısaca bit olmaz!
 

Forum istatistikleri

Konular
130,108
Mesajlar
933,184
Kullanıcılar
453,163
Son üye
gurkangunc

Yeni konular

Çevrimiçi üyeler

Geri
Üst