L #db_no
T LW 0 //装载DB块号至LW0
OPN DB [LW 0] //并打开该DB块
L #len
L 1
-I
L 4
*I
SLD 3
T LD 2 //装载第一个要计算的实数的32指针至LD2
L #len //长度
L 1
-I
NEXT: T LW 6 //实数的个数装载至LW6, 并且进入一个LOOP循环
L LD 2
L P#4.0
-D
T LD 8
L DBD [LD 8]
T DBD [LD 2] //读取LD2指针位置的实数
L LD 2 //装入指针
L P#4.0
-D //指针加4个字节
T LD 2 //结果仍存入LD2,此时LD2指针指向下一个实数
L LW 6 //循环计数
LOOP NEXT //LOOP循环的结束
L 0
T LD 2
L #input_value
T DBD [LD 2]
L #len
L 1
-I
L 4
*I
T LW 6
L DBD [LD 8]
T #output_value //得到缓存最后一个值,通过output_value输出
///////------我以上程序一直得不到最早存储值,请大侠指点下,谢谢!
最佳答案
1、可以应用先进先出堆栈的方法,你看合适否?
FIFO: First in, First out.先进先出。
2、详见《基于Siemens S7-300/400 PLC的FIFO功能实现》连接:
http://blog.cechina.cn/xxkjfw/228942/message.aspx
《实现每次20字节FIFO功能FB200功能块的代码,以及实际应用举例》连接:
http://blog.cec.pandabuying.com/hylotus/228942.aspx
提问者对于答案的评价:
谢谢你的回答,虽然方法用起来比较麻烦。
方法是先进先出的原则,但用STL语言实现起来,还需要实验下。
专家置评
已阅,最佳答案正确。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc234507.html