现在我写了个这样的程序,发现定时器一个很奇怪的地方,我有点理解不了,求各位大哥看看:

首先我在OB1中用M0.2调用FB1

在FB中用M0.0激活定时器DB2 ET的值存在FB1的背景数据块DB3的time里

然后我打开仿真,先激活 m0.2,调用FB1,再激活m0.0 计时器开始计数

然后我断开m0.2,结束FB1块调用 计时器时间停止在58s

一段时间后我在激活m0.2打开块调用,奇怪的事情来了 定时器的计时直接跳到2m37s 刚好多了我停止块调用的时间,就像块停止了计时器还在计时一样。
如果计时器还在计时,为什么停止了块调用就监视不到时间增长了呢?
于是我加了一条指令:

激活M0.3 把计时器当前时间存入数据块1的T中
然后跟奇怪的事情就来了:

居然停止块调用后也看的到ET在计时了,但我存在FB1的背景数据块DB3里的time依然还是不动的

然后我把计时器的ET改成了FB1的背景数据块DB3里的time

再看监视,ET和time都不动了(我边做边截图的,刚刚计时满了 我重新开了一下,所以图上是2s)

于是我激活M0.3 将time里的时间存到书记块的T里,然后再断开M0.3,再激活m0.2调用FB1
可以看到数据块1的T里保存的停止调用时的计时时间,而ET和time都发生了变化
如果我能把T的时间写到ET里,那我就可以继续FB1停止时的计时时间继续计时,于是我用move指令将T写入ET

但是很可惜,被提示ET为只读。
那有没有什么放法可以再停止调用FB块时定时器停止计时,重新调用时FB时,定时器从之前停止的时间继续计时的办法呢?