デジタル入出力ボードのインストールと使い方

Windows 11に対応したチュートリアルを公開しています。

ハードウェア / ソフトウェアのセットアップから外部機器との配線。そして、標準添付の高機能版デジタル入出力ドライバソフトウェア[ API-DIO(WDM) ]を使用したプログラミング(Visual Basic 2005)の作成まで。デジタル入出力デバイスの準備からプログラム開発までの一連の流れを解説します。

インストールと初期設定 [API-DIO(WDM) ドライバの場合]

ドライバソフトウェアのインストール

デバイスを実装する前に、添付CD-ROM[API-PAC(W32)]からデジタル入出力用ドライバ[API-DIO(WDM)]をインストールします。

デバイスの実装

いったんパソコンをシャットダウン(電源OFF)してから、デバイス(PCIボードやPCカード)をパソコンに実装します。PCIボードやPCI Expressボードを複数枚使用する場合は、同一型式のデバイスを区別するボードID(ロータリースイッチ)がユニークになるように設定を変更してください。

デバイスのインストール

パソコンを電源ON、Windowsが起動したら『新しいハードウェアの検出ウィザード』が立ち上がりますので、CD-ROM[API-PAC(W32)]からセットアップ情報(INF)ファイルのあるフォルダを指定してください。

初期設定と診断プログラム

デバイスマネージャを起動[共通設定]タブをクリックしてデバイス名などの初期設定を行います。「診断」ボタンをクリックするとデバイスの動作を簡単に確認することができます。診断した結果のレポートも出力可能です。

外部機器との接続とプログラミング(Visual Basic 2005)

外部機器との接続

デジタル入出力デバイスのインターフェイスコネクタと外部機器(外部回路)とをケーブルまたは端子台を利用して接続します。ここで必要となる情報は、コネクタの信号配置とI/Oポートマップです。両者の関係は、デバイスの解説書に詳しく書かれていますので、簡単に外部機器との接続を行うことができます。ここでは、PIO-16/16L(PCI)Hと外部機器との接続を例に解説します。

PIO-16/16L(PCI)H コネクタの信号配置図

PIO-16/16L(PCI)Hのポート・ビットとコネクタ信号ピンの関係を表した図

  • 論理ポート番号や論理ビット番号は、デバイスのI/Oアドレスマップなど機種に依存しないプログラミングを可能にする当社製品独自の概念です。詳細は、ドライバソフトウェアのオンラインヘルプを参照してください。

入力+0ポート D0ビット(論理ビット I00)に接続したスイッチのON/OFFを読み取る

例えば『入力の+0ポートのD0ビット』すなわち、信号名『I-00』とスイッチとの関連付けを行う場合はこのように配線します。
現在のスイッチの状態を調べる場合には、『入力の+0ポートのD0ビット』を調べて”1”が入力されていたら”ON”、“0”が入力されていたら”OFF”と判断することができます。

Visual Basic 2005でのプログラム例(簡略)

初期化処理
DeviceName = "DIO000" 'デバイス名を変数に格納
Ret = DioInit(DeviceName, Id) '初期化処理関数を実行
入力処理
BitNo = 0 '入力ビット指定用変数に[0]を設定
Ret = DioInpBit(Id, BitNo, Data) '入力0ビットのデータを変数に格納
終了処理
Ret = DioExit(Id) '終了処理関数実行(デバイスハンドル開放)

出力+0ポート D0ビット(論理ビット O00)に接続したLEDを点灯/消灯させる

同様に『出力の+0ポートのD0ビット』すなわち、信号名『O-20』とLED(ランプ)を関連付ける場合は以下のように配線します。
このLEDを点灯/消灯させる場合は、『出力の+0ポートのD0ビット』に”1”を出力すれば点灯、“0”を出力すれば消灯します。

Visual Basic 2005でのプログラム例(簡略)

初期化処理
DeviceName = "DIO000" 'デバイス名を変数に格納
Ret = DioInit(DeviceName, Id) '初期化処理関数を実行
入力処理
BitNo = 0 '出力ビット指定用変数に[0]を設定
Ret = DioOutBit(Id, BitNo, 1) '出力0ビットに[1]をセット
終了処理
Ret = DioExit(Id) '終了処理関数実行(デバイスハンドル開放)

高機能版デジタル入出力ドライバソフトウェア API-DIO(WDM)

提供されるAPI関数一覧

デジタル入出力ドライバソフトウェア API-DIO(WDM) は、当社製デジタル入出力ボード/カードを簡単に制御できる、さまざまな関数を用意しています。それぞれの関数は、処理ごとに分かりやすく分類されており、また処理の内容が一目で分かるような名称となっています。これらの関数を使用すれば、さらに高度な処理も可能です。

共通関数(初期化・終了処理、デジタルフィルタなど)

DioInit 初期化処理
DioExit 終了処理
DioResetDevice デバイスとドライバの初期化
DioGetErrorString エラー内容の取得
DioQueryDeviceName 使用可能なデバイスの一覧を取得
DioGetMaxPorts 使用可能入出力ポート数を取得
DioGetDeviceInfo デバイスの情報を取得

8255搭載ボード/カード(双方向入出力)専用関数

DioSet8255Mode 8255モード設定をチップ単位で設定
DioGet8255Mode 8255モード設定をチップ単位で取得

入出力切り替え関数

DioSetIoDirection I/Oポートの入出力方向を設定
DioGetIoDirection I/Oポートの入出力方向を取得

簡易入出力関数

DioInpByte 指定ポートのデジタル入力処理
DioOutByte 指定ポートのデジタル出力処理
DioEchoBackByte 指定ポートのリードバックデータ入力処理
DioInpBit 指定ビットのデジタル入力処理
DioOutBit 指定ビットのデジタル出力処理
DioEchoBackBit 指定ビットのリードバックデータ入力処理

複数バイト(ビット)入出力関数

DioInpMultiByte 指定ポートのデジタル入力処理(複数バイト)
DioOutMultiByte 指定ポートのデジタル出力処理(複数バイト)
DioEchoBackMultiByte 指定ポートのリードバックデータ入力処理(複数バイト)
DioInpMultiBit 指定ビットのデジタル入力処理(複数ビット)
DioOutMultiBit 指定ビットのデジタル出力処理(複数ビット)
DioEchoBackMultiBit 指定ビットのリードバックデータ入力処理(複数ビット)

トリガ関数

DioNotifyTrg 指定した論理ビットのトリガ監視を開始
DioStopNotifyTrg 指定した論理ビットのトリガ監視を停止
DioSetTrgCallBackProc DioNotifyTrg関数用コールバック関数の登録

割り込み機能関数

DioNotifyInterrupt 割り込みイベント要因の設定
DioSetInterruptCallBackProc DioNotifyInterrupt関数用コールバック関数の登録

デジタルフィルタ機能関数

DioSetDigitalFilter デジタルフィルタを設定
DioGetDigitalFilter デジタルフィルタ設定値を取得

PIO-32DM(PCI)専用関数 - モード設定関数

DioDmSetDirection 指定したデバイスの入出力方向を設定
DioDmGetDirection 指定したデバイスの入出力方向を取得
DioDmSetStandAlone 指定したデバイスをスタンドアロンに設定
DioDmSetMaster 指定したデバイスをマスタに設定
DioDmSetSlave 指定したデバイスをスレーブに設定

PIO-32DM(PCI)専用関数 - サンプリング/ジェネレーティング条件設定関数

DioDmSetStartTrigger サンプリング、ジェネレーティングのスタート条件を設定
DioDmSetStartPattern スタート条件のパターン一致条件を設定
DioDmSetClockTrigger サンプリング/ジェネレーティングのクロック条件を設定
DioDmSetInternalClock 内部クロック使用時のクロック値の設定
DioDmSetStopTrigger サンプリング/ジェネレーティングのストップ条件を設定
DioDmSetStopNumber ストップ条件として、停止個数を設定
DioDmSetTransferStartWait ジェネレーティング買い指示のウェイトを設定

PIO-32DM(PCI)専用関数 - リセット関数

DioDmFifoReset FIFOのリセット

PIO-32DM(PCI)専用関数 - バッファ設定関数

DioDmSetBuffer サンプリング/ジェネレーティングに使用するデータバッファの設定

PIO-32DM(PCI)専用関数 - スタート/ストップ関数

DioDmTransferStart サンプリング/ジェネレーティングを開始
DioDmTransferStop サンプリング/ジェネレーティングを停止

PIO-32DM(PCI)専用関数 - ステータス関数

DioDmGetStatus 転送ステータスの取得
DioDmGetCount 転送カウント数を取得
DioDmGetWritePointer データバッファ上の転送位置を取得

PIO-32DM(PCI)専用関数 - メッセージ通知関数

DioDmSetStopEvent 転送完了のメッセージを通知するように設定
DioDmSetStopCallBackProc DioDmSetStopEvent関数で設定した転送完了のイベントが発生した場合に呼び出されるコールバック関数を登録
DioDmSetCountEvent 指定個数転送完了のメッセージを通知するように設定
DioDmSetCountCallBackProc DioDmSetCountEvent関数で設定した指定個数転送完了のイベントが発生した場合に呼び出されるコールバック関数を登録

親切で分りやすいオンラインヘルプファイルを提供

サンプルプログラム

単純入出力、複数ポート/ビットの入出力、トリガ監視、割り込み(コールバック)など豊富な種類のサンプルプログラムを添付。Visual Basic 版の他にも Visual C++ 版 や Visual C# 版も用意されています。

わかりやすいオンラインヘルプ

わかりやすい関数リファレンスなどを収録した、オンラインヘルプファイルが付属しています。お客様のプログラム開発を強力に支援します。

関数リファレンスのイメージ (Visual Basic 部分のみ抜粋)

ポート単位のデジタル入力関数 『DioInpByte』 リファレンス
機能
指定した1ポート(8ビット)からデジタルデータの入力を行い、そのデータを変数に格納します。
書式
Visual Basic 2005 の場合
Dim Id     As Short
Dim PortNo As Short
Dim Data   As Byte
Dim Ret    As Integer
Ret = DioInpByte(Id, PortNo, Data)
引数
  • Id:デバイスハンドルを指定します。このデバイスハンドルはDioInitで取得したものです。
  • PorNot:入力論理ポート番号を指定します。入力論理ポート番号は、デバイスの入力ポートの先頭を0として最後の入力ポートまで、連続で付けられた番号です。デジタル入力を行う論理ポート番号を指定します。
  • Data:デジタル入力データを格納する変数を指定します。
  • Ret:終了情報(戻り値)→正常終了:0、エラー: 0以外

デジタル入出力の使い方をさらに詳しく知りたい

プログラミングの実体験と基礎知識を学習できる! 基礎から学べる実習セミナー

基礎から学ぼう! 計測制御・通信デバイス テクニカルセミナー デジタル入出力実習コース

コンテックでは、お客様の計測制御システム構築を支援する技術セミナーを定期的に開催しています。実習コースでは、1人1台のノートパソコンと計測制御機器を使った実践プログラミングを体験いただきます。コースそれぞれに計測制御を基礎から学べるセッションを設けておりますので、初心者の方でも安心です。