请教:堆栈问题

想实现如下效果:
  将某个DI输入点连续四个周期的状态存在制定的连续四个M点存储空间。比如将i0.0,连续4个周期的状态顺序存入m0.0,m0.1,m0.2,m0.3,当达到m0.3后,循环至m0.0。
请高手指点一下,这个将Di点,每个扫描周期存入一个指定地址如何实现呢?
谢谢

问题补充:
请教zengzy-
您所说的每周期计数器加一如何实现呢?我所纠结的也在于此,计数器加一是需要输入点(CU)从0到1的变化呢?如你所说,我如何实现每个周期计数器输入点从0到1的变化呢?
烦劳解答一下,谢谢

最佳答案

如果只是你说的情况,存储区域较少的情况,你可以直接一对一的写入对应地址,实现你的功能只需要增加一个计数器例如MW100,每一次扫描周期将MW100加1,MW100加到4时清零,然后在每个扫描周期比较MW100的数值,如果为0,将i0.0写入M0.0;为1,写入M0.1……于此类推。这种方法的好处是一一对应,便于查看和分析问题。
如果需要写入的是很长的一个连续存储区域的话,上面的方法会显得过于笨重,你可以用间接寻址的方式来做:同样用MD100作为计数器(必须用双字指针对存储地址寻址),然后直接将i0.0写入对应地址:
A I0.0
=M[MD100]


补充:我说的计数器MW100不是真正的计数器C,只是一个普通的存储地址,并不需要上升沿触发。实现每扫描周期MW100加1,只需要下面这段简单的指令即可,放在OB1或者其他在OB1中调用的子程序中,因为OB1就是每周期调用一次,因此MW100就是每周期加1:
L MW100
INC 1
T MW100

提问者对于答案的评价:
非常感谢!我又获得了知识

专家置评

已阅,最佳答案正确。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc247346.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月2日
下一篇 2018年12月2日

相关推荐