基于三菱PLC ST语言的FIFO实现

自己写一个FB实现FIFO功能,相比系统提供的更加灵活方便。

这个只是初步实现了陷入显出的功能,并没有进行充分的测试。

下面是信号定义

VAR varArray Word[Signed](0..15)
VAR varPointer Word[Signed]
VAR R_Push Bit
VAR R_Pop Bit
VAR R_TRIG_Push R_TRIG
VAR R_TRIG_Pop R_TRIG

VAR_OUTPUT FIFO_Full Bit
VAR_OUTPUT FIFO_Empty Bit
VAR_OUTPUT FIFO_Error Bit

VAR_INPUT Push Bit
VAR_INPUT Pop Bit

VAR_IN_OUT Data Word[Signed]


R_TRIG_Push(_CLK:= Push ,Q:= R_Push );
R_TRIG_Pop(_CLK:= Pop ,Q:= R_Pop );
IF R_Push AND NOT FIFO_Full THEN 
varPointer:=varPointer+1;
varArray[varPointer]:=Data;
Data:=0;
END_IF;
IF R_Pop AND NOT FIFO_Empty THEN 
Data :=varArray[varPointer];
varArray[varPointer]:=0;
varPointer:=varPointer-1;
END_IF;


FIFO_Full:=(varPointer>=15);
FIFO_Empty:=(varPointer<=0);
FIFO_Error:=(FIFO_Empty AND Pop) OR (FIFO_Full AND Push);

你可能感兴趣的:(基于三菱PLC ST语言的FIFO实现)