Advanced Robot Control System  5.1-REV.51SF170515
PCI-3180.hh
[詳解]
1 // PCI-3180入出力クラス
2 // 2016/08/19 Yuki YOKOKURA
3 //
4 // Interface社製PCI-3180のための入出力機能を提供します。
5 //
6 // Copyright (C) 2011-2016 Yuki YOKOKURA
7 // This program is free software;
8 // you can redistribute it and/or modify it under the terms of the GNU General Public License
9 // as published by the Free Software Foundation; either version 3 of the License, or any later version.
10 // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
11 // without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
12 // See the GNU General Public License for more details <http://www.gnu.org/licenses/>.
13 // Besides, you can negotiate about other options of licenses instead of GPL.
14 // If you would like to get other licenses, please contact us <yokokura(a)vos.nagaokaut.ac.jp>.
15 
16 #ifndef PCI_3180
17 #define PCI_3180
18 
19 namespace ARCS {
20  class PCI3180 {
21  public:
22  // 入力電圧レンジ定義
23  enum RangeMode {
24  RANGE_B_10V, // バイポーラ±10V入力モード
25  RANGE_B_5V, // バイポーラ ±5V入力モード
26  RANGE_U_10V // ユニポーラ 10V入力モード
27  };
28 
29  PCI3180(unsigned int Addr, RangeMode Range); // コンストラクタ
30  ~PCI3180(); // デストラクタ
31 
32  void ConvStart(void); // AD変換開始
33  bool GetBusy(void); // 変換待機信号の取得 true = 変換中, false = 変換終了
34  void WaitBusy(void); // AD変換が完了するまでポーリング待機(ブロッキング動作関数)
35  void GetVoltage(double* V1, double* V2, double* V3, double* V4); // 電圧を取得する関数
36  // V1 : CH1の電圧値[V] V2 : CH2の電圧値[V] V3 : CH3の電圧値[V] V4 : CH4の電圧値[V]
37 
38  private:
39  PCI3180(const PCI3180&); // コピーコンストラクタ使用禁止
40  const PCI3180& operator=(const PCI3180&); // 代入演算子使用禁止
41 
42  const unsigned int ADDR_BASE; // ベースアドレス
43  const unsigned int ADDR_ADCDATA_LO; // ADCデータ下位アドレス
44  const unsigned int ADDR_ADCDATA_HI; // ADCデータ上位アドレス
45  const unsigned int ADDR_CHSET; // 入力チャネル設定
46  const unsigned int ADDR_BUSY; // 変換待機信号
47  const unsigned int ADDR_CONVST; // 変換開始信号
48  const unsigned int ADDR_RANGE; // 入力レンジ設定
49  const unsigned int ADDR_RANGE_CH; // 入力レンジ設定チャンネル選択
50  double A; // 電圧換算の傾き
51  double B; // 電圧換算の切片
52 
53  void SelectCH(unsigned int ch); // チャネル選択
54  uint16_t GetADCdata(void); // ADCデータを取得する関数
55  double AdcDataToVolt(uint16_t data) const;// ADCデータから電圧値 [V] に変換する関数
56  void SelectRangeCH(unsigned int ch);// 入力レンジ設定チャンネル選択
57  void SetInputRange(RangeMode Range);// 入力レンジの設定
58  void CalcVoltConv(RangeMode Range); // 電圧換算の傾きと切片の計算
59 
60  static uint16_t Combine2byte(uint8_t High, uint8_t Low); // 上位、下位に分かれている各々1バイトのデータを、2バイトのデータに結合する
61  };
62 }
63 
64 #endif
65 
RangeMode
Definition: PCI-3180.hh:23
Definition: PCI-3180.hh:24
void SelectCH(unsigned int ch)
Definition: PCI-3180.cc:80
Definition: PCI-3180.hh:20
double A
Definition: PCI-3180.hh:50
PCI3180(unsigned int Addr, RangeMode Range)
Definition: PCI-3180.cc:24
bool GetBusy(void)
Definition: PCI-3180.cc:61
static uint16_t Combine2byte(uint8_t High, uint8_t Low)
Definition: PCI-3180.cc:150
void SelectRangeCH(unsigned int ch)
Definition: PCI-3180.cc:112
const unsigned int ADDR_BASE
Definition: PCI-3180.hh:42
uint16_t GetADCdata(void)
Definition: PCI-3180.cc:85
const PCI3180 & operator=(const PCI3180 &)
const unsigned int ADDR_RANGE_CH
Definition: PCI-3180.hh:49
Definition: PCI-3180.hh:25
void CalcVoltConv(RangeMode Range)
Definition: PCI-3180.cc:132
const unsigned int ADDR_ADCDATA_LO
Definition: PCI-3180.hh:43
Definition: ControlFunctions.hh:17
const unsigned int ADDR_BUSY
Definition: PCI-3180.hh:46
const unsigned int ADDR_CONVST
Definition: PCI-3180.hh:47
void WaitBusy(void)
Definition: PCI-3180.cc:73
const unsigned int ADDR_CHSET
Definition: PCI-3180.hh:45
double B
Definition: PCI-3180.hh:51
~PCI3180()
Definition: PCI-3180.cc:52
const unsigned int ADDR_ADCDATA_HI
Definition: PCI-3180.hh:44
void SetInputRange(RangeMode Range)
Definition: PCI-3180.cc:117
Definition: PCI-3180.hh:26
void ConvStart(void)
Definition: PCI-3180.cc:56
const unsigned int ADDR_RANGE
Definition: PCI-3180.hh:48
double AdcDataToVolt(uint16_t data) const
Definition: PCI-3180.cc:107
void GetVoltage(double *V1, double *V2, double *V3, double *V4)
Definition: PCI-3180.cc:93