关于OB35对数据处理的一个问题 点击:969 | 回复:6



努力学习者

    
发表于:2012-08-10 16:11:24
楼主

最近在使用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  
 还请各位多多指点,谢谢。



楼主最近还看过

SSI ļʱ