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
 
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
129,838
Mesajlar
930,665
Kullanıcılar
452,673
Son üye
loran laran

Yeni konular

Geri
Üst