Codesys de FiFo Tablosu

erdtur

Üye
Katılım
16 Ara 2006
Mesajlar
18
Puanları
1
Merhabalar ;
Benim sorum, FIFO tablosu oluşturmak. Code Sys dilinde nasıl FIFO tablosu oluşturulur ? 1024 adet 16 bitlik registere, RS485 üzerinden gelen verileri, geliş sırasına göre FIFO mantığı ile yerleştirmek ve bir input sinyali ile ilk gelen veriden başlayarak her input geldiğinde, başka bir RS485 hattı üzerinden göndermek. gönderdiğimiz verinin kaydını silmek. Ben bunu Mitsubishi PLC ile yapmıştım fakat onda FIFO diye bir komut vardı. CodeSys de böyle bir komut varmı? yoksada nasıl yapılabilir.

Kolaygelsin
erdtur
 
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.
Blok dili Siemens SCL'dir. CodeSys için ST'ye uyarlayabilirsiniz.


FUNCTION_BLOCK FB37
TITLE = 'FIFOX_1'
//
//16 Dword FIFO Hafıza
//

//
VERSION : '2.0'
AUTHOR : Murat
NAME : FIFOX_1
FAMILY : MEMORY
VAR_INPUT
Din : DWORD;
E : BOOL := TRUE;
RD : BOOL;
WD : BOOL;
RST : BOOL;
END_VAR
VAR_OUTPUT
Dout : DWORD;
EMPTY : BOOL := TRUE;
FULL : BOOL;
END_VAR
CONST
n := 1024; (* FIFO Uzunluğu *)
END_CONST
VAR
fifo : ARRAY[0..n] OF DWORD;
pr : INT;
pw : INT;
END_VAR
BEGIN
IF RST THEN
pw := pr;
FULL := FALSE;
EMPTY := TRUE;
Dout := 0;
ELSIF E THEN
IF NOT EMPTY AND RD THEN
Dout := fifo[pr];
pr := INC2(X:=pr,N:=n);
EMPTY := pr = pw;
FULL := FALSE;
END_IF;
IF NOT FULL AND WD THEN
fifo[pw] := Din;
pw := INC2(X:=pw,N:=n);
FULL := pw = pr;
EMPTY := FALSE;
END_IF;
END_IF;


FIFO için Increment Bloğu:




FUNCTION INC2 : INT
TITLE = 'INC2'
//
//
VERSION : '1.2'
AUTHOR : Murat
NAME : INC2
FAMILY : MATH
VAR_INPUT
X : INT;
N : INT;
END_VAR
VAR
END_VAR
BEGIN
IF X >= N - 1 THEN
INC2 := 0;
ELSE
INC2 := X + 1;
END_IF;
 
Oscat kütüphanesini indir.. Orada var..
 

Forum istatistikleri

Konular
128,133
Mesajlar
915,314
Kullanıcılar
449,852
Son üye
ddknght

Yeni konular

Geri
Üst