我正在为动态C编写一个rabbit BL2600
板的程序。
该程序正在控制压力室顶部腔室和底部腔室,其间夹有金属以检查穿孔。我的压力调节器上有一个传感器,另一个传感器读取相反的腔室。
我有一个失败功能,可以看到腔室是否从一侧泄漏到另一侧。当我对腔室加压时,我使用waitfor
等待,直到腔室内的压力达到我设定压力的10%。我希望它等到发生这种情况,但我也想确保它不会永远等待,它会检测到泄漏到室外。基本上我希望它waitfor
构建的压力或xx的时间量,如果xx的时间量通过,则基本上会失败。
我是编程的初学者,这可能是一个简单的解决方案,但我在思考解决方案时遇到了问题。我已经在下面粘贴了我的功能,截至目前它只等待压力在10%以内,所以如果它没有它被卡在那里。附:对不起,如果代码很草率我是初学者,这是一项正在进行中的工作。
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;
}