lib/TimeDelay.hh
00001 // 遅延器クラス
00002 // 2011/02/16 Yuki YOKOKURA
00003 //
00004 // 遅延器 G(s)=e^(-s*T*n) -> G(z)=z^(-n)
00005 // (但し T は制御周期で,制御周期単位でしか遅延時間を設定できないことに注意)
00006 //
00007 // Copyright (C) 2011 Yuki YOKOKURA
00008 // This program is free software;
00009 // you can redistribute it and/or modify it under the terms of the GNU General Public License
00010 // as published by the Free Software Foundation; either version 3 of the License, or any later version.
00011 // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
00012 // without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00013 // See the GNU General Public License for more details <http://www.gnu.org/licenses/>.
00014 // Besides, you can negotiate about other options of licenses instead of GPL.
00015 // If you would like to get other licenses, please contact us<yuki@katsura.sd.keio.ac.jp>.
00016 
00017 #ifndef TIMEDELAY
00018 #define TIMEDELAY
00019 
00020 namespace ARCS {        // ARCS名前空間
00021         class TimeDelay {
00022                 private:
00023                         TimeDelay(const TimeDelay&);                                    // コピーコンストラクタ使用禁止
00024                         const TimeDelay& operator=(const TimeDelay&);   // 代入演算子使用禁止
00025                         long dmem_max;  // 最大遅延時間
00026                         long num;               // 遅延時間
00027                         long Wcount;    // 書き込みカウンタ
00028                         long Rcount;    // 読み出しカウンタ
00029                         double* dmem;   // 遅延メモリ
00030                         
00031                 public:
00032                         TimeDelay(const long MaxDelay);                 // コンストラクタ MaxDelay;最大遅延時間
00033                         ~TimeDelay();                                                   // デストラクタ
00034                         double GetSignal(const double u);               // 出力信号の取得 u;入力信号
00035                         void SetDelayTime(const long DelayTime);//遅延時間の設定 DelayTime;遅延時間 (最大遅延時間を越えないこと)
00036                         void ClearDelayMemory(void);                    // 遅延メモリのゼロクリア
00037         };
00038 }
00039 
00040 #endif
00041 
00042 
00043 
 All Classes Files