next up previous contents index
Next: 画面表示/コマンド入力ループ関数 Up: プログラムの動作 Previous: メイン関数

リアルタイム処理関数

リアルタイム処理関数on_task()の例を次に示す。    

Func void on_task()
{
  Real r;
  Matrix yy, y, xf, u;

  // 目標値の計算
  r = m1*sin(w1*stime*t) + m2*sin(w2*stime*t);
  t++;

  yy = sensor();        // センサーからの入力

  y = [[  r  - yy(1)]   // 観測出力1
       [y(1) - yy(2)]]; // 観測出力2

  xf = A * x + B * y;   // コントローラの状態を更新
  u =  C * x + D * y;   // 制御入力
  x = xf;               // コントローラの状態を保存

  actuator(u);          // アクチュエータへの出力
}


コメントの説明を補足する。


Masanobu KOGA 平成10年8月19日