因为我上上个问答的问题没有解决,所以打算再请教各位大佬,希望各位大佬抽出时间帮忙解决一下,问题如下:
通过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
图片说明:
最佳答案
看了你的程序,感觉你地址重复使用了。
在使用到MD20/MD24这些地址后,就不能够再使用MD22了。
另外,图2是否是指针没有移动,数据一直在同一个地址区。
提问者对于答案的评价:
多谢大佬指教,问题解决了,确实是地址重复使用,改MD20为MD50后,就可以了,非常感谢大佬。
原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc286386.html