83
PENC(PCI/C-PCI)Linux/RT www.interface.co.jp GPG-6204 3 モードパルスカウンタ Linux 対応ドライバソフトウェア Help for Linux

GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

  • Upload
    others

  • View
    34

  • Download
    0

Embed Size (px)

Citation preview

Page 1: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

PENC(PCI/C-PCI)Linux/RT

www.interface.co.jp

GPG-6204 3 モードパルスカウンタ Linux 対応ドライバソフトウェア

Help for Linux

Page 2: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

2

目 次

第 1 章 はじめに 3

1.1 概要 ...........................................................................3

1.2 特長 ...........................................................................3

第 2 章 製品仕様 4

2.1 動作環境 .......................................................................4

2.2 対象製品型式 ...................................................................5

2.3 基本仕様 .......................................................................6

第 3 章 実行手順 8

3.1 デバイスを動かすまで ...........................................................8

3.2 制御方法 ......................................................................11

3.3 CardBusID設定ユーティリティについて ...........................................15

第 4 章 リファレンス 17

4.1 関数一覧 ......................................................................17

4.2 関数個別説明 ..................................................................18

4.3 戻り値一覧 ....................................................................75

4.4 Kylixをお使いの方へ ...........................................................78

4.5 テストドライバの使用方法 ......................................................80

第 5 章 サンプルプログラム 81

5.1 サンプルプログラム一覧 ........................................................81

5.2 サンプルプログラムのコンパイル方法 ............................................81

第 6 章 重要な情報 82

Page 3: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

3

第1章 はじめに

1.1 概要

GPG-6204 は、Linux アプリケーションから、弊社 3 モードパルスカウンタ製品を制御するソフ

トウェアです。

本ドキュメントは、Linux 上で GPG-6204 を使用するための情報を掲載しています。

1.2 特長

●位相差パルスカウントモード・ゲート付き単相パルスカウントモード・アップダウンパルスカ

ウントモードの 3つのモードを選択できます。

●動作モード、カウンタ方向をソフトウェアで制御することができます。

●カウンタ一致、キャリー/ボロー検出、外部入力、外部ラッチ、インターバルタイマ使用の際に

イベントを発生させることができます。

●機能や使い方をサポートするオンラインヘルプを添付しています。開発中に関数の詳細仕様を

参照することができます。

Page 4: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

4

第2章 製品仕様

2.1 動作環境 機種 弊社製 FA コントローラ

弊社製 Classembly Devices®

PC/AT 互換機

ドライバ種別 キャラクタ型ドライバ

組み込み方式 モジュール(ダイナミックロード/アンロード)

メジャー番号割り当て 自動割り当て

ソースコードの取り扱い ドライバモジュール一部公開

ライブラリは非公開

共用モジュール公開

ビルドサポート メイクファイル提供

対応カーネルバージョン ・IBM PC/AT 互換機

カーネル 2.2.x

カーネル 2.4.x

カーネル 2.6.x

・弊社 SH-CPU モジュール

弊社 SH-Linux

ヘルプファイル PDF 形式

テキスト形式

※CardBus シリーズは、Linux カーネル 2.4/カーネル 2.6、および pcmcia-cs-3.1.25 以上のバージョ

ンでご利用ください。上記バージョンで CardBus カードが認識されない場合、カーネルコンフィギ

ュレーションで PCMCIA、および CardBus がサポートしていることを確認してください。

また、/etc/sysconfig/pcmcia ファイルを、

PCMCIA=yes

PCIC=yenta_socket

に修正し、再起動してください。

Page 5: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

5

2.2 対象製品型式 PCI シリーズ(PCI バス製品)

PCI-6204、PCI-6205C、

PCI-320412、PCI-320416、PCI-360112、PCI-360116、PCI-360216 ※1

LPC シリーズ(Low Profile PCI バス製品)

LPC-631204

LPC-321116、LPC-321216、LPC-321316、LPC-361416、LPC-340216、LPC-340416、

LPC-361116、LPC-361216、LPC-361316、LPC-361416 ※1

PEX シリーズ(PCI Express バス製品)

PEX-631204

PEX-321116、PEX-321216、PEX-321316、PEX-361416、PEX-340216、PEX-340416、

PEX-361116、PEX-361216、PEX-361316、PEX-361416 ※1

CTP シリーズ(CompactPCI バス製品)

CTP-6204、CTP-6205、

CTP-320412、CTP-320416、CTP-360112、CTP-360116 ※1

CPZ シリーズ(CompactPCI バス製品)

CPZ-6204、CPZ-6205、

CPZ-320412、CPZ-320416、CPZ-360112、CPZ-360116 ※1

CBI シリーズ(CardBus 製品)

CBI-631104、CBI-631104T、

CBI-631204、CBI-631204TK、CBI-631204TR、

CBI-320412、CBI-320412TK、CBI-320412TR、

CBI-320416、CBI-320416TK、CBI-320416TR、

CBI-360112、CBI-360112TK、CBI-360112TR、

CBI-360116、CBI-360116TK、CBI-360116TR ※1

CSI シリーズ(CardBus 製品)

CSI-631204、

CSI-320412、CSI-320416、CSI-360112、CSI-360116 ※1

※1 PCI/LPC/PEX/CTP/CPZ/CBI/CSI-3xxxxx は 3 モードパルスカウンタ機能のみ使用可能です、

AD/DA 機能を使用する場合には、GPG-3100、GPG-3300 をインストールしてご使用下さい。

Page 6: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

6

2.3 基本仕様 大デバイス枚数 各型式 16 枚まで

コールバック機能 以下の割り込み要因でコールバック関数を呼び出すことができます。

・カウンタ値とプリセット値の一致時

・キャリー/ボロー発生時

・外部ラッチ

・外部入力(L2,L3) (PCI-6204, CTP/CPZ-6204 のみ)

・位相差パルス異常入力時

・インターバルタイマ

・リセットイン信号入力(CBI-631104、LPC/PEX/CBI/CSI-631204 のみ)

・汎用入力信号(IN1~IN16)の立ち上がり/立ち下がり検出

(CBI-631104、LPC/PEX/CBI/CSI-631204 のみ)

イベントマスク機能 割り込み要因毎にマスク設定/マスク解除することができます。

インターバル

タイマ機能

指定した周期でコールバック関数を呼び出すことができます。

(10ms~1500ms)

3 モードパルスカウンタの電源投入時における各レジスタのデフォルト値

は以下の様に設定されます。

レジスタ及びモード リセット時の状態

PCI/CTP/CPZ-6204 00000000h

PCI-6205C

CTP/CPZ-6205

000000h

CBI-631104

LPC/PEX/CBI/CSI-631204

00000000h

カウンタ

PCI/CTP/CPZ/CBI/LPC/PEX/

CSI-3xxxxx

00000000h

PCI/CTP/CPZ-6204 FFFFFFFFh

PCI-6205C

CTP/CPZ-6205

FFFFFFh

CBI-631104

LPC/PEX/CBI/CSI-631204

FFFFFFFFh

比較カウンタ値

PCI/CTP/CPZ/CBI/LPC/PEX/

CSI-3xxxxx

FFFFFFFFh

カウンタモード 0(ゲート付き単相パルスカウント 1 逓倍モ

ード)

カウンタ方向 UP

外部カウンタクリア

設定

外部信号によるカウンタのクリアを行わな

外部カウンタラッチ

設定

外部信号によるカウンタのラッチを行わな

インターバルタイマ 停止

割り込み 全て禁止

初期設定

Page 7: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

7

GPG-6204 は以下の機能を持ちます。

機 能 説 明

ゲート付き単相パルスカウントモード

位相差パルスカウントモード

カウンタモード

アップダウンパルスカウントモード

1 逓倍

2 逓倍

逓 倍

4 逓倍

同期クリア クリア設定

非同期クリア

アップカウント カウンタ方向

ダウンカウント

ソフトウェアラッチ

ラッチ信号のみでラッチ

ラッチ方法

Z 相とラッチ信号でラッチ

クリアなし

Z 相のみでクリア

クリア方法

Z 相とラッチ信号でクリア

デジタルフィルタ設定 A 相、B 相、Z 相、L 及び、IN1~IN16 に周

波数フィルタを設定可能

割り込み設定項目 カウンタ値と比較カウンタ値の一致

キャリー/ボロー発生

外部入力(L2,L3)

外部ラッチ発生

位相差パルス異常入力時

インターバルタイマ

汎用入力(IN1~IN16)の立ち上がり/立ち

下がり検出

リセットイン信号(RSTIN)

機能

Page 8: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

8

第3章 実行手順

3.1 デバイスを動かすまで 1. インストール

デバイスをスロットに実装しシステムを起動します。

インストーラを起動し、Linux ドライバのインストールを行います。

詳しいインストール方法は、Readme をご参照ください。 #sh install

インストーラの指示に従って、インストールを行ってください。

2. ドライバモジュールの組み込み

GPG-6204 の Linux 用ドライバモジュールを組み込みます。

ドライバ組み込み用シェルスクリプトを実行してください。

#cd /usr/src/interface/gpg6204/(アーキテクチャ名※)/linux/drivers #./inspenc.sh ※アーキテクチャ名には、PC/AT 互換機の場合 i386、64bit 環境の場合 x86_64、SH-CPU モジュール

の場合 sh4 になります。以下同じです。

3. デバイス番号設定

デバイス番号を設定します。デバイス番号設定ユーティリティ dpg0101 を起動させます。 #/usr/bin/dpg0101

デバイス番号設定ユーティリティを起動させると、以下の画面が表示されます。 ************************************************** Setup Utility -------------------------------------------------- Version: 1.30-07 -------------------------------------------------- Copyright 2002, 2005 Interface Corporation. All rights reserved. ************************************************** Enter the model number of the product: GPG-

入力画面では、”6204”を打ち込んでリターンキーを押してください。 ================================================== Ref.ID | Model | RSW1 | ENCODER | Device No. -------------------------------------------------- 1 | PCI-6204 | 0 | | 1 -------------------------------------------------- 2 | PCI-6204 | 1 | | 2 -------------------------------------------------- 3 | PCI-360116 | 0 | PENC | 3 ==================================================

Page 9: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

9

項目 内容

Ref.ID そのデバイス番号の ID です。

次のメニューでデバイス番号の変更などを行う際に指定します。

Model 現在システムが認識している GPG-6204 が制御するデバイス一覧です。

RSW1 デバイス上の RSW1 の設定値です。

ENCODER GPG-6204 から制御する機能を示します。

(PCI/LPC/PEX/CTP/CPZ/CBI/CSI-3xxxxx のみ表示されます。)

Device No. 各デバイスに割り当てられたデバイス番号です。任意の値に変更可能です。

次にメニューを選択します。メニューに示されている番号を入力することでそれぞれの設定変更が可

能です。

************* Command ************** 1. Change Device Number. 2. Delete Device Number. 3. Load new device setting file. 4. Run the initialization program. 5. Run the CardBus ID setup utility. 99.Exit the program. ********************************* Enter the Command number:

番号 項目 内容

1 デバイス番号の変更 デバイスのデバイス番号を変更します。

2 デバイス番号(ノード)の削除

設定されたデバイス番号を削除します。ID を入力

してください。ここでデバイス番号を削除した場合

は、再度 dpg0101 を実行するとデバイス番号が設定

されます。

3 別のソフト型式のデバイス番号設

GPG-6204以外のGPG-XXXXで制御するデバイス型式

のデバイス番号設定に移ります。他のカテゴリ(例

えば DIO(GPG-2000)など)と併用してシステムを

構築している場合に使用してください。

4 初期設定ユーティリティの起動 GPG-6204 では使用できません。

5 CardBusID 設定ユーティリティの

起動

CardBus 製品のボード ID 表示/設定を行います。

『3.3 CardBusID設定ユーティリティについて」を

参照してください。

99 プログラムの終了 デバイス番号設定ユーティリティを終了します。

4. プログラム作成

プログラムの作成を行います。

5. コンパイル

作成したプログラムをコンパイルします。コマンド例を以下に示します。ここでは、サンプルプログ

ラム名を「sample.c」とした場合です。 #gcc -o sample sample.c –lgpg6204

Page 10: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

10

6. 実行

コンパイルすることで実行ファイル sample ができていますので、 #./sample と入力し、プログラムを実行してください。より詳しい制御方法は、『3.2 制御方法』をご参照くだ

さい。

Page 11: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

11

3.2 制御方法

同一型式のデバイスを複数枚使用する場合は、デバイス上のロータリスイッチ(RSW1)の設定値が同

一型式同士で重複しないように設定してからシステムに実装してください。複数のデバイスが存在す

る場合、デバイスを一意に識別するための番号となります。

3 モードパルスカウンタは、以下の流れでカウンタを読み込みます。

外部からのパルス位相差パルス

モード

ゲート付き単層

パルスモード

パルスカウント

モード

クリア設定 逓倍設定位相差パルス

モード

ソフトウェア

ラッチ

外部ラッチ外部ラッチ

設定

カウンタ

読み込み

PencSetMode

PencSetZMode

PencGetCounter

Page 12: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

12

1. 初期化

デバイスを PencOpen 関数で初期化します。

int nDevice = 1;

nRet = PencOpen( nDevice, 0 );

デバイス番号 1 を第一パラメータで指定して初期化を行います。デバイス番号とは、3 モードパ

ルスカウンタを一意に識別するもので、下記以降の関数コールの際に指定します。

このデバイス番号はデバイス番号設定ユーティリティによって設定されます。

初期化が正常終了すると上記の記述例では nRet に PENC_ERROR_SUCCCESS が返されます。

複数の 3モードパルスカウンタを使用する場合は、各デバイスに対し PencOpen 関数をコールしオ

ープンする必要があります。

初期化した 3 モードパルスカウンタはアプリケーション終了の際には必ず終了処理( PencClose

関数 )を行ってください。

2. 各チャンネルモードの設定・取得

PencSetMode 関数にて、カウンタ動作モード、カウンタ方向、一致検出フラグ、ラッチ方法を設

定します。

nRet = PencSetMode( nDevice, 1, 5, 0, 1, 0 );

チャンネル 1を位相差パルスカウントモード、2逓倍、非同期クリア、カウンタ方向 UP、一致検

出有効、ソフトウェアラッチに設定する例です。

PencGetMode 関数,で設定されたモードを取得することができます。

nRet = PencGetMode( nDevice, 1, &nMode, &nDirection, &nEqual, &nLatch );

チャンネル 1の現在のモードを取得します。

3. 外部信号によるカウンタクリア条件・カウンタラッチ条件、Z相極性の設定と取得

PencSetZMode 関数にて、外部信号によるカウンタクリア条件・カウンタラッチ条件、Z相極性の

設定を設定します。

nRet = PencSetZMode( nDevice, 1, 0x15 );

チャンネル 1 を、Z 相論理反転、Z 相のみによるカウンタクリア、ラッチ信号のみによるカウン

タラッチに設定する例です。

PencSetMode 関数にて外部ラッチを有効にしていないと、外部ラッチ設定は有効になりません。

PencGetZMode 関数,で設定された Z相クリア条件、外部カウンタラッチ条件、 Z 相論理を取得す

ることができます。

nRet = PencGetZMode( nDevice, 1, &nZMode );

チャンネル 1の現在の Z相クリア条件、外部カウンタラッチ条件、 Z 相論理を取得します。

Page 13: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

13

4. カウンタ値の設定・取得

PencSetCounter 関数にて、カウンタ値を設定します。

nRet = PencSetCounter( nDevice, 1, 0x12345678 );

チャンネル 1のカウンタ値を、12345678h に設定する例です。

PencGetCounter 関数で現在のカウンタ値を取得することができます。

nRet = PencGetCounter( nDevice, 1, &ulCounter );

チャンネル 1の現在のカウンタ値を取得します。

PencSetCounterEx 関数および PencGetCounterEx 関数を使うことにより、一度に複数のチャンネ

ルのカウンタ値の取得、設定を行うことができます。

5. 比較カウンタ値の設定、取得

PencSetComparator 関数にて、比較カウンタ値を設定します。

nRet = PencSetComparator( nDevice, 1, 0x5678ABCD );

チャンネル 1の比較カウンタ値を、5678ABCDh に設定する例です。

PencGetComparator 関数で設定された比較カウンタ値を取得することができます。

nRet = PencGetComparator( nDevice, 1, &ulComparator );

チャンネル 1の現在の比較カウンタ値を取得します。

Page 14: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

14

6. イベント割り込みの設定

割り込みイベントが発生した時に、登録した関数を実行させることができます。

これをコールバックイベント機能と呼びます。

PencSetEventEx関数にて割り込みイベントが発生した時にコールバックされる関数を登録します。

PencSetEventMask 関数にて必要な割り込みイベントのマスクを解除します。

設定したマスク状態は PencGetEventMask 関数で取得できます。

割り込みイベントが発生すると、設定した関数がコールされます。

割り込みイベントの処理が必要なくなった場合は、PencSetEventMask 関数にて割り込み要因をマ

スクし、PencKillEvent 関数でコールバック関数の登録を解除します。

7. ステータスの取得

PencGetStatus 関数にてデバイスのステータスを取得することができます。

PencGetStatusEx 関数を使うことにより、一度に複数チャンネルのステータスと

カウンタ値を得ることができます。

8. デバイスのリセット

PencReset 関数にて指定されたチャンネルをリセットします。

9. インターバルタイマ

PencSetTimerConfig 関数、PencGetTimerConfig 関数、PencGetTimerCount 関数を使用してデバイ

ス上に搭載されたタイマを直接使用することができます。

10. 終了処理

PencClose 関数でデバイスの終了処理を行います。アプリケーションは、オープンしたすべての

デバイスのクローズ処理を必ず行ってから終了してください。

nRet = PencClose( nDevice );

Page 15: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

15

3.3 CardBusID 設定ユーティリティについて CardBusID 設定ユーティリティは、複数枚の同一型式 CardBus 製品を使用する為のものです。カード

毎に異なる ID 番号を設定します。

【操作方法】 #dpg0101 -c

すると、CardBusID 設定ユーティリティが起動し現在挿入されている弊社 CardBus 製品の情報が表示

されます。

************************************************** CardBus Setup Utility -------------------------------------------------- Version : 1.30-07 -------------------------------------------------- Copyright 2002, 2005 Interface Corporation. All rights reserved. ************************************************** ================================================== Ref.ID | Bus | Dev | Func| Model | RSW1 -------------------------------------------------- 1 | 3 | 0 | 0 | CBI-631204 | 2 ================================================== ************** Command ******************* 1. Change the board id number. 2. Run the device number setup utility. 99. Exit the program. ****************************************** Enter the command number:

項目 内容

Ref. ID カードのインデックス番号です。

メニューでカードの選択を行う際に指定します。

Bus カードが挿入されているバス番号を示します。

Dev カードが挿入されているデバイス番号を示します。

Func カードが挿入されているデバイス番号を示します。

Model カードの型式を示します。

RSW1 設定されている ID 番号を示します。

ID 番号を変更したい場合はメニューから「1」を選択し、変更を行いたいカードのインデックス番号

を入力します。 Enter Ref. ID:

Page 16: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

16

次にカード ID 番号を入力しリターンキーを押します。カード ID 番号は 0~15 の値を入力してくださ

い。 Enter the board id number (0-15). if you want to cancel this operation, enter -1. :

「99」を選択することでユーティリティを終了します。

※変更した ID 番号をシステムに認識させるには、ドライバの再起動を行うか、システムを再起動し

て下さい。

※設定した ID 番号がわかるように番号を記したシールをカードに貼ることをお勧めします。

Page 17: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

17

第4章 リファレンス

4.1 関数一覧 No 関 数 名 機 能

●初期化

1 PencOpen 3 モードパルスカウンタのオープンを行います。

2 PencClose 3 モードパルスカウンタのクローズを行います。

3 PencReset 指定されたチャンネルのカウンタをリセットします

●デバイス設定/取得

4 PencSetMode 3 モードパルスカウンタの動作モード、カウンタ方向、一致検出フラグ

の設定、ラッチ方法の設定を行います

5 PencGetMode 3 モードパルスカウンタの現在の設定状態を取得します

6 PencSetZMode Z 相の極性、外部信号によるカウンタクリア・ラッチ条件を設定します

7 PencGetZMode Z 相の極性、外部信号によるカウンタクリア・ラッチ条件を取得します

8 PencSetFilter デジタルフィルタの設定を行います

9 PencGetFilter デジタルフィルタの設定を取得します

10 PencEnableCount 複数チャンネルのカウンタ動作を許可/禁止します

11 PencSetResetInMask 外部リセット入力信号端子(RSTIN)のマスクを設定します

12 PencGetResetInMask 外部リセット入力信号端子(RSTIN)のマスク設定を取得します

●カウンタ値設定/取得

13 PencSetCounter カウンタ値を設定します

14 PencGetCounter カウンタ値を取得します。

15 PencSetCounterEx 複数のチャンネルにカウンタ値を設定します

16 PencGetCounterEx 複数チャンネルのカウンタ値を取得します。

17 PencSetComparator 比較カウンタ値を設定します

18 PencGetComparator 比較カウンタ値を取得します

●ステータス取得、汎用入出力

19 PencGetStatus カウンタのステータスを取得します

20 PencGetStatusEx 複数チャンネルのカウンタステータスとカウンタ値を取得します

21 PencGetResetInStatus 外部リセット入力信号端子(RSTIN)の状態を取得します

22 PencInputDI 汎用入力値を取得します

23 PencOutputDO 汎用出力を行います

●インターバルタイマ

24 PencSetTimerConfig インターバルタイマの設定を行います

25 PencGetTimerConfig インターバルタイマの設定情報を取得します

26 PencGetTimerCount インターバルタイマのカウント値を取得します

●割り込み設定/取得

27 PencSetEventMask イベントマスクを設定します

28 PencGetEventMask イベントマスク設定を取得します

29 PencSetEventEx コールバック関数を登録します

30 PencKillEvent 登録されたコールバック関数を削除します

31 lpEventProcEx PencSetEventEx 関数にて登録し、割り込みイベントが発生した時にコ

ールされるコールバックルーチンです。

Page 18: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

18

4.2 関数個別説明

1. PencOpen

3 モードパルスカウンタのオープンを行い、以後のデバイスへのアクセスを行えるようにします。

int PencOpen(

int nDevice, // デバイス番号

unsigned long fulFlags // オープンフラグ

);

パラメータ

nDevice 制御を行うデバイスのデバイス番号を指定します。

Linux 上の各デバイスのデバイス番号は、デバイス番号設定ユーティリティを使用して設定し

ます。

fulFlags オープン時のフラグを指定します。(フラグには下記の識別子を指定します)

PENC_FLAG_NORMAL:

通常のオープン時に使用するフラグです。これを指定すると同じデバイス番号を重複し

てオープンすることはできません。

PENC_FLAG_SHARE:

同じデバイスを複数のプロセスから重複(共有)してオープンすることを許可するフラグ

です。

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_OPEN

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_ALREADY_OPEN

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_PARAMETER

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

nRet = PencOpen(1, PENC_FLAG_NORMAL);

デバイス番号 1の 3モードパルスカウンタをオープンします。

Page 19: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

19

2. PencClose

3 モードパルスカウンタのクローズを行い、デバイスアクセスのために使用されていた各種リソ

ースの解放を行い、以後のデバイスへのアクセスを禁止します。

int PencClose(

int nDevice // デバイス番号

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

nRet = PencOpen(1, 0);

if(nRet== PENC_ERROR_SUCCESS){

nRet = PencClose( 1 );

}

デバイス番号 1の 3モードパルスカウンタのクローズ処理を行います。

Page 20: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

20

3. PencReset

指定されたチャンネルのカウンタをリセットします。

int PencReset(

int nDevice, // デバイス番号

int nChannel // チャンネル番号

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChannel チャンネルを指定します。

PCI-6204, CTP/CPZ-6204 は 1~2

PCI-6205C, CTP/CPZ-6205 は 1~8

CBI-631104, LPC/PEX/CBI/CSI-631204 は 1~4

PCI/LPC/PEX/CTP/CPZ/CBI/CSI-3xxxxx は 1

を指定してください。

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

nRet = PencReset( 1,1 );

デバイス番号 1の 3モードパルスカウンタのチャンネル 1をリセットします

Page 21: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

21

4. PencSetMode

3 モードパルスカウンタの動作モード、カウンタ方向、一致検出機能、ラッチ条件を設定します。

int PencSetMode (

int nDevice, // デバイス番号

int nChannel, // チャンネル番号

int nMode, // 動作モード

int nDirection, // カウンタ方向

int nEqual, // 一致検出指定

int nLatch // ラッチ設定

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChannel

モードを切り替えるチャンネルを指定します。

PCI-6204, CTP/CPZ-6204 は 1~2

PCI-6205C, CTP/CPZ-6205 は 1~8

CBI-631104, LPC/PEX/CBI/CSI-631204 は 1~4

PCI/LPC/PEX/CTP/CPZ/CBI/CSI-3xxxxx は 1

を指定してください。

nMode カウンタ動作モードを指定します。以下のビットアサインにならって設定します。

bit31~bit4 bit3 bit2 bit1 bit0

予約 MD1 MD0 SEL1 SEL0

MD1 MD0 SEL1 SEL0 モード カウント逓倍 クリアモード

0 0 0 0 標 準

0 0 0 1

ゲート付き単相

パルスモード 2 逓倍

非同期クリア

0 1 0 0 標 準

0 1 0 1 2 逓倍

0 1 1 0 4 逓倍

非同期クリア

1 1 0 0 標 準

1 1 0 1 2 逓倍

1 1 1 0

位相差パルス

カウントモード

4 逓倍

同期クリア

1 0 0 0 アップ・ダウンパルス

カウントモード

標 準 非同期クリア

Page 22: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

22

nDirection カウンタ方向を指定します。

値 意味

0 カウンタ UP

1 カウンタ DOWN

nEqual 一致検出を行うかどうか指定します

値 意味

0 一致検出を行わない

1 一致検出を行う

nLatch ラッチ方法を指定します。

nLatch の設定により、GetCounter 関数、GetCounterEx 関数、GetStatusEx 関数 実行時に得

られるカウンタの値は、次のように変化します。

値 意味

0 ソフトウェアラッチ

関数を実行したとき読み出しレジスタにカウンタ値が転送されます。

1 外部ラッチ

カウンタの値は、外部ラッチ信号が入力されたときに読み出しレジスタに

転送されていますので、 後に外部ラッチが入力されたときのカウンタの

値が読み出せます。

PencSetZMode 関数にて、外部ラッチ方法を設定してください。

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

・PENC_ERROR_INVALID_MODE

・PENC_ERROR_INVALID_DIRECT

・PENC_ERROR_INVALID_EQUALS

・PENC_ERROR_INVALID_LATCH

詳細については『4.3 戻り値一覧』をご参照ください。

Page 23: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

23

使用例

int nRet;

nRet = PencSetMode( 1, 1, 5, 0, 1, 0 );

デバイス番号 1 の 3 モードパルスカウンタのチャンネル 1 を位相差パルスカウントモード、2 逓

倍、非同期クリア、カウンタ方向 UP、一致検出有効、ソフトウェアラッチに設定します。

Page 24: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

24

5. PencGetMode

3 モードパルスカウンタの現在の設定状態を取得します。

int PencGetMode (

int nDevice, // デバイス番号

int nChannel, // チャンネル番号

int *pnMode, // 現在のモードを格納する変数へのポインタ

int *pnDirection, // 現在のカウンタ方向を格納する変数へのポインタ

int *pnEqual, // 現在の一致検出指定を格納する変数へのポインタ

int *pnLatch // 現在のラッチ設定を格納する変数へのポインタ

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChannel

モードを切り替えるチャンネルを指定します。

PCI-6204, CTP/CPZ-6204 は 1~2

PCI-6205C, CTP/CPZ-6205 は 1~8

CBI-631104, LPC/PEX/CBI/CSI-631204 は 1~4

PCI/LPC/PEX/CTP/CPZ/CBI/CSI-3xxxxx は 1

を指定してください。

pnMode 取得したカウンタ動作モードを格納する変数へのポインタを指定します。

bit31~bit4 bit3 bit2 bit1 bit0

予約 MD1 MD0 SEL1 SEL0

MD1 MD0 SEL1 SEL0 モード カウント逓倍 クリアモード

0 0 0 0 標 準

0 0 0 1

ゲート付き単相

パルスモード 2 逓倍

非同期クリア

0 1 0 0 標 準

0 1 0 1 2 逓倍

0 1 1 0 4 逓倍

非同期クリア

1 1 0 0 標 準

1 1 0 1 2 逓倍

1 1 1 0

位相差パルス

カウントモード

4 逓倍

同期クリア

1 0 0 0 アップ・ダウンパルス

カウントモード

標 準 非同期クリア

Page 25: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

25

pnDirection 取得したカウンタ方向を格納する変数へのポインタを指定します。

値 意味

0 カウンタ UP

1 カウンタ DOWN

pnEqual 取得した一致検出指定を格納する変数へのポインタを指定します。

値 意味

0 一致検出を行わない

1 一致検出を行う

pnLatch 取得したラッチ設定値を格納する変数へのポインタを指定します。

値 意味

0 ソフトウェアラッチ

読み出しレジスタの値を読み出します。関数を実行したときのカウンタの

値が読み出せます。

1 外部ラッチ

カウンタの値は、外部ラッチ信号が入力されたときに読み出しレジスタに

転送されていますので、 後に外部ラッチが入力されたときのカウンタの

値が読み出せます。

PencSetZMode 関数にて、外部ラッチ方法を設定してください。

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

・PENC_ERROR_NULL_POINTER

詳細については『4.3 戻り値一覧』をご参照ください。

Page 26: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

26

使用例

int nRet;

int nMode;

int nDirection;

int nEqual;

int nLatch;

nRet = PencGetMode( 1, 1, &nMode, &nDirection, &nEqual, &nLatch );

デバイス番号 1の 3モードパルスカウンタのチャンネル 1から現在のモードを取得します。

Page 27: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

27

6. PencSetZMode

Z 相の極性、外部信号によるカウンタクリア・ラッチ条件を設定します。

int PencSetZMode(

int nDevice, // デバイス番号

int nChannel // チャンネル番号

int nZMode // Z 相の極性、外部信号によるカウンタクリア・ラッチ条件

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChannel チャンネルを指定します。

PCI-6204, CTP/CPZ-6204 は 1~2

PCI-6205C, CTP/CPZ-6205 は 1~8

CBI-631104, LPC/PEX/CBI/CSI-631204 は 1~4

PCI/LPC/PEX/CTP/CPZ/CBI/CSI-3xxxxx は 1

を指定してください。

nZMode Z 相の極性・外部信号によるカウンタクリア・ラッチ条件を指定します。

bit31~bit6 bit5 bit4 bit3 bit2 bit1 bit0

予約 LP ZP LTS1 LTS0 CLS1 CLS0

CLS:外部信号によるカウンタクリア条件

CLS1 CLS0 内容

0 0 外部信号によるカウンタのクリアを行わない

0 1 Z 相のみでカウンタをクリアする

1 0 ラッチ信号と Z相が有効の時、カウンタをクリアする

1 1 設定禁止

LTS:外部信号によるカウンタラッチ条件

(このビットを有効にするには PencSetMode 関数でラッチ設定を 1[外部ラッチ有効]にして

ください)

LTS1 LTS0 内容

0 0 外部信号によるカウンタのラッチを行わない

0 1 ラッチ信号のみでカウンタをラッチする

1 0 ラッチ信号と Z相が有効の時、カウンタをラッチする

1 1 設定禁止

Page 28: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

28

ZP:Z 相極性設定

ZP 内容

0 Z 相通常(”High”で有効)

1 Z 相反転(”Low”で有効)

LP:L 信号の極性設定(PCI-6204、CTP/CPZ-6204 は対応していません)

LP 内容

0 L の立ち下がりを有効(↓)(”Low”で有効)

1 L の立ち上がりを有効(↑)(”High”で有効)

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

・PENC_ERROR_INVALID_ZMODE

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

nRet = PencSetZMode( 1, 1, 0x15 );

デバイス番号 1 の 3 モードパルスカウンタのチャンネル 1 を、Z 相論理反転、ラッチ信号のみで

カウンタをラッチ、Z相のみでカウンタをクリアに設定します。

Page 29: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

29

7. PencGetZMode

Z 相の極性、外部信号によるカウンタクリア・ラッチ条件を取得します。

int PencGetZMode(

int nDevice, // デバイス番号

int nChannel, // チャンネル番号

int *pnZMode // Z 相の極性・外部信号によるカウンタクリア・ラッチ条件を

// 格納する変数へのポインタ

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChannel チャンネルを指定します。

PCI-6204, CTP/CPZ-6204 は 1~2

PCI-6205C, CTP/CPZ-6205 は 1~8

CBI-631104, LPC/PEX/CBI/CSI-631204 は 1~4

PCI/LPC/PEX/CTP/CPZ/CBI/CSI-3xxxxx は 1

を指定してください。

pnZMode Z 相の極性・外部信号によるカウンタクリア・ラッチ条件を格納する変数へのポインタを指定

します。

bit31~bit6 bit5 bit4 bit3 bit2 bit1 bit0

予約 LP ZP LTS1 LTS0 CLS1 CLS0

CLS:外部信号によるカウンタクリア条件

CLS1 CLS0 内容

0 0 外部信号によるカウンタのクリアを行わない

0 1 Z 相のみでカウンタをクリアする

1 0 ラッチ信号と Z相が有効の時、カウンタをクリアする

1 1 設定禁止

LTS:外部信号によるカウンタラッチ条件

(このビットを有効にするには PencSetMode 関数でラッチ設定を 1[外部ラッチ有効]にして

ください)

LTS1 LTS0 内容

0 0 外部信号によるカウンタのラッチを行わない

0 1 ラッチ信号のみでカウンタをラッチする

1 0 ラッチ信号と Z相が有効の時、カウンタをラッチする

1 1 設定禁止

Page 30: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

30

ZP:Z 相極性設定

ZP 内容

0 Z 相通常(”High”で有効)

1 Z 相反転(”Low”で有効)

LP:L 信号の極性設定(PCI-6204、CTP/CPZ-6204 は対応していません)

LP 内容

0 L の立ち下がりを有効(↓)(”Low”で有効)

1 L の立ち上がりを有効(↑)(”High”で有効)

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

・PENC_ERROR_NULL_POINTER

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet

nRet = PencSetZMode( 1, 1, 0x15 );

デバイス番号 1 の 3 モードパルスカウンタのチャンネル 1 の Z 相の極性、外部信号によるカウン

タクリア、ラッチ条件を取得します。

Page 31: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

31

8. PencSetFilter

デジタルフィルタの設定を行います。

int PencSetFilter(

int nDevice, // デバイス番号

int nChannel, // チャンネル番号

unsigned long ulFilter // デジタルフィルタ設定値

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChannel チャンネルを指定します。

CBI-631104, LPC/PEX/CBI/CSI-631204 は 1~4

PCI/LPC/PEX/CTP/CPZ/CBI/CSI-3xxxxx は 1

を指定してください。

(指定したチャンネルの A相、B相、Z相、Lにデジタルフィルタが設定されます。)

CBI-631104, LPC/PEX/CBI/CSI-631204 では汎用入力端子(IN1~IN16)にもデジタルフィルタ

を設定可能です。

汎用入力端子にデジタルフィルタを設定する際には、下記の識別子で接点を指定します。

PENC_IN1_8 : IN1~IN8 の 8 点にデジタルフィルタを設定します。

PENC_IN9_16 : IN9~IN16 の 8 点にデジタルフィルタを指定します

ulFilter デジタルフィルタ設定値を指定します。

bit31~bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

0 CLK1 CLK0 0 CNT4 CNT3 CNT2 CNT1 CNT0

CNT0~CNT4 : デジタルフィルタの分周値が取得されます。

CLK0、CLK1 : デジタルフィルタの基準クロックが取得されます。

0 1 CLK1

CNT4~CNT0 0 1 0 1 CLK0

0 停止 停止 停止 -

1 1μ 10μ 100μ -

… -

31 31μ 310μ 3100μ -

Page 32: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

32

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

・PENC_ERROR_INVALID_FILTER

詳細については『4.3 戻り値一覧』をご参照ください。

備考

※デジタルフィルタの設定は CBI-631104、LPC/PEX/CBI/CSI-631204 でのみ実行可能です

使用例

int nRet;

nRet = PencSetFilter( 1, 1, 0x8A );

nRet = PencSetFilter( 1, PENC_IN1_8, 0x8A );

デバイス番号 1の 3モードパルスカウンタのチャンネル 1の A相、B相、Z相、Lと、IN1~IN8 に

フィルタ周期 1ms のデジタルフィルタを設定します。

Page 33: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

33

9. PencGetFilter

デジタルフィルタの設定値を取得します。

int PencGetFilter(

int nDevice, // デバイス番号

int nChannel, // チャンネル番号

unsigned long *pulFilter // デジタルフィルタ設定値を格納する

// 変数へのポインタ

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChannel チャンネルを指定します。

CBI-631104, LPC/PEX/CBI/CSI-631204 は 1~4

PCI/LPC/PEX/CTP/CPZ/CBI/CSI-3xxxxx は 1

を指定してください。

CBI-631104, LPC/PEX/CBI/CSI-631204 では汎用入力端子(IN1~IN16)のデジタルフィルタ設

定値を取得可能です。

汎用入力端子のデジタルフィルタ設定値を取得する際には、下記の識別子で接点を指定しま

す。

PENC_IN1_8 : IN1~IN8 の 8 点にデジタルフィルタ設定値を取得します。

PENC_IN9_16 : IN9~IN16 の 8 点にデジタルフィルタ設定値を取得します

pulFilter デジタルフィルタ設定値を取得する変数の先頭アドレスを指定します。

変数には次の値が格納されます。

bit31~bit8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

0 CLK1 CLK0 0 CNT4 CNT3 CNT2 CNT1 CNT0

CNT0~CNT4 : デジタルフィルタの分周値が取得されます。

CLK0、CLK1 : デジタルフィルタの基準クロックが取得されます。

0 1 CLK1

CNT4~CNT0 0 1 0 1 CLK0

0 停止 停止 停止 -

1 1μ 10μ 100μ -

… -

31 31μ 310μ 3100μ -

Page 34: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

34

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

・PENC_ERROR_NULL_POINTER

詳細については『4.3 戻り値一覧』をご参照ください。

備考

※デジタルフィルタ設定値の取得は CBI-631104、LPC/PEX/CBI/CSI-631204 でのみ実行可能です

使用例

int nRet;

unsigned long ulFilter;

nRet = PencGetFilter( 1, 3, &ulFilter );

デバイス番号 1 の 3 モードパルスカウンタのチャンネル 3 のデジタルフィルタ設定値を取得しま

す。

Page 35: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

35

10. PencEnableCount 複数チャンネルのカウンタ動作を許可/禁止します。

int PencEnableCount(

int nDevice, // デバイス番号

unsigned int nChSel, // チャンネル選択

int nEnable // カウント許可/禁止設定

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChSel カウント許可/禁止設定を行うチャンネルを指定します。

nChSel の形式は、次のとおりです。

デバイス bit31~8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

PCI-6204

CTP/CPZ-6204

0 0 0 0 0 0 0 CH2 CH1

PCI-6205C

CTP/CPZ-6205

0 CH8 CH7 CH6 CH5 CH4 CH3 CH2 CH1

CBI-631104

LPC/PEX/CBI/CS

I-631204

0 0 0 0 0 CH4 CH3 CH2 CH1

PCI/CTP/CPZ/

CBI/CSI-3xxxxx

0 0 0 0 0 0 0 0 CH1

CH1~CH8:'1'を指定すると、該当するチャンネルのカウンタを、nEnable に従い、カウント

動作を決定します。

nEnable カウント動作を指定します。

nEnable 内容

0 nChSel で指定されたチャンネルはカウント禁止状態になります。

1 nChSel で指定されたチャンネルは、カウント許可状態になります。

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

・PENC_ERROR_PARAMETER

詳細については『4.3 戻り値一覧』をご参照ください。

Page 36: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

36

使用例

int nRet

nRet = PencEnableCount( 1, 0x0D, 1 );

デバイス番号 1 の 3 モードパルスカウンタのチャンネル 1、3、4 を、カウント許可状態に設定し

ます。

Page 37: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

37

11. PencSetResetInMask 3 モードパルスカウンタの、外部リセット入力信号のマスクを設定します。

int PencSetResetInMask(

int nDevice, // デバイス番号

unsigned char bResetInMask // 外部リセット入力信号のマスク設定

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

bResetInMask 外部リセット信号入力のマスク設定を指定します。

0 = リセット入力無効(マスク)

1 = リセット入力有効(アンマスク)

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_RESETIN_MASK

詳細については『4.3 戻り値一覧』をご参照ください。

備考

外部リセット信号入力のマスク設定は CBI-631104, LPC/PEX/CBI/CSI-631204でのみ実行可能です

使用例

int nRet;

nRet = PencSetResetInMask( 1, 1 );

デバイス番号 1 の 3 モードパルスカウンタの外部リセット入力信号マスクを有効(アンマスク)

に設定します。

Page 38: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

38

12. PencGetResetInMask 3 モードパルスカウンタの、外部リセット入力信号のマスク設定を取得します。

int PencGetResetInMask(

int nDevice, // デバイス番号

unsigned char *pbResetInMask // 外部リセット入力信号のマスク設定を

// 格納する変数へのポインタ

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

pbResetInMask 外部リセット入力信号のマスク設定を格納する変数のポインタを指定します。

0 = リセット入力無効(マスク)

1 = リセット入力有効(アンマスク)

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_NULL_POINTER

詳細については『4.3 戻り値一覧』をご参照ください。

備考

外部リセット信号入力のマスク設定値の取得は CBI-631104, LPC/PEX/CBI/CSI-631204でのみ実行

可能です

使用例

int nRet;

unsigned char bResetInMask

nRet = PencGetResetInMask( 1, &bResetInMask );

デバイス番号 1 の 3 モードパルスカウンタの外部リセット入力信号のマスク設定を変数

bResetInMask に取得します。

Page 39: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

39

13. PencSetCounter カウンタ値を設定します。

int PencSetCounter(

int nDevice, // デバイス番号

int nChannel, // チャンネル番号

unsigned long ulCounter // カウンタ値

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChannel チャンネルを指定します。

PCI-6204, CTP/CPZ-6204 は 1~2

PCI-6205C, CTP/CPZ-6205 は 1~8

CBI-631104, LPC/PEX/CBI/CSI-631204 は 1~4

PCI/LPC/PEX/CTP/CPZ/CBI/CSI-3xxxxx は 1

を指定してください。

ulCounter 設定するカウンタ値を指定します。

PCI/CTP/CPZ-6204 、 CBI-631104 、 LPC/PEX/CBI/CSI-631204 、

PCI/LPC/PEX/CTP/CPZ/CBI/CSI-3xxxxx は 32 ビット値(0~FFFFFFFFh)

PCI-6205C、CTP/CPZ-6205 は 24 ビット値(0~FFFFFFh)

を指定してください。

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

・PENC_ERROR_INVALID_COUNTER

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

nRet = PencSetCounter( 1, 1, 0x12345678 );

デバイス番号 1 の 3 モードパルスカウンタのチャンネル 1 のカウンタ値を 12345678h に設定しま

す。

Page 40: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

40

14. PencGetCounter カウンタ値を取得します。

int PencGetCounter(

int nDevice, // デバイス番号

int nChannel, // チャンネル番号

unsigned long *pulCounter // カウンタ値格納用アドレスへのポインタ

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChannel カウンタ値を読み込むチャンネルを指定します。

PCI-6204, CTP/CPZ-6204 は 1~2

PCI-6205C, CTP/CPZ-6205 は 1~8

CBI-631104, LPC/PEX/CBI/CSI-631204 は 1~4

PCI/LPC/PEX/CTP/CPZ/CBI/CSI-3xxxxx は 1

を指定してください。

pulCounter 取得したカウンタ値を格納する変数へのポインタを指定します。

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

・PENC_ERROR_NULL_POINTER

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

unsigned long ulCounter;

nRet = PencGetCounter( 1, 1,&ulCounter );

デバイス番号 1 の 3 モードパルスカウンタのチャンネル 1 から ulCounter にカウンタ値を読み出

します。

Page 41: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

41

15. PencSetCounterEx 複数のチャンネルにカウンタ値を設定します。

int PencSetCounterEx(

int nDevice, // デバイス番号

unsigned int nChSel, // チャンネル番号

unsigned long *pulCounter // カウンタ値を格納した配列へのポインタ

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChSel カウンタ値を設定するチャンネルを指定します。

nChSel の形式は、次のとおりです。カウンタ値を設定するチャンネルに該当するビットに 1

を指定します。

デバイス bit31~8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

PCI-6204

CTP/CPZ-6204

0 0 0 0 0 0 0 CH2 CH1

PCI-6205C

CTP/CPZ-6205

0 CH8 CH7 CH6 CH5 CH4 CH3 CH2 CH1

CBI-631104

LPC/PEX/CBI/CS

I-631204

0 0 0 0 0 CH4 CH3 CH2 CH1

PCI/CTP/CPZ/

CBI/CSI-3xxxxx

0 0 0 0 0 0 0 0 CH1

pulCounter カウンタプリセット値を格納している配列の先頭アドレスを指定します。

pulCounter には、必ず 8個以上の要素を持つ配列の先頭アドレスを指定してください。

配列には次のように値を格納して下さい。

配列のインデックス 内容

0 チャンネル 1のカウンタ値

1 チャンネル 2のカウンタ値

2 チャンネル 3のカウンタ値

3 チャンネル 4のカウンタ値

4 チャンネル 5のカウンタ値

5 チャンネル 6のカウンタ値

6 チャンネル 7のカウンタ値

7 チャンネル 8のカウンタ値

Page 42: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

42

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

・PENC_ERROR_INVALID_COUNTER

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

unsigned long ulCounter[8];

ulCounter[0] = 100;

ulCounter[2] = 200;

ulCounter[3] = 300;

nRet = PencSetCounterEx( 1, 0x0D, &ulCounter[0] );

デバイス番号 1の 3モードパルスカウンタのチャンネル 1、3、4のカウンタへ、それぞれ

100、200、300 をセットします。

Page 43: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

43

16. PencGetCounterEx 複数チャンネルのカウンタ値を取得します。

int PencGetCounterEx(

int nDevice, // デバイス番号

unsigned int nChSel, // チャンネル番号

unsigned long *pulCounter // カウンタ値を格納する配列へのポインタ

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChSel カウンタ値を読み込むチャンネルを指定します

nChSel の形式は、次のとおりです。

デバイス bit31~8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

PCI-6204

CTP/CPZ-6204

0 0 0 0 0 0 0 CH2 CH1

PCI-6205C

CTP/CPZ-6205

0 CH8 CH7 CH6 CH5 CH4 CH3 CH2 CH1

CBI-631104

LPC/PEX/CBI/CS

I-631204

0 0 0 0 0 CH4 CH3 CH2 CH1

PCI/CTP/CPZ/

CBI/CSI-3xxxxx

0 0 0 0 0 0 0 0 CH1

CH1~CH8 : '1'を指定すると、該当するチャンネルのカウンタ値を取得します。

pulCounter 取得したカウンタ値を格納する配列の先頭アドレスを指定します。

pulCounter には、必ず 8個以上の要素を持つ配列の先頭アドレスを指定してください。

配列には次のように値が格納されます。

配列のインデックス 内容

0 チャンネル 1のカウンタ値

1 チャンネル 2のカウンタ値

2 チャンネル 3のカウンタ値

3 チャンネル 4のカウンタ値

4 チャンネル 5のカウンタ値

5 チャンネル 6のカウンタ値

6 チャンネル 7のカウンタ値

7 チャンネル 8のカウンタ値

Page 44: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

44

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

・PENC_ERROR_NULL_POINTER

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

unsigned long ulCounter[8];

nRet = PencGetCounterEx( 1, 0x0D, &ulCounter[0] );

デバイス番号 1の 3モードパルスカウンタのチャンネル 1、3、4のカウンタ値を取得します。

Page 45: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

45

17. PencSetComparator 比較カウンタ値を設定します。

int PencSetComparator(

int nDevice, // デバイス番号

int nChannel, // チャンネル番号

unsigned long ulComparator // 比較カウンタ値

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChannel チャンネルを指定します。

PCI-6204, CTP/CPZ-6204 は 1~2

PCI-6205C, CTP/CPZ-6205 は 1~8

CBI-631104, LPC/PEX/CBI/CSI-631204 は 1~4

PCI/LPC/PEX/CTP/CPZ/CBI/CSI-3xxxxx は 1

を指定してください。

ulComparator 設定する比較カウンタ値を指定します。

PCI/CTP/CPZ-6204 、 CBI-631104 、 LPC/PEX/CBI/CSI-631204 、

PCI/LPC/PEX/CTP/CPZ/CBI/CSI-3xxxxx は 32 ビット値(0~FFFFFFFFh)

PCI-6205C、CTP/CPZ-6205 は 24 ビット値(0~FFFFFFh)

を指定してください。

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

・PENC_ERROR_INVALID_COMPARATOR

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

nRet = PencSetComparator( 1, 1, 0x5678ABCD );

デバイス番号 1の 3モードパルスカウンタのチャンネル 1に比較カウンタ値 5678ABCDh を設定し

ます。

Page 46: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

46

18. PencGetComparator 比較カウンタ値を取得します。

int PencGetComparator(

int nDevice, // デバイス番号

int nChannel, // チャンネル番号

unsigned long *pulComparator // 比較カウンタ値を格納する変数へのポインタ

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChannel チャンネルを指定します。

PCI-6204, CTP/CPZ-6204 は 1~2

PCI-6205C, CTP/CPZ-6205 は 1~8

CBI-631104, LPC/PEX/CBI/CSI-631204 は 1~4

PCI/LPC/PEX/CTP/CPZ/CBI/CSI-3xxxxx は 1

を指定してください。

pulComparator 取得した比較カウンタ値を格納する変数へのポインタを指定します。

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

・PENC_ERROR_NULL_POINTER

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

unsigned long ulComparator;

nRet = PencGetComparator( 1, &ulComparator );

デバイス番号 1の 3モードパルスカウンタのチャンネル 1の比較カウンタ値を取得します。

Page 47: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

47

19. PencGetStatus 3 モードパルスカウンタのステータスを取得します。

int PencGetStatus(

int nDevice, // デバイス番号

int nChannel, // チャンネル番号

int *pnStatus // ステータス値格納用変数へのポインタ

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChannel チャンネルを指定します。

PCI-6204, CTP/CPZ-6204 は 1~2

PCI-6205C, CTP/CPZ-6205 は 1~8

CBI-631104, LPC/PEX/CBI/CSI-631204 は 1~4

PCI/LPC/PEX/CTP/CPZ/CBI/CSI-3xxxxx は 1~4

を指定してください。

pnStatus カウンタステータスを格納する変数へのポインタを指定します。

bit32~13 bit12 bit11 bit10 bit9 bit8

- PERR EQF EXLTS EQ CBF

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

- - L3 L2 L1 Z B A

各ステータス、0:無効、1:有効

Page 48: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

48

ステータス 内容

A A 相の状態('1':Low '0':High)

B B 相の状態('1':Low '0':High)

Z Z 相の状態('1':Low '0':High)

L1 L1 入力状態('1':Low '0':High)

L2 L2(PCI-6204,CTP/CPZ-6204 のみ) 入力状態('1':Low '0':High)

L3 L3(PCI-6204,CTP/CPZ-6204 のみ) 入力状態('1':Low '0':High)

CBF キャリー/ボロー('1':あり '0':なし)

EQ 一致状態ステータス('1':一致 '0':不一致)

カウンタと比較カウンタの値が一致している間'1'になります。

EXLTS 外部ラッチ('1':発生 '0':未発生)

EQF 一致検出('1':一致 '0':不一致)

カウンタと、比較カウンタが一致すると、ステータスを読み出すまで'1'を

保持します。

PERR 異常パルス入力('1':あり '0':なし)

位相差パルスカウントモード時のみ有効

ステータスを読み出した後 CBF、EQ、EXLTS、PERR は 0 クリアされます。

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

・PENC_ERROR_NULL_POINTER

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

int nStatus;

nRet = PencGetStatus( 1, 1, &nStatus );

デバイス番号 1の 3モードパルスカウンタのチャンネル 1からステータス値を取得します。

Page 49: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

49

20. PencGetStatusEx 複数チャンネルのカウンタステータスとカウンタを取得します。

int PencGetStatusEx(

int nDevice, // デバイス番号

unsigned int nChSel, // チャンネル番号

unsigned long *pulCounter, // カウンタ格納用変数へのポインタ

unsigned long *pulStatus // ステータス格納用変数へのポインタ

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChSel カウンタとステータスを得るチャンネルを指定します。

nChSel の形式は、次のとおりです。

デバイス bit31~8 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

PCI-6204

CTP/CPZ-6204

0 0 0 0 0 0 0 CH2 CH1

PCI-6205C

CTP/CPZ-6205

0 CH8 CH7 CH6 CH5 CH4 CH3 CH2 CH1

CBI-631104

LPC/PEX/CBI/CS

I-631204

0 0 0 0 0 CH4 CH3 CH2 CH1

PCI/CTP/CPZ/

CBI/CSI-3xxxxx

0 0 0 0 0 0 0 0 CH1

CH1~CH8 : '1'を指定すると、該当するチャンネルのカウンタとステータスをそれぞれ返し

ます。

pulCounter カウンタ値を格納する配列の先頭アドレスを指定します。

配列には次のように値が格納されます。

pulCounter には、必ず 8個以上の要素を持つ配列の先頭アドレスを指定してください。

チャンネル番号 カウンタ値

CH1 pulCounter[0]

CH2 pulCounter[1]

CH3 pulCounter[2]

CH4 pulCounter[3]

CH5 pulCounter[4]

CH6 pulCounter[5]

CH7 pulCounter[6]

CH8 pulCounter[7]

Page 50: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

50

pulStatus ステータスを格納する配列の先頭アドレスを指定します。

pulStatus には、必ず 8個以上の要素を持つ配列の先頭アドレスを指定してください。

配列には次のように値が格納されます。

チャンネル番号 ステータス値

CH1 pulStatus[0]

CH2 pulStatus[1]

CH3 pulStatus[2]

CH4 pulStatus[3]

CH5 pulStatus[4]

CH6 pulStatus[5]

CH7 pulStatus[6]

CH8 pulStatus[7]

pulStatus には、次の形式で値が返されます。

bit32~13 bit12 bit11 bit10 bit9 bit8

- PERR EQF EXLTS EQ CBF

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

- - L3 L2 L1 Z B A

ステータス 内容

A A 相の状態('1':Low '0':High)

B B 相の状態('1':Low '0':High)

Z Z 相の状態('1':Low '0':High)

L1 L1 入力状態('1':Low '0':High)

L2 L2(PCI-6204,CTP/CPZ-6204 のみ)

入力状態('1':Low '0':High)

L3 L3(PCI-6204,CTP/CPZ-6204 のみ)

入力状態('1':Low '0':High)

CBF キャリー/ボロー('1':あり '0':なし)

EQ 一致状態ステータス('1':一致 '0':不一致)

カウンタと比較カウンタの値が一致している間'1'になります。

EXLTS 外部ラッチ('1':発生 '0':未発生)

EQF 一致検出('1':一致 '0':不一致)

カウンタと、比較カウンタが一致すると、ステータスを読み出

すまで'1'を保持します。

PERR 異常パルス入力('1':あり '0':なし)

位相差パルスカウントモード時のみ有効

ステータスを読み出した後 CBF、EQ、EXLTS、PERR は 0 クリアされます。

Page 51: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

51

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

・PENC_ERROR_NULL_POINTER

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

unsigned long ulCounter[8],ulStatus[8];

nRet = PencGetStatusEx( 1, 0x05, &ulCounter[0], &ulStatus[0] );

デバイス番号 1の 3モードパルスカウンタの、チャンネル 1、3のカウンタ値とステータス値を取

得します。

チャンネル 1 のカウンタ値は ulCounter[0]、ステータス値は ulStatus[0]に、チャンネル 3 のカ

ウンタ値は ulCounter[2]、ステータス値は ulStatus[2]へ返されます。

Page 52: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

52

21. PencGetResetInStatus 3 モードパルスカウンタの、外部リセット入力信号の状態を取得します。

int PencGetResetInStatus(

int nDevice, // デバイス番号

unsigned char *pbResetInStatus // 外部リセット入力信号の状態格納用

// 変数へのポインタ

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

pnZMode 外部リセット入力信号の状態を格納する変数のポインタを指定します。Visual Basic、Delphi

では状態を格納する変数を指定します。

0 = リセット入力無効

1 = リセット入力有効

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_NULL_POINTER

詳細については『4.3 戻り値一覧』をご参照ください。

備考

外部リセット信号が有効の間(bResetInStatus = 1)は、汎用出力を行うことができません。外

部リセット信号入力でリセットされた場合、PencGetResetInStatus でリセット入力信号が無効に

なったことを確認してから汎用出力の制御を行ってください。

※外部リセット入力信号状態の取得は CBI-631104、LPC/PEX/CBI/CSI-631204 でのみ実行可能です

使用例

int nRet;

unsigned char bResetInStatus

nRet = PencGetResetInStatus( 1, &bResetInStatus );

デバイス番号 1の 3モードパルスカウンタの外部リセット入力信号の状態を変数 bResetInStatus

に取得します。

Page 53: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

53

22. PencInputDI 3 モードパルスカウンタの汎用入力値を取得します。

int PencInputDI(

int nDevice, // デバイス番号

unsigned long *pulValue // 汎用入力値を格納する変数へのポインタ

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

pulvalue 汎用入力値を格納する変数へのポインタを指定します。

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

IN8 IN7 IN6 IN5 IN4 IN3 IN2 IN1

bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8

IN16 IN15 IN14 IN13 IN12 IN11 IN10 IN9

bit 内容

IN1~N16 汎用入力端子 1~16

0: 汎用入力端子 High レベル

1: 汎用入力端子 Low レベル

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_NULL_POINTER

詳細については『4.3 戻り値一覧』をご参照ください。

備考

汎用入力端子は、信号が "Low" レベルの時 ON("1")、"High" レベルの時 OFF("0")

となります。

※汎用入力値の取得は CBI-631104、LPC/PEX/CBI/CSI-631204 でのみ実行可能です

Page 54: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

54

使用例

int nRet;

unsigned long ulValue;

nRet = PencInputDI( 1, &ulValue );

デバイス番号 1の 3モードパルスカウンタから汎用入力値を取得します。

Page 55: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

55

23. PencOutputDO 3 モードパルスカウンタにて、汎用出力を行います。

int PencOutputDO(

int nDevice, // デバイス番号

unsigned long ulValue // 汎用出力値

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

ulValue 汎用出力値を指定します。

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

IN8 IN7 IN6 IN5 IN4 IN3 IN2 IN1

bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8

IN16 IN15 IN14 IN13 IN12 IN11 IN10 IN9

bit 内容

IN1~N16 汎用入力端子 1~16

0: 汎用入力端子 High レベル

1: 汎用入力端子 Low レベル

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_DO

詳細については『4.3 戻り値一覧』をご参照ください。

備考

汎用出力端子は、出力値が ON("1")の時 "Low" レベル、OFF("0")の時 "High" レベル

となります。

※汎用出力の指定は CBI-631104、LPC/PEX/CBI/CSI-631204 でのみ実行可能です

Page 56: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

56

使用例

int nRet;

nRet = PencOutputDO( 1, 0x000F );

デバイス番号 1の 3モードパルスカウンタの汎用出力端子 1~4を ON にします。

Page 57: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

57

24. PencSetTimerConfig インターバルタイマの設定を行います。

int PencSetTimerConfig(

int nDevice, // デバイス番号

unsigned char ucTimerConfigValue // インターバルタイマ設定

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

ucTimerConfigValue インターバルタイマを設定する、ビットの組み合わせです。

タイマ周期は CTL5~7 で設定した基準周期と、CTL1~4 で設定した分周値の積となります。

(周期=基準周期×分周値)

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

未使用 CTL7 CTL6 CTL5 CTL4 CTL3 CTL2 CTL1

CTL1~CTL4 分周設定

CTL4 CTL3 CTL2 CTL1

タイマ停止 0 0 0 0

1 分周 0 0 0 1

2 分周 0 0 1 0

3 分周 0 0 1 1

4 分周 0 1 0 0

5 分周 0 1 0 1

6 分周 0 1 1 0

7 分周 0 1 1 1

8 分周 1 0 0 0

9 分周 1 0 0 1

10 分周 1 0 1 0

11 分周 1 0 1 1

12 分周 1 1 0 0

13 分周 1 1 0 1

14 分周 1 1 1 0

15 分周 1 1 1 1

Page 58: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

58

CTL5~CTL7 基準周期設定

CTL7 CTL6 CTL5

10μs 0 0 0

100μs 0 0 1

1ms 0 1 0

10ms 0 1 1

100ms 1 0 0

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_ITIMER

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

nRet = PencSetTimerConfig( 1, 0x38 );

デバイス番号 1の 3モードパルスカウンタのインターバルタイマを、分周値 8、基準周期 10ms で

設定を行います。

Page 59: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

59

25. PencGetTimerConfig インターバルタイマの設定情報を取得します。

int PencGetTimerConfig(

int nDevice, // デバイス番号

unsigned char *pucTimerConfigValue // インターバルタイマ設定情報

// 格納用変数へのポインタ

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

pucTimerConfigValue インターバルタイマの設定データを格納する変数のポインタを指定します。

タイマ周期は CTL5~7 で設定した基準周期と、CTL1~4 で設定した分周値の積となります。

(周期=基準周期×分周値)

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

未使用 CTL7 CTL6 CTL5 CTL4 CTL3 CTL2 CTL1

CTL1~CTL4 分周設定

CTL4 CTL3 CTL2 CTL1

タイマ停止 0 0 0 0

1 分周 0 0 0 1

2 分周 0 0 1 0

3 分周 0 0 1 1

4 分周 0 1 0 0

5 分周 0 1 0 1

6 分周 0 1 1 0

7 分周 0 1 1 1

8 分周 1 0 0 0

9 分周 1 0 0 1

10 分周 1 0 1 0

11 分周 1 0 1 1

12 分周 1 1 0 0

13 分周 1 1 0 1

14 分周 1 1 1 0

15 分周 1 1 1 1

Page 60: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

60

CTL5~CTL7 基準周期設定

CTL7 CTL6 CTL5

10μs 0 0 0

100μs 0 0 1

1ms 0 1 0

10ms 0 1 1

100ms 1 0 0

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_NULL_POINTER

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

unsigned char pbTimerConfigValue;

nRet = PencGetTimerConfig( 1, &pbTimerConfigValue );

デバイス番号 1の 3モードパルスカウンタからインターバルタイマの設定情報を取得します。

Page 61: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

61

26. PencGetTimerCount インターバルタイマのカウント値を取得します。

int PencGetTimerCount(

int nDevice, // デバイス番号

unsigned char *pucTimerCount // タイマカウント値

// 格納用変数へのポインタ

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

pucTimerCount デバイス上のインターバルタイマの現在のカウンタ値を格納する変数のポインタを指定しま

す。

備考

PencSetTimerConfig により設定した周期における、現在の状態値を 4bit カウンタで取得します。

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

- - - - TD4 TD3 TD2 TD1

CTL1~CTL4 分周設定

TD4 TD3 TD2 TD1

0 カウント 0 0 0 0

1 カウント 0 0 0 1

2 カウント 0 0 1 0

3 カウント 0 0 1 1

4 カウント 0 1 0 0

5 カウント 0 1 0 1

6 カウント 0 1 1 0

7 カウント 0 1 1 1

8 カウント 1 0 0 0

9 カウント 1 0 0 1

10 カウント 1 0 1 0

11 カウント 1 0 1 1

12 カウント 1 1 0 0

13 カウント 1 1 0 1

14 カウント 1 1 1 0

15 カウント 1 1 1 1

Page 62: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

62

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_NULL_POINTER

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

unsigned char bTimerCount;

nRet = PencGetTimerCount( 1, &bTimerCount );

デバイス番号 1の 3モードパルスカウンタからインターバルタイマのカウント値を取得します。

Page 63: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

63

27. PencSetEventMask イベントマスクを設定します。

int PencSetEventMask(

int nDevice, // デバイス番号

int nChannel, // チャンネル番号

int nEventMask, // マスクデータ

int nTimerMask // マスクデータ(インターバルタイマ)

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChannel イベントマスク設定を行うチャンネルを指定します。

nChannel にはチャンネル番号(1~8)もしくは、識別子を指定します。

各デバイスで指定可能な設定値は次のようになります。

設定値 内容 PCI-6204

CTP-6204

CPZ-6204

PCI-6205C

CTP-6205

CPZ-6205

LPC/PEX/CBI

/CSI-631x04

PCI/LPC/PEX

/CTP/CPZ/CB

I/CSI-3xxxx

x

1 チャンネル 1 のイベント

マスクを設定します。

○ ○ ○ ○

2 チャンネル 2 のイベント

マスクを設定します。

○ ○ ○ -

3 チャンネル 3 のイベント

マスクを設定します。

- ○ ○ -

4 チャンネル 4 のイベント

マスクを設定します。

- ○ ○ -

5 チャンネル 5 のイベント

マスクを設定します。

- ○ - -

6 チャンネル 6 のイベント

マスクを設定します。

- ○ - -

7 チャンネル 7 のイベント

マスクを設定します。

- ○ - -

8 チャンネル 8 のイベント

マスクを設定します。

- ○ - -

PENC_EVENT_BOARD デバイス制御部のイベン

トマスクを設定します。

- - ○ -

PENC_EVENT_DIO 汎用入出力部のイベント

マスクを設定します。

- - ○ -

Page 64: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

64

nEventMask イベントのマスクデータを指定します。

nChannel で指定した設定値に応じて、下記の値を設定します。

【 nChannel : 1~8 】

各チャンネル毎にコントローラ部のイベントのマスクデータを指定します。

bit31~bit6 bit5 bit4 bit3 bit2 bit1 bit0

0 PERR C/B EXLT EQ L3 L2

nEventMask 内容(1:アンマスク, 0:マスク)

L2 L2 入力割り込み

(PCI-6204,CTP/CPZ-6204 のみ)

L3 L3 入力割り込み

(PCI-6204,CTP/CPZ-6204 のみ)

EQ カウンタと比較カウンタ値一致

EXLT 外部ラッチ

C/B キャリー/ボロー検出

PERR 位相差パルス異常入力検出

【 nChannel : PENC_EVENT_BOARD 】

デバイス制御部のイベントのマスクデータを指定します。

bit31~bit6 bit5 bit4 bit3 bit2 bit1 bit0

0 SIGR 0 0 0 0 0

nEventMask 内容(1:アンマスク, 0:マスク)

SIGR 外部リセット入力(RSTIN)割り込み(CBI-631104、LPC/PEX/CBI/CSI-631204 のみ)

【 nChannel : PENC_EVENT_DIO 】

汎用入出力部のイベントのマスクデータを指定します。

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

SU_IN8 SU_IN7 SU_IN6 SU_IN5 SU_IN4 SU_IN3 SU_IN2 SU_IN1

bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8

SU_IN16 SU_IN15 SU_IN14 SU_IN13 SU_IN12 SU_IN11 SU_IN10 SU_IN9

bit23 bit22 bit21 bit20 bit19 bit18 bit17 bit16

SD_IN8 SD_IN7 SD_IN6 SD_IN5 SD_IN4 SD_IN3 SD_IN2 SD_IN1

bit31 bit30 bit29 bit28 bit27 bit26 bit25 bit24

SD_IN16 SD_IN15 SD_IN14 SD_IN13 SD_IN12 SD_IN11 SD_IN10 SD_IN9

nEventMask 内容(1:アンマスク, 0:マスク)

bit0~bit15 IN1~IN16 立ち上がりエッジ割り込み(CBI-631104、LPC/PEX/CBI/CSI-631204 のみ)

bit16~bit31 IN1~IN16 立ち下がりエッジ割り込み(CBI-631104、LPC/PEX/CBI/CSI-631204 のみ)

Page 65: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

65

nTimerMask イベントのマスクデータ(インターバルタイマ部)を指定します。

0 : マスク

1 : アンマスク

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

・PENC_ERROR_INVALID_MASK

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

nRet = PencSetEventMask( 1, 1, 0x12, 1 );

デバイス番号 1 の 3 モードパルスカウンタのチャンネル 1 の、「キャリー/ボロー検出」・「L3 割

り込み」・「インターバルタイマ割り込み」以外をマスクします。

Page 66: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

66

28. PencGetEventMask イベントマスク設定を取得します。

int PencGetEventMask(

int nDevice, // デバイス番号

int nChannel, // チャンネル番号

int *pnEventMask, // マスクデータを格納する変数への

// ポインタ

int *pnTimerMask // マスクデータ(インターバルタイマ)を格納する

// 変数へのポインタ

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

nChannel イベントマスク設定値を取得するチャンネルを指定します。

nChannel にはチャンネル番号(1~8)もしくは、識別子を指定します。

各デバイスで指定可能な設定値は次のようになります。

設定値 内容 PCI-6204

CTP-6204

CPZ-6204

PCI-6205C

CTP-6205

CPZ-6205

LPC/PEX/CBI/

CSI-631x04

PCI/LPC/PEX/

CTP/CPZ/CBI/

CSI-3xxxxx

1 チャンネル 1 のイベント

マスクを取得します。

○ ○ ○ ○

2 チャンネル 2 のイベント

マスクを取得します。

○ ○ ○ -

3 チャンネル 3 のイベント

マスクを取得します。

- ○ ○ -

4 チャンネル 4 のイベント

マスクを取得します。

- ○ ○ -

5 チャンネル 5 のイベント

マスクを取得します。

- ○ - -

6 チャンネル 6 のイベント

マスクを取得します。

- ○ - -

7 チャンネル 7 のイベント

マスクを取得します。

- ○ - -

8 チャンネル 8 のイベント

マスクを取得します。

- ○ - -

PENC_EVENT_BOARD デバイス制御部のイベン

トマスクを取得します。

- - ○ -

PENC_EVENT_DIO 汎用入出力部のイベント

マスクを取得します。

- - ○ -

Page 67: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

67

pnEventMask イベントのマスクデータを取得する変数へのポインタを指定します。

nChannel で指定した設定値に応じて、次の値が指定した変数に格納されます。

【 nChannel : 1~8 】

各チャンネル毎にコントローラ部のイベントのマスクデータを取得します。

bit31~bit6 bit5 bit4 bit3 bit2 bit1 bit0

0 PERR C/B EXLT EQ L3 L2

nEventMask 内容(1:アンマスク, 0:マスク)

L2 L2 入力割り込み

(PCI-6204,CTP/CPZ-6204 のみ)

L3 L3 入力割り込み

(PCI-6204,CTP/CPZ-6204 のみ)

EQ カウンタと比較カウンタ値一致

EXLT 外部ラッチ

C/B キャリー/ボロー検出

PERR 位相差パルス異常入力検出

【 nChannel : PENC_EVENT_BOARD 】

デバイス制御部のイベントのマスクデータを取得します。

bit31~bit6 bit5 bit4 bit3 bit2 bit1 bit0

0 SIGR 0 0 0 0 0

nEventMask 内容(1:アンマスク, 0:マスク)

SIGR 外部リセット入力(RSTIN)割り込み(CBI-631104、LPC/PEX/CBI/CSI-631204 のみ)

【 nChannel : PENC_EVENT_DIO 】

汎用入出力部のイベントのマスクデータを取得します。

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

SU_IN8 SU_IN7 SU_IN6 SU_IN5 SU_IN4 SU_IN3 SU_IN2 SU_IN1

bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8

SU_IN16 SU_IN15 SU_IN14 SU_IN13 SU_IN12 SU_IN11 SU_IN10 SU_IN9

bit23 bit22 bit21 bit20 bit19 bit18 bit17 bit16

SD_IN8 SD_IN7 SD_IN6 SD_IN5 SD_IN4 SD_IN3 SD_IN2 SD_IN1

bit31 bit30 bit29 bit28 bit27 bit26 bit25 bit24

SD_IN16 SD_IN15 SD_IN14 SD_IN13 SD_IN12 SD_IN11 SD_IN10 SD_IN9

nEventMask 内容(1:アンマスク, 0:マスク)

bit0~bit15 IN1 ~ IN16 立 ち 上 が り エ ッ ジ 割 り 込 み ( CBI-631104 、

LPC/PEX/CBI/CSI-631204 のみ)

bit16~bit31 IN1 ~ IN16 立 ち 下 が り エ ッ ジ 割 り 込 み ( CBI-631104 、

LPC/PEX/CBI/CSI-631204 のみ)

Page 68: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

68

pnTimerMask イベントのマスクデータ(インターバルタイマ部)を取得する変数へのポインタを指定します。

0 : マスク

1 : アンマスク

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_INVALID_CHANNEL

・PENC_ERROR_NULL_POINTER

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

int nEventMask;

int nTimerMask;

nRet = PencGetEventMask( 1, PENC_EVENT_BOARD, &nEventMask, &nTimerMask );

デバイス番号 1 の 3 モードパルスカウンタのデバイス制御部のコールバックイベントのマスク状

態を取得します。

Page 69: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

69

29. PencSetEventEx コールバック関数を登録します。

int PencSetEventEx(

int nDevice, // デバイス番号

LPPENCCALLBACKEX lpEventProcEx, // コールバック関数のアドレス

unsigned long ulUser // ユーザパラメータ

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

lpEventProcEx コールバック関数のアドレスを指定します。

「コールバック関数」を参照ください。

ulUser コールバック関数に渡す任意の 32bit データを指定します。

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_ALREADY_REGISTRATION

・PENC_ERROR_NULL_POINTER

詳細については『4.3 戻り値一覧』をご参照ください。

備考

コールバック関数の書式は以下の通りです(C言語)。

詳細は「コールバック関数」を参照してください。

外部入力割り込み、カウンタラッチ割り込み、インターバルタイマ割り込みは、早い周期でのイ

ベントは動作が保証できません。Linux では、約 10ms 以下の周期でのイベント割り込みではシス

テムに動作異常をきたすことがあります。これより早い周期の場合、PencSetEvent 関数は使用せ

ず、PencGetStatus 関数で、直接ステータス値を見るようにしてください。

登録したコールバック関数は、PencKillEvent 関数にて、削除できます。

Page 70: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

70

使用例

int nRet;

void lpEventProcEx(int nChannel,unsigned long ulEvent,unsigned long ulUser){

:

:

}

nRet = PencSetEventEx( 1, (LPPENCCALLBACKEX)lpEventProcEx, ulUser );

デバイス番号 1の 3モードパルスカウンタにコールバック関数を登録します。

Page 71: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

71

30. PencKillEvent 登録されたコールバック関数を削除します。

int PencKillEvent(

int nDevice // デバイス番号

);

パラメータ

nDevice PencOpen 関数でオープンしたデバイスのデバイス番号を指定してください。

戻り値

正常終了した場合は、PENC_ERROR_SUCCESS が返されます。

正常終了しなかった場合は以下のエラーが発生します。

・PENC_ERROR_NOT_DEVICE

・PENC_ERROR_INVALID_DEVICE_NUMBER

・PENC_ERROR_ALREADY_DELETE

詳細については『4.3 戻り値一覧』をご参照ください。

使用例

int nRet;

nRet = PencKillEvent( 1 );

デバイス番号 1の 3モードパルスカウンタに設定されたコールバック関数を削除します。

Page 72: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

72

31. lpEventProcEx PencSetEventEx 関数にて登録し、割り込みイベントが発生した時にコールされるコールバックル

ーチンです。

void lpEventProcEx(

int nChannel, // チャンネル番号

unsigned long ulEvent, // イベント要因

unsigned long ulUser // ユーザデータ

);

パラメータ

nChannel イベントが発生したチャンネル番号が渡されます。

割り込み発生時に渡される値は次のようになります。

設定値 内容 PCI-6204

CTP-6204

CPZ-6204

PCI-6205C

CTP-6205

CPZ-6205

LPC/PEX/CBI/

CSI-631x04

PCI/LPC/PEX/

CTP/CPZ/CBI/

CSI-3xxxxx

0 インターバルタイマ割り

込みが発生

○ ○ ○ -

1 チャンネル 1 のコントロ

ーラ割り込みが発生

○ ○ ○ ○

2 チャンネル 2 のコントロ

ーラ割り込みが発生

○ ○ ○ -

3 チャンネル 3 のコントロ

ーラ割り込みが発生

- ○ ○ -

4 チャンネル 4 のコントロ

ーラ割り込みが発生

- ○ ○ -

5 チャンネル 5 のコントロ

ーラ割り込みが発生

- ○ - -

6 チャンネル 6 のコントロ

ーラ割り込みが発生

- ○ - -

7 チャンネル 7 のコントロ

ーラ割り込みが発生

- ○ - -

8 チャンネル 8 のコントロ

ーラ割り込みが発生

- ○ - -

PENC_EVENT_BOARD デバイス制御部のコント

ローラ割り込みが発生

- - ○ -

PENC_EVENT_DIO 汎用入出力部のコントロ

ーラ割り込みが発生

- - ○ -

Page 73: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

73

ulEvent 発生した割り込みイベント要因が格納されます。

nChannel で指定された値に応じて、下記のビット構成で表されます。

【 nChannel : 0 】

インターバルタイマのイベント発生時、コールバック関数は nChannel = 0、dwEvent = 0 と

して呼び出されます。

bit31~bit0

0

【 nChannel : 1~8 】

各チャンネル毎にコントローラ部のイベント要因が格納されます。

bit31~bit6 bit5 bit4 bit3 bit2 bit1 bit0

0 PERR C/B EXLT EQ L3 L2

nEventMask 内容(1:検出, 0:未検出)

L2 L2 入力割り込み

(PCI-6204,CTP/CPZ-6204 のみ)

L3 L3 入力割り込み

(PCI-6204,CTP/CPZ-6204 のみ)

EQ カウンタと比較カウンタ値一致

EXLT 外部ラッチ

C/B キャリー/ボロー検出

PERR 位相差パルス異常入力検出

【 nChannel : PENC_EVENT_BOARD 】

デバイス制御部のイベント要因が格納されます。

bit31~bit6 bit5 bit4 bit3 bit2 bit1 bit0

0 SIGR 0 0 0 0 0

nEventMask 内容(1:検出, 0:未検出)

SIGR 外 部 リ セ ッ ト 入 力 ( RSTIN ) 割 り 込 み ( CBI-631104 、

LPC/PEX/CBI/CSI-631204 のみ)

Page 74: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

74

【 nChannel : PENC_EVENT_DIO 】

汎用入出力部のイベント要因が格納されます。

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

SU_IN8 SU_IN7 SU_IN6 SU_IN5 SU_IN4 SU_IN3 SU_IN2 SU_IN1

bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8

SU_IN16 SU_IN15 SU_IN14 SU_IN13 SU_IN12 SU_IN11 SU_IN10 SU_IN9

bit23 bit22 bit21 bit20 bit19 bit18 bit17 bit16

SD_IN8 SD_IN7 SD_IN6 SD_IN5 SD_IN4 SD_IN3 SD_IN2 SD_IN1

bit31 bit30 bit29 bit28 bit27 bit26 bit25 bit24

SD_IN16 SD_IN15 SD_IN14 SD_IN13 SD_IN12 SD_IN11 SD_IN10 SD_IN9

nEventMask 内容(1:検出, 0:未検出)

bit0~bit15 IN1 ~ IN16 立 ち 上 が り エ ッ ジ 割 り 込 み ( CBI-631104 、

LPC/PEX/CBI/CSI-631204 のみ)

bit16~bit31 IN1 ~ IN32 立 ち 下 が り エ ッ ジ 割 り 込 み ( CBI-631104 、

LPC/PEX/CBI/CSI-631204 のみ)

ulUser PencSetEventEx 関数の実行時に指定したユーザデータが格納されています。

※コールバックルーチンの関数型 LPPENCCALLBACKEX は下記のように定義されます。

typedef void (PENCCALLBACKEX)(int nChannel, unsigned long ulEvent, unsigned long ulUser);

typedef PENCCALLBACK FAR *LPPENCCALLBACKEX;

戻り値

この関数に戻り値はありません。

Page 75: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

75

4.3 戻り値一覧

エラー識別子 値 意味 対処方法

PENC_ERROR_SUCCESS 0 正常終了

PENC_ERROR_NOT_DEVICE C0000001h ドライバが呼び出せ

ません。

指定されたデバイス

が見つかりませんで

した。指定しているデ

バイス番号が存在す

るかどうかを確認し

てください。

PENC_ERROR_NOT_OPEN C0000002h ドライバが OPEN でき

ません。

デバイスのオープン

時に何らかのエラー

が発生しました。(ド

ライバ内部作業領域

の確保に失敗したな

ど。)

PENC_ERROR_INVALID_DEVICE_NUMBER C0000003h デバイス番号が正し

くありません。

不正なデバイス番号

で呼び出しを行おう

としました。デバイス

番号設定プログラム

で設定したデバイス

番号を使用してくだ

さい。

PENC_ERROR_ALREADY_OPEN C0000004h 既に OPEN されている

デバイスを OPEN しよ

うとしました。

既に OPEN されている

デバイスです。

PENC_ERROR_NOT_SUPPORTED C0000009h デバイスがサポート

していない関数です。

デバイスがサポート

していない機能のた

め制御できません。

PENC_ERROR_INITIALIZE_IRQ C0001000h 割り込みの初期化に

失敗しました

システムエラーです。

PENC_ERROR_INVALID_CHANNEL C0001001h 不正なチャンネル番

号を指定しました。

デバイスが対応する

デバイス番号を指定

してください。

PENC_ERROR_INVALID_MODE C0001002h 不正なモードを指定

しました

モードはPencSetMode

関数のビット割付範

囲の値を指定してく

ださい。

PENC_ERROR_INVALID_DIRECT C0001003h 不正なカウンタ方向

を指定しました。

カウンタ方向は、0か

1 を指定してくださ

い。

PENC_ERROR_INVALID_EQUALS C0001004h 不正な一致検出フラ

グを指定しました

一致検出フラグは、0

か 1 を指定してくだ

さい。

Page 76: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

76

エラー識別子 値 意味 対処方法

PENC_ERROR_INVALID_LATCH C0001005h 不正なラッチ設定値

を指定しました。

ラッチ設定値は、0か

1 を指定してくださ

い。

PENC_ERROR_INVALID_COUNTER C0001006h 不正なカウンタプリ

セット値を指定しま

した。

カウンタプリセット

値は、32 ビット値

(PCI-6205C,CTP/CPZ-

6205 は 24 ビット値)

を指定してください。

PENC_ERROR_INVALID_COMPARATOR C0001007h 不正な比較カウンタ

値を指定しました。

比較カウンタ値は、32

ビット値(PCI-6205C,

CTP/CPZ-6205 は 24ビ

ット値)を指定してく

ださい。

PENC_ERROR_INVALID_ZMODE C0001008h 不正な Z 相論理設定

値を指定しました

Z 相論理設定値は、

PencSetZMode 関数の

ビット割付範囲の値

を指定してください。

PENC_ERROR_INVALID_MASK C0001009h 不正なイベントマス

クを指定しました

正しいイベントマス

ク値を指定してくだ

さい。

PENC_ERROR_INVALID_ITIMER C000100Ah 不正なインターバル

タイマ設定値を指定

しました

正しいインターバル

タイマ設定値を指定

してください。

PENC_ERROR_ALREADY_REGISTRATION C000100Bh イベントはすでに登

録済みです

イベントは1つしか

登録できません。

登録済みのイベント

を削除してから、新し

いイベントを登録し

なおしてください。

PENC_ERROR_ALREADY_DELETE C000100Ch イベントはすでに削

除されています

PENC_ERROR_MEMORY_NOTALLOCATED C000100Dh 作業用メモリの確保

に失敗しました

利用可能なメモリが

足りなくなっていま

す。不要なアプリケー

ションなどを終了さ

せ、利用可能なメモリ

を増やすようにして

ください。

PENC_ERROR_DRVCAL C0001010h ドライバがコールで

きません

ドライバファイルが

インストールされて

いない場合等に発生

します。ドライバのイ

ンストールを行って

ください。

Page 77: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

77

エラー識別子 値 意味 対処方法

PENC_ERROR_NULL_POINTER C0001011h NULL ポインタが渡さ

れました

システムに障害が発

生している可能性が

ございます。どのよう

な状況でエラーが発

生したかをご連絡く

ださい。

PENC_ERROR_PARAMETER C0001012h 引数パラメータの値

が不正です

API関数に指定する値

が不正もしくは範囲

外です。

PENC_ERROR_INVALID_FILTER C0001013h 不正なデジタルフィ

ルタ設定値を指定し

ました

正しいデジタルフィ

ルタ設定値を指定し

てください。

PENC_ERROR_INVALID_DO C0001014h 不正な汎用出力値を

指定しました

正しい汎用出力設定

値を指定してくださ

い。

PENC_ERROR_INVALID_RSTINMASK C0001015h 不正な外部リセット

信号入力のマスクを

指定しました

マスク設定は、0 か 1

を指定してください。

Page 78: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

78

4.4 Kylix をお使いの方へ 本ドキュメント内の関数、プログラム例の書式はすべて C言語となっております。Kylix をお使いの

方は下記の書式の違いにご注意してお使いください。

1. 関数

C 言語 Kylix

int PencGetEventMask( 1)function PencGetEventMask(

int nDevice, 2)nDevice: Integer3);

int nChannel, nChannel: Integer;

int *nEventMask, 4)var nEventMask: Integer;

int *nTimerMask var nTimerMask: Integer

);

): 5)Integer; 6)cdecl; external ‘gpg6204.so’; 1)Kylix では戻り値を返す場合は function、返さない場合(C 言語の void に相当)は procedure を

関数の先頭につけます。

2)C 言語では”変数の型 変数名”の順で引数を記述するのに対し、Kylix では”変数名:変数の型”の順

で記述します。

3)Kylix では変数の型が C言語と異なります。一部を紹介します。

・int→Integer

・long→Longint

・unsigned long→Cardinal

・void*→pointer

4)参照渡しを記述する際には変数名に var をつけます。

5)C 言語では戻り値の型を先頭に記述するのに対し、Kylix では引数リストの後に戻り値の型を記述

します(戻り値の型が C言語における void 型の場合は、戻り値の型は”:;”と何も記述しません。)

6)ライブラリ関数を呼ぶ際には、関数の 後に cdecl;external ‘ライブラリ名’;を記述します(ただ

しコールバックルーチンは external ‘ライブラリ名’;は必要ありません)。

2. 使用例

デバイスオープンから周波数設定値の取得方法までを記述します。

C 言語

void lpEventProcEx(int nChannel, unsigned long ulEvent, unsigned long ulUser);

int main(void)

{

PencOpen( 1, 0 );

PencSetEventEx( 1, lpEventProcEx, 0 );

:

:

}

void lpEventProcEx(int nChannel, unsigned long ulEvent, unsigned long ulUser);

{

// 割り込みイベントに対する処理を行います

}

Page 79: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

79

Kylix 1)var

procedure lpEventProcEx(nChannel: Integer; dwEvent: DWORD; dwUser: DWORD);cdecl;

nRet : Integer;

procedure TForm1.FormCreate(Sender: TObject);

2)begin

nRet := PencOpen( 1, 0 );

nRet := PencSetEventEx( 1, lpEventProcEx, 0 );

:

:

end;

procedure lpEventProcEx(nChannel: Integer; dwEvent: DWORD; dwUser: DWORD);cdecl;

begin

// 割り込みイベントに対する処理を行います

end;

1)var 節で関数宣言、変数宣言を行います。

2)関数の処理記述は begin~end;の中に記述します。

3)Kylix では代入には:=を使用します。

4)アドレスを渡す際は、C言語では&であるのに対し、Kylix では@を記述します。

5)C 言語では 0x~が 16 進数を示すのに対し、Kylix では$~が 16 進数を意味します。

Page 80: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

80

4.5 テストドライバの使用方法 本ソフトウェアには、デバイスがなくてもドライバを動かすことができるテストドライバ機能がつい

ております。

テストドライバを使用する場合は、libgpg6204.so の代わりに libgpg6204t.so をリンクし、コンパ

イルしてください。

テストドライバ機能を使用するプログラム test.c をコンパイルする場合のコンパイル例を示します。 #gcc -o test test.c –lgpg6204t

各関数は、与えられた引数が規定どおりになっているか、チェックします。

関数名 機能

PencOpen 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencClose 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencReset 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencSetMode 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencGetMode 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencSetZMode 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencGetZMode 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencSetFilter 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencGetFilter 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencEnableCount 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencSetResetInMask 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencGetResetInMask 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencSetCounter 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencGetCounter 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencSetCounterEx 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencGetCounterEx 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencSetComparator 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencGetComparator 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencGetStatus 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencGetStatusEx 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencGetResetInStatus 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencInputDI 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencOutputDO 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencSetTimerConfig 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencGetTimerConfig 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencGetTimerCount 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencSetEventMask 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencGetEventMask 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencSetEventEx 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

PencKillEvent 引数が正常であれば、PENC_ERROR_SUCCESS を返します。

Page 81: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

81

第5章 サンプルプログラム

5.1 サンプルプログラム一覧 本製品には、以下のサンプルプログラムが添付されています。

サンプルプログラムは「インストールディレクトリ/gpg6204/(アーキテクチャ名)/linux/samples」

に、ソースコード、Makefile を用意しています。

※アーキテクチャ名は、お客様がご利用のアーキテクチャにより、次のようになります。

Intel Architecture-32 : i386

AMD64/Intel 64 : x86_64

SH-4 : sh4

サンプルプログラム格納先(C言語):

/usr/src/interface/gpg6204/(アーキテクチャ名)/linux/samples/c

サンプルプログラム格納先(Kylix ※1 ):

/usr/src/interface/gpg6204/i386/linux/samples/kylix

No. サブディレクトリ名 内容

1 disppenc 3 モードパルスカウンタのカウンタ値とステータスをモニタしてコ

ンソール画面に表示します。

2 simplecount 位相差パルスをカウントしてコンソールに連続表示します。

3 disppenc_k Disppenc の Kylix 版のサンプルプログラムです。

※1 Kylix のサンプルプログラムは sh4,x86_64 用ソフトウェア、には添付していません。

5.2 サンプルプログラムのコンパイル方法 各サンプルプログラムが格納されているフォルダで、make を実行して下さい。

#cd /usr/src/interface/gpg6204/(アーキテクチャ名)/linux/samples/c/disppenc #make

Page 82: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

82

第6章 重要な情報

保証の内容と制限

弊社は本ドキュメントに含まれるソースプログラムの実行が中断しないこと、またはその実行に誤り

が無いことを保証していません。

本製品の品質や使用に起因する、性能に起因するいかなるリスクも使用者が負うものとします。

弊社はドキュメント内の情報の正確さに万全を期しています。万一、誤記または誤植などがあった場

合、弊社は予告無く改訂する場合があります。ドキュメントまたはドキュメント内の情報に起因する

いかなる損害に対しても弊社は責任を負いません。

ドキュメント内の図や表は説明のためであり、ユーザ個別の応用事例により変化する場合があります。

著作権、知的所有権

弊社は本製品に含まれるおよび本製品に対する権利や知的所有権を保持しています。

本製品はコンピュータ ソフトウェア、映像/音声(例えば図、文章、写真など)を含んでいます。

医療機器/器具への適用における注意

弊社の製品は人命に関わるような状況下で使用される機器に用いられる事を目的として設計、製造さ

れた物では有りません。

弊社の製品は人体の検査などに使用するに適する信頼性を確保する事を意図された部品や検査機器

と共に設計された物では有りません。

医療機器、治療器具などの本製品の適用により、製品の故障、ユーザ、設計者の過失などにより、損

傷/損害を引き起こす場合が有ります。

複製の禁止

弊社の許可なく、本ドキュメントの全て、または一部に関わらず、複製、改変などを行うことはでき

ません。

責任の制限

弊社は、弊社または再販売者の予見の有無にかかわらず発生したいかなる特別損害、偶発的損害、間

接的な損害、重大な損害について、責任を負いません。

本製品(ハードウェア,ソフトウェア)のシステム組み込み、使用、ならびに本製品から得られる結果

に関する一切のリスクについては、本製品の使用者に帰属するものとします。

本製品に含まれるバグ、あるいは本製品の供給(納期遅延)、性能もしくは使用に起因する付帯的損

害もしくは間接的損害に対して、弊社に全面的に責がある場合でも、弊社はその製品に対する改良(正

常に動作する)、代品交換までとし、金銭面での賠償の責任は負わないものとしますので、予めご了

承ください。

本製品(ソフトウェアを含む)は、日本国内仕様です。本製品を日本国外で使用された場合、弊社は

一切責任を負いかねます。また、弊社は本製品に関し、海外での保守サービスおよび技術サポート等

は行っておりません。

Page 83: GPG-6204enomoto/kgrsr/hardware/data/interface-pdf/GPG-6204-help.pdfPENC(PCI/C-PCI)Linux/RT GPG-6204 3 モードパルスカウンタLinux 対応ドライバソフトウェア Help

GPG-6204 Help for Linux

© 2002, 2010 Interface Corporation. All rights reserved.

83

商標/登録商標

本書に掲載されている会社名、製品名は、それぞれ各社の商標または登録商標です。