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

本文介绍了一种自定义的FIFO(先进先出)缓冲区实现方式,该实现允许更灵活地控制数据的进出。通过使用信号定义和逻辑代码,可以实现数据的有效管理,并监测错误状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

自己写一个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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值