首页   |   English
关于AccoTEST ICON 产品介绍 ICON 服务支持 ICON 联系我们
首页 / 服务支持 / 常见问题
  ICON 如何提高测试效率,缩短测试时间?  

1)初始化时,建议采用“AstInitAllDVI()”语句,该语句可以同时将所有DVI通道初始化。PVI也类似。
2)PVI切换量程或工作模式时,需要较长的时间。例如,PVI的100mA以下量程和1A、10A量程互切时,一次需要7~10ms;1A和10A量程互切时,一次需要15ms;一次connect/disconnect,需要7~10ms。所以,使用同一电流量程的参数尽量放在一起,避免不必要的量程切换。
3)当需要对一个外接电容的管脚测试小电流(用4uA档)时,建议先用大电流档(例如4mA)给电容迅速充电,再切换到小电流档进行测量,可以节省时间。
4)多工位扫描参数,采用设置标志位法进行并行扫描,可大大节省时间。
【例】
假设DVI1连接扫描输入的管脚,DVI0连接判断输出的管脚:
float vx = 0;     //扫描变量
float adresult[4], result[4];
BYTE k[4] = {0,0,0,0};   //工位标志

dvi0.Connect();
dvi1.Connect();
delay_ms(1);

dvi1.SetModeFVMI(DVI_VRNG_5V, 3, DVI_IRNG_40MA, 40e-3, -40e-3);   //先让器件进入已知的稳定状态
dvi1.Enable();

dvi0.SetModeFIMV(DVI_IRNG_400UA, 0, DVI_VRNG_20V, 20, 0);
dvi0.Enable(); 

delay_us(200);

double vstep1=0.1;    //设置扫描步进

vx=2.0;       //设置扫描的起始电压
for (; vx>0; vx-=(float)vstep1)
{
 dvi1.SetModeFVMI(DVI_VRNG_5V, vx, DVI_IRNG_40MA, 40e-3, -40e-3);
 dvi1.Enable();    
 delay_us(200);
 dvi0.Measure(adresult, SAMPLE_TIMES);
 
 for ( int i=0; i<4; i++)
 {
  if ((k[i] == 0) && (adresult[i] < 5))   //判断扫描的结果及工位标志
  {
   result[i] = vx;
   k[i]=1;  //将已经符合条件的工位标志为1,防止下次扫描后改变结果
  }
 }
 if ((k[0] == 1) && (k[1] == 1) && (k[2] == 1) && (k[3] == 1))  //判断四个工位是否都已经扫描完毕
  break;

for ( int i=0; i<4; i++)
{
 vin.SetTestResult(i, 0, result[i]);
}

dvi0.Disable();
dvi1.Disable();
dvi0.Disconnect;
dvi1.Disconnect();

【注意】多工位并行扫描不仅可以用在逐步扫描算法,也可以用在二分法扫描算法。与多工位串行扫描相比,并行扫描的时间是多工位中扫描时间时间最长的那个工位的扫描时间,因此时间将得到大大的缩短。

5) 单工位扫描参数,推荐使用先粗后细或二分法。
【例】
假设DVI1连接扫描输入的管脚,DVI0连接判断输出的管脚:
a) 先粗扫后细扫,可用于施密特器件,时间较长。
float vx = 0;     //扫描变量
float adresult[4],result[4];

dvi0.Connect();
dvi1.Connect();
delay_ms(1);

dvi1.SetModeFVMI(DVI_VRNG_5V, 3, DVI_IRNG_40MA, 40e-3, -40e-3);                //先让器件进入已知的稳定状态
dvi1.Enable();

dvi0.SetModeFIMV(DVI_IRNG_400UA, 0, DVI_VRNG_20V, 20, 0);
dvi0.Enable(); 

delay_us(200);

double vstep1=0.1;    //设置粗扫步进

vx=2.0;       //设置扫描的起始电压
for (; vx>0; vx-=(float)vstep1)
{
 dvi1.SetModeFVMI(DVI_VRNG_5V, vx, DVI_IRNG_40MA, 40e-3, -40e-3);
 dvi1.Enable();    
 delay_us(200);

 dvi0.Measure(adresult, SAMPLE_TIMES);

 result[0]=vx;

 if(adresult[0]<3)    //判断扫描结果
  break;

vx=result[0]+vstep1;   //将粗扫结果返回一个粗扫的步进作为细扫的起始电压
double vstep2=0.01;    //设置细扫步进

for (; vx>0; vx-=(float)vstep2)
{
 dvi1.SetModeFVMI(DVI_VRNG_5V, vx, DVI_IRNG_40MA, 40e-3, -40e-3);
 dvi1.Enable();    
 delay_us(200);

 dvi0.Measure(adresult, SAMPLE_TIMES);

 result[0]=vx;

 if(adresult[0]<3)   //判断结果
  break;

vin.SetTestResult(0, 0, result[0]);

dvi0.Disable();
dvi1.Disable();
dvi0.Disconnect;
dvi1.Disconnect();

b) 二分法,适用于非施密特器件,时间短。
float vx = 0;     //扫描变量
float adresult[4];
int i=0;

dvi0.Connect();
dvi1.Connect();
delay_ms(1);

dvi1.SetModeFVMI(DVI_VRNG_5V, 3, DVI_IRNG_40MA, 40e-3, -40e-3);              //先让器件进入已知的稳定状态
dvi1.Enable();

dvi0.SetModeFIMV(DVI_IRNG_400UA, 0, DVI_VRNG_20V, 20, 0);
dvi0.Enable(); 

delay_us(200);

double vstep1=1;    //设置二分法的长度,其取值与起始值和目标值有关

vx=2.5;      //设置扫描的起始值,保证目标值在[vx-vstep1,vx+vstep1]
for (i=0;i<10;i++)    //i的上限值决定了扫描的精度和扫描时间
{
 dvi1.SetModeFVMI(DVI_VRNG_5V, vx, DVI_IRNG_40MA, 40e-3, -40e-3);
 dvi1.Enable();    
 delay_us(200);

 dvi0.Measure(adresult, SAMPLE_TIMES);

 if(adresult[0]>3)   
  vx=vx-vstep1;

 else if(adresult[0]<3)
  vx=vx+vstep1;
 
 vstep1=vstep1/2;

vin.SetTestResult(0, 0, vx);

dvi0.Disable();
dvi1.Disable();
dvi0.Disconnect;
dvi1.Disconnect();

 
  推荐下载
ICON 运放测试DUT板应用指南(SU8013+SU8014)
ICON STS8107测试系统应用开发注意事项和技巧
ICON STS8107测试机故障定位指南
ICON STS8107 Verion1103 build0704
 
  会员登录
用户名:
密 码:
 
  联系方式  |  公司介绍  |  工作机会
京ICP备05063463号
© 2008 北京华峰测控技术有限公司 AccoTEST 事业部 版权所有