電源システム用 GP-IB API 関数取り扱い説明書 Ver.1.00 株式会社 ケンウッド ティー・エム・アイ KENWOOD TMI Corporation * 使用環境:OS Linux(RedHat)を使用し National Instruments 社製の PCI GPIB ボ ード、Linux 版の GP-IB ドライバ(NI-488.2Software)についてのみ対応してます。 以下の関数は、Linux 版 GP-IB ドライバ(nigpib-linux-0.8.2)に対応した関数です。 開発言語環境として Linux の C 言語開発環境を使用しています。 2 目次 1 2 GP-IB API 関数説明 .......................................................................................................1 1-1 デバイスのハンドル番号取得 ...................................................................................... 1 1-2 デバイス・オフライン ................................................................................................. 1 1-3 タイムアウト時間の設定 ............................................................................................. 1 1-4 出力 ON/OFF .............................................................................................................. 1 1-5 出力電圧値設定............................................................................................................ 2 1-6 出力電流値設定............................................................................................................ 2 1-7 出力電圧値読み出し..................................................................................................... 3 1-8 出力電流値読み出し..................................................................................................... 3 1-9 高電圧電源ランプ アップ・ダウン電圧設定.............................................................. 3 1-10 高電圧電源ランプ アップ・ダウン傾き(速度)設定 ............................................... 4 1-11 高電圧電源ランプ アップ・ダウン設定電圧値読み出し............................................ 4 1-12 電圧・電流リミッタ設定 ............................................................................................. 5 1-13 リミット・クリア ........................................................................................................ 5 1-14 電圧・電流リミッタ設定読み出し ............................................................................... 5 1-15 計測電圧・電流読み込み ............................................................................................. 6 1-16 ステータス読み出し..................................................................................................... 6 サンプルプログラム .......................................................................................................9 3 1.GP-IB API 関数説明 1-1 デバイスのハンドル番号の取得 int KEK_GPIB_HandleOpen(char GPIB_BordNo,char GPIB_Adr) 関数名 KEK_GPIB_HandleOpen 引数 GPIB_BordNo:GPIB ボード No. GPIB_Adr:GPIB アドレス 戻り値 Handle No.(ハンドル番号) オープン失敗:-1 解説 使用する GP-IB のハンドル番号を取得します。 1-2 デバイス・オフライン int KEK_GPIB_HandleClose(int HandleNo) 関数名 KEK_GPIB_HandleClose 引数 HandleNo:ハンドル番号 戻り値 クローズ失敗:-1(GP-IB エラー) 解説 デバイスをオフラインにします。 1-3 タイムアウト時間の設定 int KEK_GPIB_TimeOut(int HandleNo,int Time_Code) 関数名 KEK_GPIB_TimeOut 引数 HandleNo:ハンドル番号 Time_Code:NI で指定されているタイムコード 戻り値 設定 失敗:-1 成功:0 解説 タイムアウト時間を設定します。 何も設定しない場合、T10S(10 秒)となります。 NI488.2SoftWare で指定された時間コードに対応しています。 1-4 出力 ON/OFF int KEK_GPIB_Output(int HandleNo, char *CH ,char ONOFF) 1 関数名 KEK_GPIB_Output 引数 HandleNo:ハンドル番号 CH:指定チャンネル “A0+”,”D++”,”D+-“,”A++”,”A+-“,“A0-“,”D-+”,”D--“,”A-+”,”A--“, “D0+”,”Db0+”,”Db0-“ ONOFF:OutputON=1,OutputOFF=0 戻り値 タイムアウトエラー=-1,GP-IB エラー=-2,範囲外=-3,成功=0 解説 指定チャンネルの Output ON・OFF を行います。 1-5 出力電圧値設定 int KEK_GPIB_Volt(int HandleNo, char *CH, double Volt) 関数名 KEK_GPIB_Volt 引数 HandleNo:ハンドル番号 CH:指定チャンネル “A0+”,”D++”,”D+-“,”A++”,”A+-“,“A0-“,”D-+”,”D--“,”A-+”,”A--“, “D0+”,”Db0+”,”Db0-“ Volt:設定電圧値(マイナス出力の場合、設定値に−をつけて下さい。 ) 戻り値 タイムアウトエラー=-1,GP-IB エラー=-2,範囲外=-3,成功=0 解説 指定チャンネルの電圧値を設定します。 1-6 出力電流値設定 int KEK_GPIB_Current(int HandleNo, char *CH, double Current) 関数名 KEK_GPIB_Current 引数 HandleNo:ハンドル番号 CH:指定チャンネル “A0+”,”D++”,”D+-“,”A++”,”A+-“,“A0-“,”D-+”,”D--“,”A-+”,”A--“, “D0+”,”Db0+”,”Db0-“ Current:設定電流値(マイナス出力の場合、設定値に−をつけて下さい。) 戻り値 タイムアウトエラー=-1,GP-IB エラー=-2,範囲外=-3,成功=0 解説 指定チャンネルの電流値を設定します。 2 1-7 出力電圧値読み出し int KEK_GPIB_VoltQ(int HandleNo, char *CH, double &Volt) 関数名 KEK_GPIB_VoltQ 引数 HandleNo:ハンドル番号 CH:指定チャンネル “A0+”,”D++”,”D+-“,”A++”,”A+-“,“A0-“,”D-+”,”D--“,”A-+”,”A--“, “D0+”,”Db0+”,”Db0-“ “ALL”(ALL CH) 戻り値 &Volt:設定電圧値クエリ(マイナス出力の場合、データはマイナス値です。) タイムアウトエラー=-1,GP-IB エラー=-2,範囲外=-3,成功=0 解説 指定チャンネルの電圧値を読み出します。 ALL を指定した場合、&Volt の領域を CH 数分確保して下さい。 1-8 出力電流値読み出し int KEK_GPIB_CurrentQ(int HandleNo, char *CH, double &Current) 関数名 KEK_GPIB_CurrentQ 引数 HandleNo:ハンドル番号 CH:指定チャンネル “A0+”,”D++”,”D+-“,”A++”,”A+-“,“A0-“,”D-+”,”D--“,”A-+”,”A--“, “D0+”,”Db0+”,”Db0-“ “ALL”(ALL CH) 戻り値 &Current:設定電流値クエリ(マイナス出力の場合、データはマイナス値です。) タイムアウトエラー=-1,GP-IB エラー=-2,範囲外=-3,成功=0 解説 指定チャンネルの電流値を読み出します。 ALL を指定した場合、&Current の領域を CH 数分確保して下さい。 1-9 高電圧電源ランプアップ・ダウン電圧設定 int KEK_GPIB_Ramp(int HandleNo,char *CH,double Voltage) 関数名 KEK_GPIB_Ramp 引数 HandleNo:ハンドル番号 CH:指定チャンネル 3 “A0+”,”D++”,”D+-“,”A++”,”A+-“,“A0-“,”D-+”,”D--“,”A-+”,”A--“, “D0+”,”Db0+”,”Db0-“ Voltage:最終到達電圧値(マイナス出力の場合、設定値に−をつけて下さい。) 戻り値 タイムアウトエラー=-1,GP-IB エラー=-2,範囲外=-3,成功=0 解説 最終到達電圧値を設定します。 1-10 高電圧電源ランプアップ・ダウン傾き(速度)設定 int KEK_GPIB_RampVpS(int HandleNo,char *CH,double VolpSec,) 関数名 KEK_GPIB_RampVpS 引数 HandleNo:ハンドル番号 CH:指定チャンネル “A0+”,”D++”,”D+-“,”A++”,”A+-“,“A0-“,”D-+”,”D--“,”A-+”,”A--“, “D0+”,”Db0+”,”Db0-“ VolpSec:電圧変化割合設定(0.1V/Sec∼5V/Sec) 戻り値 タイムアウトエラー=-1,GP-IB エラー=-2,範囲外=-3,成功=0 解説 OutputON 時の設定電圧から、最終到達電圧値まで1秒ごとのステップ電圧値 (Volt/Sec)を設定します。 電源システム本体で到達電圧値までの時間が決まります。 1-11 電圧電源ランプアップ・ダウン設定電圧値読み出し int KEK_GPIB_RampQ(int HandleNo,char *CH,double &Volt) 関数名 KEK_GPIB_RampQ 引数 HandleNo:ハンドル番号 CH:指定チャンネル “A0+”,”D++”,”D+-“,”A++”,”A+-“,“A0-“,”D-+”,”D--“,”A-+”,”A--“, “D0+”,”Db0+”,”Db0-“ “ALL”(ALL CH) 戻り値 &Volt:現在の設定電圧値が戻ります。 (マイナス出力の場合、データはマイナス値です。) タイムアウトエラー=-1,GP-IB エラー=-2,範囲外=-3,成功=0 解説 指定 CH のランプ運転アップ・ダウン、現在の設定電圧値を返します。 4 ALL を指定した場合、&Volt の領域を CH 数分確保して下さい。 1-12 電圧・電流リミッタ設定 int KEK_GPIB_VCLimit(int HandleNo,char *CH,double Volt,double Current) 関数名 KEK_GPIB_VCLimit 引数 HandleNo:ハンドル番号 CH:指定チャンネル “A0+”,”D++”,”D+-“,”A++”,”A+-“,“A0-“,”D-+”,”D--“,”A-+”,”A--“, “D0+”,”Db0+”,”Db0-“ Volt:リミッタ電圧(マイナス出力の場合、設定値に−をつけて下さい。) Current:リミッタ電流(マイナス出力の場合、設定値に−をつけて下さい。) 戻り値 タイムアウトエラー=-1,GP-IB エラー=-2,範囲外=-3,成功=0 解説 OVP 出力過電圧値、過電流値を設定します。 1-13 リミット・クリア int KEK_GPIB_LimitAlmCLR(int HandleNo,char *CH) 関数名 KEK_GPIB_LimitAlmCLR 引数 HandleNo:ハンドル番号 CH:指定チャンネル “A0+”,”D++”,”D+-“,”A++”,”A+-“,“A0-“,”D-+”,”D--“,”A-+”,”A--“, “D0+”,”Db0+”,”Db0-“ “ALL”(ALL CH) 戻り値 タイムアウトエラー=-1,GP-IB エラー=-2,範囲外=-3,成功=0 解説 CH の過電流、過電圧を設定する時、過電流・過電圧保護が動作した場合、要因 を取り除いた後、アラームのクリアをするための関数です。 1-14 電圧・電流リミッタ読み込み int KEK_GPIB_VCLimitQ(int HandleNo,char *CH,double &Volt,double &Current) 関数名 KEK_GPIB_VCLimitQ 引数 HandleNo:ハンドル番号 CH:指定チャンネル 5 “A0+”,”D++”,”D+-“,”A++”,”A+-“,“A0-“,”D-+”,”D--“,”A-+”,”A--“, “D0+”,”Db0+”,”Db0-“ “ALL”(ALL CH) 戻り値 &Volt:リミッタ電圧値クエリ(マイナス出力の場合、データはマイナス値です。) &Current:リミッタ電流クエリ(マイナス出力の場合、データはマイナス値です。) タイムアウトエラー=-1,GP-IB エラー=-2,範囲外=-3,成功=0 解説 OVP 出力過電圧値、過電流値を読み込みます。 ALL を指定した場合、&Volt,&Current の領域を CH 数分確保して下さい。 1-15 計測電圧・電流値読み込み int KEK_GPIB_VCDataQ(int HandleNo,char *CH,double &Volt,double &Current) 関数名 KEK_GPIB_VCDataQ 引数 HandleNo:ハンドル番号 CH:指定チャンネル “A0+”,”D++”,”D+-“,”A++”,”A+-“,“A0-“,”D-+”,”D--“,”A-+”,”A--“, “D0+”,”Db0+”,”Db0-“ “ALL”(ALL CH) 戻り値 &Volt:計測電圧値クエリ(マイナス出力の場合、データはマイナス値です。) &Current:計測電流値クエリ(マイナス出力の場合、データはマイナス値です。) タイムアウトエラー=-1,GP-IB エラー=-2,範囲外=-3,成功=0 解説 計測電圧値、電流値を読み込みます。 ALL を指定した場合、&Volt,&Current の領域を CH 数分確保して下さい。 1-16 ステータス読み出し int KEK_GPIB_STB(int HandleNo,char *CH,char &STB,char &SESR,char &ESR,char &OutputONOFF) 関数名 KEK_GPIB_STB 引数 HandleNo:ハンドル番号 CH:指定チャンネル “A0+”,”D++”,”D+-“,”A++”,”A+-“,“A0-“,”D-+”,”D--“,”A-+”,”A--“, “D0+”,”Db0+”,”Db0-“ “ALL”(ALL CH) 6 戻り値 &STB:ステータス・バイト・レジスタ &SESR:標準イベント・ステータス・レジスタ &ESR:イベント・ステータス・レジスタ &OutputONOFF:アウトプット ON/OFF の状態を通知します。 1:ON 0:OFF ALL を指定した場合、全ての領域を CH 数分確保して下さい。 タイムアウトエラー=-1,GP-IB エラー=-2,範囲外=-3,成功=0 解説 ステータス・バイト・レジスタ、標準イベント・ステータス・レジスタ、 イベント・ステータス・レジスタの値を返します。 1度読むと全てのレジスタはクリアされます。 タイマーにこの関数を入れて随時監視します。 *ステータス・バイト・レジスタの内容(STB) b7 b6 b5 b4 b3 b2 b1 b0 b7:未使用 b6:1=SRQ(サービス・リクエスト) b5:1=SESR(標準イベント・ステータス・レジスタ)サマリ b4:1=メッセージ・アベイラブル b3:未使用 b2:未使用 b1:1=SSR(シーケンス・ステータス・レジスタ)サマリ b0:1=ESR0(イベント・ステータス・レジスタ)サマリ *標準イベント・ステータス・レジスタの内容(SESR) b7 b6 b5 b4 b3 b2 b1 b7:1=Power ON b6:未使用 b5:1=コマンド・エラー発生 b4:1=実行エラー発生 b3:1=機器依存エラー発生 b2:1=クエリ・エラー発生 b1:未使用 b0:1=動作の完了(*OPC コマンドに対してのみセット) 7 b0 *イベント・ステータス・レジスタの内容(ESR0∼12) b7 b6 b5 b4 b3 b2 b1 b0 b7:1=CV/CC が変化 b6:未使用 b5:未使用 b4:未使用 b3:1=OVP(過電圧保護)が動作した。 b2:1=UVP(低電圧保護)が動作した。 b1:1=OCP(過電流保護)が動作した。 b0:1=OPP(過電力保護)が動作した。 (注意事項) * データロガー(計測電流値、電圧値)、操作、アラームのログをテキストファイルに残 します。 *ALL 指定は、読み込みのみで設定の ALL 指定はありません。(誤動作防止のため) *ステータスの読み出しは、タイマー内で動作させる作りとなっています。 *マイナス出力 CH:CH D+-,CH A+-,CH A0-,CH D--,CH A--,CH Db0-となります。 この CH の設定値には、マイナス(−)をつけて下さい。 戻り値もマイナス(−)値で返ってきます。 *設定分解能は、10V 系で 10mV 設定分解能、100V 系で 100mV 設定分解能です。 8 2.サンプルプログラム 例題) 設定電圧 1V から最終到達電圧 10V まで電圧変化割合 1V/Sec で Ramp 運転させる。 #include “ugpib.h” #define GPIB_BOARD_NO 0 /* GPIB Board No. = 0 */ #define GPIB_ADR 1 /* GPIB Address = 1 */ #define ON 1 #define OFF 0 main( ) { int hGPIB; /* Handle No. */ int I; double Volt[13]; /* GP-IB Handle Open */ hGPIB = KEK_GPIB_HandleOpen( GPIB_BOARD_NO,GPIB_ADR); if(hGPIB < 0){ /* Error 処理 */ } /* CH Db0+ 1.00V 設定 */ I = KEK_GPIB_Volt( hGPIB , “Db0+”, 1.00); If(I < 0){ /* Error 処理 */ } /* CH Db0- -1.00V 設定 */ I = KEK_GPIB_Volt( hGPIB , “Db0-”, -1.00); If(I < 0){ /* Error 処理 */ } /* 設定電圧値 ALL CH 読み込み */ I=KEK_GPIB_VoltQ(hGPIB,”ALL”,&Volt); 9 /* &Volt に全てのチャンネルの設定電圧値が入ります。 */ If(I < 0){ /*Error 処理*/ } /* Ramp 運転設定 */ I=KEK_GPIB_Ramp(hGPIB.,”Db0+”,10.00); /* CHDb0+,最終到達電圧 10.00V */ If(I < 0){ /*Error 処理*/ } I=KEK_GPIB_RampVpS(hGPIB,”Db0+”,1.0); /* Output ON 時の設定電圧から 1.0V/Sec で最終到達電圧まで*/ If(I < 0){ /*Error 処理*/ } /*出力 ON */ I=KEK_GPIB_Output(hGPIB,”Db0+”,ON); If(I < 0){ /*Error 処理*/ } } 10
© Copyright 2024 ExpyDoc