ＨＲＰ Ｉｎｔｅｒｆａｃｅ Ｂｏａｒｄ
07-0003

リファレンスマニュアル（第１版）
２００８年９月

目次

１. 関数 ..............................................................................1
I7fOpen _________________________________________________________________________________ 1
I7fClose _________________________________________________________________________________ 2
I7fReset _________________________________________________________________________________ 2
I7fGetInfo ______________________________________________________________________________ 3
I7fAdRead ______________________________________________________________________________ 4
I7fDaWrite ______________________________________________________________________________ 5
I7fEncMode ____________________________________________________________________________ 6
I7fEncStart ____________________________________________________________________________ 6
I7fEncStop _____________________________________________________________________________ 7I7fEncRead_____________________________________________________________________________ 7I7fEncWrite ____________________________________________________________________________ 8
I7fEncClear ____________________________________________________________________________ 8I7fPioWrite _____________________________________________________________________________ 9I7fPioRead _____________________________________________________________________________ 9I7fPioSet _______________________________________________________________________________ 10I7fPioReset ____________________________________________________________________________ 10

２. データ形式 ......................................................................11IB7_PARAINFO, PIB7_PARAINFO ______________________________________________ 11
IB7_PARAAD, PIB7_PARAAD ____________________________________________________ 11
IB7_PARADA, PIB7_PARADA ____________________________________________________ 11
IB7_PARAENC, PIB7_PARAENC ________________________________________________ 12
IB7_PARAPIO, PIB7_PARAPIO __________________________________________________ 12

３. 設定コード.......................................................................13
IB7_MAXADCH _______________________________________________________________________ 13
IB7_MAXDACH _______________________________________________________________________ 13
IB7_MAXENCCH _____________________________________________________________________ 13
IB7_MAXPIOCH ______________________________________________________________________ 13ENC_MODE_PULSE _________________________________________________________________ 13
ENC_MODE_X1 _______________________________________________________________________ 13
ENC_MODE_X2 _______________________________________________________________________ 13
ENC_MODE_X4 _______________________________________________________________________ 13

４. エラーコード ....................................................................13
RTN_IBOK ______________________________________________________________________________ 13
RTN_IBOVER __________________________________________________________________________ 13
RTN_IBNOPEN________________________________________________________________________ 13
RTN_IBNCLOSE ______________________________________________________________________ 13
RTN_IBNOPARA _____________________________________________________________________ 13
RTN_IBCHOVER _____________________________________________________________________ 13
RTN_ENCNOMODE _________________________________________________________________ 13
RTN_IBOPENED______________________________________________________________________ 13
RTN_IBIOCTL _________________________________________________________________________ 13
RTN_IBTMOVER _____________________________________________________________________ 13

５. 改訂履歴 ........................................................................14

HRP Interface Board [ 07-0003 ]１. 関数
各機能を使用するための関数を用意しておりますのでオリジナルのプログラム作成にご利用ください。

表1. 全関数リスト
関数
I7fOpen
I7fClose
I7fReset
I7fGetInfo
I7fAdRead
I7fDaWrite
I7fEncMode
I7fEncStart
I7fEncStop
I7fEncRead
I7fEncWrite
I7fEncClear
I7fPioRead
I7fPioWrite
I7fPioSet
I7fPioReset機能
I/F ボードのデバイスをオープン
I/F ボードのデバイスをクローズ
D/A,PIO の出力を全チャンネル０にする。
デバイス情報を取得
A/D のデータ読み込み
D/A のデータ書き込み
エンコーダカウンタのモード設定
カウントスタート
カウントストップ
カウントデータの読み込み
カウントデータの書き込み
カウントデータを０にする
全チャンネルの PIO データの読み込み
全チャンネルの PIO データの書き込み
指定したチャンネルの出力を１にする。
指定したチャンネルの出力を０にする。

I7fOpen
指定した I/F ボードのアクセスするドライバを開始します。 オープンできる番号は 0～3までです。
書式 int I7fOpen( int Ib7No )引数 Ib7No・・・デバイス番号（０～３まで指定可能）
戻り値 RTN_IBOVER０≦値 → 正常（オープン＃）
０＞値 → 異常＜例＞ ０番のデバイスドライバをオープン
ｉｆ( I7fOpen( 0 ) < 0 ) printf(“open error”);

1HRP Interface Board [ 07-0003 ]I7fClose指定した I/F ボードのアクセスするドライバを終了します。 クローズできる番号は 0～3までです。
書式 int I7fClose( int Ib7No )引数 Ib7No・・・デバイス番号（０～３まで指定可能）
戻り値 RTN_IBOVER
RTN_IBNOCLOSE
RTN_IBOK → 正常
０＞値 → 異常＜例＞ ０番のデバイスをオープン
ｉｆ( I7fClose( 0 ) < 0 ) printf(“close error”);

I7fReset
指定した I/F ボードを出力機能（D/A、PO）を全チャンネル初期状態に戻します。
（初期状態は D/A の出力が 0[V]、PO の出力が High(5[V])の状態です。）
リセットできる番号は 0～3 までです。
書式 int I7fReset( int Ib7No )引数 Ib7No・・・デバイス番号（０～３まで指定可能）
戻り値 RTN_IBOVER０≦値 → 正常０＞値 → 異常＜例＞ ０番のデバイスをリセット
ｉｆ( I7fReset( 0 ) < 0 ) printf(“reset error”);

2

HRP Interface Board [ 07-0003 ]I7fGetInfo指定した I/F ボードの情報を取得します。 取得した情報は引数の中に格納されます。
複数枚の I/F ボードを使用する際に引数の中の Ib7ID を参照してボードを特定します。
書式 int I7fGetInfo(PIB7_PARAINFO)
引数 PIB7_PARAINFO(IB7_PARAINFO のポインタ)
戻り値 RTN_IBOVER
RTN_IBNOPARA０≦値 → 異常０＞値 → 正常（オープン＃）＜例＞ ０番のデバイスドライバから I/F ボードの情報を取得
IB7_PARAINFO Ib7ParaInfo;
Ib7ParaInfo.Ib7no=0;
if( I7fGetInfo( &Ib7ParaInfo ) < 0 ) printf(“Device Info get error”);
else{
printf("Get Device Infomation\nib7no=%i, ioBase=%08X.\n",
Ib7ParaInfo.DevInfo.ib7no,Ib7ParaInfo.DevInfo.ioBase);printf("IB7 version = %04X, IB7 ID=%i.\n\n",Ib7ParaInfo.DevInfo.Ib7Ver,
Ib7ParaInfo.DevInfo.Ib7ID);}

3

HRP Interface Board [ 07-0003 ]I7fAdRead
指定したチャンネルに入力された電圧値を 12bit の A/D データにして読み込みます。
データ[data]を電圧値[volt]に変えるには以下の式を使用してください。
±１０Ｖ入力レンジ ： volt=20.0*(double)data/4096.0-10.0
０～５Ｖ入力レンジ ： volt=5.0*(double)data/4096.0
書式 int I7fAdRead( PIB7_PARAAD )引数 PIB7_PARAAD（IB7_PARAAD のポインタ）
戻り値 RTN_IBOVER
RTN_IBNOPEN
０≦値 → 異常０＞値 → 正常（オープン＃）＜例＞ ０番のデバイスドライバから A/D 1ch のデータを取得
WORD AdDat;
IB7_PARAAD Ib7ParaAd;
Ib7ParaAd.Ib7no=0;
Ib7ParaAd.ChData.ch=0;ｉｆ( I7fAdRead( &Ib7ParaAd ) < 0 ) printf(“A/D Read error”)；
AdDat=Ib7ParaAd.ChData.wData[0];4HRP Interface Board [ 07-0003 ]I7fDaWrite
指定したチャンネルに 12bit の D/A データを書き込み、電圧を出力します。
電圧値[volt]をデータ[data]に変えるには以下の式を使用してください。
data=(WORD)(volt*4096.0/20.0+2047.5)
書式 int I7fDaWrite( PIB_PARADA )引数 PIB7_PARADA（IB7_PARADA のポインタ）
戻り値 RTN_IBOVER
RTN_IBNOPEN
０≦値 → 異常０＞値 → 正常（オープン＃）＜例＞ ０番のデバイスドライバから D/A 1ch のデータ出力
WORD DaDat=2048;
IB7_PARADA Ib7ParaDa;
Ib7ParaDa.Ib7no=0;
Ib7ParaDa.ChData.ch=0;
Ib7ParaDa.ChData.wData[0]=DaDat;ｉｆ( I7fDaWrite( &Ib7ParaDa ) < 0 ) printf(“D/A Read error”);

5HRP Interface Board [ 07-0003 ]I7fEncMode
指定したチャンネルのカウンタのカウントモードを設定します。
カウントモードは全部で４種類用意されています。
ENC_MODE_PULSE : up/down カウントENC_MODE_X1 : １逓倍
ENC_MODE_X2 : ２逓倍
ENC_MODE_X4 : ４逓倍
書式 int I7EncMode(PIB7_PARAENC)
引数 PIB7_PARAENC(IB7_PARAENC のポインタ)
戻り値 RTN_IBOVER
RTN_IBNOPEN
RTN_IBCHOVER
RTN_ENCNOMODE０≦値 → 異常
０＞値 → 正常（オープン＃）＜例＞ ０番のデバイスドライバから ENC 1ch のモードを設定。
IB7_PARAENC Ib7ParaEnc;
Ib7ParaEnc.Ib7no=0;
Ib7ParaEnc.ChData.ch=0;
Ib7ParaEnc.ChData.mode=ENC_MODE_PULSE;
ｉｆ( I7fEncMode( &Ib7ParaEnc ) < 0 ) printf(“ENC Mode error”);

I7fEncStart
指定したチャンネルのカウントをスタートさせます。
書式 int I7fEncStart ( PIB7_PARAENC )引数 PIB7_PARAENC(IB7_PARAENC のポインタ)
戻り値 RTN_IBOVER
RTN_IBNOPEN
RTN_IBCHOVER０≦値 → 異常０＞値 → 正常（オープン＃）＜例＞ ０番のデバイスドライバから ENC 1ch のカウントをスタートさせます。
IB7_PARAENC Ib7ParaEnc;
Ib7ParaEnc.Ib7no=0;
Ib7ParaEnc.ChData.ch=0;ｉｆ( I7fEncStart( &Ib7ParaEnc ) < 0 ) printf(“ENC Start error”);

6

HRP Interface Board [ 07-0003 ]I7fEncStop
指定したチャンネルのカウントをストップさせます。
書式 int I7fEncStop ( PIB7_PARAENC )引数 PIB7_PARAENC(IB7_PARAENC のポインタ)
戻り値 RTN_IBOVER
RTN_IBNOPEN
RTN_IBCHOVER０≦値 → 異常０＞値 → 正常（オープン＃）＜例＞ ０番のデバイスドライバから ENC 1ch のカウントをストップさせます。
IB7_PARAENC Ib7ParaEnc;
Ib7ParaEnc.Ib7no=0;
Ib7ParaEnc.ChData.ch=0;ｉｆ( I7fEncStop( &Ib7ParaEnc ) < 0 ) printf(“ENC Stop error”);

I7fEncRead
指定したチャンネルからカウントデータを読み込みます。
書式 int I7fEncRead( PIB_PARAENC )引数 PIB7_PARAENC(IB7_PARAENC のポインタ)
戻り値 RTN_IBOVER
RTN_IBNOPEN
RTN_IBCHOVER０≦値 → 異常０＞値 → 正常（オープン＃）＜例＞ ０番のデバイスドライバから ENC 1ch のカウント値を CntDat に移します。
DWORD CntDat;
IB7_PARAENC Ib7ParaEnc;
Ib7ParaEnc.Ib7no=0;
Ib7ParaEnc.ChData.ch=0;ｉｆ( I7fEncRead( &Ib7ParaEnc ) < 0 ) printf(“ENC Read error”);
CntDat=Ib7ParaEnc.ChData.dwData[0];7HRP Interface Board [ 07-0003 ]I7fEncWrite
指定したチャンネルにカウントデータを書き込みます。
書式 int I7fEncWrite( PIB_PARAENC )引数 PIB7_PARAENC(IB7_PARAENC のポインタ)
戻り値 RTN_IBOVER
RTN_IBNOPEN
RTN_IBCHOVER０≦値 → 異常０＞値 → 正常（オープン＃）＜例＞ ０番のデバイスドライバの ENC 1ch に 1000 を書き込む。
DWORD CntDat=1000;
IB7_PARAENC Ib7ParaEnc;
Ib7ParaEnc.Ib7no=0;
Ib7ParaEnc.ChData.ch=0;
Ib7ParaEnc.ChData.dwData[0]=CntDat;ｉｆ( I7fEncWrite( &Ib7ParaEnc ) < 0 ) printf(“ENC Write error”);

I7fEncClear
指定したチャンネルのカウントデータを０にします。
書式 int I7fEncCear( PIB_PARAENC )引数 PIB7_PARAENC(IB7_PARAENC のポインタ)
戻り値 RTN_IBOVER
RTN_IBNOPEN
RTN_IBCHOVER０≦値 → 異常０＞値 → 正常（オープン＃）＜例＞ ０番のデバイスドライバの ENC 1ch のカウントデータ０にする
IB7_PARAENC Ib7ParaEnc;
Ib7ParaEnc.Ib7no=0;
Ib7ParaEnc.ChData.ch=0;ｉｆ( I7fEncClear( &Ib7ParaEnc ) < 0 ) printf(“ENC Clear error”);

8HRP Interface Board [ 07-0003 ]I7fPioWrite
指定したグループから 16bit のデータを書き込み、各ＰＩＯのチャンネルから出力させます。
グループ１は１～１６チャンネルになります。
書式 int I7PioWrite(PIB7_PARAPIO)
引数 PIB7_PARAPIO(IB7_PARAPIO のポインタ)
戻り値 RTN_IBOVER
RTN_IBNOPEN
RTN_IBCHOVER０≦値 → 異常０＞値 → 正常（オープン＃）＜例＞ ０番のデバイスドライバの OUT Group1 から 16bit のデータを出力する
WORD PioDat=0xAAAA;
IB7_PARAPIO Ib7ParaPio;Ib7ParaPio.Ib7no=0;
Ib7ParaPio.ChData.OutGroup=0;
Ib7ParaPio.ChData.wData= PioDat;ｉｆ( I7fPioWrite( &Ib7ParaPio ) < 0 ) printf(“PIO Write error”);

I7fPioRead
指定したグループからＰＩＯの各チャンネルに入力された 16bit のデータを読み込みます。
グループ１は１～１６チャンネルになります。
書式 int I7PioRead(PIB7_PARAPIO)
引数 PIB7_PARAPIO(IB7_PARAPIO のポインタ)
戻り値 RTN_IBOVER
RTN_IBNOPEN
RTN_IBCHOVER０≦値 → 異常０＞値 → 正常（オープン＃）＜例＞ ０番のデバイスドライバの IN Group1 から 16bit のデータを読み込む。
WORD PioDat;
IB7_PARAPIO Ib7ParaPio;
Ib7ParaPio.Ib7no=0;Ib7ParaPio.ChData.InGroup=0;ｉｆ( I7fPioRead( &Ib7ParaPio ) < 0 ) printf(“PIO Read error”);
PioDat=Ib7ParaPio.ChData.wData;

9HRP Interface Board [ 07-0003 ]I7fPioSet
指定したチャンネルの出力を High にする。
OutGroup に必ず０を指定してください。
書式 int I7PioSet(PIB7_PARAPIO)
引数 PIB7_PARAPIO(IB7_PARAPIO のポインタ)
戻り値 RTN_IBOVER
RTN_IBNOPEN
RTN_IBCHOVER０≦値 → 異常０＞値 → 正常（オープン＃）＜例＞ ０番のデバイスドライバの PIO 1ch を High にする。
IB7_PARAPIO Ib7ParaPio;
Ib7ParaPio.Ib7no=0;
Ib7ParaPio.ChData.OutGroup=0;
Ib7ParaPio.ChData.ch=0;ｉｆ( I7fPioSet( &Ib7ParaPio ) < 0 ) printf(“PIO Set error”);

I7fPioReset
指定したチャンネルの出力を Low にする。
OutGroup に必ず０を指定してください。
書式 int I7PioReset(PIB7_PARAPIO)
引数 PIB7_PARAPIO(IB7_PARAPIO のポインタ)
戻り値 RTN_IBOVER
RTN_IBNOPEN
RTN_IBCHOVER０≦値 → 異常０＞値 → 正常（オープン＃）＜例＞ ０番のデバイスドライバの PIO 1ch を Low にする。
IB7_PARAPIO Ib7ParaPio;
Ib7ParaPio.Ib7no=0;
Ib7ParaPio.ChData.OutGroup=0;
Ib7ParaPio.ChData.ch=0;ｉｆ( I7fPioReset( &Ib7ParaPio ) < 0 ) printf(“PIO Reset error”);

10HRP Interface Board [ 07-0003 ]２. データ形式
表2. 各機能のデータ形式
機能名デバイス情報

型名

IB7_PARAINFO,
PIB7_PARAINFO

データ形式
typedef struct _IB7_DEVINFO{WORD ib7no;//デバイス番号0～3
WORD irq;//IRQ No.
WORD Ib7Ver;//PCI Version
WORD Ib7ID;//シリアルＮｏの下４桁
DWORD ioBase;//I/O Base Aaddress} IB7_DEV_INFO, *PIB7_DEV_INFO;
typedef struct _IB7_PARAINFO{WORD Ib7no;//デバイス番号0～3
IB7_DEV_INFO DevInfo; //デバイスパラメータ} IB7_PARAINFO, *PIB7_PARAINFO;

A/DIB7_PARAAD,
PIB7_PARAAD

typedef struct _IB7_ADDACH{int ch;//チャンネル0～15
WORD wData[2];//[0]がA/Dデータ} IB7_ADDACH, *PIB7_DADDACH;
typedef struct _IB7_PARAAD{WORD Ib7no;//デバイス番号0～3
IB7_ADDACH ChData; //チャンネルデータ} IB7_PARAAD, *PIB7_PARAAD;

D/A

IB7_PARADA,
PIB7_PARADA

typedef struct _IB7_ADDACH{
int ch;//チャンネル0～15
WORD wData[2];//[0]がD/Aデータ} IB7_ADDACH, *PIB7_DADDACH;
typedef struct _IB7_PARADA{WORD Ib7no;//デバイス番号0～3
IB7_ADDACH ChData; //チャンネルデータ} IB7_PARADA, *PIB7_PARADA;

11HRP Interface Board [ 07-0003 ]機能名ENC

型名

IB7_PARAENC,
PIB7_PARAENC

データ形式
typedef struct _IB7_ENCCH{int ch;//チャンネル 0～15
WORD command;//コマンド
WORD mode;//カウントモード
WORD status;//ステータス
DWORD dwData[2];//[0]がカウントデータ} IB7_ENCCH, *PIB7_ENCCH;
typedef struct _IB7_PARAENC{WORD Ib7no;//デバイス番号 0～3
IB7_ENCCH ChData;//チャンネルデータ} IB7_PARAENC, *PIB7_PARAENC;

PIO

IB7_PARAPIO,
PIB7_PARAPIO

typedef struct _IB7_PIOCH{int InGroup; //IN グループ番号 0～3
int OutGroup; //OUT グループ番号 0～3
WORD ch;//チャンネル 0～15
WORD wData; //PIO データ} IB7_PIOCH, *PIB7_PIOCH;
typedef struct _IB7_PARAPIO{WORD Ib7no;//デバイス番号 0～3
IB7_PIOCH ChData;//チャンネルデータ} IB7_PARAPIO, *PIB7_PARAPIO;

12

HRP Interface Board [ 07-0003 ]３. 設定コード
設定コード

値

IB7_MAXADCH
IB7_MAXDACH
IB7_MAXENCCH
IB7_MAXPIOCH
ENC_MODE_PULSE
ENC_MODE_X1
ENC_MODE_X2
ENC_MODE_X4

16

内容A/D の最大チャンネル数

16

D/A〃

16

エンコーダカウンタ〃

16

PI と PO の最大チャンネル数（もしくは bit 数）

16

エンコーダカウンタ UP/DOWN モード

1〃1 逓倍カウントモード

2〃２逓倍カウントモード

3〃４逓倍カウントモード

４. エラーコード
各関数が返すエラーコードを説明します。

表3. エラーコード表
エラーコード値

RTN_IBOK
RTN_IBOVER
RTN_IBNOPEN
RTN_IBNCLOSE
RTN_IBNOPARA
RTN_IBCHOVER
RTN_ENCNOMODE
RTN_IBOPENED
RTN_IBIOCTL
RTN_IBTMOVER

0内容
正常

-1

I/F ボードが無い（０～３以外）-2

I/F ボードがオープンされていない-3

I/F ボードがクローズされない-4

パラメータが指定されていない-5

I/F ボードのチャンネルが間違っている-6

ENC モードが指定以外である-7

I/F ボードはすでにオープンされている。

-8

I/O コントロールエラー-9

内部処理の時間制限を越えました。

13HRP Interface Board [ 07-0003 ]５. 改訂履歴版
1

日付
2008/9/18

ページ－内容
初版作成（ソフトウェアマニュアルから分離。）○ソフトウェアマニュアルからの修正・変更点
設定コードの項目を追加
エラーコードの追加
I7fReset 関数の PO を Low から High に変更。

14開発元

川田工業株式会社
製造・販売元／修理、技術的なお問い合わせは有限会社 図工ＴＥＬ：０４６３-９７-４８９１ ／ ＦＡＸ：０４６３-９７-４８９５
ＵＲＬ：http://www.zuco.jp ／ E - m a i l ： s u p p o r t @ z u c o . j p