電源システム用 GP-IB API 関数取り扱い説明書 Ver.1.00 株式会社

電源システム用 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