我正在用 Dynamic C 为rabbit BL2600
电路板编写一个程序。
该程序正在控制一个压力室、一个顶部室和一个底部室,其间有金属检查穿孔。我的压力调节器上有一个传感器,对面的腔室有一个传感器读数。
我有一个失败功能,可以查看腔室是否从一侧泄漏到另一侧。当我给腔室加压时,我正在使用 awaitfor
等到腔室中的压力在我设定的压力的 10% 以内。我希望它等到这种情况发生,但我也想确保它不会永远等待,并且它会检测到腔室外的泄漏。基本上,我希望它能够waitfor
承受构建或 xx 时间的压力,如果 xx 时间过去,则基本上返回失败。
我是编程初学者,这可能是一个简单的解决方案,但我在考虑解决方案时遇到了问题。我已经在下面粘贴了我的 cofunction,到目前为止,它只等待压力在 10% 以内,所以如果没有,它就会卡在那里。PS对不起,如果代码草率,我是初学者,并且正在进行中。
cofunc run()
{
if (status == 1 && fail() != 1)
{
waitfor (DelayMs(2000) || status==0);
for (i; i<7; i++)
{
printf("\n\n In for loop in run psi[i] = %d", psi[i]);
if (status == 0) return;
if (psi[i] < 0 && psi[i-1] >= 0) // if negative and previous number positive
{
digOut(1,0);
chamber = 1;
waitfor (DelayMs(2000));
digOut(1,1);
}
else if (psi[i] >= 0 && psi[i-1] < 0) // if positive and previous was negative
{
digOut(1,0);
chamber = 2;
waitfor (DelayMs(2000));
digOut(1,1);
}
output = abs(psi[i]);
output = output/7.23738; // converts PSI to voltage
if ((output) <= 5) // makes sure that output voltage wont exceed 5 volts
{
anaOutVolts(0, output);
waitfor (pressureb > (psi[i]*.9) && pressureb < (psi[i]*1.1));
waitfor (DelayMs(time[i]));
}
} // end for statement
return;
}
return;
}