Tia Portal ile inputları hafızaya alma ve sırası ile işleme

her havuzun bitmesi zaten farklı zamanlarda olacak sende bu zamanları en azından saniye cinsinden karşılaştırabilirsin.
Şöyle diyeyim sistem birinci havuzu doldururken iki üç dört ve beş bitti biri doldurdu hangi hatta gidecek
 
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.
Yazımızda endüstrinin can damarı sayılabilecek PLC’yi inceleyeceğiz.
PHP:
IF BosHavuzAlgilandi AND (ReadDataIndex < 4)  THEN
(*Bos Havuz Numaralari her "BosHavuzAlgilandi"(BOOL) bilgisi gelince, Data[ Index ] ARRAY olarak kaydedilir *)
    Data[4]          := Data[3];
    Data[3]          := Data[2];
    Data[2]          := Data[1];
    Data[1]          := Data[0];
    Data[0]          := inBosHavuzNo;  (* inBosHavuzNo := 1,2,3,4,5 olabilir *)

    BosHavuzAlgilandi := FALSE;
    ReadDataIndex     := ReadDataIndex +1;
END_IF

(* Havuz dolunca "SiradakiBosHavuz"(BOOL) istegi program dışında TRUE yapilir *)
IF SiradakiBosHavuz AND (ReadDataIndex > 0) THEN
    SiradakiBosHavuz       := FALSE;
    ReadDataIndex          := ReadDataIndex - 1;
    outDoldurulacakHavuzNo := Data[ReadDataIndex ];
END_IF
 
Son düzenleme:
PHP:
IF BosHavuzAlgilandi AND (ReadDataIndex < 4)  THEN
(*Bos Havuz Numaralari her "BosHavuzAlgilandi"(BOOL) bilgisi gelince, Data[ Index ] ARRAY olarak kaydedilir *)
    Data[4]          := Data[3];
    Data[3]          := Data[2];
    Data[2]          := Data[1];
    Data[1]          := Data[0];
    Data[0]          := inBosHavuzNo;  (* inBosHavuzNo := 1,2,3,4,5 olabilir *)

    BosHavuzAlgilandi := FALSE;
    ReadDataIndex     := ReadDataIndex +1;
END_IF

(* Herhangi bir havuz dolunca "SiradakiBosHavuz"(BOOL) istegi program dışında TRUE yapilir *)
IF SiradakiBosHavuz AND (ReadDataIndex > 0) THEN
    SiradakiBosHavuz       := FALSE;
    ReadDataIndex          := ReadDataIndex - 1;
    outDoldurulacakHavuzNo := Data[ReadDataIndex ];
END_IF
Çok zamanınızı alacak belki ama bu yazılımı açıklayabilir misiniz satır satır ?
Data isminde bir db oluşturdum. Fc ye yazdiginiz kodları yazdim. Dogru yoldamıyım? Sonrasında ne yapmalıyım
 
Son düzenleme:
PHP:
    IF BosHavuzAlgilandi THEN
        BosHavuzAlgilandi := FALSE;

        IF (WriteIndex < N)  THEN  (* N Tane veri için bellek *)

            (*Bos Havuz Numaralari her "BosHavuzAlgilandi" bilgisi gelince, Data[ Index ] ARRAY olarak kaydedilir *)

            Data[WriteIndex] := inBosHavuzNo;  (* inBosHavuzNo := 1,2,3,4,5 olabilir *)
            WriteIndex         := WriteIndex +1;

        END_IF
    END_IF

    (* Herhangi bir havuz dolunca "SiradakiBosHavuz" istegi TRUE yapilir *)
    IF SiradakiBosHavuz THEN
        SiradakiBosHavuz            := FALSE;
        IF (WriteIndex <> ReadIndex)  THEN
                outDoldurulacakHavuzNo := Data[ReadIndex ];
                ReadIndex              := ReadIndex +1;
        END_IF
    END_IF

    IF WriteIndex = ReadIndex THEN  // Tampon bellek (Buffer Sıfırlanır)
        WriteIndex     := 0;
        ReadIndex        := 0;
        FOR i:=0 TO N DO
            DATA [i]            := 0;
        END_FOR;
    END_IF

PHP:
VAR  (* Degisken Tanımlamaları*)
    DATA : ARRAY[0..N] OF INT;
    inBosHavuzNo,outDoldurulacakHavuzNo :INT;
    BosHavuzAlgilandi,SiradakiBosHavuz :BOOL;
    ReadIndex,WriteIndex : UINT;
    BufferSize:UINT;
    i :INT;
END_VAR

    VAR CONSTANT
        N:INT := 5;  (* Dataların tutulacağı buffer array alanı sayısı *)
    END_VAR
 
Son düzenleme:
PHP:
    IF BosHavuzAlgilandi THEN
        BosHavuzAlgilandi := FALSE;

        IF (WriteIndex < N)  THEN  (* N Tane veri için bellek *)

            (*Bos Havuz Numaralari her "BosHavuzAlgilandi" bilgisi gelince, Data[ Index ] ARRAY olarak kaydedilir *)

            Data[WriteIndex] := inBosHavuzNo;  (* inBosHavuzNo := 1,2,3,4,5 olabilir *)
            WriteIndex         := WriteIndex +1;

        END_IF
    END_IF

    (* Herhangi bir havuz dolunca "SiradakiBosHavuz" istegi TRUE yapilir *)
    IF SiradakiBosHavuz THEN
        SiradakiBosHavuz            := FALSE;
        IF (WriteIndex <> ReadIndex)  THEN
                outDoldurulacakHavuzNo := Data[ReadIndex ];
                ReadIndex              := ReadIndex +1;
        END_IF
    END_IF

    IF WriteIndex = ReadIndex THEN  // Tampon bellek (Buffer Sıfırlanır)
        WriteIndex     := 0;
        ReadIndex        := 0;
        FOR i:=0 TO N DO
            DATA [i]            := 0;
        END_FOR;
    END_IF

PHP:
VAR  (* Degisken Tanımlamaları*)
    DATA : ARRAY[0..N] OF INT;
    inBosHavuzNo,outDoldurulacakHavuzNo :INT;
    BosHavuzAlgilandi,SiradakiBosHavuz :BOOL;
    ReadIndex,WriteIndex : UINT;
    BufferSize:UINT;
    i :INT;
END_VAR

    VAR CONSTANT
        N:INT := 5;  (* Dataların tutulacağı buffer array alanı sayısı *)
    END_VAR
valla hocam videoyu izledim yazdıklarınızı anlamaya çalıştım ancak hiç bir şey anlamadım. bunu anlatacak türkçe bir kaynak varsa paylaşırsanız sevinirim
 
Merhaba, sorununuzun çözümü FIFO, ancak daha önce bu sistemi ladder ile yazmıştım ( ST ile çok daha rahat oluşturabilirsiniz ). Mail adresini iletin programı bulabilirsem size göndereyim.
 

Forum istatistikleri

Konular
127,952
Mesajlar
913,885
Kullanıcılar
449,603
Son üye
devrim25

Yeni konular

Geri
Üst