最近在使用OB35作数据采集,先是采集了一个模拟量口德数据进入MD100再将MD100中的数据转化为实数进入共享数据块,通过指针在共享数据块的10个地址中来回存储,但是这中间似乎有个问题,除了第一个地址,其它几个地址中的数据总会偶尔变成0,如果将循环存储这个一块做入一个FC中不会出现这样的情况了,但是如果要采集几个模拟量口,那么就会需要好几个FC那么,之前的情况又会再次出现了。如果再多几个则程序会在运行之中直接卡死。
我初步认为是因为0B35的间隔时间造成的,各位认为的情况是怎么样的呢?有什么办法避免吗?
程序是这样的
L P DBW 250
T MD200
L DBD6 这里是要存储的数据
T DBD 【MD200】
L MD200 将指针指到下一处
L P#4.0
+D
T MD200 其实我觉得我写这一句多余了,算了,还是一起写上来让大家批评吧,原程序就不改了
T DBW250
L DBW250
L P#98.0 如果与第11个指针指向的地址不相等就跳转到m1,否则(即相等)则将第一个地址重新送入指 针中
==D
JCN m1
L P#58.0
T DBW250
m1: NOP 1 空,往下执行下面的程序
程序就是这样,放到OB35中会有个别地址偶尔跳0然后又跳回来,根据最后将10个地址中的程序相加来看,0是在这10个地址中顺序传递,因为DBD6 中的数据设置为3,则10个地址中的数据相加为27,偶尔会跳到30,但是没有出现过什么24,21之类的。
注:在OB35之中,本程序之前有LAD程序,利用MOVE传送模拟量口的数据进入DB50再利用整数转换为实数再存入DB50中,例如程序中的DBD6
还请各位多多指点,谢谢。
楼主最近还看过