基于TIA博途的顺序队列(FIFO)先进先出SCL算法程序(V15版本)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于TIA博途的顺序队列(FIFO)先进先出SCL算法程序(V15版本)
顺序队列原理:
顺序队列是一种操作受限的线性表,在一端添加数据,另一端取出数据,符合先进先出FIFO 的特性
具体实现步骤可参考如下:
1.首先,打开TIA博途,新建一个项目,如下图所示,添加一个FB,
2.定义FB的接口参数,如下图所示,
3.SCL程序可参考如下,大家也可根据自己的需要进行一些修改和优化;
复位操作:清除报警,指针复位为0,队列数据清零;
入队操作:将入队的元素放入数组中,同时指针加1;
出队操作:将队列中的元素取出赋值给Item,然后队列中剩下的元素集体前移,腾出队列后面被占用的位置,同时指针减1;
4.我们新建一个DB块用于测试程序,在DB块中新建如下变量,
5.在OB1中调用该FB,同时将DB块中的变量连接到FB的接口参数,如下图所示,
6.我们同时打开FB 的背景数据块和测试用的DB块来监控各个变量数据的变化情况,
7.如下图所示,给Item赋值为1.0,同时给PUSH一个上升沿,触发入队操作,可以看到
数组的第一个元素已经变为1.0,同时指针由0变为1;
8.如下图所示,给Item赋值为2.0,同时给PUSH一个上升沿,触发入队操作,可以看到
数组的第二个元素已经变为2.0,同时指针由1变为2;
9.如下图所示,给Item赋值为3.0,同时给PUSH一个上升沿,触发入队操作,可以看到
数组的第三个元素已经变为3.0,同时指针由2变为3;
10.给POP一个上升沿,触发出队操作,可以看到Item的值变成了数组原来的第一个元素
1.0,同时指针由3变为2;
11. 给RESET一个上升沿,触发复位操作,可以看到指针复位为0,同时数组内的所有元素也都被清零;
12.如果该功能使用较为频繁,也可将该FB导出做成全局库文件,如下图所示,这样,下次可以直接导入库文件进行调用即可。