代码
void VUVLOL(void)
{
util.GetActiveSite(act);
for (i=0;i<SITENUM;i++)
{
flag[i]=0;
}
if(act[0]==0)
{
flag[0]=1;
}
if(act[1]==0)
{
flag[1]=1;
}
dvc.FV("VIN",2.3,200e-3,dvc.V_RNG_8V,dvc.I_RNG_200MA,dvc.ON);
dvc.FI("VOUT",-1E-3,8,dvc.V_RNG_8V,dvc.I_RNG_200MA,dvc.ON);
util.dlyms(1);
for(vx=2.3;vx>=1.2;vx-=0.02)
{
dvc.FV("VIN",vx,20e-3,dvc.V_RNG_8V,dvc.I_RNG_200MA,dvc.ON);
util.dlyms(2);
dvc.MV("VOUT",dvc.TOTAL_AVG,1,1);
util.GetMeasValue("VOUT",temp);
if(temp[0]<=0.5&&flag[0]==0)
{
temp2[0]=vx;
flag[0]=1;
}
if(temp[1]<=0.5&&flag[1]==0)
{
temp2[1]=vx;
flag[1]=1;
}
if(flag[0]==1&&flag[1]==1)
{
break;
}
}
util.TestLog("VUVLOL",temp2);
temp[0]=temp1[0]-temp2[0];
temp[1]=temp1[1]-temp2[1];
util.TestLog("VHYS",temp);
dvc.FV("VIN",0,100e-3,dvc.V_RNG_8V,dvc.I_RNG_200MA,dvc.ON);
dvc.FI("VOUT",0,8,dvc.V_RNG_8V,dvc.I_RNG_200MA,dvc.ON);
util.dlyms(1);
dvc.FV("DVC_ALL",0,0,dvc.V_RNG_8V,dvc.I_RNG_200MA,dvc.OFF);
}
解释
这个函数 VUVLOL
是用于测试在输入电压(VIN
)逐渐降低时,输出电压(VOUT
)下降到某个阈值(在这个例子中是0.5V)以下时对应的输入电压值。这个过程可能用于验证电路在特定条件下的电压下降限(VUVLOL,即Voltage Under Voltage Lock Out Low,尽管这个术语不是标准的,但可能特定于应用)。此外,该函数还计算了电压上升限(VUVLOH,假设 temp1
数组在之前的测试中被填充)和电压下降限之间的差值,这通常被称为迟滞(Hysteresis)。
以下是该函数的详细解释:
- 获取活动站点:
util.GetActiveSite(act)
调用获取当前活动的测试站点或设备的标识,并将它们存储在act
数组中。- 初始化标志数组:
- 通过循环将
flag
数组的所有元素初始化为0,用于跟踪是否已经为每个活动站点找到了满足条件的VIN
值。- 检查活动站点:
- 根据
act
数组中的值,为活动的站点设置相应的flag
数组元素为1。- 设置初始测试条件:
- 将
VIN
设置为2.3V,并设置其他相关参数(如脉冲宽度、电压和电流量程)。- 将
VOUT
设置为一个非常小的负值(可能是为了关闭或重置输出),并设置其范围和量程。- 逐步降低
VIN
并测量VOUT
:
- 在一个循环中,
VIN
从2.3V开始,以0.02V的步长降低到1.2V。- 对于每个
VIN
值,测量VOUT
的总平均值(尽管这里使用了dvc.MV
,这可能是一个错误,因为MV
通常不用于测量,而是用于其他目的,如移动或设置某种状态。正确的函数可能是dvc.MI
或其他测量函数)。- 如果
VOUT
的值(temp[0]
或temp[1]
)低于或等于0.5V,并且相应的站点尚未标记为找到(flag[0]
或flag[1]
为0),则记录当前的VIN
值(vx
)并设置相应的标志。- 如果两个站点的标志都已设置,则退出循环。
- 记录电压下降限结果:
- 使用
util.TestLog
函数记录找到的VIN
值(存储在temp2
数组中),这些值是在VOUT
下降到0.5V以下时对应的VIN
值。- 计算迟滞:
- 使用之前可能从
VUVLOH
函数中获得的temp1
数组(存储了电压上升限时的VIN
值)和当前函数中找到的temp2
数组(存储了电压下降限时的VIN
值),计算两者之间的差值,并将结果存储在temp
数组中。- 使用
util.TestLog
函数记录迟滞值。- 重置测试条件:
- 将
VIN
和VOUT
重置为初始状态,可能是为了准备下一次测试或确保设备处于安全状态。- 关闭所有与
DVC
相关的电源或设置。
注意:
temp
、temp1
、temp2
、flag
和act
数组需要在函数外部定义或声明,以确保它们在使用前已经存在。- 函数的注释和变量命名可能特定于该测试环境或应用,因此可能需要额外的上下文才能完全理解。
- 迟滞的计算(
temp[0]=temp1[0]-temp2[0]; temp[1]=temp1[1]-temp2[1];
)假设temp1
和temp2
数组中的元素一一对应,这在实际应用中可能是正确的,但也可能需要额外的验证。