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

  • Konbuyu başlatan yakamoz_84
  • Başlangıç tarihi
Konu Sah

yakamoz_84

Üye
Katılım
14 Tem 2014
Mesajlar
20
Puanları
3
Yaş
36
Konum
Kocaeli
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
 

elektronikmuh

Yönetici
Yönetici
Yönetici
Katılım
13 Ocak 2007
Mesajlar
2,027
Puanları
1,868
Yaş
44
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:
Konu Sah

yakamoz_84

Üye
Katılım
14 Tem 2014
Mesajlar
20
Puanları
3
Yaş
36
Konum
Kocaeli
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:

elektronikmuh

Yönetici
Yönetici
Yönetici
Katılım
13 Ocak 2007
Mesajlar
2,027
Puanları
1,868
Yaş
44
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:
Konu Sah

yakamoz_84

Üye
Katılım
14 Tem 2014
Mesajlar
20
Puanları
3
Yaş
36
Konum
Kocaeli
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
 

Utkuknr

Üye
Katılım
4 Mar 2018
Mesajlar
16
Puanları
1
Yaş
26
Konum
Gaziantep-Mersin
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.
 

Yeni mesajlar

Forum istatistikleri

Konular
115,988
Mesajlar
817,096
Kullanıcılar
423,523
Son üye
Veradux

Yeni konular

Üst