第 4 章 チュートリアル 20
4.2 デジタル出力
ここでは、デジタル入出力ボード(PCI-2726C)より、デジタル信号を出力しCHK-2101のLEDを発光さ せるプログラムの作成を行います。PCI-2726C以外では、対応するテストボ−ドおよび接続用ケーブ ルの製品型式が異なる場合がありますのでご注意ください。
ここで記載するソースコードは、以下の製品型式において利用可能です。
デジタル出力 デジタル入出力
PCI-2330CV PCI-2402C PCI-2403A PCI-2424 PCI-2426C PCI-2427 PCI-2427A PCI-2430C PCI-2431 PCI-2431A PCI-2464C PCI-2466C PCI-2470 PCI-2503 PCI-2512C PCI-2513
CTP-2330V CTP-2402 CTP-2424 CTP-2430 CTP-2431 CTP-2464 CTP-2466 CTP-2505 CTP-2506 CTP-2515 CTP-2516 CTP-2517 CPZ-2330V CPZ-2402 CPZ-2424 CPZ-2430 CPZ-2431 CPZ-2464 CPZ-2466 CPZ-2505 CPZ-2506 CPZ-2515 CPZ-2516 CPZ-2517 LPC-234104 PEX-234104
PCI-2702C PCI-2703 PCI-2703A PCI-2722 PCI-2723C PCI-2724C PCI-2724CL PCI-2724CM PCI-2725 PCI-2725A PCI-2725AL PCI-2725AM PCI-2725L PCI-2725M PCI-2726C PCI-2726CL PCI-2726CM PCI-2727 PCI-2727A PCI-2727AL PCI-2727AM PCI-2727L PCI-2727M PCI-2752C PCI-2753 PCI-2756A PCI-2756AL PCI-2756AM PCI-2758A
PCI-2758AL PCI-2758AM PCI-2760C PCI-2762C PCI-2762CM PCI-2768C PCI-2790C PCI-2793 PCI-2796C PCI-2798C PCI-2826C PCI-2826CV PCI-2994C PCI-2994CV PCI-287144 PCI-287244 PCI-292388
CTP-2702 CTP-2703 CTP-2722 CTP-2723 CTP-2724 CTP-2724L CTP-2724M CTP-2725 CTP-2725L CTP-2725M CTP-2726 CTP-2726L CTP-2726M CTP-2727 CTP-2727L CTP-2727M CTP-2752 CTP-2753 CTP-2760 CTP-2762 CTP-2762M CTP-2768 CTP-2769 CTP-2790 CTP-2798 CTP-2799 CTP-2826 CTP-2826V CTP-2827V CTP-2994 CTP-2994V CTP-2995V CTP-286122 CTP-287144 CTP-287244 CTP-292388 CTP-294188
CPZ-2702 CPZ-2703 CPZ-2723 CPZ-2724 CPZ-2724L CPZ-2724M CPZ-2726 CPZ-2726L CPZ-2726M CPZ-2727L CPZ-2752 CPZ-2760 CPZ-2762 CPZ-2762M CPZ-2768 CPZ-2769 CPZ-2790 CPZ-2798 CPZ-2799 CPZ-2826 CPZ-2826V CPZ-2827V CPZ-2994 CPZ-2994V CPZ-2995V CPZ-286122 CPZ-287144 CPZ-287244 CPZ-292388 CPZ-294188
CSI-292366 CSI-293166 LPC-284122 LPC-285122 LPC-292366 LPC-293166 PEX-284122 PEX-285122 PEX-292366 PEX-293166
注意
!
テストボードのない型式もあります。詳細は弊社Web site(www.interface.co.jp)にて確認してく ださい。
製品型式によって、出力点数が異なりますので、ご使用になる製品型式により一部実行でき
ない処理が含まれます。
- 43 - Interface Corporation 弊社テストボ−ドがご用意できない場合は、各製品仕様に応じ、以下の配線を行ってください。各配 線には弊社、端子台などをご利用ください。
PCI-○○○○LやPCI-○○○○MやPCI-○○○○Vなどの最後に L や M や V がある型式は、
L や M や V がない場合の型式と同じ配線を行ってください。また同様に TK や TL がある型式も TK や TL がない場合の型式と同じ配線を行ってください。
配線1 配線2 配線3 配線4 配線5
PCI-2330CV PCI-2402C PCI-2403A PCI-2424 PCI-2426C PCI-2427 PCI-2427A PCI-2464C PCI-2466C PCI-2702C PCI-2703 PCI-2703A PCI-2722 PCI-2723C PCI-2724C PCI-2725 PCI-2725A PCI-2752C PCI-2753 PCI-2760C PCI-2768C PCI-2790C PCI-2793 PCI-2796C PCI-2798C PCI-2826C PCI-292388 PCI-2994C CTP-2330V CTP-2402 CTP-2424 CTP-2464 CTP-2466 CTP-2702 CTP-2703 CTP-2722 CTP-2723 CTP-2724 CTP-2727 CTP-2752 CTP-2753 CTP-2760 CTP-2768 CTP-2769 CTP-2790
CTP-2798 CTP-2799 CTP-2826 CTP-2827 CTP-292388 CTP-294188 CTP-2994 CTP-2995 CTP-2330V CTP-2402 CTP-2464 CTP-2466 CTP-2702 CTP-2703 CTP-2723 CTP-2724 CPZ-2727L CPZ-2752 CPZ-2760 CPZ-2768 CPZ-2769 CPZ-2790 CPZ-2798 CPZ-2799 CPZ-2826 CPZ-2827V CPZ-292388 CPZ-294188 CPZ-2994 CPZ-2995V CSI-292366 CSI-293166
PEX-234104 PEX-284122 PEX-292366 PEX-293166 LPC-234104 LPC-284122 LPC-292366 LPC-293166
PCI-2430C PCI-2431 PCI-2431A PCI-2726C PCI-2727 PCI-2727A PCI-2756A
PCI-2758A
(トランジスタ出力部)PCI-2762C
CTP-2430 CTP-2431 CTP-2725 CTP-2726 CTP-2762 CPZ-2430 CPZ-2726 CPZ-2762
LPC-285122 PEX-285122
PCI-2470 PCI-287144 PCI-287244 CTP-287144 CTP-278244 CPZ-287144 CPZ-287244
PCI-2503 CTP-2505 CPZ-2505
PCI-2512C PCI-2513
PCI-2758A
(リレー出力部)CTP-2506
CTP-2515 CTP-2516 CTP-2517 CPZ-2506 CPZ-2515 CPZ-2516 CPZ-2517 CPZ-286122
PEX-251100
PEX-251101
LPC-251100
LPC-251101
配線1
OUT1 OUT2 OUT3
発光ダイオード 抵抗
+極
-極 -COM*
••••
デジタル出力配線1
抵抗は、デジタル出力ボードの出力仕様と、発光させるLEDの許容範囲を考慮し適切なものを使用し てください。(PCI-2427A/2403Aの場合、-COM3, -COM4も電源の−極に接続してください)
使用できる外部電源電圧は、各製品によって異なり、下表のように分類されます。
DC+5V DC+5V〜DC+48V DC+5V〜DC+24V DC+12V〜DC+24V DC+12V〜DC+48V PCI-2402C
PCI-2403A PCI-2702C PCI-2703 PCI-2703A PCI-2752C PCI-2753 PCI-2793 PCI-2796C PCI-292388 CTP-2402 CTP-2702 CTP-2703 CTP-2752 CTP-2753 CTP-292388 CPZ-2402 CPZ-2702 CPZ-2703 CPZ-2752 CPZ-292388 CSI-292366 PEX-292366 LPC-292366
PCI-2330CV PCI-2760C PCI-2768C PCI-2790C PCI-2798C PCI-2826C PCI-2826CV PCI-2994CV CTP-2330V CTP-2760 CTP-2768 CTP-2769 CTP-2790 CTP-2798 CTP-2799 CTP-2826 CTP-2826V CTP-2827V CTP-2994V CTP-2995V CTP-294188 CPZ-2330V CPZ-2464 CPZ-2466 CPZ-2760 CPZ-2768 CPZ-2769 CPZ-2790 CPZ-2798 CPZ-2799 CPZ-2826 CPZ-2826V CPZ-2827V CPZ-294188 CPZ-2994 CPZ-2994V CPZ-2995V
PCI-2426C PCI-2427 PCI-2427A PCI-2723C PCI-2724C PCI-2725 PCI-2725A PCI-2724CL PCI-2724CM PCI-2725L PCI-2725M PCI-2725AL PCI-2725AM CTP-2724 CTP-2724L CTP-2724M CTP-2727 CTP-2727L CTP-2727M CPZ-2723 CPZ-2724 CPZ-2724L CPZ-2724M CPZ-2727L CSI-293166 PEX-234104 PEX-284122 PEX-293166 LPC-234104 LPC-284122 LPC-293166
PCI-2424 PCI-2722 CTP-2424 CTP-2722 CTP-2723
PCI-2464C
PCI-2466C
PCI-2994C
CTP-2464
CTP-2466
CTP-2994
- 45 - Interface Corporation 配線2
OUT1 OUT2 OUT3
発光ダイオード 抵抗
+極
-極 -COM*
••••
+COM*
デジタル出力配線2
抵抗は、デジタル出力ボードの出力仕様と、発光させるLEDの許容範囲を考慮し適切なものを使用し てください。
使用できる外部電源電圧は、各製品によって異なり、下表のように分類されます。
DC+5V〜DC+24V DC+12V〜DC+24V
CTP-2431 PCI-2430C CTP-2725 PCI-2431 CTP-2725L PCI-2431A CTP-2725M PCI-2726C CTP-2726 PCI-2726CL CTP-2726L PCI-2726CM CTP-2726M PCI-2727 CPZ-2430 PCI-2727L CPZ-2726 PCI-2727M CPZ-2726L PCI-2727A CPZ-2726M PCI-2727AL CPZ-2762 PCI-2727AM CPZ-2762M PCI-2756A PEX-285122 PCI-2756AL LPC-285122 PCI-2756AM
PCI-2758A(トランジスタ出力部) PCI-2758AL(トランジスタ出力部) PCI-2758AM(トランジスタ出力部)
PCI-2762C
PCI-2762CM
CTP-2430
CTP-2762
CTP-2762M
配線3
OUT1 OUT2 OUT3 OUT4
発光ダイオード 抵抗
+極
-極 -COM*
••••
+COM*
デジタル出力配線3
抵抗は、デジタル出力ボードの出力仕様と、発光させるLEDの許容範囲を考慮し適切なものを使用し てください。
使用できる外部電源電圧は、各製品によって異なり、下表のように分類されます。
DC+5V〜DC+24V DC+12V〜DC+24V
PCI-2470 PCI-287144
PCI-287244 CTP-287144 CTP-287244 CPZ-287144 CPZ-287244 配線4
OUT1 OUT2
OUT1 OUT2
デジタル出力配線4
OUT1BB〜OUT8BB,OUT1BC〜OUT8BCは使用しません。
抵抗は、発光させるLEDの許容範囲を考慮し適切なものを使用してください。
使用できる外部電源電圧は、各製品によって異なり、下表のように分類されます。
DC+5V〜DC+24V
PCI-2503 CTP-2505 CPZ-2505
- 47 - Interface Corporation 配線5
OUT1 OUT2
OUT1 OUT2
デジタル出力配線5
抵抗は、発光させるLEDの許容範囲を考慮し適切なものを使用してください。
使用できる外部電源電圧は、各製品によって異なり、下表のように分類されます。
DC+5V〜DC+24V PCI-2512C
PCI-2758A PCI-2758AL PCI-2758AM PCI-2513 CTP-2506
CTP-2515 CTP-2516 CTP-2517 CPZ-2506 CPZ-2515 CPZ-2516
CPZ-2517 CPZ-286122 PEX-251100 PEX-251101 LPC-251100 LPC-251101
抵抗値の求め方
例)順方向電圧2Vの発光ダイオードを外部電源DC+12Vを用いて、10mAの電流を流して点灯させる 場合
(
12V 2V)
10mA 0.1Wk mA 1 10
V 2 V 12
=
×
−
=
Ω
− =
= 消費電力
抵抗値
2倍以上の定格電力の抵抗を使うことを推奨いたします。使用する抵抗は「1k Ω -1/4W以上」となりま
す。
Step1. 基本フォーム作成
ここでは、これから作成するプログラムの画面作成を行います。 (詳しくは『21ページ 4.1 デジ タル入力』でのStep1〜Step3を参考にしてください。)
1. Visual Basicを起動し新しい標準 EXE プロジェクトを作成します。
2. プロジェクト名を DioOutput に変更します。
3. 既定のフォームの名前を frmDioOutput に変更し、フォームのタイトルを"デジタル出力" に 変更します。
4. プロジェクトに標準モジュールを追加します。
5. 標準モジュールに 標準モジュールのプロシージャ宣言のコード ( 『28ページ Step2. DLLプ ロシージャ宣言』)を追加します。
Step2. 単点出力 / バイト出力 / ワード出力 / ダブルワード出力
ここでは、ボードのデータ出力ライン(OUT)より状態(ON/OFF)の出力を行うプログラムを作成し ます。
1. フォーム上にコマンドボタン(CommandButton)コントロールを描画し、cmdOutputSingleと名付 けコマンドボタンコントロールのタイトルを"単点出力 "に変更します。
2. 作成したコマンドボタン(cmdOutputSingle)をダブルクリックし編集ウィンドウを開き以下のコ ードを記述します。
(
コマンドボタン
(cmdOutputSingle)の
Clickイベントのコード
) Private Sub cmdOutputSingle̲Click()Dim lpszName As String 'デバイス名 Dim nRet As Long '関数の実行結果 Dim pnBuffer(4) As Long '状態を設定するバッファ 'ボード初期化を行います
lpszName = "FBIDIO1" & Chr(0)
hDeviceHandle = DioOpen(lpszName, FBIDIO̲FLAG̲SHARE) If hDeviceHandle = ‑1 Then
MsgBox ("デバイスのオープンに失敗しました") Exit Sub
End If
‘出力接点の状態を設定します pnBuffer(0) = 1
pnBuffer(1) = 0 pnBuffer(2) = 1 pnBuffer(3) = 0
'データ出力(OUT1〜OUT4 までの状態を設定します)
nRet = DioOutputPoint(hDeviceHandle, pnBuffer(0), 1, 4) If nRet <> 0 Then
MsgBox ("データの出力に失敗しました") nRet = DioClose(hDeviceHandle) Exit Sub
End If '終了処理
nRet = DioClose(hDeviceHandle) If nRet <> 0 Then
MsgBox ("デバイスのクローズに失敗しました") End If
End Sub
- 49 - Interface Corporation
出力接点番号1(OUT1)から出力接点番号4(OUT4)までを、 1接点ずつ順に,接点の状態(ON=1/OFF=0) を 設 定 し ま す 。 指 定 す る 接 点 番 号 か ら 所 定 の 任 意 の 点 数 (範 囲 ) の 状 態 を 設 定 す る に は DioOutputPoint関数を使用します。
「使用例」
Dim pnBuffer(4) As Long
nRet = DioOutputPoint (hDeviceHandle, pnBuffer(0), 1, 4)
ボードのオープン時に取 得したデバイスハンドル を指定します。
関数が失敗するとエラーコ ードが格納されます。
出力開始点番号を指定 出力値を格納する配列変数を指定します。 します。
出力開始点番号より設 定する件数を指定しま す。
では、プログラムを実行し「単点出力」ボタンをクリックしてください。デジタル出力ボードに 接続されたLEDが以下のよう点灯します。
OUT1 OUT2 OUT3 OUT4
これは、配列変数pnBuffer(0)〜pnBuffer(3)に設定された値が、 OUT1〜OUT4に対しそれぞれ以下に ように働いているためです。
変数 値 処理
pnBuffer(0) 1 OUT1に接続したLEDを点灯する。
pnBuffer(1) 0 OUT2に接続したLEDを消灯する。
pnBuffer(2) 1 OUT3に接続したLEDを点灯する。
pnBuffer(3) 0 OUT4に接続したLEDを消灯する。
ここで、一度プログラムを終了してみてください。プログラムを終了してもLEDは点灯したまま であることに気づくと思います。デジタル出力ボードに対し出力接点の設定を一度行うと、ボー ドにリセット信号 (コンピュータのリセット)が送信されるか、出力接点が新たに設定し直されるま で、その状態が保持されます。
コマンドボタン(cmdOutputSingle)のClickイベントのコード ( 『48ページ Step2. 単点出力/バイ ト出力/ワード出力/ダブルワード出力』)の出力接点の設定部分のコードを以下のように書き換え 再度実行してください。LEDの点灯が消えます。
pnBuffer(0) = 0 pnBuffer(1) = 0 pnBuffer(2) = 0 pnBuffer(3) = 0
PCI-2726C + CHK-2101の組み合わせでは
CHK-2101のLED33番,35番が点灯します。
先にポートの出力接点を1点ずつ設定する方法を記載しました。次は、一度に複数の出力接点を設 定するプログラムを作成します。複数の出力接点の設定には、バイト出力(8点)、ワード出力(16 点)、ダブルワード出力(32点)があります。
ここでは、バイト出力を行います。
1. フォーム上にコマンドボタン(CommandButton)コントロールを描画し、 cmdOutputByte と名付け コマンドボタンコントロールのタイトルを"バイト出力" に変更します。
2. 作成したコマンドボタン(CommandButton)をダブルクリックし編集ウィンドウを開き以下のコ ードを記述します。
(
コマンドボタン
(cmdOutputByte)の
Clickイベントのコード
) Private Sub cmdOutputByte̲Click()
Dim lpszName As String 'デバイス名 Dim szTemp As String '文字列格納 Dim nRet As Long '関数の実行結果 Dim pbyValue As Byte '出力接点の設定値
'ボード初期化処理
lpszName = "FBIDIO1" & Chr(0)
hDeviceHandle = DioOpen(lpszName, FBIDIO̲FLAG̲SHARE) If hDeviceHandle = &HFFFF Then
MsgBox ("デバイスのオープンに失敗しました") Exit Sub
End If
'出力接点の設定値問い合わせ(3 桁以上の値が入力されるとオーバーフローします) szTemp = InputBox("出力接点の設定値を入力して下さい(0〜FF)", "バイト出力", 0) '入力された値を 16 進数にします
pbyValue = Val("&H" & szTemp) '出力接点 OUT1〜OUT8 の設定を行います
nRet = DioOutputByte(hDeviceHandle, FBIDIO̲OUT1̲8, pbyValue) If nRet <> 0 Then
MsgBox ("データの入力に失敗しました") nRet = DioClose(hDeviceHandle) Exit Sub
End If
'終了処理
nRet = DioClose(hDeviceHandle) If nRet <> 0 Then
MsgBox ("デバイスのクローズに失敗しました") End If
End Sub
- 51 - Interface Corporation コマンドボタン(cmdOutputSingle)のClickイベントのコード ( 『48ページ Step2. 単点出力/バイ ト出力/ワード出力/ダブルワード出力』 )では、出力接点番号1(OUT1)から接点番号8(OUT8)までを、
一度に設定します。
バイト単位(8 bit)で状態を設定するにはDioOutputByte関数を使用します。
「使用例」
Dim pbyValue As Byte
nRet = DioOutputByte(hDeviceHandle, FBIDIO_OUT1_8, pbyValue)
ボードのオープン時に取得したデバ イスハンドルを指定します。
関数が失敗するとエラーコー ドが格納されます。
状態を設定する接点を示 す定数を指定します。
出 力す る値 を バ イ ト値で指定します。
一度に設定できる出力接点は、以下のとおりです。どの接点の状態を設定するかは、同関数の第2 引数に指定します。
接 点 定 数 値
OUT1〜OUT8 FBIDIO_OUT1_8 0
OUT9〜OUT16 FBIDIO_OUT9_16 1
OUT17〜OUT24 FBIDIO_OUT17_24 2
OUT25〜OUT32 FBIDIO_OUT25_32 3
OUT33〜OUT40 FBIDIO_OUT33_40 4
OUT41〜OUT48 FBIDIO_OUT41_48 5
OUT49〜OUT56 FBIDIO_OUT49_56 6
OUT57〜OUT64 FBIDIO_OUT57_64 7
では、プログラムを実行し「バイト出力」ボタンをクリックしてください。
インプットボックスが表示され出力する値を聞いてくるので「55」と入力し「OK」ボタンをクリ ックして下さい。デジタル出力ボードに接続されたLEDが点灯します。
OUT1 OUT2 OUT3 OUT4 OUT5 OUT6 OUT7 OUT8
PCI-2726C + CHK-2101の組み合わせではCHK-2101のLED33番,35番, 37番, 39番が点灯します。