lib/PhaseLeadLag.hh
00001 // 位相進み/遅れ補償器クラス
00002 // 2011/02/14 Yuki YOKOKURA
00003 //
00004 // 位相補償器 G(s)=(1+s*a/g)/(1+s/g) (双一次変換)
00005 //
00006 // Copyright (C) 2011 Yuki YOKOKURA
00007 // This program is free software;
00008 // you can redistribute it and/or modify it under the terms of the GNU General Public License
00009 // as published by the Free Software Foundation; either version 3 of the License, or any later version.
00010 // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
00011 // without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00012 // See the GNU General Public License for more details <http://www.gnu.org/licenses/>.
00013 // Besides, you can negotiate about other options of licenses instead of GPL.
00014 // If you would like to get other licenses, please contact us<yuki@katsura.sd.keio.ac.jp>.
00015 
00016 #ifndef PHASELEADLAG
00017 #define PHASELEADLAG
00018 
00019 namespace ARCS {        // ARCS名前空間
00020         class PhaseLeadLag {
00021                 private:
00022                         double Ts;      // [s]          制御周期
00023                                 double g;       // [rad/s]      ゲイン特性の折れ点周波数
00024                         double a;       //                      a < 1 で位相遅れ,1 < a で位相進み
00025                         double uZ1;     //                      状態変数1 変数名Z1の意味はz変換のz^(-1)を示す
00026                         double yZ1;     //                      状態変数2
00027                 
00028                 public:
00029                         PhaseLeadLag(double AngFreq, double Phase, double SmplTime);
00030                         // コンストラクタ
00031                         // AngFreq;[rad/s] ゲイン特性の折れ点周波数,a < 1 で位相遅れ,1 < a で位相進み,SmplTime;[s] 制御周期
00032                         ~PhaseLeadLag();                                        // デストラクタ
00033                         double GetSignal(double u);                     // 出力信号の取得 u;入力信号
00034                         void SetSmplTime(double SmplTime);      // 制御周期の再設定 SmplTime;[s] 制御周期
00035                         void SetFreq(double AngFreq);                   // ゲイン特性の折れ点周波数の再設定 AngFreq;[rad/s] 折れ点周波数
00036                         void SetPhase(double Phase);            // a < 1 で位相遅れ,1 < a で位相進み
00037                         void ClearStateVars(void);                      // すべての状態変数のリセット
00038         };
00039 }
00040 
00041 #endif
00042 
00043 
00044 
 All Classes Files