看了很多帖子,很多都看不懂,不觉有些汗颜,都有点不好意思发这个求助了。但是实在是没有办法了,另外感觉总是要渡过小白这么一个阶段,所以还是厚着脸皮发这么一个求助,还请各位大神帮忙看一下。
首先说明一下我的意图,做的是IC测试,测试项目有D_VIN,D_FB,D_EN,FB,FOSC,前面几个是模拟电压,后面一个是频率,另外IS和IQ暂时屏蔽。主要是要做一个测试程序,配合机械手来对IC进行测试。主要的工作原理是,机械手准备好之后,发出一个SOT信号,程序在读到这个之后开始测试,测试完毕之后判断PASS还是FAIL,并给出合适的BIN信号,机械手根据这个信号把IC放入不同的料管。数字写入,数字读取,频率测量用的是PCI6601,模拟读取用的是PCI6014。
完全没有任何概念的情况下写了一个程序“11.vi”,结果跑了不到两分钟,速度明显变慢。
觉得基本上是因为创建任务和清除任务太多了,到吃内存占用太多,所以速度变慢。基于这个,把数据采集任务做成一个个大子程序,这样一来程序在需要运行它的时候才会去给它分配内存,运行完之后又会释放内存。试跑了一下,效果似乎很显著,看了windows任务管理器,原来内存会一直飙升的,现在基本也会保持一个数字不变了,可是在保持速度运行了二十分钟左右之后,完全乱套了,速度突然一下变得特别特别慢。之后有想过这么一个思路,反正基本上每个分支下面都需要数字写入的,就把创建任务和开始任务放在了循环外面,可是这样一来新的问题又来了,在SOT分支下,我需要做一个数字读取的动作,这里需要一个循环,只有侦测到有效的SOT信号时才会跳出这个循环开始测试,否则一直等待。而数字读取和写入用的都是PCI6601,把数字写入的创建通道和开始任务放在循环外面的话,势必会和这个分支有冲突,但是还是把这个写了出来,22.vi。跑了一下,还是有问题。后来想了一下,这个从理论上似乎就有点不可行吧,
各位前辈帮忙看一下,给出一点建议或者思路,不胜感激。