就是我用一个100ms定时中断,里边一个加法指令之类的,算的数我想先保存起来然后延时0-5秒取出来,我之前试过sm0.0驱动填表指令,1ms定时器+上升沿驱动先入先出指令,通过改变定时器的pt值来改变延时,但是它们之间本身就有一个延时,就是我把定时器pt设为1ms,填表也比取数快很多
希望大家帮我做一个这个具有延时功能的程序。
问题补充:
更正一下,就是在100ms的定时中断中对一个v区的数比如vw0里的数据先保存起来,然后延时0-5s取出来放到vw10中,而vw0中的数据通过主程序里的计算时刻在变化,这个数据要一个一个的延时取出来,有详细的解决办法吗
最佳答案
直接用堆栈指令就可以实现,可以按照以下步骤来做:
1、建立一个堆栈区域,长度根据需要延时时间来确定,每100ms存一个数据,延时3s取出来,堆栈长度就是3s÷100ms=30.
2、定时中断时,向堆栈区域写入数据,需要取出来时就用出栈指令先入先出,读出的数据就可以保证是准确延时3s后的数据
定时器在主程序中受扫描周期影响,定时器结束后并不能马上执行,而中断中的定时器不能正常使用,所以需要使用上述的方式。
也可以建立一个5s÷100ms=50的表格长度,每100ms入栈1个数据,读取时读取制定位置的数据,通过改变读取数据位置,可以实现改变延时时间
提问者对于答案的评价:
xiexie
专家置评
也可参考WWCWWC工程师的回复
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc159847.html