plc300采集储存的一些问题

因为我上上个问答的问题没有解决,所以打算再请教各位大佬,希望各位大佬抽出时间帮忙解决一下,问题如下:
通过ob35循环中断,周期为10ms,在ob35中编写如图的程序,将采集的数据相应保存在DB数据块中的数组中(DB1如下图),想实现的效果是第一个10ms的数据存入DB_VAR1,第二个10ms的数据存入DB_VAR2,以此类推,存满后循环到DB_VAR1继续储存。在plcsim仿真,监视DB1情况如下图。
大佬说MD20要初始化,并给出在ob100中无条件初始化方法,我照做了,但问题依然在,没有得到解决,我在下面附上程序和图片,希望各位大佬帮忙分析原因和给出解决方法。
ob35程序(网络1中的程序是调用在FB71的一个模拟工业现场信号的正弦波信号程序,用于采集正弦波信号,那个程序太长且可以确保正确就不附上程序了,调用程序如下图)
网络2
A(
      L     P#2.0
      T     MD30
      SET
      SAVE
      CLR
      A BR
      )
      JNB   _001
      L     P#200.0       
      T    MD40
_001: NOP 0
网络3
     L     MD20
      L    MD40
      <D
      =     L20.0
      A     L20.0
      JNB   _002
      L     MD20
      L     MD30
      +D
      T     MD20
_002: NOP 0
      A     L20.0
      NOT
      JNB   _003
      L     P#0.0
      T     MD20
_003: NOP 0
网络4
OPN   DB2
      A(
      L    DB2.DBD12
      RND
      T     MD100
      AN OV
      SAVE
      CLR
      A BR
      )
      JNB   _004
      OPN   DB1
      L     MD100
      T DBW [ MD20]
_004: NOP 0

图片说明:

plc300采集储存的一些问题    plc300采集储存的一些问题    plc300采集储存的一些问题    plc300采集储存的一些问题   

最佳答案

看了你的程序,感觉你地址重复使用了。
在使用到MD20/MD24这些地址后,就不能够再使用MD22了。
另外,图2是否是指针没有移动,数据一直在同一个地址区。

提问者对于答案的评价:
多谢大佬指教,问题解决了,确实是地址重复使用,改MD20为MD50后,就可以了,非常感谢大佬。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月30日
下一篇 2020年10月30日

相关推荐