news 2026/10/7 2:24:22

九. SCL 先入先出

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
九. SCL 先入先出

一. 先入先出是什么?

以下面的数组为例。

写入值:写入一个新的值11,数据放在【0】位。在写入12,放在【1】位。

读取值:先读取第一个存入的值,也就是11. 随后将12移动到【0】位,依次前移。

二. 程序

1. FB块

// 写/读脉冲 #Rtrig_Write(CLK:=#Write, Q=>#write_p); #Rtrig_Read(CLK:=#Read, Q=>#read_p); // 写入数据。 // 如果数据数小于10 IF #index <= 10 THEN // 错误字 #Error_ID := 16#0000; // 第一次,index=0.将新的值存入arr[0]。 然后index+1=1 // 第二次, index=1.将新的值存入arr[1]。 然后index+1=2 // 一次写请求,index+1.index就是数据的个数 IF #write_p THEN #Arr_Val[#index] := #New_Val; #index := #index + 1; END_IF; ELSE // 数组里的数据大于10,说明数据已经填满。报错误代码16#8001 #Error_ID := 16#8001; END_IF; // 读取数据 // 如果数据大于0(有数据) IF #index > 0 THEN IF #read_p THEN // 将数组里的第一个数据读取出来 #Read_Val := #Arr_Val[0]; // 所有的数据前移一个位 // 假设当前有3个数据,index=3。【【***以此为例***】】 // 现在读了一个数据,还需要移位2次。 FOR #i := 1 TO #index -1 DO // i=1, 数据第1位移动到0位 // i=2, 数据从第2位移动到第1位 #Arr_Val[#i - 1] := #Arr_Val[#i]; END_FOR; // 移位完成后,数组里的第三个位,arr[2]:=0; #Arr_Val[#index - 1] := 0; // index也需要减去1 #index := #index - 1; END_IF; ELSE // 数据为0,空数组 #Error_ID := 16#8002; END_IF;
2. DB块

三. 调用与监控

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/7 2:15:15

DeepSeek本地部署全指南:显存计算、量化选型与推理框架调优

简介&#xff1a;一份DeepSeek大语言模型本地部署教程&#xff0c;面向具有一定计算机基础、希望实现数据本地化处理或模型二次开发的技术人员。教程完整覆盖安装前准备、部署方案选择、可视化界面配置、验证与测试、常见问题与解决方案、安全与性能优化建议等环节&#xff1a;…

作者头像 李华
网站建设 2026/10/7 2:13:25

排序全解析:算法、工程与应用的三个核心层面

如果只看标题“排序------3”&#xff0c;你可能会觉得这是一个随手记的草稿&#xff1a;不知道“3”是第几版&#xff0c;也不知道为什么要用三个横杠隔开。但恰恰是这种模糊的标题&#xff0c;反而把一个被大多数人当成“理所当然”的技术话题重新推到了台前。排序这件事&…

作者头像 李华