1

rabbit BL2600ボード 用に Dynamic C でプログラムを書いています。

プログラムは、圧力チャンバー、上部チャンバー、下部チャンバーを制御し、その間に金属が穿孔をチェックしています。圧力調整器にセンサーがあり、反対側のチャンバーを読み取るセンサーがあります。

チャンバーが片側から反対側に漏れているかどうかを確認する失敗機能があります。チャンバーを加圧するときは、 を使用しwaitforてチャンバー内の圧力が設定圧力の 10% 以内になるまで待ちます。それが起こるまで待ってもらいたいのですが、永遠に待たずにチャンバー外への漏れを検出できるようにしたいです。基本的に、ビルドまたは xx 時間の圧力をかけたいと思っていwaitforます。xx 時間が経過すると、基本的に失敗に戻ります。

私はプログラミングの初心者で、これは簡単な解決策かもしれませんが、解決策を考えるのに問題があります。コファンクションを下に貼り付けましたが、現在のところ、圧力が 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