1

我正在用 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;
}  
4

0 回答 0