• 検索結果がありません。

デジタル出力

ドキュメント内 Visual BasicによるDIO入門書 (ページ 44-59)

第 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.1W

k 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番が点灯します。

ドキュメント内 Visual BasicによるDIO入門書 (ページ 44-59)

関連したドキュメント