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
133,424
Mesajlar
971,438
Kullanıcılar
459,425
Son üye
database

Yeni konular

Çevrimiçi üyeler

Şu anda çevrimiçi üye yok.
Geri
Üst