166
DNET(PCI/C-PCI) www.interface.co.jp GPC-4871 DeviceNet インタフェース製品 Windows 対応ドライバソフトウェア Help for Windows

GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

DNET(PCI/C-PCI)

www.interface.co.jp

GPC-4871 DeviceNet インタフェース製品 Windows 対応ドライバソフトウェア

Help for Windows

Page 2: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

1

目 次

第 1 章 はじめに 2

1.1 概要 ...........................................................................2

1.2 特長 ...........................................................................2

第 2 章 製品仕様 3

2.1 基本仕様 .......................................................................3

2.2 製品構成 .......................................................................4

第 3 章 導入方法 6

3.1 インストール手順 ...............................................................6

3.2 マスタモード時の実行手順 .......................................................6

3.3 スレーブモード時の実行手順 ....................................................18

3.4 モニタモード時の実行手順 ......................................................26

3.5 LEDの動作 .....................................................................32

第 4 章 リファレンス 33

4.1 関数一覧 ......................................................................33

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

4.3 構造体説明 ...................................................................131

4.4 戻り値一覧 ...................................................................148

4.5 製品の版数、チェンジナンバーについて .........................................149

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

5.1 DnetMon ......................................................................150

5.2 SaveConfig ...................................................................151

5.3 SendExplicit .................................................................152

5.4 SendIo .......................................................................153

5.5 CyclicSend ...................................................................154

5.6 ResponseIo ...................................................................155

5.7 ResponseIoAuto ...............................................................156

第 6 章 ユーティリティ 157

6.1 ネットワーク情報設定ユーティリティ ...........................................157

6.2 自己診断プログラム ...........................................................161

6.3 EDSファイル作成プログラム ....................................................163

第 7 章 重要な情報 164

Page 3: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

2

第1章 はじめに

1.1 概要 GPC-4871 は、Windows 上のアプリケーションから、弊社 PCI 及び CompactPCI DeviceNet インタ

フェース製品を制御する為のソフトウェアです。

弊社 DeviceNet インタフェース製品を Windows 上のアプリケーションから DLL をダイナミックリ

ンクし、API をコールすることにより制御します。

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

1.2 特長 ●DeviceNet プロトコルを意識する必要なし

用意された API を使用するだけで、DeviceNet マスタを構築できます。各スレーブとの通信を

行う API を用意しておりますので、お客様のプログラム中でプロトコルの処理を行う必要があ

りません。

マスタとしてもスレーブとしてもお使い頂けます。

●DeviceNet Release2.0(改訂 5)

DeviceNet 規格に対応した様々な機器と接続が可能です。

●すぐに使えるモニタ用ソフトを収録

DeviceNet バス上のメッセージをモニタするためのソフトをご用意しました。

各言語用のソースファイルも含まれていますので、機能追加を行ってお使い頂けます。

●通信メッセージへの簡単なアクセス

DeviceNet 上でやり取りされるメッセージに対して、2種類のアクセス方法を提供します。

繰り返し受信されるメッセージの最新のメッセージを取り出す“上書き型”のバッファ、受信

したメッセージ全てをバッファに蓄えていく“蓄積型”のバッファの 2 種類のアクセス方法で

す。

●ユーティリティを用いた簡単通信設定

通信情報設定ユーティリティを用いることにより、自局、他局の通信設定を簡単に設定するこ

とができます。また、ユーティリティを用いずに直接プログラム上で通信設定を行うことも可

能です。

●1メッセージあたりの最大取り扱いメッセージサイズが 512 バイト

1 メッセージあたりの送信サイズ、受信サイズが最大 512 バイトまで取り扱えます。

Page 4: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

3

第2章 製品仕様

2.1 基本仕様 通信速度 125/250/500kbps

マスタモード ・Group 2 サーバーおよび Group 2 Only サーバーのス

レーブデバイスと接続可能。

・Group 2 Only クライアントとしてのメッセージ転送

機能をサポートしています。

スレーブモード Group 2 Only サーバーとして動作。

モニタモード ON:受信のみ。ACK を返さない。

OFF:通常通信。ACK を返す。

最大ノード数 64 台(自局含む)

最大送信メッセージサイズ/1 メッセージ 512 バイト

最大受信メッセージサイズ/1 メッセージ 512 バイト

同時使用枚数 16 枚

Page 5: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

4

2.2 製品構成 製品構成 ファイル名 説明

弊社管理用ファイル GPC4871.VER 弊社ソフト管理用ファイル

最新情報ドキュメント README.HTM 最新ドキュメント掲載ファイル

インストールプログラム SETUP.EXE インストール用ファイル

ユーティリティプログラム DNETUTIL.EXE ネットワーク情報設定ユーティリティ

自己診断プログラム DIAGDNET.EXE 自己診断プログラム

EDS 作成プログラム CREATEEDS.EXE EDS 作成プログラム

サンプルプログラム

DnetMon Visual C# .NET 用サンプルプログラム

SaveConfig Visual C# .NET 用サンプルプログラム

SendExplicit Visual C# .NET 用サンプルプログラム

SendIo Visual C# .NET 用サンプルプログラム

CyclicSend Visual C# .NET 用サンプルプログラム

ResponseIo Visual C# .NET 用サンプルプログラム

Visual C# .NET

ResponseIoAuto Visual C# .NET 用サンプルプログラム

DnetMon Visual C++用(MFC)サンプルプログラム

SaveConfig C 用サンプルプログラム

SendExplicit C 用サンプルプログラム

SendIo C 用サンプルプログラム

CyclicSend C 用サンプルプログラム

ResponseIo C 用サンプルプログラム

Visual C++

ResponseIoAuto C 用サンプルプログラム

DnetMon Visual Basic .NET 用サンプルプログラム

SaveConfig Visual Basic .NET 用サンプルプログラム

SendExplicit Visual Basic .NET 用サンプルプログラム

SendIo Visual Basic .NET 用サンプルプログラム

CyclicSend Visual Basic .NET 用サンプルプログラム

ResponseIo Visual Basic .NET 用サンプルプログラム

Visual Basic .NET

ResponseIoAuto Visual Basic .NET 用サンプルプログラム

DnetMon Visual Basic 用サンプルプログラム

SaveConfig Visual Basic 用サンプルプログラム

SendExplicit Visual Basic 用サンプルプログラム

SendIo Visual Basic 用サンプルプログラム

CyclicSend Visual Basic 用サンプルプログラム

ResponseIo Visual Basic 用サンプルプログラム

Visual Basic

ResponseIoAuto Visual Basic 用サンプルプログラム

DnetMon Delphi 用サンプルプログラム

SaveConfig Delphi 用サンプルプログラム

Delphi

SendExplicit Delphi 用サンプルプログラム

Page 6: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

5

製品構成 ファイル名 説明

SendIo Delphi 用サンプルプログラム

CyclicSend Delphi 用サンプルプログラム

ResponseIo Delphi 用サンプルプログラム

ResponseIoAuto Delphi 用サンプルプログラム

DLL IFDNET.DLL ダイナミックリンクライブラリファイル

AMTLAN.DLL ダイナミックリンクライブラリファイル

IFDNET.LIB インポートライブラリファイル

デバイスドライバ CP4871.SYS ドライバファイル

PCI4871.INF ドライバ インストールファイル

PCI4871.SLD Windows XP Embeddedn 用ドライバ SLD ファイル

IFDNET.H C/C++ 用ヘッダファイル ヘッダファイル

IFDNET.BAS Visual Basic 用ヘッダファイル

IFDNET.PAS Delphi 用ヘッダファイル

Help HELP.PDF Help(PDF 形式)

※Visual C# .NET,Visual Basic.NET 用サンプルプログラムは、それぞれ Viausl C# .NET 2003,

Visual Basic .NET 2003 を使用して作成しています。

Page 7: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

6

第3章 導入方法

3.1 インストール手順 README.HTM のインストール方法を参照してください。

3.2 マスタモード時の実行手順 製品を複数枚使用する場合は、インタフェースモジュール上のロータリスイッチ RSW1 の設定値が

同一型式同士で重複しないように設定してからスロットに実装し、システムを起動して下さい。

同一型式が複数存在する場合、制御対象を一意に識別するための番号となります。重複していた

場合、本ソフトウェアは正常に動作いたしません。

基本的な制御の手順は以下の通りです。

ポートのオープン

※自ポートの設定

※他ポートの設定

割り込みの設定

ネットワークに参加

I/O 通信の開始

通信処理

I/O 通信の停止

ネットワークから離脱

割り込みの解除

ポートのクローズ

※ネットワーク情報設定ユーティリティでも設定可能です。

EPR の設定

Page 8: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

7

3.2.1 ポートのオープン

ポートのオープンは DnetOpenPort関数によって行います。

HANDLE deviceHandle;

// ポートをオープンします

deviceHandle = DnetOpenPort(“IFDNET1”);

DnetOpenPort関数には、オープンしたいポートの名前を指定します。ポート名は、システムに認

識された順番に割り振られていきます。下表のようにIFDNET1、IFDNET2、…、IFDNET16 となりま

す。

ポート名

IFDNET1

IFDNET2

IFDNET3

・・・

IFDNET16

ポート名はデバイスマネージャからも確認できます。

ポートをオープンすると、デバイス上の不揮発メモリに保存している自ポート通信設定、デバイ

スリストが自動的にロードされます。予めネットワーク情報設定ユーティリティで自ポート通信

設定、デバイスリストを設定することが出来ます。

ユーティリティを実行していない場合は、出荷時設定(3.2.2 節 参照)でオープンされます。

3.2.2 自ポートの設定

自ポートの設定は、オープン時に不揮発メモリからロードされます。予めネットワーク情報設定

ユーティリティにより自ポートの設定を不揮発メモリに保存することができます。また、

DnetSetConfig関数を実行することにより、プログラム上で自ポート設定を行うことも出来ます。

DnetSetConfig関数を使用する場合、自ポートの設定を間違わないために、一度 DnetGetConfig関

数で自ポート設定を取得してから、各パラメータを変更して DnetSetConfig関数を呼び出すとい

う方法を推奨致します。

ULONG ret;

DNET_PORT_CONFIG portConfig;

// 自ポート設定を取得します

ret = DnetGetConfig(deviceHandle, &portConfig);

// MAC ID とボーレートと I/O 通信設定を変更します

portConfig.MacID = 0; // 自ポートの MAC ID:0

portConfig.BaudRate = DNET_BAUDRATE_500K; // ボーレート:500kbps

portConfig.DeviceConfig.IOType = DNET_IO_POLL; // I/O メッセージの種類:Poll

portConfig.DeviceConfig.PollInterval = 100; // 周期送信時間:100ms

portConfig.DeviceConfig.PollTxSize = 16; // 自ポートからの送信サイズ:16byte

portConfig.DeviceConfig.PollRxSize = 16; // 自ポートでの受信サイズ:16byte

// 自ポートの設定を行います

ret = DnetSetConfig(deviceHandle, &portConfig);

Page 9: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

8

自ポートの設定には DNET_PORT_CONFIG構造体を使用します。

DnetInitializeNetInfo関数を実行すると、ドライバ内の設定は出荷時設定に戻ります(不揮発メ

モリ上の設定値は DnetSaveNetInfo関数を実行するか、ネットワーク情報設定ユーティリティを

実行しない限り変更されません)。

出荷時設定は下表に示す値が使用されています。

メンバ(意味) 値(意味)

MacID (MAC ID) 63 (MAC ID = 63)

Mode (動作モード) DNET_MODE_MASTER (マスタモード)

BaudRate (ボーレート) DNET_BAUDRATE_125K (125kbps)

HeartBeatCycle (HeartBeat メッセージ周期) 0 (HeartBeat メッセージは使用しない)

AccumulateRxBufferSize(蓄積受信バッファサイズ) 0 (蓄積受信バッファ無効)

ErrorBufferSize (イベントバッファサイズ) 64 (64 件分)

OverWriteFlag (受信バッファの上書き) DNET_OVERWRITE_ENABLE (上書き許可)

DeviceConfig (I/O 通信設定) 全メンバ 0 (I/O 通信無効)

・MacIDメンバには、自ポートのMAC IDを指定します。0~63 までが指定可能ですが、

DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ

ラーとなります。

・Mode メンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

すると、ボーレート(BaudRate)、蓄積用受信バッファサイズ(AccumulateRxBufferSize)、イベン

トバッファサイズ(ErrorBufferSize)のメンバのみが有効となり、その他のメンバの設定値は無

効となります。モニタモードを指定すると、ネットワーク上の全メッセージを蓄積用受信バッフ

ァに格納するようになります。このように、ネットワーク上の各デバイスの通信設定は意味を持

たなくなるため、デバイスリスト自体が無効となります。

・ BaudRate メンバに は、ボー レートを 指定しま す。 125kbps(DNET_BAUDRATE_125K) 、

250kbps(DNET_BAUDRATE_250K)、500kbps(DNET_BAUDRATE_500K)のいずれかを指定できます。

・HeartBeatCycle メンバには、HeartBeat メッセージの送信周期を指定します。単位は s で、設

定可能範囲は 1~1000 です。

・AccumulateRxBufferSizeメンバには、蓄積型受信バッファサイズ(メッセージ数)を指定します。

このバッファサイズを 0 以外に指定すると、MAC ID 毎に用意しているデバイス上の受信バッフ

ァとは異なる、蓄積型受信バッファがドライバ内に用意されます。MAC ID に関わらず、自ポー

トが受信した I/O メッセージは全てこの蓄積型受信バッファに格納されるようになります(デバ

イス上の受信バッファにも格納されます)。

・OverWriteFlagメンバには、デバイス上の受信バッファの上書きの有無を指定します。デバイス

上の受信バッファには、Poll、Bit Strobe、COS/Cyclicの 3 種類のバッファがありますが、それ

ぞれのバッファで、メッセージを受信するごとに上書きするか、メッセージを受信後、

DnetGetInputIO関数でメッセージを取り出さない限り上書きされないようにするかを設定しま

す。DNET_OVERWRITE_DISABLEをセットすると、メッセージ受信後、DnetGetInputIO関数でメッセ

ージを取り出さない限り上書きされないようになります。

Page 10: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

9

・DeviceConfigメンバには、自ポートのI/O通信設定を行います。他ポートのI/O通信設定は

DnetSetDeviceList関数で行います。I/O通信設定構造体(DNET_DEVICE_CONFIG構造体)については

『4.3 構造体説明』をご参照ください。

各メンバは、DnetInitializeNetInfo関数を実行すると、出荷時設定で上書きされますのでご注意

ください。

また、ポート設定の取得(DnetGetConfig関数)は、ポートオープンしていればいつでも実行できま

すが、ポートの設定(DnetSetConfig関数)は、ネットワークに参加した状態(オンライン状態)では

使用できません。必ずポートオープン直後か、DnetPortOff関数でネットワークから離脱した状態

(オフライン状態)でご使用ください。

送受信サイズの設定について

自ポートで設定する送信サイズは、自ポートが送信できる最大サイズになりま

す。また、受信サイズは自ポートが受信できる最大サイズになります。

Page 11: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

10

3.2.3 他ポートの設定

自ポートがマスタモードの場合、ネットワーク上での自ポートでない他のポートは、デバイスリ

ストとしてドライバ内に保存されます(スレーブモード、モニタモードではデバイスリストは使用

しません)。

デバイスリストはポートオープン時にロードされ、予めネットワーク情報設定ユーティリティを

使用することで設定することもできます。プログラム内では、DnetSetDeviceList関数でデバイス

リスト内に他ポートの通信設定をセット、DnetGetDeviceList関数でデバイスリスト内から他ポー

ト通信情報を取得、DnetDeleteDeviceList関数でデバイスリスト内の他ポート通信情報を削除し

ます。

DNET_DEVICE_CONFIG deviceConfig;

// MAC ID = 1 のデバイスに対する設定(Poll と COS)を行います

deviceConfig.IOType = DNET_IO_POLL | DNET_IO_COS;

deviceConfig.PollTxSize = 16; // MAC ID 1 のデバイスが送信する Poll のサイズ

deviceConfig.PollRxSize = 16; // MAC ID 1 のデバイスが受信する Poll のサイズ

deviceConfig.CosTxSize = 8; // MAC ID 1 のデバイスが送信する COS のサイズ

deviceConfig.CosRxSize = 8; // MAC ID 1 のデバイスが受信する COS のサイズ

ret = DnetSetDeviceList(deviceHandle, 1, &deviceConfig);

// MAC ID = 15 のデバイスに対する設定(Bit Strobe)を行います

deviceConfig.IOType = DNET_IO_BITSTROBE;

deviceConfig.StrobeTxSize = 8; // MAC ID 15 のデバイスが送信する BitStrobe のサイズ

deviceConfig.StrobeRxSize = 8; // MAC ID 15 のデバイスが受信する BitStrobe のサイズ

ret = DnetSetDeviceList(deviceHandle, 15, &deviceConfig);

一度デバイスリストにセットした他ポート通信設定は更新することはできません。更新するには

一度削除してから、再度セットしなおしてください。また、デバイスリストは他ポートの通信設

定のリストですので、DnetSetDeviceList関数、DnetGetDeviceList関数に自ポートのMAC IDを指

定した場合はエラーとなります。DnetDeleteDeviceList関数で自ポートを指定すると全デバイス

のリストを削除します。

DnetInitializeNetInfo関数を呼ぶことにより、ドライバ内部のデバイスリストは出荷時設定(空

のデバイスリスト)に戻されます。既に登録していたデバイスリストは破棄されますが、保存され

ていたデバイスリストは破棄されません (不揮発メモリ上の設定値は DnetSaveNetInfo関数を実

行するか、ネットワーク情報設定ユーティリティでの保存を実行しない限り変更されません)。

送受信サイズの設定について

他ポートで設定する送信サイズは、他ポートが送信できるサイズになります。

また、受信サイズは他ポートが受信できるサイズになります。

設定を間違えると正しく送受信できません。他ポートとして使用するデバイス

の仕様をご確認ください。

Page 12: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

11

3.2.4 割り込みの設定

割り込みを設定することにより、各事象が発生した際に

・イベントオブジェクトを使用した通知(イベント)

・ウィンドウ メッセージの送出(メッセージ)

・登録された関数の呼び出し(コールバック関数)

が行われます。

DnetSetEvent関数により、イベント/メッセージ/コールバック関数の登録を行います。

DnetSetEventMask関数で割り込みマスクの設定、DnetGetEventMask関数で割り込みマスク値の取

得を行います。

// コールバック関数

VOID CALLBACK EventProc(DWORD event, DWORD userData)

{

// 割り込み処理を記述します

・・・

}

・・・

// メインルーチン

DWORD eventMask;

DNET_EVENT_REQ eventReq;

// メッセージ受信時に割り込みが発生するようにマスクを設定します

eventMask = DNET_EVENT_RECV;

ret = DnetSetEventMask(deviceHandle, eventMask);

eventReq.Wnd = NULL;// メッセージは使用しません

eventReq.InterruptEvent = NULL; // イベントは使用しません

eventReq.CallBackProc = (DNETCALLBACK)EventProc;

eventReq.InterruptMsg = WM_NULL; // メッセージは使用しません

eventReq.UserData = 0x1234;

ret = DnetSetEvent(deviceHandle, &eventReq);

上記のコード例に示すように、イベント/メッセージ/コールバック関数の内、登録されたものの

みが発生するようになります。そのため、イベント/メッセージ/コールバック関数の全てを発生

させることも可能です。

オープン直後は、割り込みの設定はされておらず、全ての割り込みがマスクされています。

Page 13: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

12

3.2.5 ネットワークに参加

ネットワークに参加する場合は DnetPortOn関数を使用します。

// ネットワークに参加します

ret = DnetPortOn(deviceHandle);

ネットワーク参加中は、下記の関数は使用できません。

・ DnetSetConfig

・ DnetSetDeviceList

・ DnetDeleteDeviceList

・ DnetSaveNetInfo

・ DnetInitializeNetInfo

逆に、ネットワークに参加すると、下記の関数が使用できるようになります。

・ DnetConnect

・ DnetDisconnect

・ DnetSendIO、DnetSendIOEx

・ DnetGetInputIO、DnetGetInputIOEx

・ DnetGetAccmulatedMessage、DnetGetAccmulatedMessageEx

・ DnetSendExplicit、DnetSendExplicitEx

・ DnetReceiveExplicit、DnetReceiveExplicitEx

3.2.6 I/O 通信の開始

DnetConnect関数により、I/O通信を開始します。

// MAC ID = 1 のデバイスと I/O 通信を開始します

ret = DnetConnect(deviceHandle, 1);

自ポートがマスタモードの場合、通信を行いたいデバイスの MAC ID を指定します。通信を行いた

いデバイスは、予めデバイスリストに登録しておく必要があります。

ネットワーク電源の異常検出について

ネットワーク参加後にネットワーク電源が、DnetSetPowerLimit関数で指定

したネットワーク電源電圧の上限値を上回ったり、下限値を下回ったりした

場合、本製品は自動的にネットワークから離脱します。電源復旧後に

DnetPortOn関数を実行することにより、再度ネットワークに参加できます。

DnetSetPowerLimitMode関数を使用することにより、自動的にネットワーク

から離脱しないようにすることもできます。

Page 14: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

13

3.2.7 EPR の設定

実際に I/O メッセージの送受信を行う前に、Explicit メッセージを利用してスレーブに対して

EPR(expected_packet_rate)と呼ばれるタイムアウト時間を設定する必要があります。この EPR を

設定しないと、スレーブは I/O メッセージの受信を開始しません。

Explicitメッセージの送信は DnetSendExplicit関数を使用します。

以下、MAC ID が 3 で I/O メッセージの Poll を使用するデバイスへの設定例です。

DNET_EXPLICIT dnetExplicit;

// Explicit メッセージでスレーブデバイスの EPR を設定します

dnetExplicit.MessageType = DNET_EXPLICIT_REQUEST;

dnetExplicit.MacID = 3;

dnetExplicit.ServiceCode = 0x10; // Set_Attribute_Single のリクエスト

dnetExplicit.ClassID = 5; // Connection オブジェクト

dnetExplicit.InstanceID = 2; // Poll I/O コネクション

dnetExplicit.Length = 3;

dnetExplicit.Data[0] = 9; // アトリビュート ID:9=expected_packet_rate

dnetExplicit.Data[1] = 0xE8; // タイムアウト時間

dnetExplicit.Data[2] = 0x03; // 1000(0x3e8)ms

ret = DnetSendExplicit(deviceHandle, & dnetExplicit);

接続しているデバイスにあわせて、MacID、InstanceID、タイムアウト時間を設定してください。

InstanceID に設定する値は次のようになります。

I/O メッセージの種類 InstanceID 値

Poll 2

BitStrobe 3

COS、Cyclic 4

タイムアウト時間が設定できた場合、スレーブから実際に設定できた値が返信されます。

Page 15: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

14

3.2.8 通信処理

DnetSetOutputIO関数で、デバイス上の送信バッファへの送信メッセージのセットを行い送信を開

始します、DnetGetInputIO関数で、デバイス上の受信バッファから受信メッセージの取り出しを

行います。

デバイス上の送信バッファへセットされた送信メッセージは、DnetSetConfig関数により設定され

た、自ポートのI/O通信設定の各周期に従って送信されます。

DNET_PORT_CONFIG portConfig;

DNET_MESSAGE message;

// 自ポート設定

portConfig.DeviceConfig.IOType = DNET_IO_POLL;

portConfig.DeviceConfig.PollInterval = 10; // 10ms 周期

portConfig.DeviceConfig.PollTxSize = 16;

portConfig.DeviceConfig.PollRxSize = 16;

ret = DnetSetConfig(deviceHandle, &portConfig);

・・・

// I/O 通信の開始

ret = DnetConnect(deviceHandle, 1);

// EPR の設定

・・・

// 送信メッセージをセットします(10ms 周期で送信されます)

message.MessageType = DNET_IO_POLL;

message.Length = 4;

message.MacID = 1; // 送信の対象は MAC ID = 1 のデバイス

message.Data[0] = 0;

message.Data[1] = 0;

message.Data[2] = 0;

message.Data[3] = 0;

// 送信メッセージのセット

ret = DnetSetOutputIO(deviceHandle, &message);

Page 16: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

15

周期に関係なくI/Oメッセージを送信したい場合は、DnetSendIO関数を使用します。この関数を使

用した場合は、即座に送信が行われます。

DNET_MESSAGE message;

// 即時送信を行います

message.MessageType = DNET_IO_BITSTROBE;

message.MacID = 7;

message.Length = 8;

message.Data[0] = 0xFE;

message.Data[1] = 0xFF;

message.Data[2] = 0xFF;

message.Data[3] = 0xFF;

message.Data[4] = 0xFF;

message.Data[5] = 0xFF;

message.Data[6] = 0xFF;

message.Data[7] = 0xFF;

ret = DnetSendIO(deviceHandle, &message);

Explicitメッセージを送信する場合、DnetSendExplicit関数を使用します。

DNET_EXPLICIT dnetExplicit;

// Explicit メッセージ(リクエストメッセージ)を送信します

dnetExplicit.MessageType = DNET_EXPLICIT_REQUEST;

dnetExplicit.MacID = 3;

dnetExplicit.ServiceCode = 0x0E; // Get_Attribute_Single のリクエスト

dnetExplicit.ClassID = 3;

dnetExplicit.InstanceID = 1;

dnetExplicit.Length = 1;

dnetExplicit.Data[0] = 1;

ret = DnetSendExplicit(deviceHandle, & dnetExplicit);

Page 17: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

16

受信したI/Oメッセージの取得は、DnetGetInputIO関数、または DnetGetAccumulatedMessage関数

を使用します。

DnetGetInputIO関数は、通常デバイスの受信バッファから、指定したメッセージ(Poll、Bit Strobe、

COS/Cyclic)を取得します。

デフォルトではデバイス上の受信バッファは、新しいメッセージが受信されるごとに上書きされ

ますが、DnetSetConfig関数により、メッセージ受信してから、DnetGetInputIO関数によりメッセ

ージ取出しを行うまでの間、メッセージを上書きせずに破棄するように設定することもできます。

DNET_MESSAGE message;

// Poll メッセージを取り出し

message.MessageType = DNET_IO_POLL;

message.MacID = 2;

ret = DnetGetInputIO(deviceHandle, &message);

受信したExplicitメッセージの取得には、DnetReceiveExplicit関数を使用します。

I/O メッセージとは違い、必ず新しいメッセージが受信されるごとに上書きされます。

DNET_EXPLICIT dnetExplicit;

ret = DnetReceiveExplicit(deviceHandle, &dnetExplicit);

DnetSetConfig関数により、蓄積型受信バッファのサイズを 0 以外に設定すると、I/O受信メッセ

ージがデバイス上の受信バッファと共に、蓄積型受信バッファ内にも格納されるようになります。

蓄積型受信バッファには、MAC IDやI/Oメッセージの種類に関わらず、受信したメッセージ全てが

順番に格納されていきます。

その蓄積型受信バッファからメッセージを取り出す場合に、DnetGetAccumulatedMessage関数を使

用します。

DNET_MESSAGE message[10];

ULONG count;

// 蓄積メッセージを取り出し

count = 10;

ret = DnetGetAccumulatedMessage(deviceHandle, &message[0], &count);

DnetGetAccumulatedMessage関数の第 3引数には、関数実行前に取得したい受信メッセージ数を指

定します。関数が正常終了すると、実際に取得できたメッセージ数が格納されます。

3.2.9 I/O 通信の停止

I/O通信の停止には、DnetDisconnect関数を使用します。

// MAC ID = 1 のデバイスとの I/O 通信を停止します

ret = DnetDisconnect(deviceHandle, 1);

DnetConnect関数により設定したMAC IDを指定して、通信を停止させてください。

Page 18: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

17

3.2.10 ネットワークからの離脱

DnetPortOff関数により、ネットワークからの離脱を行います。

// ネットワークから離脱します

ret = DnetPortOff(deviceHandle);

I/O 通信を行った場合には、必ずネットワークから離脱する前に、I/O 通信を停止してください。

ネットワークから離脱すると、下記の関数が使用できるようになります。

・ DnetSetConfig

・ DnetSetDeviceList

・ DnetDeleteDeviceList

・ DnetSaveNetInfo

・ DnetInitializeNetInfo

逆に、ネットワークから離脱すると、下記の関数が使用できなくなります。

・ DnetConnect

・ DnetDisconnect

・ DnetSendIO、DnetSendIOEx

・ DnetGetInputIO、DnetGetInputIOEx

・ DnetGetAccumulatedMessage、DnetGetAccumulatedMessageEx

・ DnetSendExplicit、DnetSendExplicitEx

・ DnetReceiveExplicit、DnetReceiveExplicitEx

3.2.11 割り込みの解除

DnetKillEvent関数により、登録されているイベント/メッセージ/コールバック関数を解除します。

DnetSetEventMask関数で全割り込みをマスクしてから、DnetKillEvent関数を呼び出してください。

// 全割り込みをマスクします

ret = DnetSetEventMask(deviceHandle, 0);

// 割り込みを解除します

det = DnetKillEvent(deviceHandle);

3.2.12 ポートのクローズ

DnetClosePort関数により、ポートのクローズ処理を行います。この関数を実行することにより、

他の関数は全て使用不可となります。

また DnetClosePort関数を呼ぶことにより、自ポート通信設定や、デバイスリスト等の情報も全

て初期状態に戻ります。

// ポートをクローズします

ret = DnetClosePort(deviceHandle);

ネットワークに参加していた場合には、ポートのクローズを行う前に必ず、ネットワークから離

脱してください。

Page 19: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

18

3.3 スレーブモード時の実行手順 製品を複数枚使用する場合は、インタフェースモジュール上のロータリスイッチ RSW1 の設定値が

同一型式同士で重複しないように設定してからスロットに実装し、システムを起動して下さい。

同一型式が複数存在する場合、制御対象を一意に識別するための番号となります。重複していた

場合、本ソフトウェアは正常に動作いたしません。

基本的な制御の手順は以下の通りです。

ポートのオープン

※自ポートの設定

割り込みの設定

ネットワークに参加

通信処理

ネットワークから離脱

割り込みの解除

ポートのクローズ

※ネットワーク情報設定ユーティリティでも設定可能です。

3.3.1 ポートのオープン

ポートのオープンは DnetOpenPort関数によって行います。

HANDLE deviceHandle;

// ポートをオープンします

deviceHandle = DnetOpenPort(“IFDNET1”);

DnetOpenPort関数には、オープンしたいポートの名前を指定します。ポート名は、システムに認

識された順番に割り振られていきます。下表のようにIFDNET1、IFDNET2、…、IFDNET16 となりま

す。

ポート名

IFDNET1

IFDNET2

IFDNET3

・・・

IFDNET16

ポート名はデバイスマネージャからも確認できます。

ポートをオープンすると、デバイス上の不揮発メモリに保存している自ポート通信設定が自動的

にロードされます。予めネットワーク情報設定ユーティリティで自ポート通信設定を設定するこ

とが出来ます。

ユーティリティを実行していない場合は、出荷時設定(3.3.2 節 参照)でオープンされます。

Page 20: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

19

3.3.2 自ポートの設定

自ポートの設定は、オープン時に不揮発メモリからロードされます。予めネットワーク情報設定

ユーティリティにより自ポートの設定を不揮発メモリに保存することができます。また、

DnetSetConfig関数を実行することにより、プログラム上で自ポート設定を行うことも出来ます。

DnetSetConfig関数を使用する場合、自ポートの設定を間違わないために、一度 DnetGetConfig関

数で自ポート設定を取得してから、各パラメータを変更して DnetSetConfig関数を呼び出すとい

う方法を推奨致します。

ULONG ret;

DNET_PORT_CONFIG portConfig;

// 自ポート設定を取得します

ret = DnetGetConfig(deviceHandle, &portConfig);

// MAC ID とボーレートと I/O 通信設定を変更します

portConfig.MacID = 1;

portConfig.Mode = DNET_MODE_SLAVE;

portConfig.BaudRate = DNET_BAUDRATE_500K;

portConfig.DeviceConfig.IOType = DNET_IO_POLL;

portConfig.DeviceConfig.PollTxSize = 16;

portConfig.DeviceConfig.PollRxSize = 16;

// 自ポートの設定を行います

ret = DnetSetConfig(deviceHandle, &portConfig);

自ポートの設定には DNET_PORT_CONFIG構造体を使用します。

DnetInitializeNetInfo関数を実行すると、ドライバ内の設定は出荷時設定に戻ります(不揮発メ

モリ上の設定値は DnetSaveNetInfo関数を実行するか、ネットワーク情報設定ユーティリティを

実行しない限り変更されません)。

出荷時設定は下表に示す値が使用されています。

メンバ(意味) 値(意味)

MacID (MAC ID) 63 (MAC ID = 63)

Mode (動作モード) DNET_MODE_MASTER (マスタモード)

BaudRate (ボーレート) DNET_BAUDRATE_125K (125kbps)

HeartBeatCycle (HeartBeat メッセージ周期) 0 (HeartBeat メッセージは使用しない)

AccumulateRxBufferSize(蓄積受信バッファサイズ) 0 (蓄積受信バッファ無効)

ErrorBufferSize (イベントバッファサイズ) 64 (64 件分)

OverWriteFlag (受信バッファの上書き) DNET_OVERWRITE_ENABLE (上書き許可)

DeviceConfig (I/O 通信設定) 全メンバ 0 (I/O 通信無効)

・MacIDメンバには、自ポートのMAC IDを指定します。0~63 までが指定可能ですが、

DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ

ラーとなります。

・Mode メンバには、動作モードを指定します。スレーブモード(DNET_MODE_SLAVE)に設定します。

・ BaudRate メンバに は、ボー レートを 指定しま す。 125kbps(DNET_BAUDRATE_125K) 、

250kbps(DNET_BAUDRATE_250K)、500kbps(DNET_BAUDRATE_500K)のいずれかを指定できます。

Page 21: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

20

・HeartBeatCycle メンバには、HeartBeat メッセージの送信周期を指定します。単位は s で、設

定可能範囲は 1~1000 です。

・AccumulateRxBufferSizeメンバには、蓄積型受信バッファサイズ(メッセージ数)を指定します。

このバッファサイズを 0 以外に指定すると、MAC ID 毎に用意しているデバイス上の受信バッフ

ァとは異なる、蓄積型受信バッファがドライバ内に用意されます。MAC ID に関わらず、自ポー

トが受信した I/O メッセージは全てこの蓄積型受信バッファに格納されるようになります(デバ

イス上の受信バッファにも格納されます)。

・OverWriteFlagメンバには、デバイス上の受信バッファの上書きの有無を指定します。デバイス

上の受信バッファには、Poll、Bit Strobe、COS/Cyclicの 3 種類のバッファがありますが、それ

ぞれのバッファで、メッセージを受信するごとに上書きするか、メッセージを受信後、

DnetGetInputIO関数でメッセージを取り出さない限り上書きされないようにするかを設定しま

す。DNET_OVERWRITE_DISABLEをセットすると、メッセージ受信後、DnetGetInputIO関数でメッセ

ージを取り出さない限り上書きされないようになります。

・DeviceConfigメンバには、自ポートのI/O通信設定を行います。I/O通信設定構造体

(DNET_DEVICE_CONFIG構造体)については『4.3 構造体説明』をご参照ください。

各メンバは、DnetInitializeNetInfo関数を実行すると、出荷時設定で上書きされますのでご注意

ください。

また、ポート設定の取得(DnetGetConfig関数)は、ポートオープンしていればいつでも実行できま

すが、ポートの設定(DnetSetConfig関数)は、ネットワークに参加した状態(オンライン状態)では

使用できません。必ずポートオープン直後か、DnetPortOff関数でネットワークから離脱した状態

(オフライン状態)でご使用ください。

Page 22: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

21

3.3.3 割り込みの設定

割り込みを設定することにより、各事象が発生した際に

・イベントオブジェクトを使用した通知(イベント)

・ウィンドウ メッセージの送出(メッセージ)

・登録された関数の呼び出し(コールバック関数)

が行われます。

DnetSetEvent関数により、イベント/メッセージ/コールバック関数の登録を行います。

DnetSetEventMask関数で割り込みマスクの設定、DnetGetEventMask関数で割り込みマスク値の取

得を行います。

// コールバック関数

VOID CALLBACK EventProc(DWORD event, DWORD userData)

{

// 割り込み処理を記述します

・・・

}

・・・

// メインルーチン

DWORD eventMask;

DNET_EVENT_REQ eventReq;

// メッセージ受信時に割り込みが発生するようにマスクを設定します

eventMask = DNET_EVENT_RECV;

ret = DnetSetEventMask(deviceHandle, eventMask);

eventReq.Wnd = NULL;// メッセージは使用しません

eventReq.InterruptEvent = NULL; // イベントは使用しません

eventReq.CallBackProc = (DNETCALLBACK)EventProc;

eventReq.InterruptMsg = WM_NULL; // メッセージは使用しません

eventReq.UserData = 0x1234;

ret = DnetSetEvent(deviceHandle, &eventReq);

上記のコード例に示すように、イベント/メッセージ/コールバック関数の内、登録されたものの

みが発生するようになります。そのため、イベント/メッセージ/コールバック関数の全てを発生

させることも可能です。

オープン直後は、割り込みの設定はされておらず、全ての割り込みがマスクされています。

Page 23: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

22

3.3.4 ネットワークに参加

ネットワークに参加する場合は DnetPortOn関数を使用します。

// ネットワークに参加します

ret = DnetPortOn(deviceHandle);

ネットワーク参加中は、下記の関数は使用できません。

・ DnetSetConfig

・ DnetSaveNetInfo

・ DnetInitializeNetInfo

逆に、ネットワークに参加すると、下記の関数が使用できるようになります。

・ DnetSendIO、DnetSendIOEx

・ DnetGetInputIO、DnetGetInputIOEx

・ DnetGetAccmulatedMessage、DnetGetAccmulatedMessageEx

・ DnetSendExplicit、DnetSendExplicitEx

・ DnetReceiveExplicit、DnetReceiveExplicitEx

Page 24: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

23

3.3.5 通信処理

スレーブモードで使用する場合には、予めマスタから EPR(expected_packet_rate)を設定しても

らう必要があります。EPR の設定が行われていないと、スレーブモードでの I/O メッセージの送

受信を行うことができません。

基本的にスレーブモードでは自発的にメッセージの送信をすることができません。必ずマスタか

ら送信されたメッセージへの返信としてメッセージを送信します。

DnetGetInputIO関数で、デバイス上の受信バッファから受信メッセージの取り出しを行います。

DnetSendIO関数で、I/Oメッセージを送信します。

受信したI/Oメッセージの取得は、DnetGetInputIO関数、または DnetGetAccumulatedMessage関数

を使用します。

DnetGetInputIO関数は、通常デバイスの受信バッファから、指定したメッセージ(Poll、Bit Strobe、

COS/Cyclic)を取得します。

デフォルトではデバイス上の受信バッファは、新しいメッセージが受信されるごとに上書きされ

ますが、DnetSetConfig関数により、メッセージ受信してから、DnetGetInputIO関数によりメッセ

ージ取出しを行うまでの間、メッセージを上書きせずに破棄するように設定することもできます。

DNET_MESSAGE message;

// Poll メッセージを取り出し

message.MessageType = DNET_IO_POLL;

message.MacID = 2;

ret = DnetGetInputIO(deviceHandle, &message);

DnetSendIO関数を使用すると即座に送信が行われます。

DNET_MESSAGE message;

// 即時送信を行います

message.MessageType = DNET_IO_POLL;

message.Length = 8;

message.Data[0] = 0xFE;

message.Data[1] = 0xFF;

message.Data[2] = 0xFF;

message.Data[3] = 0xFF;

message.Data[4] = 0xFF;

message.Data[5] = 0xFF;

message.Data[6] = 0xFF;

message.Data[7] = 0xFF;

ret = DnetSendIO(deviceHandle, &message);

Page 25: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

24

受信したExplicitメッセージの取得には、DnetReceiveExplicit関数を使用します。

I/O メッセージとは違い、必ず新しいメッセージが受信されるごとに上書きされます。

DNET_EXPLICIT dnetExplicit;

ret = DnetReceiveExplicit(deviceHandle, &dnetExplicit);

Explicitメッセージを送信する場合、DnetSendExplicit関数を使用します。

スレーブから送信するメッセージはレスポンスメッセージになります。

DNET_EXPLICIT dnetExplicit;

// Explicit メッセージ(リクエストメッセージ)を送信します

dnetExplicit.MessageType = DNET_EXPLICIT_RESPONSE;

dnetExplicit.MacID = 3;

dnetExplicit.ServiceCode = 0x0E;

dnetExplicit.Length = 1;

dnetExplicit.Data[0] = 1;

ret = DnetSendExplicit(deviceHandle, &dnetExplicit);

DnetSetConfig関数により、蓄積型受信バッファのサイズを 0 以外に設定すると、I/O受信メッセ

ージがデバイス上の受信バッファと共に、蓄積型受信バッファ内にも格納されるようになります。

蓄積型受信バッファには、MAC IDやI/Oメッセージの種類に関わらず、受信したメッセージ全てが

順番に格納されていきます。

その蓄積型受信バッファからメッセージを取り出す場合に、DnetGetAccumulatedMessage関数を使

用します。

DNET_MESSAGE message[10];

ULONG count;

// 蓄積メッセージを取り出し

count = 10;

ret = DnetGetAccumulatedMessage(deviceHandle, &message[0], &count);

DnetGetAccumulatedMessage関数の第 3引数には、関数実行前に取得したい受信メッセージ数を指

定します。関数が正常終了すると、実際に取得できたメッセージ数が格納されます。

Page 26: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

25

3.3.6 ネットワークからの離脱

DnetPortOff関数により、ネットワークからの離脱を行います。

// ネットワークから離脱します

ret = DnetPortOff(deviceHandle);

I/O 通信を行った場合には、必ずネットワークから離脱する前に、I/O 通信を停止してください。

ネットワークから離脱すると、下記の関数が使用できるようになります。

・ DnetSetConfig

・ DnetSaveNetInfo

・ DnetInitializeNetInfo

逆に、ネットワークから離脱すると、下記の関数が使用できなくなります。

・ DnetSendIO、DnetSendIOEx

・ DnetGetInputIO、DnetGetInputIOEx

・ DnetGetAccumulatedMessage、DnetGetAccumulatedMessageEx

・ DnetSendExplicit、DnetSendExplicitEx

・ DnetReceiveExplicit、DnetReceiveExplicitEx

3.3.7 割り込みの解除

DnetKillEvent関数により、登録されているイベント/メッセージ/コールバック関数を解除します。

DnetSetEventMask関数で全割り込みをマスクしてから、DnetKillEvent関数を呼び出してください。

// 全割り込みをマスクします

ret = DnetSetEventMask(deviceHandle, 0);

// 割り込みを解除します

det = DnetKillEvent(deviceHandle);

3.3.8 ポートのクローズ

DnetClosePort関数により、ポートのクローズ処理を行います。この関数を実行することにより、

他の関数は全て使用不可となります。

また DnetClosePort関数を呼ぶことにより、自ポート通信設定や、デバイスリスト等の情報も全

て初期状態に戻ります。

// ポートをクローズします

ret = DnetClosePort(deviceHandle);

ネットワークに参加していた場合には、ポートのクローズを行う前に必ず、ネットワークから離

脱してください。

Page 27: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

26

3.4 モニタモード時の実行手順 製品を複数枚使用する場合は、インタフェースモジュール上のロータリスイッチ RSW1 の設定値が

同一型式同士で重複しないように設定してからスロットに実装し、システムを起動して下さい。

同一型式が複数存在する場合、制御対象を一意に識別するための番号となります。重複していた

場合、本ソフトウェアは正常に動作いたしません。

基本的な制御の手順は以下の通りです。

ポートのオープン

※自ポートの設定

割り込みの設定

ネットワークに参加

モニタ処理

ネットワークから離脱

割り込みの解除

ポートのクローズ

※ネットワーク情報設定ユーティリティでも設定可能です。

3.4.1 ポートのオープン

ポートのオープンは DnetOpenPort関数によって行います。

HANDLE deviceHandle;

// ポートをオープンします

deviceHandle = DnetOpenPort(“IFDNET1”);

DnetOpenPort関数には、オープンしたいポートの名前を指定します。ポート名は、システムに認

識された順番に割り振られていきます。下表のようにIFDNET1、IFDNET2、…、IFDNET16 となりま

す。

ポート名

IFDNET1

IFDNET2

IFDNET3

・・・

IFDNET16

ポート名はデバイスマネージャからも確認できます。

ポートをオープンすると、デバイス上の不揮発メモリに保存している自ポート通信設定が自動的

にロードされます。予めネットワーク情報設定ユーティリティで自ポート通信設定を設定するこ

とが出来ます。

ユーティリティを実行していない場合は、出荷時設定(3.4.2 節 参照)でオープンされます。

Page 28: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

27

3.4.2 自ポートの設定

自ポートの設定は、オープン時に不揮発メモリからロードされます。予めネットワーク情報設定

ユーティリティにより自ポートの設定を不揮発メモリに保存することができます。また、

DnetSetConfig関数を実行することにより、プログラム上で自ポート設定を行うことも出来ます。

DnetSetConfig関数を使用する場合、自ポートの設定を間違わないために、一度 DnetGetConfig関

数で自ポート設定を取得してから、各パラメータを変更して DnetSetConfig関数を呼び出すとい

う方法を推奨致します。

ULONG ret;

DNET_PORT_CONFIG portConfig;

// 自ポート設定を取得します

ret = DnetGetConfig(deviceHandle, &portConfig);

// 動作モード、ボーレートと蓄積型受信バッファサイズを変更します

portConfig.Mode = DNET_MODE_MONITOR;

portConfig.BaudRate = DNET_BAUDRATE_500K;

portConfig.DeviceConfig.AccumulateRxBufferSize= 64;

// 自ポートの設定を行います

ret = DnetSetConfig(deviceHandle, &portConfig);

自ポートの設定には DNET_PORT_CONFIG構造体を使用します。

DnetInitializeNetInfo関数を実行すると、ドライバ内の設定は出荷時設定に戻ります(不揮発メ

モリ上の設定値は DnetSaveNetInfo関数を実行するか、ネットワーク情報設定ユーティリティを

実行しない限り変更されません)。

出荷時設定は下表に示す値が使用されています。

メンバ(意味) 値(意味)

MacID (MAC ID) 63 (MAC ID = 63)

Mode (動作モード) DNET_MODE_MASTER (マスタモード)

BaudRate (ボーレート) DNET_BAUDRATE_125K (125kbps)

HeartBeatCycle (HeartBeat メッセージ周期) 0 (HeartBeat メッセージは使用しない)

AccumulateRxBufferSize(蓄積受信バッファサイズ) 0 (蓄積受信バッファ無効)

ErrorBufferSize (イベントバッファサイズ) 64 (64 件分)

OverWriteFlag (受信バッファの上書き) DNET_OVERWRITE_ENABLE (上書き許可)

DeviceConfig (I/O 通信設定) 全メンバ 0 (I/O 通信無効)

・Mode メンバには、動作モードを指定します。モニタモード(DNET_MODE_MONITOR)を指定します。

モ ニ タ モ ー ド で は 、 ボ ー レ ー ト (BaudRate) 、 蓄 積 用 受 信 バ ッ フ ァ サ イ ズ

(AccumulateRxBufferSize)、イベントバッファサイズ(ErrorBufferSize)のメンバのみが有効と

なり、その他のメンバの設定値は無効となります。モニタモードを指定すると、ネットワーク上

の全メッセージを蓄積用受信バッファに格納するようになります。このように、ネットワーク上

の各デバイスの通信設定は意味を持たなくなるため、デバイスリスト自体が無効となります。

・ BaudRate メンバに は、ボー レートを 指定しま す。 125kbps(DNET_BAUDRATE_125K) 、

250kbps(DNET_BAUDRATE_250K)、500kbps(DNET_BAUDRATE_500K)のいずれかを指定できます。

Page 29: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

28

・AccumulateRxBufferSizeメンバには、蓄積型受信バッファサイズ(メッセージ数)を指定します。

このバッファサイズを 0 以外に指定すると、蓄積型受信バッファがドライバ内に用意されます。

MAC ID に関わらず、自ポートが受信したメッセージは全てこの蓄積型受信バッファに格納され

るようになります。

モニタモードでは、メッセージは蓄積型受信バッファにしか格納されません。そのため、必ず

AccumulateRxBufferSize には 0以外の値を指定してください。

各メンバは、DnetInitializeNetInfo関数を実行すると、出荷時設定で上書きされますのでご注意

ください。

また、ポート設定の取得(DnetGetConfig関数)は、ポートオープンしていればいつでも実行できま

すが、ポートの設定(DnetSetConfig関数)は、ネットワークに参加した状態(オンライン状態)では

使用できません。必ずポートオープン直後か、DnetPortOff関数でネットワークから離脱した状態

(オフライン状態)でご使用ください。

Page 30: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

29

3.4.3 割り込みの設定

割り込みを設定することにより、各事象が発生した際に

・イベントオブジェクトを使用した通知(イベント)

・ウィンドウ メッセージの送出(メッセージ)

・登録された関数の呼び出し(コールバック関数)

が行われます。

DnetSetEvent関数により、イベント/メッセージ/コールバック関数の登録を行います。

DnetSetEventMask関数で割り込みマスクの設定、DnetGetEventMask関数で割り込みマスク値の取

得を行います。

// コールバック関数

VOID CALLBACK EventProc(DWORD event, DWORD userData)

{

// 割り込み処理を記述します

・・・

}

・・・

// メインルーチン

DWORD eventMask;

DNET_EVENT_REQ eventReq;

// メッセージ受信時に割り込みが発生するようにマスクを設定します

eventMask = DNET_EVENT_RECV;

ret = DnetSetEventMask(deviceHandle, eventMask);

eventReq.Wnd = NULL;// メッセージは使用しません

eventReq.InterruptEvent = NULL; // イベントは使用しません

eventReq.CallBackProc = (DNETCALLBACK)EventProc;

eventReq.InterruptMsg = WM_NULL; // メッセージは使用しません

eventReq.UserData = 0x1234;

ret = DnetSetEvent(deviceHandle, &eventReq);

上記のコード例に示すように、イベント/メッセージ/コールバック関数の内、登録されたものの

みが発生するようになります。そのため、イベント/メッセージ/コールバック関数の全てを発生

させることも可能です。

オープン直後は、割り込みの設定はされておらず、全ての割り込みがマスクされています。

Page 31: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

30

3.4.4 ネットワークに参加

ネットワークに参加する場合は DnetPortOn関数を使用します。

// ネットワークに参加します

ret = DnetPortOn(deviceHandle);

ネットワーク参加中は、下記の関数は使用できません。

・ DnetSetConfig

・ DnetSaveNetInfo

・ DnetInitializeNetInfo

逆に、ネットワークに参加すると、下記の関数が使用できるようになります。

・ DnetGetAccmulatedMessage、DnetGetAccmulatedMessageEx

3.4.5 モニタ処理

モニタモードではネットワーク上を流れているメッセージ(Explicit、I/O)を全て受信します。

受信したメッセージの取得には、DnetGetAccumulatedMessage関数を使用します。

そのため、DnetSetConfig関数により、蓄積型受信バッファのサイズを 1以上に設定する必要があ

ります。

DNET_MESSAGE message[10];

ULONG count;

// 蓄積メッセージを取り出し

count = 10;

ret = DnetGetAccumulatedMessage(deviceHandle, &message[0], &count);

DnetGetAccumulatedMessage関数の第 3引数には、関数実行前に取得したい受信メッセージ数を指

定します。関数が正常終了すると、実際に取得できたメッセージ数が格納されます。

3.4.6 ネットワークからの離脱

DnetPortOff関数により、ネットワークからの離脱を行います。

// ネットワークから離脱します

ret = DnetPortOff(deviceHandle);

I/O 通信を行った場合には、必ずネットワークから離脱する前に、I/O 通信を停止してください。

ネットワークから離脱すると、下記の関数が使用できるようになります。

・ DnetSetConfig

・ DnetSaveNetInfo

・ DnetInitializeNetInfo

逆に、ネットワークから離脱すると、下記の関数が使用できなくなります。

・ DnetGetAccumulatedMessage、DnetGetAccumulatedMessageEx

Page 32: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

31

3.4.7 割り込みの解除

DnetKillEvent関数により、登録されているイベント/メッセージ/コールバック関数を解除します。

DnetSetEventMask関数で全割り込みをマスクしてから、DnetKillEvent関数を呼び出してください。

// 全割り込みをマスクします

ret = DnetSetEventMask(deviceHandle, 0);

// 割り込みを解除します

det = DnetKillEvent(deviceHandle);

3.4.8 ポートのクローズ

DnetClosePort関数により、ポートのクローズ処理を行います。この関数を実行することにより、

他の関数は全て使用不可となります。

また DnetClosePort関数を呼ぶことにより、自ポート通信設定や、デバイスリスト等の情報も全

て初期状態に戻ります。

// ポートをクローズします

ret = DnetClosePort(deviceHandle);

ネットワークに参加していた場合には、ポートのクローズを行う前に必ず、ネットワークから離

脱してください。

Page 33: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

32

3.5 LED の動作

3.5.1 モジュールステータス LED(MS)

LED 状態 動作

緑消灯 デバイスに電源が供給されていない場合

緑点滅 起動時

緑点灯 DnetOpenPort 関数でオープンが正常に行われた場合

緑点滅 DnetClosePort 関数でクローズが正常終了した場合

赤点滅 回復可能な状態

赤点灯 デバイスに回復不可能な異常が発生している

3.5.2 ネットワークステータス LED(NS)

LED 状態 動作

緑消灯 起動時

緑点滅 DnetPortOn 関数に成功し、ネットワークに参加できた場合

緑消灯 DnetPortOff 関数に成功し、ネットワークから離脱した場合

緑点灯 DnetConnect 関数に成功し、接続が確立した場合

緑点滅 DnetDisconnect 関数で全ての接続が切断された場合

赤点滅 タイムアウト状態になった。

赤点灯 通信デバイスが故障

Page 34: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

33

第4章 リファレンス

4.1 関数一覧

右端の 3列は、各モードでの使用可否を示しています。

Mon:モニタモード、Mst:マスタモード、Slv:スレーブモード

No 関数名 機能 Mon Mst Slv

●初期化関数

1 DnetOpenPort デバイスをオープンします。 ○ ○ ○

2 DnetClosePort デバイスをクローズします。 ○ ○ ○

3 DnetPortOn ポートをネットワークに参加させます。 ○ ○ ○

4 DnetPortOff ポートをネットワークから切り離します。 ○ ○ ○

●各種設定関数

5 DnetSetConfig ポートの条件設定を行います。 ○ ○ ○

6 DnetGetConfig ポートの条件取得を行います。 ○ ○ ○

7 DnetSetPowerLimit ネットワーク電源電圧下限/上限値を設定します。 ○ ○ ○

8 DnetGetPowerLimit ネットワーク電源電圧下限/上限値を取得します。 ○ ○ ○

9 DnetSetPowerLimitMode ネットワーク電源異常検知時の動作を設定しま

す。

○ ○ ○

10 DnetGetPowerLimitMode ネットワーク電源異常検知時の動作設定を取得し

ます。

○ ○ ○

11 DnetSetPowerFilter ネットワーク電源異常検知のフィルタを設定しま

す。

○ ○ ○

12 DnetGetPowerFilter ネットワーク電源異常検知のフィルタ設定を取得

します。

○ ○ ○

13 DnetSetConnectionTime Explicit メッセージコネクションのタイムアウト

クリア時間を設定します。

× ○ ×

14 DnetGetConnectionTime Explicit メッセージコネクションのタイムアウト

クリア時間を取得します。

× ○ ×

●通信関数

15 DnetConnect I/O 通信を開始します。 × ○ ×

16 DnetDisconnect I/O 通信を停止します。 × ○ ×

17 DnetSendIO I/O メッセージを送信します。 × ○ ○

18 DnetSendIOEx I/O メッセージを送信します。 × ○ ○

19 DnetSetOutputIO I/O メッセージを送信バッファにセットします。 × ○ ○

20 DnetSetOutputIOEx I/O メッセージを送信バッファにセットします。 × ○ ○

21 DnetGetInputIO I/O 受信バッファからメッセージを取り出します。 × ○ ○

22 DnetGetInputIOEx I/O 受信バッファからメッセージを取り出します。 × ○ ○

23 DnetSendExplicit Explicit メッセージを送信します。 × ○ ○

24 DnetSendExplicitEx Explicit メッセージを送信します。 × ○ ○

25 DnetReceiveExplicit Explicit メッセージを受信します。 × ○ ○

26 DnetReceiveExplicitEx Explicit メッセージを受信します。 × ○ ○

27 DnetGetAccumulatedMessage 蓄積バッファからメッセージを取り出します。 ○ ○ ○

28 DnetGetAccumulatedMessage

Ex

蓄積バッファからメッセージを取り出します。 ○ ○ ○

●その他(ステータス取得等)

Page 35: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

34

29 DnetGetPortStatus ステータスを取得します。 ○ ○ ○

30 DnetGetSlaveStatus スレーブステータスを取得します。 × ○ ×

31 DnetGetErrorEvent エラー情報を取得します。 ○ ○ ○

32 DnetClearBuffer 各種バッファのクリアを行います。 ○ ○ ○

33 DnetGetNetworkPower ネットワーク電源電圧値を取得します。 ○ ○ ○

●割り込み設定関数

34 DnetSetEvent イベント条件の設定を行います。 ○ ○ ○

35 DnetSetEventMask イベントマスクの設定を行います。 ○ ○ ○

36 DnetGetEventMask イベントマスクの取得を行います。 ○ ○ ○

37 DnetKillEvent イベント条件の破棄を行います。 ○ ○ ○

●デバイスリスト操作関数

38 DnetSetDeviceList リストにデバイス情報をセットします。 × ○ ×

39 DnetGetDeviceList リストからデバイス情報を取得します。 × ○ ×

40 DnetDeleteDeviceList リストからデバイス情報を消去します。 × ○ ×

●ネットワーク情報保存/読み出し

41 DnetSaveNetInfo 通信情報をデバイスの不揮発メモリに保存しま

す。

○ ○ ○

42 DnetInitializeNetInfo 通信情報を出荷時設定に戻します。 ○ ○ ○

Page 36: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

35

4.2 関数個別説明

1. DnetOpenPort 【機能】

DeviceNet インタフェース製品のオープンを行い、以後のデバイスへのアクセスを行えるよう

にします。

「デバイスマネージャ」に認識された弊社 DeviceNet インタフェース製品が一覧表示されます。

一覧の製品型式の横にデバイス名が表示されます。

【書式】

●C言語

HANDLE DnetOpenPort(

PCHAR deviceName

);

●Visual Basic

Declare Function DnetOpenPort Lib "IFDnet.DLL" (

ByVal deviceName As String

) As Long

●Delphi

function DnetOpenPort(

deviceName: String

): THandle; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceName オープンするデバイスのデバイス名を指定してください。

【戻り値】

DnetOpenPort 関数が正常に終了した場合には、有効なハンドルが返されます。

他の関数は、本関数により取得したハンドルを使用してデバイスの制御を行います。

オープンに失敗した場合には、INVALID_HANDLE_VALUE(FFFFFFFFh)が返されます。

【備考】

オープンするにはデバイス名を指定します。

DeviceNet インタフェース製品のデバイス名は「IFDNETx」(xは 1~16)となります。デバイス

名は、システムに認識された順番に割り振られていきます。複数枚ご使用になる場合は、各デ

バイスを識別するために RSW1 設定値に異なる値を割り当て、制御するデバイスのデバイス名を

事前にご確認ください。

各デバイス名の確認は、デバイスマネージャにて確認できます。

オープンが正常に行われると MS LED が緑点灯します。

Page 37: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

36

【使用例】

●C言語

HANDLE deviceHandle;

deviceHandle = DnetOpenPort(“IFDNET1”);

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

デバイス名「IFDNET1」のデバイスをオープンします。

Page 38: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

37

2. DnetClosePort 【機能】

DeviceNet インタフェース製品をクローズします。

デバイスアクセスのために使用されていた各種リソースの解放を行い、以後のデバイスへのア

クセスを禁止します。

【書式】

●C言語

ULONG DnetClosePort(

HANDLE deviceHandle

);

●Visual Basic

Declare Function DnetClosePort Lib "IFDnet.DLL" (

ByVal deviceHandle As Long

) As Long

●Delphi

function DnetClosePort(

deviceHandle: Thandle

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

本関数を実行する前に、必ずI/O通信の停止(DnetDisconnect関数)、ネットワークからの離脱

(DnetPortOff関数)を行ってください。行わなかった場合、デバイスを再オープンしてもネッ

トワークへの接続、I/O通信の開始が行えなくなります。この場合、システムを再起動させる必

要があります。

再度、デバイスへのアクセスを行う場合にはオープン処理(DnetOpenPort関数)を呼び出してく

ださい。

クローズが正常終了すると MS LED が緑点滅になります。

本関数を実行せずにプログラムを終了した場合でも、MS LED が緑点滅状態であれば再度オープ

ンを行うことができます。

Page 39: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

38

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetClosePort(deviceHandle);

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

Dim ret As Long

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

:

:

ret = DnetClosePort(deviceHandle);

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

:

ret := DnetClosePort(deviceHandle);

デバイス名「IFDNET1」のデバイスのクローズ処理を行います。

Page 40: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

39

3. DnetPortOn 【機能】

DeviceNet インタフェース製品をネットワークに参加させます。

DnetSetConfig関数、またはネットワーク設定ユーティリティにより通信設定を行ってから本関

数を実行してください。

【書式】

●C言語

ULONG DnetPortOn(

HANDLE deviceHandle

);

●Visual Basic

Declare Function DnetPortOn Lib "IFDnet.DLL" (

ByVal deviceHandle As Long

) As Long

●Delphi

function DnetPortOn(

deviceHandle: Thandle

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

ネットワークに参加できた場合、NS LED が緑点滅します。

ネットワーク参加中は、下記の関数は使用できません。

・ DnetSetConfig

・ DnetSetDeviceList

・ DnetDeleteDeviceList

・ DnetSaveNetInfo

・ DnetInitializeNetInfo

Page 41: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

40

逆に、ネットワークに参加すると、下記の関数が使用できるようになります。

・ DnetConnect

・ DnetDisconnect

・ DnetSendIO、DnetSendIOEx

・ DnetSetOutIO、DnetSetOutIOEx

・ DnetGetInputIO、DnetGetInputIOEx

・ DnetGetAccumulatedMessage、DnetGetAccumulatedMessageEx

・ DnetSendExplicit、DnetSendExplicitEx

・ DnetReceiveExplicit、DnetReceiveExplicitEx

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetPortOn(deviceHandle);

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

Dim ret As Long

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

:

:

ret = DnetPortOn(deviceHandle);

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

:

ret := DnetPortOn(deviceHandle);

デバイス名「IFDNET1」のデバイスをネットワークに参加させます。

Page 42: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

41

4. DnetPortOff 【機能】

DeviceNet インタフェース製品をネットワークから離脱させます。

【書式】

●C言語

ULONG DnetPortOff(

HANDLE deviceHandle

);

●Visual Basic

Declare Function DnetPortOff Lib "IFDnet.DLL" (

ByVal deviceHandle As Long

) As Long

●Delphi

function DnetPortOff(

deviceHandle: Thandle

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

ネットワークから離脱すると、NS LED が消灯します。

処理を終了する場合には、必ず本関数を実行しネットワークから離脱してください。

ネットワーク離脱中は、下記の関数は使用できません。

・ DnetConnect

・ DnetDisconnect

・ DnetSendIO、DnetSendIOEx

・ DnetSetOutputIO、DnetSetOutputIOEx

・ DnetGetInputIO、DnetGetInputIOEx

・ DnetGetAccumulatedMessage、DnetGetAccumulatedMessageEx

・ DnetSendExplicit、DnetSendExplicitEx

・ DnetReceiveExplicit、DnetReceiveExplicitEx

Page 43: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

42

逆に、ネットワークから離脱すると、下記の関数が使用できるようになります。

・ DnetSetConfig

・ DnetSetDeviceList

・ DnetDeleteDeviceList

・ DnetSaveNetInfo

・ DnetInitializeNetInfo

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetPortOn(deviceHandle);

ret = DnetPortOff(deviceHandle);

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

Dim ret As Long

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

:

ret = DnetPortOn(deviceHandle);

:

ret = DnetPortOff(deviceHandle);

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

ret := DnetPortOn(deviceHandle);

:

ret := DnetPortOff(deviceHandle);

デバイス名「IFDNET1」のデバイスをネットワークから離脱させます。

Page 44: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

43

5. DnetSetConfig 【機能】

DeviceNet インタフェース製品の自ポート設定を行います。

動作モードや通信速度、I/O 通信設定等の自ポートに関する全設定を本関数で行います。

【書式】

●C言語

ULONG DnetSetConfig(

HANDLE deviceHandle,

PDNET_PORT_CONFIG portConfig

);

●Visual Basic

Declare Function DnetSetConfig Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef portConfig As DNET_PORT_CONFIG

) As Long

●Delphi

function DnetSetConfig(

deviceHandle: THandle;

var portConfig: DNET_PORT_CONFIG

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

portConfig 自ポートの設定値を格納した DNET_PORT_CONFIG構造体を指定します。

詳細は『4.3 構造体説明』をご参照ください。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

設定の誤りを防ぐために、DnetGetConfig関数で取得した DNET_PORT_CONFIG構造体を変更して

本関数に渡すことを推奨します。

また、本関数はネットワーク離脱中にのみ使用できます。

Page 45: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

44

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

DNET_PORT_CONFIG portConfig;

deviceHandle = DnetOpenPort(“IFDNET1”); :

// ボーレートを 250kbps にします

ret = DnetGetConfig(deviceHandle, &portConfig);

portConfig.BaudRate = DNET_BAUDRATE_250K;

ret = DnetSetConfig(deviceHandle, &portConfig);

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

Dim ret As Long

Dim portConfig As DNET_PORT_CONFIG

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

:

‘ボーレートを 250kbps にします

ret = DnetGetConfig(deviceHandle, portConfig)

portConfig. BaudRate = DNET_BAUDRATE_250K

ret = DnetSetConfig(deviceHandle, portConfig)

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

portConfig: DNET_PORT_CONFIG;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

// ボーレートを 250kbps にします

ret := DnetGetConfig(deviceHandle, portConfig);

portConfig.BaudRate := DNET_BAUDRATE_250K;

ret := DnetSetConfig(deviceHandle, portConfig);

デバイス名「IFDNET1」のデバイスのボーレートを 250kbps にします。

Page 46: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

45

6. DnetGetConfig 【機能】

DeviceNet インタフェースの自ポート設定情報を取得します。

【書式】

●C言語

ULONG DnetGetConfig(

HANDLE deviceHandle,

PDNET_PORT_CONFIG portConfig

);

●Visual Basic

Declare Function DnetGetConfig Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef portConfig As DNET_PORT_CONFIG

) As Long

●Delphi

function DnetGetConfig(

deviceHandle: THandle;

var portConfig: DNET_PORT_CONFIG

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

portConfig 自ポートの設定値を格納する DNET_PORT_CONFIG構造体を指定します。

詳細は『4.3 構造体説明』をご参照ください。

関数が正常終了すると、自ポートの設定値が格納されます。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 47: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

46

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

DNET_PORT_CONFIG portConfig

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetGetConfig(deviceHandle, &portConfig);

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

Dim ret As Long

Dim portConfig As DNET_PORT_CONFIG

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

:

ret = DnetGetConfig(deviceHandle, portConfig)

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

portConfig: DNET_PORT_CONFIG;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

ret := DnetGetConfig(deviceHandle, portConfig);

デバイス名「IFDNET1」のデバイスのポート設定を取得します。

Page 48: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

47

7. DnetSetPowerLimit 【機能】

DeviceNet インタフェースのネットワーク電源電圧下限/上限値を設定します。

ネットワーク電源電圧値が下限値を下回った場合、またはネットワーク電源電圧値を上回った

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

【書式】

●C言語

ULONG DnetSetPowerLimit(

HANDLE deviceHandle,

ULONG limitKind,

float powerLimit

);

●Visual Basic

Declare Function DnetSetPowerLimit Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByVal limitKind As Long,

ByVal powerLimit As Single

) As Long

●Delphi

function DnetSetPowerLimit(

deviceHandle: THandle;

limitKind: ULONG;

powerLimit: Single

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

limitKind 下限値を設定するか、上限値を設定するかを選択します。

設定可能な値は下記の通りです。

識別子 値 内容

DNET_POWER_LOWER_LIMIT 0 下限値を設定します。

DNET_POWER_UPPER_LIMIT 1 上限値を設定します。

powerLimit ネットワーク電源電圧の下限値/上限値を指定します。

単位は[V]で、設定可能範囲は、0.6[V]~25.6[V]です。

Page 49: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

48

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【注意事項】

イベントとは関係なく、ネットワーク電源が下限値を下回った場合、上限値を上回った場合に

本製品は自動的にネットワークから離脱します。電源復旧後に DnetPortOn関数を実行すること

により、再度ネットワークに参加できます。

DnetSetPowerLimitMode関数を使用することにより、自動的にネットワークから離脱しないよう

にすることもできます。

ネットワーク電源電圧下限値イベントは、本関数で設定した下限値を下回った際に発生します。

ネットワーク電源電圧上限値イベントは、本関数で設定した上限値を上回った際に発生します。

イベントの発生は、ネットワーク中のみ発生します。

下限値、上限値の誤差は、±0.5[V]となります。そのため、例えば下限値に 10.0[V]を設定し

た場合、ネットワーク電源電圧が 9.5[V]から 9.4[V]になった瞬間や、10.5[V]から 10.4[V]に

なった瞬間にイベントが発生する可能性があります。

ただし、下限値に 0.6[V]を設定した場合は、0.6[V]より小さい値は全て誤差範囲に含まれます。

例えば、下限値に 0.6[V]を設定した場合、0.05[V]から 0.00[V]になった瞬間にもイベントが発

生する可能性があります。

また、上限値に 25.6[V]を設定した場合、25.6[V]より大きい値は全て誤差範囲に含まれます。

例えば、上限値に 25.6[V]を設定した場合、30.0[V]から 30.1[V]になった瞬間にもイベントが

発生する可能性があります。

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

float lowerLimit;

deviceHandle = DnetOpenPort(“IFDNET1”); :

lowerLimit = 10.5;

ret = DnetSetPowerLimit(deviceHandle, DNET_POWER_LOWER_LIMIT, lowerLimit);

Page 50: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

49

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

Dim ret As Long

Dim lowerLimit As Single

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

:

lowerLimit = 10.5

ret = DnetSetPowerLimit(deviceHandle, DNET_POWER_LOWER_LIMIT, lowerLimit)

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

lowerLimit: Single;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

lowerLimit := 10.5;

ret := DnetSetPowerLimit(deviceHandle, DNET_POWER_LOWER_LIMIT, lowerLimit);

デバイス名「IFDNET1」の下限値を 10.5[V]に設定します。

Page 51: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

50

8. DnetGetPowerLimit 【機能】

DeviceNet インタフェースのネットワーク電源電圧下限/上限値を取得します。

【書式】

●C言語

ULONG DnetGetPowerLimit(

HANDLE deviceHandle,

ULONG limitKind,

float* powerLimit

);

●Visual Basic

Declare Function DnetGetPowerLimit Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByVal limitKind As Long,

ByRef powerLimit As Single

) As Long

●Delphi

function DnetGetPowerLimit(

deviceHandle: THandle;

limitKind: ULONG;

var powerLimit: Single

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

limitKind 下限値を取得するか、上限値を取得するかを選択します。

設定可能な値は下記の通りです。

識別子 値 内容

DNET_POWER_LOWER_LIMIT 0 下限値を取得します。

DNET_POWER_UPPER_LIMIT 1 上限値を取得します。

powerLimit ネットワーク電源電圧の下限値/上限値を格納する変数を指定します。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 52: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

51

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

float lowerLimit;

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetGetPowerLimit(deviceHandle, DNET_POWER_LOWER_LIMIT, &lowerLimit);

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

Dim ret As Long

Dim lowerLimit As Single

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

:

ret = DnetGetPowerLimit(deviceHandle, DNET_POWER_LOWER_LIMIT, lowerLimit)

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

lowerLimit: Single;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

ret := DnetGetPowerLimit(deviceHandle, DNET_POWER_LOWER_LIMIT, lowerLimit);

デバイス名「IFDNET1」の下限値を取得します。

Page 53: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

52

9. DnetSetPowerLimitMode 【機能】

DeviceNet インタフェースのネットワーク電源電圧値が下限値を下回った場合、またはネット

ワーク電源電圧値を上回った場合の動作を設定します。

【書式】

●C言語

ULONG DnetSetPowerLimitMode(

HANDLE deviceHandle,

ULONG limitKind,

ULONG limitMode

);

●Visual Basic

Declare Function DnetSetPowerLimitMode Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByVal limitKind As Long,

ByVal limitMode As Long

) As Long

●Delphi

function DnetSetPowerLimitMode(

deviceHandle: THandle;

limitKind: ULONG;

limitMode: ULONG

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

limitKind 下限値を設定するか、上限値を設定するかを選択します。

設定可能な値は下記の通りです。

識別子 値 内容

DNET_POWER_LOWER_LIMIT 0 下限値の設定をします。

DNET_POWER_UPPER_LIMIT 1 上限値の設定をします。

limitMode 動作を設定します。

設定可能な値は下記の通りです。

識別子 値 内容

DNET_LIMIT_OFF_ENABLE 0 自動的にネットワークから離脱します。(デフォルト)

DNET_LIMIT_OFF_DISABLE 1 自動的にネットワークから離脱しません。

Page 54: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

53

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

デフォルトの設定では、ネットワーク電源が下限値を下回った場合、上限値を上回った場合に

本製品は自動的にネットワークから離脱します。

下限値、上限値にそれぞれ自動的にネットワークから離脱するか設定することができます。

本関数は、使用する製品の版数とチェンジナンバーにより使用できないことがあります。

以下の製品で本関数を使用することができます。版数とチェンジナンバーについては『4.5 製

品の版数、チェンジナンバーについて』をご参照ください。

・ PCI-487101PQ[12]C08 以降の製品

・ CTP-487101PQ[11]C08 以降の製品

・ CPZ-487101PQ[11]以降の製品

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetSetPowerLimitMode(deviceHandle, DNET_POWER_LOWER_LIMIT,

DNET_LIMIT_OFF_DISABLE);

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

Dim ret As Long

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

:

ret = DnetSetPowerLimitMode(deviceHandle, DNET_POWER_LOWER_LIMIT,

DNET_LIMIT_OFF_DISABLE)

Page 55: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

54

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

ret := DnetSetPowerLimitMode(deviceHandle, DNET_POWER_LOWER_LIMIT,

DNET_LIMIT_OFF_DISABLE);

デバイス名「IFDNET1」の下限値での自動ネットワーク離脱をしないようにする。

Page 56: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

55

10. DnetGetPowerLimitMode

【機能】

DeviceNet インタフェースのネットワーク電源電圧値が下限値を下回った場合、またはネット

ワーク電源電圧値を上回った場合の動作設定を取得します。

【書式】

●C言語

ULONG DnetGetPowerLimitMode(

HANDLE deviceHandle,

ULONG limitKind,

PULONG limitMode

);

●Visual Basic

Declare Function DnetGetPowerLimitMode Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByVal limitKind As Long,

ByRef limitMode As Long

) As Long

●Delphi

function DnetGetPowerLimitMode(

deviceHandle: THandle;

limitKind: ULONG;

var limitMode: ULONG

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

limitKind 下限値の設定を取得するか、上限値の設定を取得するかを選択します。

設定可能な値は下記の通りです。

識別子 値 内容

DNET_POWER_LOWER_LIMIT 0 下限値を取得します。

DNET_POWER_UPPER_LIMIT 1 上限値を取得します。

limitMode 動作設定を格納する変数を指定します。

取得可能な値は下記の通りです。

識別子 値 内容

DNET_LIMIT_OFF_ENABLE 0 自動的にネットワークから離脱します。(デフォルト)

DNET_LIMIT_OFF_DISABLE 1 自動的にネットワークから離脱しません。

Page 57: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

56

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

本関数は、使用する製品の版数とチェンジナンバーにより使用できないことがあります。

以下の製品で本関数を使用することができます。版数とチェンジナンバーについては『4.5 製

品の版数、チェンジナンバーについて』をご参照ください。

・ PCI-487101PQ[12]C08 以降の製品

・ CTP-487101PQ[11]C08 以降の製品

・ CPZ-487101PQ[11]以降の製品

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

ULONG limitMode;

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetGetPowerLimitMode(deviceHandle, DNET_POWER_LOWER_LIMIT, &limitMode);

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

Dim ret As Long

Dim lowerLimit As Long

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

:

ret = DnetGetPowerLimitMode(deviceHandle, DNET_POWER_LOWER_LIMIT, limitMode)

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

lowerLimit: ULONG;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

ret := DnetGetPowerLimitMode(deviceHandle, DNET_POWER_LOWER_LIMIT, limitMode);

デバイス名「IFDNET1」の下限値の動作設定を取得します。

Page 58: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

57

11. DnetSetPowerFilter

【機能】

DeviceNet インタフェースのネットワーク電源電圧の監視機能にフィルタを設定することがで

きます。フィルタは上限値と下限値にそれぞれ設定することができます。

【書式】

●C言語

ULONG DnetSetPowerFilter(

HANDLE deviceHandle,

ULONG limitKind,

ULONG powerFilter

);

●Visual Basic

Declare Function DnetSetPowerFilter Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByVal limitKind As Long,

ByVal powerFilter As Long

) As Long

●Delphi

function DnetSetPowerFilter(

deviceHandle: THandle;

limitKind: ULONG;

powerFilter: ULONG

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

limitKind フィルタを下限値に設定するか、上限値に設定するかを選択します。

設定可能な値は下記の通りです。

識別子 値 内容

DNET_POWER_LOWER_LIMIT 0 下限値に設定します。

DNET_POWER_UPPER_LIMIT 1 上限値に設定します。

powerFilter フィルタの設定をします。

設定可能な値は下記の通りです。

識別子 値 内容

DNET_POWER_FILTER_DISABLE 0 フィルタを無効にする。(デフォルト)

DNET_POWER_FILTER_ENABLE 1 フィルタを有効にする。

Page 59: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

58

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

フィルタは 100ms のデジタルフィルタで、フィルタを有効にすることにより、ノイズ等による

一瞬の電圧変化の検出を抑制することができます。

デフォルトの設定では、フィルタは無効になっています。

下限値、上限値にそれぞれフィルタを設定することができます。

本関数は、使用する製品の版数とチェンジナンバーにより使用できないことがあります。

以下の製品で本関数を使用することができます。版数とチェンジナンバーについては『4.5 製

品の版数、チェンジナンバーについて』をご参照ください。

・ CTP-487101PQ[12]以降の製品

・ CPZ-487101PQ[12]以降の製品

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetSetPowerFilter(deviceHandle, DNET_POWER_UPPER_LIMIT,

DNET_POWER_FILTER_ENABLE);

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

Dim ret As Long

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

:

ret = DnetSetPowerFilter(deviceHandle, DNET_POWER_LOWER_LIMIT,

DNET_POWER_FILTER_ENABLE)

Page 60: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

59

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

ret := DnetSetPowerFilter(deviceHandle, DNET_POWER_LOWER_LIMIT,

DNET_POWER_FILTER_ENABLE);

デバイス名「IFDNET1」の下限値のフィルタを有効にします。

Page 61: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

60

12. DnetGetPowerFilter

【機能】

DeviceNet インタフェースのネットワーク電源電圧監視機能のフィルタ設定を取得します。

【書式】

●C言語

ULONG DnetGetPowerFilter(

HANDLE deviceHandle,

ULONG limitKind,

PULONG powerFilter

);

●Visual Basic

Declare Function DnetGetPowerFilter Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByVal limitKind As Long,

ByRef powerFilter As Long

) As Long

●Delphi

function DnetGetPowerFilter(

deviceHandle: THandle;

limitKind: ULONG;

var powerFilter: ULONG

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

limitKind 下限値の設定を取得するか、上限値の設定を取得するかを選択します。

設定可能な値は下記の通りです。

識別子 値 内容

DNET_POWER_LOWER_LIMIT 0 下限値の設定を取得します。

DNET_POWER_UPPER_LIMIT 1 上限値の設定を取得します。

powerFilter フィルタ設定を格納する変数を指定します。

取得可能な値は下記の通りです。

識別子 値 内容

DNET_POWER_FILTER_DISABLE 0 フィルタを無効にする。(デフォルト)

DNET_POWER_FILTER_ENABLE 1 フィルタを有効にする。

Page 62: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

61

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

本関数は、使用する製品の版数とチェンジナンバーにより使用できないことがあります。

以下の製品で本関数を使用することができます。版数とチェンジナンバーについては『4.5 製

品の版数、チェンジナンバーについて』をご参照ください。

・ CTP-487101PQ[12]以降の製品

・ CPZ-487101PQ[12]以降の製品

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

ULONG powerFilter;

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetGetPowerFilter(deviceHandle, DNET_POWER_LOWER_LIMIT, &powerFilter);

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

Dim ret As Long

Dim powerFilter As Long

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

:

ret = DnetGetPowerFilter(deviceHandle, DNET_POWER_LOWER_LIMIT, powerFilter)

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

powerFilter: ULONG;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

ret := DnetGetPowerFilter(deviceHandle, DNET_POWER_LOWER_LIMIT, powerFilter);

デバイス名「IFDNET1」の下限値のフィルタ設定を取得します。

Page 63: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

62

13. DnetSetConnectionTime

【機能】

Explicit メッセージのコネクションがタイムアウトしないように送信しているメッセージの

周期を設定します。

【書式】

●C言語

ULONG DnetSetConnectionTime(

HANDLE deviceHandle,

ULONG connectionTime

);

●Visual Basic

Declare Function DnetSetConnectionTime Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByVal connectionTime As Long

) As Long

●Delphi

function DnetSetConnectionTime(

deviceHandle: THandle;

connectionTime: ULONG

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

connectionTime タイムアウトをクリアするメッセージの送信周期を設定します。

10ms 単位で 0ms~65530ms の間で指定できます。デフォルトは 1000ms です。

0ms を指定するとメッセージの送信を停止できます。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

本関数は自ポートがマスタモードの時のみ使用できます。

また、本関数はネットワーク離脱中にのみ使用できます。

本関数は、使用する製品の版数とチェンジナンバーにより使用できないことがあります。

以下の製品で本関数を使用することができます。版数とチェンジナンバーについては『4.5 製

品の版数、チェンジナンバーについて』をご参照ください。

・ PCI-487101PQ[12]C14 以降の製品

・ CTP-487101PQ[12]C05 以降の製品

・ CPZ-487101PQ[12]C04 以降の製品

Page 64: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

63

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

ULONG connectionTime;

deviceHandle = DnetOpenPort(“IFDNET1”); :

connectionTime = 2000;

ret = DnetSetConnectionTime(deviceHandle, connectionTime);

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

Dim ret As Long

Dim connectionTime As Long

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

:

connectionTime = 2000

ret = DnetSetConnectionTime(deviceHandle, connectionTime)

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

connectionTime: ULONG;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

connectionTime = 2000;

ret := DnetSetConnectionTime(deviceHandle, connectionTime);

デバイス名「IFDNET1」のタイムアウトクリア時間を 2000ms に設定します。

Page 65: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

64

14. DnetGetConnectionTime

【機能】

Explicit メッセージのコネクションがタイムアウトしないように送信しているメッセージの

周期を取得します。

【書式】

●C言語

ULONG DnetGetConnectionTime(

HANDLE deviceHandle,

PULONG connectionTime

);

●Visual Basic

Declare Function DnetGetConnectionTime Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef connectionTime As Long

) As Long

●Delphi

function DnetGetConnectionTime(

deviceHandle: THandle;

var connectionTime: ULONG

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

connectionTime タイムアウトをクリアするメッセージの送信周期を ms 単位で取得します。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

本関数は自ポートがマスタモードの時のみ使用できます。

本関数は、使用する製品の版数とチェンジナンバーにより使用できないことがあります。

以下の製品で本関数を使用することができます。版数とチェンジナンバーについては『4.5 製

品の版数、チェンジナンバーについて』をご参照ください。

・ PCI-487101PQ[12]C14 以降の製品

・ CTP-487101PQ[12]C05 以降の製品

・ CPZ-487101PQ[12]C04 以降の製品

Page 66: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

65

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

ULONG connectionTime;

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetGetConnectionTime(deviceHandle, &connectionTime);

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

Dim ret As Long

Dim connectionTime As Long

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

:

ret = DnetGetConnectionTime(deviceHandle, connectionTime)

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

connectionTime: ULONG;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

ret := DnetGetConnectionTime(deviceHandle, connectionTime);

デバイス名「IFDNET1」のタイムアウトクリア時間を取得します。

Page 67: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

66

15. DnetConnect

【機能】

他ポートのデバイスとの接続を確立し、I/O 通信を開始します。

【書式】

●C言語

ULONG DnetConnect(

HANDLE deviceHandle,

ULONG macID

);

●Visual Basic

Declare Function DnetConnect Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByVal macID As Byte

) As Long

●Delphi

function DnetConnect(

deviceHandle: THandle;

macID: BYTE

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

macID 接続相手の MAC ID を指定します。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

接続が確立すると NS LED が緑点灯になります。

最初に通信を行うとき、または、何らかの要因で接続が切れたスレーブデバイスに対して再接

続を行うときに使用します。スレーブデバイス側から切断が行われた場合には、マスタ側も一

度 DnetDisconnect関数で接続を切る必要があります。

自ポートがマスタモード時、指定したスレーブデバイスの情報がデバイスリストに設定されて

いない場合、本関数はエラーを返します。事前に DnetSetDeviceList関数、またはネットワー

ク情報設定ユーティリティで、スレーブデバイスの情報を登録してください。

また、本関数はネットワークに参加中にのみ使用できます。

Page 68: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

67

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetPortOn(deviceHandle);

ret = DnetConnect(deviceHandle, 1);

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

Dim ret As Long

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

:

:

ret = DnetPortOn(deviceHandle)

ret = DnetConnect(deviceHandle, 1)

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

ret := DnetPortOn(deviceHandle);

ret := DnetConnect(deviceHandle, 1);

デバイス名「IFDNET1」のデバイスと MAC ID が 1 のデバイスとの通信を開始します。

Page 69: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

68

16. DnetDisconnect

【機能】

他ポートのデバイスとの接続を切断し、I/O 通信を停止します。

【書式】

●C言語

ULONG DnetDisconnect(

HANDLE deviceHandle,

ULONG macID

);

●Visual Basic

Declare Function DnetDisconnect Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByVal macID As Byte

) As Long

●Delphi

function DnetDisconnect(

deviceHandle: THandle;

macID: BYTE

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

macID 切断するデバイスの MAC ID を指定してください。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

全ての接続が切断されると NS LED が緑点滅になります。

処理を終了するときには必ず本関数で接続を切断してください。

本関数はネットワークに参加中にのみ使用できます。

Page 70: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

69

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetPortOn(hDeviceHandle);

ret = DnetConnect(hDeviceHandle, 1);

ret = DnetDisconnect(hDeviceHandle, 1);

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

Dim ret As Long

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

:

ret = DnetPortOn(deviceHandle)

ret = DnetConnect(deviceHandle, 1)

:

ret = DnetDisconnect(deviceHandle, 1)

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

ret := DnetPortOn(deviceHandle);

ret := DnetConnect(deviceHandle, 1);

:

ret := DnetDisconnect(deviceHandle, 1);

デバイス名「IFDNET1」のデバイスと MAC ID が 1 のデバイスとの接続を切断します。

Page 71: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

70

17. DnetSendIO

【機能】

I/O メッセージの送信を行います。

DnetSetOutputIO関数により、設定されたメッセージは自動的に周期送信されますが、本関数は

実行すると即座に渡したメッセージが送信されます。周期的な送信を阻害しないようにご注意

ください。

スレーブモード時に自動応答に設定した場合、送信は即座に行われません。

本関数では最大 256byteまでのメッセージを送信できます。256byteより大きいメッセージを送

信する場合には DnetSendIOEx関数を使用してください。

【書式】

●C言語

ULONG DnetSendIO(

HANDLE deviceHandle,

PDNET_MESSAGE dnetMessage

);

●Visual Basic

Declare Function DnetSendIO Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef dnetMessage As DNET_MESSAGE

) As Long

●Delphi

function DnetSendIO(

deviceHandle: THandle;

var dnetMessage: DNET_MESSAGE

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

dnetMessage 送信したいメッセージ(DNET_MESSAGE構造体)を指定します。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

送信が完了したかどうかは、DnetSetEvent関数/DnetSetEventMask関数でイベントを設定するこ

とで全ての送信が完了した時点で割り込みを発生させることが出来ます(イベント/メッセージ

/コールバック関数)。

スレーブモード時に自動応答に設定した場合、本関数はメッセージのセットのみ行います。セ

ットされたメッセージは、マスタから送信されたメッセージを受信した時に自動的に送信しま

す。

Page 72: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

71

【使用例】

●C言語

DNET_MESSAGE dnetMessage;

ULONG ret;

// MAC ID が 7 のデバイスに対して

//I/O メッセージ(POLL)を送信します

dnetMessage.MessageType = DNET_IO_POLL;

dnetMessage.MacID = 7;

dnetMessage.Length = 3;

dnetMessage.Data[0] = 0x01;

dnetMessage.Data[1] = 0x02;

dnetMessage.Data[2] = 0x03;

ret = DnetSendIO(deviceHandle, &dnetMessage);

●Visual Basic

dnetMessage As DNET_MESSAGE

Dim ret As Long

‘ MAC ID が 7 のデバイスに対して

‘ I/O メッセージ(POLL)を送信します

dnetMessage.MessageType = DNET_IO_POLL

dnetMessage.MacID = 7

dnetMessage.Length = 3

dnetMessage.Data(0) = 1

dnetMessage.Data(1) = 2

dnetMessage.Data(2) = 3

ret = DnetSendIO(deviceHandle, dnetMessage)

●Delphi

var

dnetMessage: DNET_MESSAGE;

ret: ULONG;

// MAC ID が 7 のデバイスに対して

//I/O メッセージ(POLL)を送信します

dnetMessage.MessageType := DNET_IO_POLL;

dnetMessage.MacID := 7;

dnetMessage.Length := 3;

dnetMessage.Data[0] := 1;

dnetMessage.Data[1] := 2;

dnetMessage.Data[2] := 3;

ret := DnetSendIO(deviceHandle, dnetMessage);

MAC ID が 7 のデバイスへ I/O メッセージを送信します。

Page 73: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

72

18. DnetSendIOEx

【機能】

I/O メッセージの送信を行います。

DnetSetOutputIO関数により、設定されたメッセージは自動的に周期送信されますが、本関数は

実行すると即座に渡したメッセージが送信されます。周期的な送信を阻害しないようにご注意

ください。

スレーブモード時に自動応答に設定した場合、送信は即座に行われません。

本関数では最大 512byte までのメッセージを送信できます。

【書式】

●C言語

ULONG DnetSendIOEx(

HANDLE deviceHandle,

PDNET_MESSAGE_EX dnetMessageEx

);

●Visual Basic

Declare Function DnetSendIOEx Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef dnetMessageEx As DNET_MESSAGE_EX

) As Long

●Delphi

function DnetSendIOEx(

deviceHandle: THandle;

var dnetMessageEx: DNET_MESSAGE_EX

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

dnetMessageEx 送信したいメッセージ(DNET_MESSAGE_EX構造体)を指定します。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

送信が完了したかどうかは、DnetSetEvent関数/DnetSetEventMask関数でイベントを設定するこ

とで全ての送信が完了した時点で割り込みを発生させることが出来ます(イベント/メッセージ

/コールバック関数)。

スレーブモード時に自動応答に設定した場合、本関数はメッセージのセットのみ行います。セ

ットされたメッセージは、マスタから送信されたメッセージを受信した時に自動的に送信しま

す。

Page 74: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

73

本関数は、使用する製品の版数とチェンジナンバーにより使用できないことがあります。

以下の製品で本関数を使用することができます。版数とチェンジナンバーについては『4.5 製

品の版数、チェンジナンバーについて』をご参照ください。

・ PCI-487101PQ[12]C10 以降の製品

・ CTP-487101PQ[12]C02 以降の製品

・ CPZ-487101PQ[12]C01 以降の製品

【使用例】

●C言語

DNET_MESSAGE_EX dnetMessageEx;

ULONG ret;

// MAC ID が 7 のデバイスに対して

//I/O メッセージ(POLL)を送信します

dnetMessageEx.MessageType = DNET_IO_POLL;

dnetMessageEx.MacID = 7;

dnetMessageEx.Length = 3;

dnetMessageEx.Data[0] = 0x01;

dnetMessageEx.Data[1] = 0x02;

dnetMessageEx.Data[2] = 0x03;

ret = DnetSendIOEx(deviceHandle, &dnetMessageEx);

●Visual Basic

dnetMessageEx As DNET_MESSAGE_EX

Dim ret As Long

‘ MAC ID が 7 のデバイスに対して

‘ I/O メッセージ(POLL)を送信します

dnetMessageEx.MessageType = DNET_IO_POLL

dnetMessageEx.MacID = 7

dnetMessageEx.Length = 3

dnetMessageEx.Data(0) = 1

dnetMessageEx.Data(1) = 2

dnetMessageEx.Data(2) = 3

ret = DnetSendIOEx(deviceHandle, dnetMessageEx)

Page 75: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

74

●Delphi

var

dnetMessageEx: DNET_MESSAGE_EX;

ret: ULONG;

// MAC ID が 7 のデバイスに対して

//I/O メッセージ(POLL)を送信します

dnetMessageEx.MessageType := DNET_IO_POLL;

dnetMessageEx.MacID := 7;

dnetMessageEx.Length := 3;

dnetMessageEx.Data[0] := 1;

dnetMessageEx.Data[1] := 2;

dnetMessageEx.Data[2] := 3;

ret := DnetSendIOEx(deviceHandle, dnetMessageEx);

MAC ID が 7 のデバイスへ I/O メッセージを送信します。

Page 76: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

75

19. DnetSetOutputIO

【機能】

周期送信する I/O メッセージの送信メッセージをセットし送信を開始します。

DnetSetConfig関数、またはネットワーク情報設定ユーティリティで設定した条件に従って周期

的に送信されます。

本関数では最大 256byteまでのメッセージを送信できます。256byteより大きいメッセージを送

信する場合には DnetSetOutputIOEx関数を使用してください。

【書式】

●C言語

ULONG DnetSetOutputIO(

HANDLE deviceHandle,

PDNET_MESSAGE dnetMessage

);

●Visual Basic

Declare Function DnetSetOutputIO Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef dnetMessage As DNET_MESSAGE

) As Long

●Delphi

function DnetSetOutputIO(

deviceHandle: THandle;

var dnetMessage: DNET_MESSAGE

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

dnetMessage セットする DNET_MESSAGE構造体を指定してください。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

周期送信中に本関数を実行すると、次の周期から更新されたメッセージが送信されます。

DnetSendIO関数で送信するメッセージは、本関数の周期送信よりも優先して送信されます。

Page 77: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

76

【注意事項】

1)複数のデバイスに対して周期送信を行っている場合に送信の周期が重なった時は、後に送

信するメッセージは前のメッセージが出されてから送信されます。

2)全く同時に送信周期が重なった場合は、下記の優先度に従い送信順番を決めます。(優先度

の高い方から低い方へ順番にメッセージが送信されます。)

・先に本関数を呼び出した方が優先度が高くなります。

・1)のように周期が重なって送信タイミングがずれた場合、そのメッセージの優先度は

その時点で最低になります。

・一度設定したメッセージを更新した場合は、優先度は変わりません。

A A

B B

300ms

250ms

A A

300ms

B B B

Aの送信後に

ずれる

周期が

重なっている

B

250ms 周期はここから

250msになる

Page 78: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

77

【使用例】

●C言語

DNET_MESSAGE dnetMessage;

ULONG ret;

// MAC ID が 2 のデバイスに対して周期送信を行います。

dnetMessage.MessageType = DNET_IO_POLL;

dnetMessage.Length = 4;

dnetMessage.MacID = 2;

dnetMessage.Data[0] = 0;

dnetMessage.Data[1] = 1;

dnetMessage.Data[2] = 2;

dnetMessage.Data[3] = 3;

ret = DnetSetOutputIO(deviceHandle, &dnetMessage);

●Visual Basic

Dim dnetMessage As DNET_MESSAGE

Dim ret As Long

‘ MAC ID が 2 のデバイスに対して周期送信を行います。

dnetMessage.MessageType = DNET_IO_POLL

dnetMessage.Length = 4

dnetMessage.MacID = 2

dnetMessage.Data(0) = 0

dnetMessage.Data(1) = 1

dnetMessage.Data(2) = 2

dnetMessage.Data(3) = 3

ret = DnetSetOutputIO(deviceHandle, dnetMessage)

●Delphi

var

dnetMessage: DNET_MESSAGE;

ret: ULONG;

// MAC ID が 2 のデバイスに対して周期送信を行います。

dnetMessage.MessageType := DNET_IO_POLL;

dnetMessage.Length := 4;

dnetMessage.MacID := 2;

dnetMessage.Data[0] := 0;

dnetMessage.Data[1] := 1;

dnetMessage.Data[2] := 2;

dnetMessage.Data[3] := 3;

ret := DnetSetOutputIO(deviceHandle, dnetMessage);

送信メッセージをセットします。

Page 79: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

78

20. DnetSetOutputIOEx

【機能】

周期送信する I/O メッセージの送信メッセージをセットし送信を開始します。

DnetSetConfig関数、またはネットワーク情報設定ユーティリティで設定した条件に従って周期

的に送信されます。

本関数では最大 512byte までのメッセージを送信できます。

【書式】

●C言語

ULONG DnetSetOutputIOEx(

HANDLE deviceHandle,

PDNET_MESSAGE_EX dnetMessageEx

);

●Visual Basic

Declare Function DnetSetOutputIOEx Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef dnetMessageEx As DNET_MESSAGE_EX

) As Long

●Delphi

function DnetSetOutputIOEx(

deviceHandle: THandle;

var dnetMessageEx: DNET_MESSAGE_EX

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

dnetMessageEx セットする DNET_MESSAGE_EX構造体を指定してください。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

周期送信中に本関数を実行すると、次の周期から更新されたメッセージが送信されます。

DnetSendIO関数で送信するメッセージは、本関数の周期送信よりも優先して送信されます。

本関数は、使用する製品の版数とチェンジナンバーにより使用できないことがあります。

以下の製品で本関数を使用することができます。版数とチェンジナンバーについては『4.5 製

品の版数、チェンジナンバーについて』をご参照ください。

・ PCI-487101PQ[12]C10 以降の製品

・ CTP-487101PQ[12]C02 以降の製品

・ CPZ-487101PQ[12]C01 以降の製品

Page 80: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

79

【注意事項】

1)複数のデバイスに対して周期送信を行っている場合に送信の周期が重なった時は、後に送

信するメッセージは前のメッセージが出されてから送信されます。

2)全く同時に送信周期が重なった場合は、下記の優先度に従い送信順番を決めます。(優先度

の高い方から低い方へ順番にメッセージが送信されます。)

・先に本関数を呼び出した方が優先度が高くなります。

・1)のように周期が重なって送信タイミングがずれた場合、そのメッセージの優先度は

その時点で最低になります。

・一度設定したメッセージを更新した場合は、優先度は変わりません。

A A

B B

300ms

250ms

A A

300ms

B B B

Aの送信後に

ずれる

周期が

重なっている

B

250ms 周期はここから

250msになる

Page 81: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

80

【使用例】

●C言語

DNET_MESSAGE_EX dnetMessageEx;

ULONG ret;

// MAC ID が 2 のデバイスに対して周期送信を行います。

dnetMessageEx.MessageType = DNET_IO_POLL;

dnetMessageEx.Length = 4;

dnetMessageEx.MacID = 2;

dnetMessageEx.Data[0] = 0;

dnetMessageEx.Data[1] = 1;

dnetMessageEx.Data[2] = 2;

dnetMessageEx.Data[3] = 3;

ret = DnetSetOutputIOEx(deviceHandle, &dnetMessageEx);

●Visual Basic

Dim dnetMessageEx As DNET_MESSAGE_EX

Dim ret As Long

‘ MAC ID が 2 のデバイスに対して周期送信を行います。

dnetMessageEx.MessageType = DNET_IO_POLL

dnetMessageEx.Length = 4

dnetMessageEx.MacID = 2

dnetMessageEx.Data(0) = 0

dnetMessageEx.Data(1) = 1

dnetMessageEx.Data(2) = 2

dnetMessageEx.Data(3) = 3

ret = DnetSetOutputIOEx(deviceHandle, dnetMessageEx)

●Delphi

var

dnetMessageEx: DNET_MESSAGE_EX;

ret: ULONG;

// MAC ID が 2 のデバイスに対して周期送信を行います。

dnetMessageEx.MessageType := DNET_IO_POLL;

dnetMessageEx.Length := 4;

dnetMessageEx.MacID := 2;

dnetMessageEx.Data[0] := 0;

dnetMessageEx.Data[1] := 1;

dnetMessageEx.Data[2] := 2;

dnetMessageEx.Data[3] := 3;

ret := DnetSetOutputIOEx(deviceHandle, dnetMessageEx);

送信メッセージをセットします。

Page 82: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

81

21. DnetGetInputIO

【機能】

受信した I/O メッセージを取り出します。

本関数では最大 256byteまでのメッセージを取り出せます。受信したメッセージが 256byteより

大きい場合は DnetGetInputIOEx関数を使用してください。

【書式】

●C言語

ULONG DnetGetInputIO(

HANDLE deviceHandle,

PDNET_MESSAGE dnetMessage

);

●Visual Basic

Declare Function DnetGetInputIO Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef dnetMessage As DNET_MESSAGE

) As Long

●Delphi

function DnetGetInputIO(

deviceHandle: THandle;

var dnetMessage: DNET_MESSAGE

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

dnetMessage 受信メッセージを格納する DNET_MESSAGE構造体を指定してください。

関数が正常終了すると、受信メッセージが DNET_MESSAGE構造体に格納されます。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

デバイス内の受信バッファから、受信メッセージを取り出します。

最新のメッセージかどうかを確認するためには、DnetGetSlaveStatus関数を用い、目的のI/O

メッセージの受信タイムスタンプを確認してください。受信メッセージの上書きがあった場合、

その時のタイムスタンプが記録されていますので、ここの値に変化がない場合は、新しいメッ

セージは受信されていないということになります。

一度もメッセージを受信していない状態で本関数を呼び出すと、IFDNET_ERROR_NO_DATA を返し

エラー終了します。

一度でもメッセージを受信すると、更新されるまで同じメッセージを取得できます。

Page 83: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

82

受信しているメッセージが 256byte より大きい場合に、本関数を実行するとメッセージの

256byte 目まで取得できますが、257byte 目以降のデータは取得できません。

【使用例】

●C言語

DNET_MESSAGE dnetMessage;

// 受信メッセージの取り出し

dnetMessage.MessageType = DNET_IO_POLL;

dnetMessage.MacID = 2;

ret = DnetGetInputIO(deviceHandle, &dnetMessage);

●Visual Basic

Dim dnetMessage As DNET_MESSAGE

Dim ret As Long

‘ 受信メッセージの取り出し

dnetMessage.MessageType = DNET_IO_POLL

dnetMessage.MacID = 2

ret = DnetGetInputIO(deviceHandle, dnetMessage)

●Delphi

var

dnetMessage: DNET_MESSAGE;

ret: ULONG;

// 受信メッセージの取り出し

dnetMessage.MessageType := DNET_IO_POLL;

dnetMessage.MacID := 2;

ret := DnetGetInputIO(deviceHandle, dnetMessage);

MAC ID が 2 のデバイスからの Poll 受信メッセージを取得します。

Page 84: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

83

22. DnetGetInputIOEx

【機能】

受信した I/O メッセージを取り出します。

本関数では最大 512byte までのメッセージを取り出せます。

【書式】

●C言語

ULONG DnetGetInputIOEx(

HANDLE deviceHandle,

PDNET_MESSAGE_EX dnetMessageEx

);

●Visual Basic

Declare Function DnetGetInputIOEx Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef dnetMessageEx As DNET_MESSAGE_EX

) As Long

●Delphi

function DnetGetInputIOEx(

deviceHandle: THandle;

var dnetMessageEx: DNET_MESSAGE_EX

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

dnetMessageEx 受信メッセージを格納する DNET_MESSAGE_EX構造体を指定してください。

関数が正常終了すると、受信メッセージが DNET_MESSAGE_EX構造体に格納されます。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

デバイス内の受信バッファから、受信メッセージを取り出します。

最新のメッセージかどうかを確認するためには、DnetGetSlaveStatus関数を用い、目的のI/O

メッセージの受信タイムスタンプを確認してください。受信メッセージの上書きがあった場合、

その時のタイムスタンプが記録されていますので、ここの値に変化がない場合は、新しいメッ

セージは受信されていないということになります。

一度もメッセージを受信していない状態で本関数を呼び出すと、IFDNET_ERROR_NO_DATA を返し

エラー終了します。

一度でもメッセージを受信すると、更新されるまで同じメッセージを取得できます。

Page 85: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

84

本関数は、使用する製品の版数とチェンジナンバーにより使用できないことがあります。

以下の製品で本関数を使用することができます。版数とチェンジナンバーについては『4.5 製

品の版数、チェンジナンバーについて』をご参照ください。

・ PCI-487101PQ[12]C10 以降の製品

・ CTP-487101PQ[12]C02 以降の製品

・ CPZ-487101PQ[12]C01 以降の製品

【使用例】

●C言語

DNET_MESSAGE_EX dnetMessageEx;

// 受信メッセージの取り出し

dnetMessageEx.MessageType = DNET_IO_POLL;

dnetMessageEx.MacID = 2;

ret = DnetGetInputIOEx(deviceHandle, &dnetMessageEx);

●Visual Basic

Dim dnetMessageEx As DNET_MESSAGE_EX

Dim ret As Long

‘ 受信メッセージの取り出し

dnetMessageEx.MessageType = DNET_IO_POLL

dnetMessageEx.MacID = 2

ret = DnetGetInputIOEx(deviceHandle, dnetMessageEx)

●Delphi

var

dnetMessageEx: DNET_MESSAGE_EX;

ret: ULONG;

// 受信メッセージの取り出し

dnetMessageEx.MessageType := DNET_IO_POLL;

dnetMessageEx.MacID := 2;

ret := DnetGetInputIOEx(deviceHandle, dnetMessageEx);

MAC ID が 2 のデバイスからの Poll 受信メッセージを取得します。

Page 86: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

85

23. DnetSendExplicit

【機能】

Explicit メッセージの送信を行います。

本関数では最大 256byteまでのメッセージを送信できます。256byteより大きいメッセージを送

信する場合には DnetSendExplicitEx関数を使用してください。

【書式】

●C言語

ULONG DnetSendExplicit(

HANDLE deviceHandle,

PDNET_EXPLICIT dnetExplicit

);

●Visual Basic

Declare Function DnetSendExplicit Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef dnetExplicit As DNET_EXPLICIT

) As Long

●Delphi

function DnetSendExplicit(

deviceHandle: THandle;

var dnetExplicit: DNET_EXPLICIT

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

dnetExplicit セットする DNET_EXPLICIT構造体を指定してください。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

送信が完了したかどうかは、DnetSetEvent関数/DnetSetEventMask関数でイベントを設定するこ

とで全ての送信が完了した時点で割り込みを発生させることが出来ます(イベント/メッセージ

/コールバック関数)。

Page 87: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

86

【使用例】

●C言語

DNET_EXPLICIT dnetExplicit;

ULONG ret;

// MAC ID が 2 のデバイスに対して

// Explicit メッセージ(リクエスト)を送信します。

dnetExplicit.MessageType = DNET_EXPLICIT_REQUEST;

dnetExplicit.MacID = 2;

dnetExplicit.ServiceCode = 0x0E;

dnetExplicit.ClassID = 5;

dnetExplicit.InstanceID = 2;

dnetExplicit.Length = 1;

dnetExplicit.Data[0] = 9;

// 送信メッセージのセット

ret = DnetSendExplicit(deviceHandle, &dnetExplicit);

●Visual Basic

Dim dnetExplicit As DNET_EXPLICIT

Dim ret As Long

‘ MAC ID が 2 のデバイスに対して

‘ Explicit メッセージ(リクエスト)を送信します。

dnetExplicit.MessageType = DNET_EXPLICIT_REQUEST

dnetExplicit.MacID = 2

dnetExplicit.ServiceCode = &HE

dnetExplicit.ClassID = 5

dnetExplicit.InstanceID = 2

dnetExplicit.Length = 1

dnetExplicit.Data(0) = 9

‘ 送信メッセージのセット

ret = DnetSendExplicit(deviceHandle, dnetExplicit)

Page 88: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

87

●Delphi

var

dnetExplicit: DNET_EXPLICIT;

ret: ULONG;

// MAC ID が 2 のデバイスに対して

// Explicit メッセージ(リクエスト)を送信します。

dnetExplicit.MessageType := DNET_EXPLICIT_REQUEST;

dnetExplicit.MacID := 2;

dnetExplicit.ServiceCode := $E;

dnetExplicit.ClassID := 5;

dnetExplicit.InstanceID := 2;

dnetExplicit.Length := 1;

dnetExplicit.Data[0] := 9;

// 送信メッセージのセット

ret := DnetSendExplicit(deviceHandle, dnetExplicit);

Explicit メッセージを送信します。

Page 89: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

88

24. DnetSendExplicitEx

【機能】

Explicit メッセージの送信を行います。

本関数では最大 512byte までのメッセージを送信できます。

【書式】

●C言語

ULONG DnetSendExplicitEx(

HANDLE deviceHandle,

PDNET_EXPLICIT_EX dnetExplicitEx

);

●Visual Basic

Declare Function DnetSendExplicitEx Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef dnetExplicitEx As DNET_EXPLICIT_EX

) As Long

●Delphi

function DnetSendExplicitEx(

deviceHandle: THandle;

var dnetExplicitEx: DNET_EXPLICIT_EX

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

dnetExplicitEx セットする DNET_EXPLICIT_EX構造体を指定してください。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

送信が完了したかどうかは、DnetSetEvent関数/DnetSetEventMask関数でイベントを設定するこ

とで全ての送信が完了した時点で割り込みを発生させることが出来ます(イベント/メッセージ

/コールバック関数)。

本関数は、使用する製品の版数とチェンジナンバーにより使用できないことがあります。

以下の製品で本関数を使用することができます。版数とチェンジナンバーについては『4.5 製

品の版数、チェンジナンバーについて』をご参照ください。

・ PCI-487101PQ[12]C10 以降の製品

・ CTP-487101PQ[12]C02 以降の製品

・ CPZ-487101PQ[12]C01 以降の製品

Page 90: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

89

【使用例】

●C言語

DNET_EXPLICIT_EX dnetExplicitEx;

ULONG ret;

// MAC ID が 2 のデバイスに対して

// Explicit メッセージ(リクエスト)を送信します。

dnetExplicitEx.MessageType = DNET_EXPLICIT_REQUEST;

dnetExplicitEx.MacID = 2;

dnetExplicitEx.ServiceCode = 0x0E;

dnetExplicitEx.ClassID = 5;

dnetExplicitEx.InstanceID = 2;

dnetExplicitEx.Length = 1;

dnetExplicitEx.Data[0] = 9;

// 送信メッセージのセット

ret = DnetSendExplicitEx(deviceHandle, &dnetExplicitEx);

●Visual Basic

Dim dnetExplicitEx As DNET_EXPLICIT_EX

Dim ret As Long

‘ MAC ID が 2 のデバイスに対して

‘ Explicit メッセージ(リクエスト)を送信します。

dnetExplicitEx.MessageType = DNET_EXPLICIT_REQUEST

dnetExplicitEx.MacID = 2

dnetExplicitEx.ServiceCode = &HE

dnetExplicitEx.ClassID = 5

dnetExplicitEx.InstanceID = 2

dnetExplicitEx.Length = 1

dnetExplicitEx.Data(0) = 9

‘ 送信メッセージのセット

ret = DnetSendExplicitEx(deviceHandle, dnetExplicitEx)

Page 91: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

90

●Delphi

var

dnetExplicitEx: DNET_EXPLICIT_EX;

ret: ULONG;

// MAC ID が 2 のデバイスに対して

// Explicit メッセージ(リクエスト)を送信します。

dnetExplicitEx.MessageType := DNET_EXPLICIT_REQUEST;

dnetExplicitEx.MacID := 2;

dnetExplicitEx.ServiceCode := $E;

dnetExplicitEx.ClassID := 5;

dnetExplicitEx.InstanceID := 2;

dnetExplicitEx.Length := 1;

dnetExplicitEx.Data[0] := 9;

// 送信メッセージのセット

ret := DnetSendExplicitEx(deviceHandle, dnetExplicitEx);

Explicit メッセージを送信します。

Page 92: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

91

25. DnetReceiveExplicit

【機能】

受信した Explicit メッセージを取り出します。

本関数では最大 256byteまでのメッセージを取り出せます。受信したメッセージが 256byteより

大きい場合は DnetReceiveExplicitEx関数を使用してください。

【書式】

●C言語

ULONG DnetReceiveExplicit(

HANDLE deviceHandle,

PDNET_EXPLICIT dnetExplicit

);

●Visual Basic

Declare Function DnetReceiveExplicit Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef dnetExplicit As DNET_EXPLICIT

) As Long

●Delphi

function DnetReceiveExplicit(

deviceHandle: THandle;

var dnetExplicit: DNET_EXPLICIT

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

dnetExplicit 受信メッセージを格納する DNET_EXPLICIT構造体を指定して下さい。

関数が正常終了すると、受信メッセージが DNET_EXPLICIT構造体に格納されます。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

デバイス内の受信バッファから、受信メッセージを取り出します。

一度もメッセージを受信していない状態で本関数を呼び出すと、IFDNET_ERROR_NO_DATA を返し

エラー終了します。

一度でもメッセージを受信すると、メッセージが更新されるまで同じメッセージを取得できま

す。

動作モードをマスタモード+Explicit メッセージバッファ拡張に設定した場合、Explicit メッ

セージをスレーブ毎に受信できます。

Page 93: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

92

通常は、次のように送信と受信を交互に受信する必要があります。

スレーブ①への送信→スレーブ①からの受信→スレーブ②への送信→スレーブ②からの受信

→スレーブ③への送信→スレーブ③からの受信

バッファ拡張を行うと、各スレーブへの連続送信と受信ができます。

スレーブ①への送信→スレーブ②への送信→スレーブ③への送信→スレーブ①からの受信→

スレーブ②からの受信→スレーブ③からの受信

但し、どちらの場合でも同一スレーブへの連続送信はできません。連続送信した場合には、最

新の受信データしか取得できません。

受信しているメッセージが 256byte より大きい場合に、本関数を実行するとメッセージの

256byte 目まで取得できますが、257byte 目以降のデータは取得できません。

【使用例】

●C言語

DNET_EXPLICIT dnetExplicit;

// 受信メッセージの取り出し

ret = DnetReceiveExplicit(deviceHandle, &dnetExplicit);

// 動作モードをマスタモード+Explicit メッセージバッファ拡張に設定した場合

// MAC ID が 1 のスレーブからの受信メッセージの取り出し

dnetExplicit.MacID = 1;

ret = DnetReceiveExplicit(deviceHandle, &dnetExplicit);

●Visual Basic

Dim dnetExplicit As DNET_EXPLICIT

‘ 受信メッセージの取り出し

ret = DnetReceiveExplicit(deviceHandle, dnetExplicit)

‘ 動作モードをマスタモード+Explicit メッセージバッファ拡張に設定した場合

‘ MAC ID が 1 のスレーブからの受信メッセージの取り出し

dnetExplicit.MacID = 1

ret = DnetReceiveExplicit(deviceHandle, dnetExplicit)

●Delphi

var

dnetExplicit: DNET_EXPLICIT;

// 受信メッセージの取り出し

ret := DnetReceiveExplicit(deviceHandle, dnetExplicit);

// 動作モードをマスタモード+Explicit メッセージバッファ拡張に設定した場合

// MAC ID が 1 のスレーブからの受信メッセージの取り出し

dnetExplicit.MacID := 1;

ret := DnetReceiveExplicit(deviceHandle, &dnetExplicit);

Explicit 受信メッセージを取得します。

Page 94: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

93

26. DnetReceiveExplicitEx

【機能】

受信した Explicit メッセージを取り出します。

本関数では最大 512byte までのメッセージを取り出せます。

【書式】

●C言語

ULONG DnetReceiveExplicitEx(

HANDLE deviceHandle,

PDNET_EXPLICIT_EX dnetExplicitEx

);

●Visual Basic

Declare Function DnetReceiveExplicitEx Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef dnetExplicitEx As DNET_EXPLICIT_EX

) As Long

●Delphi

function DnetReceiveExplicitEx(

deviceHandle: THandle;

var dnetExplicitEx: DNET_EXPLICIT_EX

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

dnetExplicitEx 受信メッセージを格納する DNET_EXPLICIT_EX構造体を指定して下さい。

関数が正常終了すると、受信メッセージが DNET_EXPLICIT_EX構造体に格納されます。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

デバイス内の受信バッファから、受信メッセージを取り出します。

一度もメッセージを受信していない状態で本関数を呼び出すと、IFDNET_ERROR_NO_DATA を返し

エラー終了します。

一度でもメッセージを受信すると、メッセージが更新されるまで同じメッセージを取得できま

す。

動作モードをマスタモード+Explicit メッセージバッファ拡張に設定した場合、Explicit メッ

セージをスレーブ毎に受信できます。

Page 95: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

94

通常は、次のように送信と受信を交互に受信する必要があります。

スレーブ①への送信→スレーブ①からの受信→スレーブ②への送信→スレーブ②からの受信

→スレーブ③への送信→スレーブ③からの受信

バッファ拡張を行うと、各スレーブへの連続送信と受信ができます。

スレーブ①への送信→スレーブ②への送信→スレーブ③への送信→スレーブ①からの受信→

スレーブ②からの受信→スレーブ③からの受信

但し、どちらの場合でも同一スレーブへの連続送信はできません。連続送信した場合には、最

新の受信データしか取得できません。

本関数は、使用する製品の版数とチェンジナンバーにより使用できないことがあります。

以下の製品で本関数を使用することができます。版数とチェンジナンバーについては『4.5 製

品の版数、チェンジナンバーについて』をご参照ください。

・ PCI-487101PQ[12]C10 以降の製品

・ CTP-487101PQ[12]C02 以降の製品

・ CPZ-487101PQ[12]C01 以降の製品

【使用例】

●C言語

DNET_EXPLICIT_EX dnetExplicitEx;

// 受信メッセージの取り出し

ret = DnetReceiveExplicitEx(deviceHandle, &dnetExplicitEx);

// 動作モードをマスタモード+Explicit メッセージバッファ拡張に設定した場合

// MAC ID が 1 のスレーブからの受信メッセージの取り出し

dnetExplicitEx.MacID = 1;

ret = DnetReceiveExplicitEx(deviceHandle, &dnetExplicitEx);

●Visual Basic

Dim dnetExplicitEx As DNET_EXPLICIT_EX

‘ 受信メッセージの取り出し

ret = DnetReceiveExplicitEx(deviceHandle, dnetExplicitEx)

‘ 動作モードをマスタモード+Explicit メッセージバッファ拡張に設定した場合

‘ MAC ID が 1 のスレーブからの受信メッセージの取り出し

dnetExplicitEx.MacID = 1

ret = DnetReceiveExplicitEx(deviceHandle, dnetExplicitEx)

Page 96: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

95

●Delphi

var

dnetExplicitEx: DNET_EXPLICIT_EX;

// 受信メッセージの取り出し

ret := DnetReceiveExplicitEx(deviceHandle, dnetExplicitEx);

// 動作モードをマスタモード+Explicit メッセージバッファ拡張に設定した場合

// MAC ID が 1 のスレーブからの受信メッセージの取り出し

dnetExplicitEx.MacID := 1;

ret := DnetReceiveExplicitEx(deviceHandle, &dnetExplicitEx);

Explicit 受信メッセージを取得します。

Page 97: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

96

27. DnetGetAccumulatedMessage

【機能】

蓄積型受信バッファから受信メッセージを取り出します。

本関数では最大 256byteまでのメッセージを取り出せます。受信したメッセージが 256byteより

大きい場合は DnetGetAccumulatedMessageEx関数を使用してください。

【書式】

●C言語

ULONG DnetGetAccumulatedMessage(

HANDLE deviceHandle,

PDNET_MESSAGE dnetMessage,

PULONG count

);

●Visual Basic

Declare Function DnetGetAccumulatedMessage Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef dnetMessage As DNET_MESSAGE,

ByRef count As Long

) As Long

●Delphi

function DnetGetAccumulatedMessage(

deviceHandle: THandle;

var dnetMessage: DNET_MESSAGE;

var count: ULONG

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

dnetMessage 取得する受信メッセージを格納する DNET_MESSAGE構造体を指定してください。

countで指定したメッセージ数分だけの領域を確保して下さい。

count 取得したいメッセージ数を格納した変数を指定します。

関数が正常終了すると、実際に取得できたメッセージ数が格納されます。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 98: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

97

【備考】

通常のデバイス上の受信バッファとは別に、全 I/O メッセージを格納する蓄積型受信バッファ

が存在します。その蓄積型受信バッファからメッセージを取り出します。

蓄えられた I/O メッセージが無い場合、戻り値で、IFDNET_ERROR_NO_DATA が返されます。

受信メッセージがあるかどうかは、DnetGetPortStatus関数で蓄積型受信バッファの状態を見る

ことで確認できます。

また、DnetSetEvent関数/DnetSetEventMask関数でイベントを設定することで、バッファが空の

状態でメッセージを受信した時点と、メッセージを受信してバッファに空きが無くなった時点

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

受信しているメッセージが 256byte より大きい場合に、本関数を実行するとメッセージの

256byte 目まで取得できますが、257byte 目以降のデータは取得できません。

【使用例】

●C言語

DNET_MESSAGE dnetMessage[10];

ULONG count, ret;

// 受信メッセージの取り出し

count = 10;

ret = DnetGetAccumulatedMessage(deviceHandle, &dnetMessage[0], &count);

●Visual Basic

Dim dnetMessage(0 To 9) As DNET_MESSAGE

Dim count As Long

Dim ret As Long

‘ 受信メッセージの取り出し

count = 10

ret = DnetGetAccumulatedMessage(deviceHandle, dnetMessage(0), count)

●Delphi

var

dnetMessage; array[0..9] of DNET_MESSAGE;

count: ULONG;

ret: ULONG;

// 受信メッセージの取り出し

count := 10;

ret := DnetGetAccumulatedMessage(deviceHandle, dnetMessage[0], count);

蓄積型受信バッファから 10 個のメッセージを取り出します。

Page 99: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

98

28. DnetGetAccumulatedMessageEx

【機能】

蓄積型受信バッファから受信メッセージを取り出します。

本関数では最大 512byte までのメッセージを取り出せます。

【書式】

●C言語

ULONG DnetGetAccumulatedMessageEx(

HANDLE deviceHandle,

PDNET_MESSAGE_EX dnetMessageEx,

PULONG count

);

●Visual Basic

Declare Function DnetGetAccumulatedMessageEx Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef dnetMessageEx As DNET_MESSAGE_EX,

ByRef count As Long

) As Long

●Delphi

function DnetGetAccumulatedMessageEx(

deviceHandle: THandle;

var dnetMessageEx: DNET_MESSAGE_EX;

var count: ULONG

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

dnetMessageEx 取得する受信メッセージを格納する DNET_MESSAGE_EX構造体を指定してください。

countで指定したメッセージ数分だけの領域を確保して下さい。

count 取得したいメッセージ数を格納した変数を指定します。

関数が正常終了すると、実際に取得できたメッセージ数が格納されます。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 100: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

99

【備考】

通常のデバイス上の受信バッファとは別に、全 I/O メッセージを格納する蓄積型受信バッファ

が存在します。その蓄積型受信バッファからメッセージを取り出します。

蓄えられたI/Oメッセージが無い場合、戻り値で、IFDNET_ERROR_NO_DATAが返されます。受信メ

ッセージがあるかどうかは、DnetGetPortStatus関数で蓄積型受信バッファの状態を見ることで

確認できます。

また、DnetSetEvent関数/DnetSetEventMask関数でイベントを設定することで、バッファが空の

状態でメッセージを受信した時点と、メッセージを受信してバッファに空きが無くなった時点

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

本関数は、使用する製品の版数とチェンジナンバーにより使用できないことがあります。

以下の製品で本関数を使用することができます。版数とチェンジナンバーについては『4.5 製

品の版数、チェンジナンバーについて』をご参照ください。

・ PCI-487101PQ[12]C10 以降の製品

・ CTP-487101PQ[12]C02 以降の製品

・ CPZ-487101PQ[12]C01 以降の製品

【使用例】

●C言語

DNET_MESSAGE_EX dnetMessageEx[10];

ULONG count, ret;

// 受信メッセージの取り出し

count = 10;

ret = DnetGetAccumulatedMessageEx(deviceHandle, &dnetMessageEx[0], &count);

●Visual Basic

Dim dnetMessageEx(0 To 9) As DNET_MESSAGE_EX

Dim count As Long

Dim ret As Long

‘ 受信メッセージの取り出し

count = 10

ret = DnetGetAccumulatedMessageEx(deviceHandle, dnetMessageEx(0), count)

●Delphi

var

dnetMessageEx; array[0..9] of DNET_MESSAGE_EX;

count: ULONG;

ret: ULONG;

// 受信メッセージの取り出し

count := 10;

ret := DnetGetAccumulatedMessageEx(deviceHandle, dnetMessageEx[0], count);

蓄積型受信バッファから 10 個のメッセージを取り出します。

Page 101: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

100

29. DnetGetPortStatus

【機能】

DeviceNet インタフェースの現在の状態を取得します。

【書式】

●C言語

ULONG DnetGetStatus(

HANDLE deviceHandle,

PDNET_PORT_STATUS portStatus

);

●Visual Basic

Declare Function DnetGetPortStatus Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef portStatus As DNET_PORT_STATUS

) As Long

●Delphi

function DnetGetPortStatus(

deviceHandle: THandle;

var portStatus: DNET_PORT_STATUS

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

portStatus ステータス情報を格納する DNET_PORT_STATUS構造体を指定してください。

詳細は『4.3 構造体説明』をご覧下さい。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

HANDLE deviceHandle;

DNET_PORT_STATUS status;

ULONG ret;

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetGetPortStatus(deviceHandle, &status);

Page 102: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

101

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

Dim ret As Long

Dim status As DNET_PORT_STATUS

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

:

:

ret = DnetGetPortStatus(deviceHandle, status)

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

status: DNET_PORT_STATUS;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

ret := DnetGetPortStatus(deviceHandle, status);

デバイス名「IFDNET1」のデバイスのステータスを取得します。

Page 103: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

102

30. DnetGetSlaveStatus

【機能】

接続されたスレーブデバイスの現在の状態を取得します。

【書式】

●C言語

ULONG DnetGetSlaveStatus(

HANDLE deviceHandle,

ULONG macID,

PDNET_SLAVE_STATUS slaveStatus

);

●Visual Basic

Declare Function DnetGetSlaveStatus Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByVal macID As Byte,

ByRef slaveStatus As DNET_SLAVE_STATUS

) As Long

●Delphi

function DnetGetSlaveStatus(

deviceHandle: THandle;

macID: BYTE;

var slaveStatus: DNET_SLAVE_STATUS

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

macID 取得したいスレーブデバイスのMAC IDを指定してください。

自ポートのMAC IDを指定した場合、接続されている全スレーブデバイスの情報を取得する

ことができます。この場合、slaveStatusには DNET_SLAVE_STATUS構造体 64 個分の領域を確

保してください。

slaveStatus スレーブステータス情報を格納する DNET_SLAVE_STATUS構造体を指定してください。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

本関数は自ポートがマスタモードの時のみ使用できます。

Page 104: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

103

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

DNET_SLAVE_STATUS slaveStatus[64];

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetGetSlaveStatus(deviceHandle, 0, &SlaveStatus[0]);

●Visual Basic

Dim ret As Long

Dim deviceHandle As Long

Dim deviceName As String

Dim slaveStatus(0 To 63) As DNET_SLAVE_STATUS

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

ret = DnetGetSlaveStatus(deviceHandle, 0, SlaveStatus(0))

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

slaveStatus: array[0..63] ofDNET_SLAVE_STATUS;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

:

ret := DnetGetSlaveStatus(deviceHandle, 0, SlaveStatus[0]);

デバイス名「IFDNET1」のデバイスの自ポートの MAC ID を指定することにより、接続されてい

る全スレーブステータスの情報を取得します。

Page 105: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

104

31. DnetGetErrorEvent

【機能】

エラー情報バッファに蓄えられたエラー情報を取得します。

【書式】

●C言語

INT DnetGetErrorEvent(

HANDLE deviceHandle,

PDNET_ERROR dnetError,

PULONG count

);

●Visual Basic

Declare Function DnetGetErrorEvent Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef dnetError As DNET_ERROR,

ByRef count As Long

) As Long

●Delphi

function DnetGetErrorEvent(

deviceHandle: THandle;

var dnetError: DNET_ERROR;

var count: ULONG

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

dnetError エラー情報を格納する DNET_ERROR構造体を指定します。

詳細は『4.3 構造体説明』をご参照ください。

count エラー情報バッファから取り出すエラー情報の件数を指定してください。

関数正常終了時、実際に取得できたエラー情報件数が格納されます。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

何個のエラー情報が蓄えられているかは、DnetGetPortStatus関数で取得することができます。

Page 106: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

105

【使用例】

●C言語

DNET_ERROR dnetError;

ULONG count, ret;

count = 1;

// エラー情報の取得

ret = DnetGetErrorEvent(deviceHandle, &dnetError, &count);

●Visual Basic

Dim dnetError As DNET_ERROR

Dim count As Long

Dim ret As Long

count = 1

‘ エラー情報の取得

ret = DnetGetErrorEvent(deviceHandle, dnetError, count)

●Delphi

var

dnetError: DNET_ERROR;

count: ULONG;

ret: ULONG;

count := 1;

// エラー情報の取得

ret := DnetGetErrorEvent(deviceHandle, dnetError, count);

1 件のイベント情報を取得します。

Page 107: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

106

32. DnetClearBuffer

【機能】

指定したバッファをクリアします。

また、タイマカウンタをクリアする場合も本関数を使用します。

【書式】

●C言語

ULONG DnetClearBuffer(

HANDLE deviceHandle,

DWORD clearBuffer

);

●Visual Basic

Declare Function DnetClearBuffer Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByVal clearBuffer As Long

) As Long

●Delphi

function DnetClearBuffer(

deviceHandle: THandle;

clearBuffer: ULONG

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

clearBuffer クリアするバッファを指定します。複数のバッファを OR で指定できます。

識別子 値 内容

DNET_CLEAR_RXB 00000002h 蓄積型受信バッファをクリアします。

DNET_CLEAR_TIMERCOUNTER 00000001h 内部カウンタをクリアします。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 108: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

107

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetClearBuffer(deviceHandle, DNET_CLEAR_RXB);

●Visual Basic

Dim deviceHandle As Long

Dim deviceName As String

Dim ret As Long

deviceName = “IFDNET1” & Char(0) deviceHandle = DnetOpenPort(deviceName)

:

ret = DnetClearBuffer(deviceHandle, DNET_CLEAR_RXB)

●Delphi

var

deviceName: String;

deviceHandle: Thandle;

ret: ULONG;

deviceName := ‘IFDNET1’; deviceHandle := DnetOpenPort(deviceName);

:

ret := DnetClearBuffer(deviceHandle, DNET_CLEAR_RXB);

デバイス名「IFDNET1」のデバイスの蓄積型受信バッファをクリアします。

Page 109: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

108

33. DnetGetNetworkPower

【機能】

ネットワーク電源電圧値を取得します。

また、ネットワーク電源電圧下限イベント、ネットワーク電源電圧上限イベントが発生後に、

再度ネットワーク電源電圧下限イベント、ネットワーク電源電圧上限イベントを発生させるた

めに本関数を呼び出す必要があります。

【書式】

●C言語

ULONG DnetPowerGetNetworkPower (

HANDLE deviceHandle,

float* networkPower

);

●Visual Basic

Declare Function DnetGetNetworkPower Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef networkPower As Single

) As Long

●Delphi

function DnetGetNetworkPower(

deviceHandle: THandle;

var networkPower: Single

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

networkPower 現在のネットワーク電源電圧値を取得します。

取得できる範囲は 0.5[V]~25.7[V]ですが、実際のネットワーク電源電圧が 0.5[V]より小

さい場合は、全て 0.5[V]として取得されます。また、実際のネットワーク電源電圧が 25.7[V]

以上の場合は、全て 25.7[V]として取得されます。誤差は±0.5[V]です。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【注意事項】

DNET_EVENT_POWER_UPPER イベントと、DNET_EVENT_POWER_LOWER イベントは一度発生すると、本

関数を呼び出すまでは次のイベントは発生しません。例えば、DNET_EVENT_POWER_UPPER イベン

トが発生後、本関数を呼び出すまでは DNET_EVENT_POWER_LOWER イベントも発生しません。

イベント発生後、本関数を呼び出すと、再度 DNET_EVENT_POWER_UPPER イベントと、

DNET_EVENT_POWER_LOWER イベントが発生するようになります。

Page 110: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

109

【使用例】

●C言語

ULONG ret;

float networkPower;

ret = DnetGetNetworkPower(deviceHandle, &networkPower);

●Visual Basic

Dim ret As Long

Dim networkPower As Single

ret = DnetGetNetworkPower(deviceHandle, networkPower)

●Delphi

var

ret: ULONG;

networkPower: Single;

ret := DnetGetNetworkPower(deviceHandle, networkPower);

ネットワーク電源モジュールからネットワーク電源電圧値を取得します。

Page 111: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

110

34. DnetSetEvent

【機能】

割り込み(イベント/メッセージ/コールバック関数)の設定を行います。

【書式】

●C言語

ULONG DnetSetEvent(

HANDLE deviceHandle,

PDNET_EVENT_REQ eventReq

);

●Visual Basic

Declare Function DnetSetEvent Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef eventReq As DNET_EVENT_REQ

) As Long

●Delphi

function DnetSetEvent(

deviceHandle: THandle;

var eventReq: DNET_EVENT_REQ

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

eventReq 割り込み発生時に呼び出されるコールバック関数、メッセージ等の設定を行う

DNET_EVENT_REQ構造体を指定します。

詳細は『4.3 構造体説明』をご参照ください。

【戻り値】

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

DNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照ください。

Page 112: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

111

【備考】

●コールバック関数の書式

コールバック関数の書式は以下のとおりです。関数名(ここでは lpCallBack)は任意です。

VOID CALLBACK lpCallBack(

DWORD event, // コールバック関数発生要因

DWORD user // ユーザデータ

};

【パラメータ】

event コールバック関数発生要因です。

コールバック関数が発生した要因が渡されます。

識別子 値 内容

DNET_EVENT_RECV_EXP 02000000h Explicit メッセージを受信しました。

DNET_EVENT_RECV_IO 01000000h I/O メッセージを受信しました。

DNET_EVENT_POWER_UPPER 00020000h ネットワーク電源電圧値が上限値を上回りました。

DNET_EVENT_POWER_LOWER 00010000h ネットワーク電源電圧値が下限値を下回りました。

DNET_EVENT_COMPLETE 00008000h メッセージの送信が完了しました。

DNET_EVENT_STATUS 00004000h DeviceNet インタフェースの状態が遷移しました。

内容に応じて処理を行ってください。

DNET_EVENT_RECV 00001000h 蓄積型受信バッファに 1 つ以上の受信メッセージが

蓄えられました。

DNET_EVENT_ERROR 00000800h エラーバッファに 1 つ以上のエラーが蓄えられまし

た。

DNET_EVENT_RXB_FULL 00000200h 蓄積型受信バッファがいっぱいになりました。

DNET_EVENT_ERB_FULL 00000100h エラーバッファがいっぱいになりました。

また、コールバック発生要因と共に、発生した要因となるデバイスの MAC ID が下位 6ビッ

トに格納されます。例えば、自身の MAC ID が 3 で、DeviceNet インタフェースの状態が遷

移した場合は、event の値が 00004003h となります。

I/O メッセージの受信に関するイベントには、上位 4ビットにメッセージの種類が格納され

ます。

識別子 値 内容

DNET_EVENT_CYCLIC 80000000h Cyclic メッセージ

DNET_EVENT_COS 40000000h Change of State メッセージ

DNET_EVENT_BITSTROBE 20000000h BitStrobe メッセージ

DNET_EVENT_POLL 10000000h Poll メッセージ

user 割り込み設定時に指定したユーザデータです。

また、メッセージ機能を使用する場合、メッセージハンドラの WPARAM には event が、LPARAM

には user が渡されます。

Page 113: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

112

【注意事項】

DNET_EVENT_POWER_UPPERイベントと、DNET_EVENT_POWER_LOWERイベントは一度発生すると、

DnetGetNetworkPower関数を呼び出すまでは次のイベントは発生しません。例えば、

DNET_EVENT_POWER_UPPERイベントが発生後、DnetGetNetworkPower関数を呼び出すまでは

DNET_EVENT_POWER_LOWERイベントも発生しません。

イベント発生後、DnetGetNetworkPower関数を呼び出すと、再度DNET_EVENT_POWER_UPPERイベン

トと、DNET_EVENT_POWER_LOWERイベントが発生するようになります。

【使用例】

●C 言語

// コールバック関数

VOID CALLBACK EventProc(DWORD event, DWORD user)

{

// 割り込み処理を記述します

・・・

}

・・・

// メインルーチン

DWORD eventMask;

DNET_EVENT_REQ eventReq;

// メッセージ受信時に割り込みが発生するようにマスクを設定します

eventMask = DNET_EVENT_RECV;

ret = DnetSetEventMask(deviceHandle, eventMask);

eventReq.Wnd = NULL;// メッセージは使用しません

eventReq.InterruptMsg = WM_NULL; // メッセージは使用しません

eventReq.CallBackProc = (LPDNETCALLBACK)lpEventProc;

eventReq.InterruptEvent = NULL; // イベントは使用しません

eventReq.UserData = 0x1234;

ret = DnetSetEvent(deviceHandle, &eventReq);

Page 114: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

113

●Visual Basic

コールバックルーチンは DnetSetEvent 関数の呼び出しを行うプロジェクト内の標準モジュー

ルの中に記述しなければなりません。

DnetSetEvent 関数の引数パラメータでプロシージャのアドレスを渡す為に AddressOf 演算子

を使用します。

AddressOf 演算子を使うと、プロシージャからの戻り値ではなく、プロシージャ自体のアドレ

スが、ダイナミック リンク ライブラリ (DLL)の DnetSetEvent 関数に渡されます。

‘ コールバックルーチン

Sub EventProc(event As Long, userData As Long)

‘ 割り込み処理を記述します

End Sub

‘ コールバックルーチンのアドレス変換用関数

Function Trans(Proc As Long) As Long

Trans = Proc

End Function

‘ メインルーチン

Dim deviceName As String

Dim deviceHandle As Long

Dim eventReq As DNET_EVENT_REQ

Dim eventMask As Long

deviceName = "IFDNET1" & Chr( 0 )

deviceHandle = DnetOpenPort(deviceName)

eventMask = DNET_EVENT_RECV;

ret = DnetSetEventMask(deviceHandle, eventMask)

eventReq.Wnd = 0

eventReq.InterruptEvent = 0

eventReq.CallBackProc = Trans(AddressOf EventProc)

eventReq.InterruptMsg = 0

eventReq.UserData = &H1234

ret = DnetSetEvent(deviceHandle, eventReq)

Page 115: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

114

●Delphi

// コールバック関数

procedure EventProc(event: DWORD, userData: DWORD);

var

//変数定義

begin

// 割り込み処理を記述します

:

:

end;

// メインルーチン

var

deviceName: String;

deviceHandle: THandle;

event: DNET_EVENT_REQ;

eventMask: DWORD;

ret: Integer;

deviceName := 'IFDNET1';

deviceHandle := DnetOpenPort(deviceName);

eventMask := DNET_EVENT_RECV;

ret := DnetSetEventMask(deviceHandle, eventMask);

event.Wnd := 0;

event.InterruptEvent := 0;

event.CallBackProc := Addr(EventProc);

event.InterruptMsg := WM_NULL;

event.UserData := $1234;

ret := DnetSetEvent(deviceHandle, event);

メッセージ受信時にコールバック関数が呼び出されるように設定します。

Page 116: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

115

35. DnetSetEventMask

【機能】

割り込みのマスク設定を行います。

【書式】

●C言語

ULONG DnetSetEventMask(

HANDLE deviceHandle,

DWORD eventMask

);

●Visual Basic

Declare Function DnetSetEventMask Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByVal eventMask As Long

) As Long

●Delphi

function DnetSetEventMask(

deviceHandle: THandle;

eventMask: ULONG

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

eventMask 許可する割り込み要因をセットします。下記に示す識別子を指定すると、その割り込みが

発生するようになります。

識別子 値 内容

DNET_EVENT_RECV_EXP 02000000h Explicit メッセージを受信しました。

DNET_EVENT_RECV_IO 01000000h I/O メッセージを受信しました。

DNET_EVENT_POWER_UPPER 00020000h ネットワーク電源電圧値が上限値を上回りました。

DNET_EVENT_POWER_LOWER 00010000h ネットワーク電源電圧値が下限値を下回りました。

DNET_EVENT_COMPLETE 00008000h メッセージの送信が完了しました。

DNET_EVENT_STATUS 00004000h DeviceNet インタフェースの状態が遷移しました。

内容に応じて処理を行ってください。

DNET_EVENT_RECV 00001000h 蓄積型受信バッファに 1 つ以上の受信メッセージが

蓄えられました。

DNET_EVENT_ERROR 00000800h エラーバッファに 1 つ以上のエラーが蓄えられまし

た。

DNET_EVENT_RXB_FULL 00000200h 蓄積型受信バッファがいっぱいになりました。

DNET_EVENT_ERB_FULL 00000100h エラーバッファがいっぱいになりました。

Page 117: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

116

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetSetEventMask(deviceHandle, DNET_EVENT_RECV_IO);

●Visual Basic

Dim deviceName As String

Dim deviceHandle As Long

deviceName = "IFDNET1" & Chr( 0 )

deviceHandle = DnetOpenPort(deviceName)

ret = DnetSetEventMask(deviceHandle, DNET_EVENT_RECV_IO)

●Delphi

var

deviceName: String;

deviceHandle: THandle;

ret: Integer;

deviceName := 'IFDNET1';

deviceHandle := DnetOpenPort(deviceName);

ret := DnetSetEventMask(deviceHandle, DNET_EVENT_RECV_IO);

デバイス名「IFDNET1」のデバイスの I/O メッセージ受信割り込みを許可します。

Page 118: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

117

36. DnetGetEventMask

【機能】

割り込みのマスク値を取得します。

【書式】

●C言語

ULONG DnetGetEventMask(

HANDLE deviceHandle,

PDWORD eventMask

);

●Visual Basic

Declare Function DnetGetEventMask Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByRef eventMask As Long

) As Long

●Delphi

function DnetGetEventMask(

deviceHandle: THandle;

var eventMask: ULONG

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

eventMask 現在設定されている割り込みマスク値が返されます。

識別子 値 内容

DNET_EVENT_RECV_EXP 02000000h Explicit メッセージを受信しました。

DNET_EVENT_RECV_IO 01000000h I/O メッセージを受信しました。

DNET_EVENT_POWER_UPPER 00020000h ネットワーク電源電圧値が上限値を上回りました。

DNET_EVENT_POWER_LOWER 00010000h ネットワーク電源電圧値が下限値を下回りました。

DNET_EVENT_COMPLETE 00008000h メッセージの送信が完了しました。

DNET_EVENT_STATUS 00004000h DeviceNet インタフェースの状態が遷移しました。

内容に応じて処理を行ってください。

DNET_EVENT_RECV 00001000h 蓄積型受信バッファに 1 つ以上の受信メッセージが

蓄えられました。

DNET_EVENT_ERROR 00000800h エラーバッファに 1 つ以上のエラーが蓄えられまし

た。

DNET_EVENT_RXB_FULL 00000200h 蓄積型受信バッファがいっぱいになりました。

DNET_EVENT_ERB_FULL 00000100h エラーバッファがいっぱいになりました。

Page 119: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

118

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

DWORD eventMask;

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetGetEventMask(deviceHandle, &eventMask);

●Visual Basic

Dim deviceName As String

Dim deviceHandle As Long

Dim eventMask As Long

deviceName = "IFDNET1" & Chr( 0 )

deviceHandle = DnetOpenPort(deviceName)

ret = DnetGetEventMask(deviceHandle, eventMask)

●Delphi

var

deviceName: String;

deviceHandle: THandle;

eventMask: DWORD;

ret: Integer;

deviceName := 'IFDNET1';

deviceHandle := DnetOpenPort(deviceName);

ret := DnetGetEventMask(deviceHandle, eventMask);

デバイス名「IFDNET1」の割り込みマスク値を取得します。

Page 120: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

119

37. DnetKillEvent

【機能】

割り込み発生時に起動するイベント/メッセージ/コールバック関数の解除を行います。

【書式】

●C言語

ULONG DnetKillEvent(

HANDLE deviceHandle

);

●Visual Basic

Declare Function DnetKillEvent Lib "IFDnet.DLL" (

ByVal deviceHandle As Long

) As Long

●Delphi

function DnetKillEvent(

deviceHandle: Thandle

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

ULONG ret;

HANDLE deviceHandle;

deviceHandle = DnetOpenPort(“IFDNET1”); :

ret = DnetKillEvent(deviceHandle);

Page 121: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

120

●Visual Basic

Dim deviceName As String

Dim deviceHandle As Long

deviceName = "IFDNET1" & Chr( 0 )

deviceHandle = DnetOpenPort(deviceName)

ret = DnetKillEvent(deviceHandle)

●Delphi

deviceName: String;

deviceHandle: THandle;

ret: Integer;

deviceName := 'IFDNET1';

deviceHandle := DnetOpenPort(deviceName);

ret := DnetKillEvent(deviceHandle);

デバイス名「IFDNET1」のデバイスの割り込みを解除します。

Page 122: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

121

38. DnetSetDeviceList

【機能】

他ポート情報をデバイスリストに登録します。

【書式】

●C言語

ULONG DnetSetDeviceList(

HANDLE deviceHandle,

ULONG macID,

PDNET_DEVICE_CONFIG deviceConfig

);

●Visual Basic

Declare Function DnetSetDeviceList Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByVal macID As Byte,

ByRef deviceConfig As DNET_DEVICE_CONFIG

) As Long

●Delphi

function DnetSetDeviceList(

deviceHandle: THandle;

macID: BYTE;

var deviceConfig: DNET_DEVICE_CONFIG

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

macID 登録するデバイスの MAC ID を指定します。0~63 の範囲で指定してください。

deviceConfig デバイスの通信情報を設定する DNET_DEVICE_CONFIG構造体を指定します。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

Page 123: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

122

【備考】

登録しようとしているデバイスと同じMAC IDのデバイスが既にデバイスリストに登録されてい

る場合、または自ポートと同じ MAC ID を指定しようとした場合、エラーとなります。

同じMAC IDのデバイスが既に登録されている場合は、DnetDeleteDeviceList関数で一旦デバイ

ス通信情報を削除してから、再度登録を行ってください。

また、設定したデバイスリスト情報は、DnetSaveNetInfo関数により、デバイス内部の不揮発メ

モリに保存することができます。

DnetInitializeNetInfo関数を呼び出すとデバイスリストは出荷時設定(空のデバイスリスト)

に上書きされますのでご注意ください。

【使用例】

●C言語

DNET_DEVICE_CONFIG deviceConfig;

ULONG ret;

// MAC ID が 1 のデバイスに対する設定(Poll と COS 送信)を行います

deviceConfig.IOType = DNET_IO_POLL | DNET_OUT_COS;

deviceConfig.PollInterval = 0;

deviceConfig.PollTxSize = 16;

deviceConfig.PollRxSize = 16;

deviceConfig.CosTxSize = 8;

deviceConfig.CosRxSize = 0;

deviceConfig.CosInterval = 0;

ret = DnetSetDeviceList(deviceHandle, 1, &deviceConfig);

●Visual Basic

Dim deviceConfig As DNET_DEVICE_CONFIG

Dim ret As Long

‘ MAC ID が 1 のデバイスに対する設定(Poll と COS 送信)を行います

deviceConfig.IOType = DNET_IO_POLL Or DNET_OUT_COS

deviceConfig.PollInterval = 0

deviceConfig.PollTxSize = 16

deviceConfig.PollRxSize = 16

deviceConfig.CosTxSize = 8

deviceConfig.CosRxSize = 0

deviceConfig.CosInterval = 0

ret = DnetSetDeviceList(deviceHandle, 1, deviceConfig)

Page 124: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

123

●Delphi

var

deviceConfig: DNET_DEVICE_CONFIG;

ret: ULONG;

// MAC ID が 1 のデバイスに対する設定(Poll と COS 送信)を行います

deviceConfig.IOType := DNET_IO_POLL or DNET_OUT_COS;

deviceConfig.PollInterval := 0;

deviceConfig.PollTxSize := 16;

deviceConfig.PollRxSize := 16;

deviceConfig.CosTxSize := 8;

deviceConfig.CosRxSize := 0;

deviceConfig.CosInterval := 0;

ret := DnetSetDeviceList(deviceHandle, 1, deviceConfig);

MAC ID が 1 のデバイスの通信情報をデバイスリストに登録します。

Page 125: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

124

39. DnetGetDeviceList

【機能】

デバイスリストに登録されているデバイスの通信情報を取得します。

【書式】

●C言語

ULONG DnetGetDeviceList(

HANDLE deviceHandle,

ULONG macID,

PDNET_DEVICE_CONFIG deviceConfig

);

●Visual Basic

Declare Function DnetGetDeviceList Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByVal macID As Byte,

ByRef deviceConfig As DNET_DEVICE_CONFIG

) As Long

●Delphi

function DnetGetDeviceList(

deviceHandle: THandle;

macID: BYTE;

var deviceConfig: DNET_DEVICE_CONFIG

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

macID 通信情報を取得したいデバイスの MAC ID を指定します。

deviceConfig デバイス通信情報を格納する DNET_DEVICE_CONFIG構造体を指定します。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

本関数はデバイス通信情報を確認するほかに、デバイスリストにデバイス通信情報が登録され

ているかどうかも確認することができます。デバイスリストにデバイス通信情報が登録されて

いない場合は、IFDNET_ERROR_INVALID_MACID が返されます。

Page 126: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

125

【使用例】

●C言語

DNET_DEVICE_CONFIG deviceConfig;

ULONG ret;

ret = DnetGetDeviceList(deviceHandle, 1, &deviceConfig);

●Visual Basic

Dim deviceConfig As DNET_DEVICE_CONFIG

Dim ret As Long

ret = DnetGetDeviceList(deviceHandle, 1, deviceConfig)

●Delphi

var

deviceConfig: DNET_DEVICE_CONFIG;

ret: ULONG;

ret := DnetGetDeviceList(deviceHandle, 1, deviceConfig);

MAC ID が 1 のデバイスの通信情報をデバイスリストから取得します。

Page 127: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

126

40. DnetDeleteDeviceList

【機能】

デバイスリストに登録されている、指定 MAC ID のデバイス通信情報を削除します。

【書式】

●C言語

ULONG DnetDeleteDeviceList(

HANDLE deviceHandle,

ULONG macID

);

●Visual Basic

Declare Function DnetDeleteDeviceList Lib "IFDnet.DLL" (

ByVal deviceHandle As Long,

ByVal macID As Byte

) As Long

●Delphi

function DnetDeleteDeviceList(

deviceHandle: THandle;

macID: UCHAR

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

macID 通信情報を削除したいデバイスの MAC ID を指定します。自ポートの MAC ID を指定した場

合は、全ての通信情報を削除します。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

ULONG ret;

ret = DnetDeleteDeviceList(deviceHandle, 1);

●Visual Basic

Dim ret As Long

ret = DnetDeleteDeviceList(deviceHandle, 1)

Page 128: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

127

●Delphi

var

ret: ULONG;

ret := DnetDeleteDeviceList(deviceHandle, 1);

MAC ID が 1 のデバイスの通信情報を、デバイスリストから削除します。

Page 129: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

128

41. DnetSaveNetInfo

【機能】

現在設定している自ポート通信情報、およびデバイスリストをデバイス上の不揮発メモリに保

存します。

【書式】

●C言語

ULONG DnetSaveNetInfo(

HANDLE deviceHandle

);

●Visual Basic

Declare Function DnetSaveNetInfo Lib "IFDnet.DLL" (

ByVal deviceHandle As Long

) As Long

●Delphi

function DnetSaveNetInfo(

deviceHandle: Thandle

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【使用例】

●C言語

ULONG ret;

ret = DnetSaveNetInfo(deviceHandle);

●Visual Basic

Dim ret As Long

ret = DnetSaveNetInfo(deviceHandle)

●Delphi

var

ret: ULONG;

ret := DnetSaveNetInfo(deviceHandle);

自ポート情報、デバイスリスト情報を保存します。

Page 130: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

129

42. DnetInitializeNetInfo

【機能】

現在設定している自ポート情報、デバイスリストを、出荷時設定に戻します。

デバイス上の不揮発メモリ内の自ポート情報、デバイスリストを出荷時設定に戻したい場合は、

本関数を呼び出し後、DnetSaveNetInfo関数を呼び出して、出荷時設定を不揮発メモリに保存し

てください。

【書式】

●C言語

ULONG DnetInitializeNetInfo(

HANDLE deviceHandle

);

●Visual Basic

Declare Function DnetInitializeNetInfo Lib "IFDnet.DLL" (

ByVal deviceHandle As Long

) As Long

●Delphi

function DnetInitializeNetInfo(

deviceHandle: Thandle

): ULONG; stdcall; external 'IFDnet.DLL';

【パラメータ】

deviceHandle DnetOpenPort関数で取得したデバイスハンドルを指定してください。

【戻り値】

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

IFDNET_ERROR_SUCCESS以外の値が返された場合については、『4.4 戻り値一覧』をご参照くださ

い。

【備考】

本関数を実行すると、現在設定されている自ポート設定、およびデバイスリスト情報は破棄さ

れ、出荷時設定時の自ポート設定、およびデバイスリストが無い状態になります。

【使用例】

●C言語

ULONG ret;

ret = DnetInitializeNetInfo(deviceHandle);

●Visual Basic

Dim ret As Long

ret = DnetInitializeNetInfo(deviceHandle)

Page 131: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

130

●Delphi

var

ret: ULONG;

ret := DnetInitializeNetInfo(deviceHandle);

自ポート情報、デバイスリストを出荷時設定に戻します。

Page 132: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

131

4.3 構造体説明

4.3.1 DNET_PORT_CONFIG DnetSetConfig関数、DnetGetConfig関数で使用する自ポート情報設定構造体です。

typedef struct{

ULONG MacID;

ULONG Mode;

ULONG BaudRate;

ULONG HeartBeatCycle;

ULONG AccumulateRxBufferSize;

ULONG ErrorBufferSize;

ULONG OverWriteFlag;

DNET_DEVICE_CONFIG DeviceConfig;

} DNET_PORT_CONFIG, *PDNET_PORT_CONFIG;

メンバ 説明

MacID 自ポートの MAC ID を設定します。

デフォルトは 63 で、0~63 の値が使用できますが、デバイスリスト

に登録されているデバイスの MAC ID と重複する場合はエラーとなり

ます。

DnetInitializeNetInfo関数を実行すると出荷時設定に更新されま

す。

動作モードを指定します。

識別子 値 内容

DNET_MODE_MASTER 00000001h マスタモード。

DNET_MODE_SLAVE 00000002h スレーブモード。

DNET_MODE_MONITOR 00000004h モニタモード。

DNET_MODE_MASTER_EXB 80000001h マスタモード+Explicit メ

ッセージバッファ拡張

Mode

デフォルトはマスタモード(DNET_MODE_MASTER)です。

モニタモードに設定した場合、AccumulateRxBufferSize メンバによ

り、蓄積型受信バッファサイズを指定してください。

DnetInitializeNetInfo関数を実行すると出荷時設定に更新されま

す。

スレーブモードは Group 2 Only デバイスとなります。

マスタモード+Explicit メッセージバッファ拡張に設定すると、通

常1つしかない Explicit メッセージの受信バッファが、各スレーブ

毎に1つづつ割り当てられるようになります。

Page 133: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

132

通信速度を選択します。

識別子 値 内容

DNET_BAUDRATE_500K 00000127h 500kbps

DNET_BAUDRATE_250K 0000023Ah 250kbps

DNET_BAUDRATE_125K 0000053Ah 125kbps

BaudRate

デフォルトは 125kbps です。

DnetInitializeNetInfo関数を実行すると出荷時設定に更新されま

す。

HeartBeatCycle HeartBeat メッセージの送信間隔を指定します。

単位は sです。

デフォルトは 0(HeartBeat メッセージを使用しません)です。

DnetInitializeNetInfo関数を実行すると出荷時設定に更新されま

す。

AccumulateRxBufferSize 蓄積型受信バッファサイズです。

メッセージ数を指定してください。

デフォルトは 0(蓄積型受信バッファを使用しません)です。

ErrorBufferSize イベントバッファサイズです。

イベント件数を指定してください。

デフォルトは 64 です。

64 以上を指定してください。

デバイス上の受信バッファの上書きの有無を指定します。デバイス上

の受信バッファには、Poll、Bit Strobe、COS/Cyclicの 3 種類のバッ

ファがありますが、それぞれのバッファを、メッセージを受信するご

とに上書きするか、メッセージを受信後、DnetGetInputIO関数でメッ

セージを取り出さない限り上書きされないようにするかを設定しま

す。

識別子 値 内容

DNET_OVERWRITE_ENABLE 0 上書きを許可します。

DNET_OVERWRITE_DISABLE 1 メッセージを取り出さない限り上書

きされません。

OverWriteFlag

デフォルトは DNET_OVERWRITE_ENABLE です。

DnetInitializeNetInfo関数を実行すると、出荷時設定に更新されま

す。

Explicit メッセージは常に上書きされます。

DeviceConfig デバイス I/O 通信情報構造体です。

自ポートの I/O 通信情報を設定します。

デフォルトは全メンバ 0です。

DnetInitializeNetInfo関数を実行すると、出荷時設定に更新されま

す。

Page 134: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

133

4.3.2 DNET_DEVICE_CONFIG 各デバイスの I/O 通信情報を設定する構造体です。

自ポートは DnetSetConfig関数、他ポートは DnetSetDeviceList関数で設定します。

typedef struct{

ULONG IOType;

ULONG PollInterval;

ULONG PollTxSize;

ULONG PollRxSize;

ULONG StrobeInterval;

ULONG StrobeTxSize;

ULONG StrobeRxSize;

ULONG CosInterval;

ULONG CosTxSize;

ULONG CosRxSize;

ULONG CyclicInterval;

ULONG CyclicTxSize;

ULONG CyclicRxSize;

} DNET_DEVICE_CONFIG, *PDNET_DEVICE_CONFIG

メンバ 説明

通信のモードを選択します。

識別子 値 内容

DNET_IO_POLL 00000001h Poll

DNET_IO_BITSTROBE 00000002h BitStrobe

DNET_IO_COS 00000004h COS

DNET_IO_CYCLIC 00000008h CYCLIC

DNET_IO_POLL_AUTO 00010001h 自動応答 Poll ※

DNET_IO_BITSTROBE_AUTO 00020002h 自動応答 BitStrobe ※

IOType

※スレーブモード時のみ指定できます。自動応答を選択した場合、マスタ

からのメッセージを受信すると自動的にメッセージを返信します。返信す

るメッセージは DnetSendIO関数または DnetSendIOEx関数でセットしま

す。

自動応答は、使用する製品の版数とチェンジナンバーにより使用できない

ことがあります。

以下の製品で自動応答を使用することができます。版数とチェンジナンバ

ーについては『4.5 製品の版数、チェンジナンバーについて』をご参照く

ださい。

・ PCI-487101PQ[12]C10 以降の製品

・ CTP-487101PQ[12]C02 以降の製品

・ CPZ-487101PQ[12]C01 以降の製品

PollInterval Poll 処理の送信周期を指定します。単位は ms です。

設定可能範囲は 10~10000 で、10ms 単位で設定します。1ms 単位の値は切

り捨てられます。

0 を指定した場合には周期送信を行いません。

実際に通信が可能な周期は、接続機器数、他の I/O メッセージ等に影響を

受けます。

Page 135: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

134

Poll の周期送信はマスタモードのみで使用できます。

PollTxSize Poll で使用する最大の送信サイズを指定します。

確保されるバッファのサイズではなく、I/O メッセージのやり取りで使用

できる最大のサイズを指定します。ここで設定したサイズよりも大きなサ

イズでコネクション要求が来た場合、コネクションを確立することはでき

ません。

設定可能範囲は 0~512 です。

PollRxSize Poll で使用する最大の受信サイズを指定します。

確保されるバッファのサイズではなく、I/O メッセージのやり取りで使用

できる最大のサイズを指定します。ここで設定したサイズよりも大きなサ

イズでコネクション要求が来た場合、コネクションを確立することはでき

ません。

設定可能範囲は 0~512 です。

StrobeInterval Bit Strobe 処理の送信周期を指定します。単位は ms です。

周期送信はマスタモードの設定に限り使用可能です。

設定可能範囲は 10~10000 で、10ms 単位で設定します。1ms 単位の値は切

り捨てられます。

0 を指定した場合には周期送信を行いません。

ここで設定した間隔でマスタからリクエストメッセージが送信されます。

実際に通信が可能な周期は、接続機器数、他の I/O メッセージの送信周期

等に影響を受けます。

StrobeTxSize Bit Strobe で使用する最大の送信サイズを指定します。

マスタモードではリクエストメッセージに含むデータで、スレーブモード

は、レスポンスの際に送信する最大サイズを指定します。

確保されるバッファのサイズではなく、I/O メッセージのやり取りで使用

できる最大のサイズを指定します。ここで設定したサイズよりも大きなサ

イズでコネクション要求が来た場合、コネクションを確立することができ

ません。

設定可能範囲は、マスタ時 0または 8で、スレーブ時 8固定です。

StrobeRxSize Bit Strobe で使用する最大の受信サイズを指定します。

マスタモードではレスポンスメッセージに含まれるデータで、スレーブモ

ードでは、リクエストの際に送られてくるリクエストメッセージの付随す

るデータの最大サイズを指定します。

確保されるバッファのサイズではなく、I/O メッセージのやり取りで使用

できる最大のサイズを指定します。ここで設定したサイズよりも大きなサ

イズでコネクション要求が来た場合、コネクションを確立することが出来

ません。

設定可能範囲は、マスタ時 8固定で、スレーブ時も 8です。

CosInterval COS(Change Of State)処理の送信周期を指定します。単位は ms です。

設定可能範囲は 10~10000 で、10ms 単位で設定します。1ms 単位の値は切

り捨てられます。

0 を指定した場合には周期送信を行いません。

実際に通信が可能な周期は、接続機器数、他の I/O メッセージの送信周期

Page 136: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

135

等に影響を受けます。

CosTxSize COS で使用する最大の送信サイズを指定します。

確保されるバッファのサイズではなく、I/O メッセージのやり取りで使用

できる最大のサイズを指定します。ここで設定したサイズよりも大きなサ

イズでコネクション要求が来た場合、コネクションを確立することが出来

ません。

設定可能範囲は 0~512 です。

CosRxSize COS で使用する最大の受信サイズを指定します。

確保されるバッファのサイズではなく、I/O メッセージのやり取りで使用

できる最大のサイズを指定します。ここで設定したサイズよりも大きなサ

イズでコネクション要求が来た場合、コネクションを確立することが出来

ません。

設定可能範囲は 0~512 です。

CyclicInterval Cyclic 処理の送信周期を指定します。単位は ms です。

Cyclic では、ここで設定された時間が経過すると送信が行われます。

設定可能範囲は 10~10000 で、10ms 単位で設定します。1ms 単位の値は切

り捨てられます。

0 を指定した場合には周期送信を行いません。

実際に通信が可能な周期は、接続機器数、他の I/O メッセージの送信周期

等に影響を受けます。

CyclicTxSize Cyclic で使用する最大の送信サイズを指定します。

確保されるバッファのサイズではなく、I/O メッセージのやり取りで使用

できる最大のサイズを指定します。ここで設定したサイズよりも大きなサ

イズでコネクション要求が来た場合、コネクションを確立することができ

ません。

設定可能範囲は 0~512 です。

CyclicRxSize Cyclic で使用する最大の受信サイズを指定します。

確保されるバッファのサイズではなく、I/O メッセージのやり取りで使用

できる最大のサイズを指定します。ここで設定したサイズよりも大きなサ

イズでコネクション要求が来た場合、コネクションは確立することができ

ません。

設定可能範囲は 0~512 です。

Page 137: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

136

4.3.3 DNET_PORT_STATUS DeviceNet インタフェースのステータスが格納される構造体です。

typedef struct{

ULONG BoardStatus;

ULONG AccumulateRxBufferCount;

ULONG ErrorBufferCount;

} DNET_PORT_STATUS, *PDNET_PORT_STATUS;

メンバ 説明

DeviceNet インタフェースの状態を表します。

識別子 値 内容

DNET_PORT_OFF 00000000h ネットワークに参加していま

せん。

DNET_PORT_ON 00000001h ネットワークに参加していま

す。

DNET_CONNECTED 00000002h 他のデバイスと接続していま

す。

DNET_WAIT_FOR_EXPLICIT_RE

SPONSE

00000004h Explicit メッセージのレス

ポンス待ちです。

DNET_RECEIVED_EXPLICIT 00000008h Explicit メッセージを受信

しました。

BusStatus

AccumulateRxBuffer

Count

蓄積型受信バッファに現在格納されている受信メッセージの数を表しま

す。

取得できる値は 0~最大値※です。

ErrorBufferCount イベントバッファに蓄えられたイベントの件数を表します。

取得できる値は 0~最大値※です。

※最大値は DnetSetConfig関数で設定した値です。

Page 138: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

137

4.3.4 DNET_SLAVE_STATUS 各スレーブのステータスが格納されている構造体です。

typedef struct{

ULONG PollCount;

ULONG StrobeCount;

ULONG CosCount;

ULONG NodeStatus;

ULONG ConnectionStatus;

} DNET_SLAVE_STATUS, *PDNET_SLAVE_STATUS;

メンバ 説明

PollCount Poll で最後に受信した時の 32 ビットタイムスタンプです。

この値に変化が無ければ、新たな Poll 受信は無いということになります。

StrobeCount Bit Strobe で最後に受信したときの 32 ビットタイムスタンプです。

変化が無ければ、新たな受信は無いということになります。

CosCount COS/Cyclic で最後に受信したときの 32 ビットタイムスタンプです。

変化が無ければ、新たな受信は無いということになります。

NodeStatus スレーブの状態を表します。コネクションの確立に失敗し、エラー状態の

時等には、こちらの値が変化します。

ConnectionStatus どの I/O コネクションが確立されているか、各ビットを OR した値で表し

ます。

Page 139: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

138

4.3.5 DNET_MESSAGE 256byte までの I/O メッセージの送受信の際に使用する構造体です。

また、モニタモード時の受信メッセージも本構造体を使用します。

typedef struct{

ULONG MessageType;

ULONG MacID;

ULONG Length;

UCHAR Data[256];

ULONG ConnectionID;

ULONG Time;

} DNET_MESSAGE, *PDNET_MESSAGE;

メンバ 説明

送信するメッセージ、または受信したメッセージのタイプを表します。

識別子 値 内容

DNET_IO_POLL 00000001h Poll

DNET_IO_BITSTROBE 00000002h BisStrobe

DNET_IO_COS 00000004h COS

DNET_IO_CYCLIC 00000008h Cyclic

MessageType

MacID 送信メッセージには送信先 MAC ID を指定します。受信メッセージでは送信元

の MAC ID を表します。モニタモード時には無効な値となります。

Length 送信メッセージの長さをバイト単位で指定します。

または、受信したメッセージの長さをバイト単位で取得します。

データ本体の長さになります。0~256 が指定できます。

Data[] 送信メッセージを格納します。

または、受信したメッセージの本体を表します。

メッセージの先頭から Data[0],Data[1],・・・,Data[255]となっています。

送信時、Length に設定した値よりも長いデータは無視されます。

例えば Length に 3 を設定した場合、Data[0],Data[1],Data[2]はドライバに渡

され蓄えられますが、Data[3]以降のデータは無視されます。

同様に受信時も Length 以上のデータは無効データです。

例えば Length に 2 が返ってきた場合、Data[0],Data[1]は受信したメッセージ

の内容ですが、Data[2]以降は無効なデータです。

ConnectionID 受信したメッセージのコネクション ID を表します。

Time メッセージを受信した時刻が格納されます。単位はμsです。

実際の時刻ではなく、DnetOpenPort関数の実行後からの経過時間になります。

エラー情報にも同じ時刻が記録されますので、受信メッセージとエラー発生の

時間的関係を結びつけることができます。

DnetClearBuffer関数を使用することで、内部の経過時間を 0 クリアすること

ができます。

Page 140: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

139

4.3.6 DNET_MESSAGE_EX 512byte までの I/O メッセージの送受信の際に使用する構造体です。

また、モニタモード時の受信メッセージも本構造体を使用します。

typedef struct{

ULONG MessageType;

ULONG MacID;

ULONG Length;

UCHAR Data[512];

ULONG ConnectionID;

ULONG Time;

} DNET_MESSAGE_EX, *DNET_MESSAGE_EX;

メンバ 説明

送信するメッセージ、または受信したメッセージのタイプを表します。

識別子 値 内容

DNET_IO_POLL 00000001h Poll

DNET_IO_BITSTROBE 00000002h BisStrobe

DNET_IO_COS 00000004h COS

DNET_IO_CYCLIC 00000008h Cyclic

MessageType

MacID 送信メッセージには送信先 MAC ID を指定します。受信メッセージでは送信元

の MAC ID を表します。モニタモード時には無効な値となります。

Length 送信メッセージの長さをバイト単位で指定します。

または、受信したメッセージの長さをバイト単位で取得します。

データ本体の長さになります。0~512 が指定できます。

Data[] 送信メッセージを格納します。

または、受信したメッセージの本体を表します。

メッセージの先頭から Data[0],Data[1],・・・,Data[511]となっています。

送信時、Length に設定した値よりも長いデータは無視されます。

例えば Length に 3 を設定した場合、Data[0],Data[1],Data[2]はドライバに渡

され蓄えられますが、Data[3]以降のデータは無視されます。

同様に受信時も Length 以上のデータは無効データです。

例えば Length に 2 が返ってきた場合、Data[0],Data[1]は受信したメッセージ

の内容ですが、Data[2]以降は無効なデータです。

ConnectionID 受信したメッセージのコネクション ID を表します。

Time メッセージを受信した時刻が格納されます。単位はμsです。

実際の時刻ではなく、DnetOpenPort関数の実行後からの経過時間になります。

エラー情報にも同じ時刻が記録されますので、受信メッセージとエラー発生の

時間的関係を結びつけることができます。

DnetClearBuffer関数を使用することで、内部の経過時間を 0 クリアすること

ができます。

Page 141: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

140

4.3.7 DNET_EXPLICIT 256byte までの Explicit メッセージの送受信の際に使用する構造体です。

typedef struct{

ULONG MessageType;

ULONG MacID;

ULONG ServiceCode;

ULONG ClassID;

ULONG InstanceID;

ULONG Length;

UCHAR Data[256];

ULONG Time;

} DNET_EXPLICIT, *PDNET_EXPLICIT;

メンバ 説明

送信するメッセージ、または受信したメッセージのタイプを表します。

識別子 値 内容

DNET_EXPLICIT_REQUEST 00000001h リクエストメッセージ

DNET_EXPLICIT_RESPONSE 00000002h レスポンスメッセージ

MessageType

MacID 送信メッセージには送信先 MAC ID を指定します。

または、受信したメッセージでは送信元の MAC ID を表します。

ServiceCode 送信メッセージのサービスコードを指定します。

または、受信したメッセージのサービスコードを表します。

ClassID 送信メッセージのクラス ID を指定します。

または、受信したメッセージのクラス ID を表します。

InstanceID 送信メッセージのインスタンス ID を指定します。

または、受信したメッセージのインスタンス ID を表します。

Length 送信メッセージの長さをバイト単位で指定します。

または、受信したメッセージの長さをバイト単位で取得します。

データ本体の長さになります。0~256 が指定できます。

送信の場合、メッセージのタイプによって設定可能なサイズが異なります。

Data[] 送信メッセージを格納します。

または、受信したメッセージの本体を表します。

メッセージの先頭から Data[0],Data[1],・・・,Data[255]となっています。

送信時、Length に設定した値よりも長いデータは無視されます。

例えば Length に 3 を設定した場合、Data[0],Data[1],Data[2]はドライバに渡

され蓄えられますが、Data[3]以降のデータは無視されます。

同様に受信時も Length 以上のデータは無効データです。

例えば Length に 2 が返ってきた場合、Data[0],Data[1]は受信したメッセージ

の内容ですが、Data[2]以降は無効なデータです。

Page 142: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

141

Time メッセージを受信した時刻が格納されます。単位はμsです。

実際の時刻ではなく、DnetOpenPort関数の実行後からの経過時間になります。

エラー情報にも同じ時刻が記録されますので、受信メッセージとエラー発生の

時間的関係を結びつけることができます。

DnetClearBuffer関数を使用することで、内部の経過時間を 0 クリアすること

ができます。

Page 143: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

142

4.3.8 DNET_EXPLICIT_EX 512byte までの Explicit メッセージの送受信の際に使用する構造体です。

typedef struct{

ULONG MessageType;

ULONG MacID;

ULONG ServiceCode;

ULONG ClassID;

ULONG InstanceID;

ULONG Length;

UCHAR Data[512];

ULONG Time;

} DNET_EXPLICIT, *PDNET_EXPLICIT;

メンバ 説明

送信するメッセージ、または受信したメッセージのタイプを表します。

識別子 値 内容

DNET_EXPLICIT_REQUEST 00000001h リクエストメッセージ

DNET_EXPLICIT_RESPONSE 00000002h レスポンスメッセージ

MessageType

MacID 送信メッセージには送信先 MAC ID を指定します。

または、受信したメッセージでは送信元の MAC ID を表します。

ServiceCode 送信メッセージのサービスコードを指定します。

または、受信したメッセージのサービスコードを表します。

ClassID 送信メッセージのクラス ID を指定します。

または、受信したメッセージのクラス ID を表します。

InstanceID 送信メッセージのインスタンス ID を指定します。

または、受信したメッセージのインスタンス ID を表します。

Length 送信メッセージの長さをバイト単位で指定します。

または、受信したメッセージの長さをバイト単位で取得します。

データ本体の長さになります。0~512 が指定できます。

送信の場合、メッセージのタイプによって設定可能なサイズが異なります。

Data[] 送信メッセージを格納します。

または、受信したメッセージの本体を表します。

メッセージの先頭から Data[0],Data[1],・・・,Data[511]となっています。

送信時、Length に設定した値よりも長いデータは無視されます。

例えば Length に 3 を設定した場合、Data[0],Data[1],Data[2]はドライバに渡

され蓄えられますが、Data[3]以降のデータは無視されます。

同様に受信時も Length 以上のデータは無効データです。

例えば Length に 2 が返ってきた場合、Data[0],Data[1]は受信したメッセージ

の内容ですが、Data[2]以降は無効なデータです。

Page 144: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

143

Time メッセージを受信した時刻が格納されます。単位はμsです。

実際の時刻ではなく、DnetOpenPort関数の実行後からの経過時間になります。

エラー情報にも同じ時刻が記録されますので、受信メッセージとエラー発生の

時間的関係を結びつけることができます。

DnetClearBuffer関数を使用することで、内部の経過時間を 0 クリアすること

ができます。

Page 145: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

144

4.3.9 DNET_ERROR エラー情報の詳細が格納されている構造体です。

typedef struct

ULONG InterruptRegister;

ULONG ErrorCodeRegister;

ULONG ArbitrationLostRegister;

ULONG Time;

} DNET_ERROR, *PDNET_ERROR;

メンバ 説明

エラー割り込み発生時の発生要因が格納されています。

複数の要因が同時に成立している場合もあります。

DNET_DETECT_BUS_ERROR が有効な場合、ErrorCodeRegister に詳細なエラ

ー要因が格納されています。

識別子 値 内容

DNET_DETECT_BUS_ERROR 80h DeviceNet バス上のエラーを検

出 し ま し た 。 詳 細 は

ErrorCodeRegister で確認して

ください。

DNET_DETECT_ARBITRATION_LOST 40h DeviceNet バス上でアービトレ

ーションロストを検出しまし

た。詳細は

ArbitrationLostRegister で確

認してください。

DNET_IS_ERROR_PASSIVE 20h エラーパッシブ状態となりまし

た。(送信か受信のエラーカウ

ンタが 127 を越えました)

DNET_DETECT_OVERRUN 8h オーバーランエラーが発生し、

受信メッセージが失われまし

た。

DNET_IS_ERROR_WARNING 04h 送信か受信のエラーカウンタが

CanSetConfig 関数で設定したリ

ミット値を越えました。

InterruptRegister

Page 146: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

145

DeviceNet バス上のエラーが発生した場合の詳細な内容が格納されていま

す。InterruptRegister の DNET_DETECT_BUS_ERROR が有効でない場合は 0

が返されます。

bit31

~8

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

予約 ERRC1 ERRC0 DIR SEG4 SEG3 SEG2 SEG1 SEG0

各ビットの意味

ERRC1 ERRC0 エラーの種類

0 0 ビットエラー

0 1 フォームエラー

1 0 ビットスタッフエラー

1 1 その他の種類のエラー

DIR エラーの発生した方向

0 送信時に発生したエラー

1 受信時に発生したエラー

SEG4 SEG3 SEG2 SEG1 SEG0 エラーの発生箇所

0 0 0 1 1 SOF(スタートオブフレーム)

0 0 0 1 0 ID.28~ID.21 の間

0 0 1 1 0 ID.20~ID.18 の間

0 0 1 0 0 SRTR(標準フォーマット時は RTR)

0 0 1 0 1 IDE

0 0 1 1 1 ID.17~ID.13 の間

0 1 1 1 1 ID.12~ID.5 の間

0 1 1 1 0 ID.4~ID.0 の間

0 1 1 0 0 RTR

0 1 1 0 1 R1(予約ビット)

0 1 0 0 1 R0(予約ビット)

0 1 0 1 1 DLC(データ長コード)

0 1 0 1 0 データフィールド

0 1 0 0 0 CRC シーケンス

1 1 0 0 0 CRC デリミタ

1 1 0 0 1 ACK スロット

1 1 0 1 1 ACK デリミタ

1 1 0 1 0 EOF(エンドオブフレーム)

1 0 0 1 0 インターミッション

1 0 0 0 1 アクティブエラーフラグ

1 0 1 1 0 パッシブエラーフラグ

1 0 0 1 1 重ね合わせエラーフラグ

1 0 1 1 1 エラーデリミタ

1 1 1 0 0 オーバーロードフラグ

ErrorCodeRegister

Page 147: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

146

DeviceNet バス上で、送信メッセージの衝突が発生し、その際の調停で負

けた場合、どのビットで調停に負けたか(アービトレーション・ロスト)

を記録するレジスタです。

InterruptRegister の DNET_DETECT_ARBITORATION_LOST が有効でない場合

は 0が返されます。

bit31~5 bit4 bit3 bit2 bit1 bit0

予約 BITNO4 BITNO3 BITNO2 BITNO1 BITNO0

各ビットの意味は下記のようになります。

BITNO4 BITNO3 BITNO2 BITNO1 BITNO0 アービトレーションロスト

位置

0 0 0 0 0 ID の 1 ビット目

0 0 0 0 1 ID の 2 ビット目

0 0 0 1 0 ID の 3 ビット目

0 0 0 1 1 ID の 4 ビット目

0 0 1 0 0 ID の 5 ビット目

0 0 1 0 1 ID の 6 ビット目

0 0 1 1 0 ID の 7 ビット目

0 0 1 1 1 ID の 8 ビット目

0 1 0 0 0 ID の 9 ビット目

0 1 0 0 1 ID の 10 ビット目

0 1 0 1 0 ID の 11 ビット目

0 1 0 1 1 RTR ビット

0 1 1 0 0 IDE ビット

ArbitrationLostReg

ister

Time エラーが発生した時刻が格納されます。単位はμsです。

実際の時刻ではなく、DnetOpenPort関数の実行後からの経過時間になりま

す。

受信メッセージにも同じ時刻が記録されますので、受信メッセージとエラ

ー発生の時間的関係を結びつけることができます。

DnetClearBuffer関数を使用することで、内部の経過時間を 0 クリアする

ことが出来ます。

単位はμsですが、実際に返される値は 1000 単位の値(ms)が返されます。

また、この時間は、DeviceNet コントローラから割り込みが発生し、デバ

イスドライバの割り込み処理内でエラー情報を取り出した時の時間です

ので、正確性には欠けます。

また、連続でエラーが発生した場合、2 つのエラーの発生時刻が同じにな

ることがあります。

Page 148: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

147

4.3.10 DNET_EVENT_REQ 割り込みイベントを設定する構造体です。イベント/メッセージ/コールバック関数の設定等に使

用します。

typedef struct{

HWND Wnd;

UINT InterruptMsg;

DNETCALLBACK CallBackProc;

HANDLE InterruptEvent;

ULONG UserData;

} DNET_EVENT_REQ, *PDNET_EVENT_REQ;

メンバ 説明

Wnd メッセージ送出ウィンドウハンドル。

DnetSetEventMask関数にて設定した各種割り込み発生時に送出するメッセ

ージのポスト先ウィンドウハンドルを指定します。

(メッセージ送出時に、メッセージハンドラの WPARAM には割り込み要因が

格納されます。LPARAM には、UserData の値が格納されます。

フォーマットは DnetSetEventMask/DnetGetEventMaskで使用する各要因と

同じになります。)

メッセージポストを行わない場合には、C 言語では NULL、Visual Basic、

Delphi では 0を指定してください。

InterruptMsg 割り込みメッセージ。

割り込み発生時に送出するメッセージコードを指定します。

メッセージポストを行わない場合には、C言語では WM_NULL、Visual Basic

では 0、Delphi では WM_NULL を指定してください。

CallBackProc 割り込み発生時に呼び出されるユーザ・コールバック関数のポインタを指

定してください。

コールバック関数を使用しない場合は、C 言語では NULL、Visual Basic、

Delphi では 0を指定してください。

InterruptEvent イベント発生時にシグナル状態となるイベントオブジェクトのハンドルを

指定してください。

イベントオブジェクトを使用しない場合には、C 言語では NULL、Visual

Basic、Delphi では 0を指定してください。

UserData コールバック関数、およびメッセージハンドラへ引き渡すユーザ・データ

を指定してください。

Page 149: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

148

4.4 戻り値一覧

エラー識別子 値 意味

IFDNET_ERROR_SUCCESS 0 正常終了。

IFDNET_ERROR_NOT_READY C0000001h 現在ドライバを使用することができません。

IFDNET_ERROR_ACCESS_DENIED C0000002h 現在ドライバの削除中です。

IFDNET_ERROR_INVALID_PARAMETER C0000003h パラメータが不正です。

IFDNET_ERROR_INSUFFICIENT_BUFFER C0000004h システムコールに渡されたデータ領域が小さすぎます。

IFDNET_ERROR_NOT_OPEN C0000005h ポートがオープンされる前にクローズしようとしました。

IFDNET_ERROR_MEMORY_NOTALLOCATED C0000006h メモリを確保できません。

IFDNET_ERROR_BUFFER_IS_FULL C0000007h バッファに空きがありません。

IFDNET_ERROR_BUFFER_IS_EMPTY C0000008h バッファが空です。

IFDNET_ERROR_CANNOT_ACCESS C0000009h アクセス不能状態です。

IFDNET_ERROR_INVALID_HANDLE C000000Ah ハンドルが不正です。

IFDNET_ERROR_NOT_SUPPORTED C000000Bh サポートしていない機能です。

IFDNET_ERROR_NOW_SENDING C000000Ch 現在メッセージ送信中です。

IFDNET_ERROR_NOT_DEVICE C0000100h デバイスが見つかりません。

IFDNET_ERROR_READ_MEMORY_FAILED C0000101h メモリの読み込み失敗です。

IFDNET_ERROR_ALREADY_CONNECTED C0000102h 既に接続が確立済みです。

IFDNET_ERROR_CONNECTION C0000103h 接続に失敗しました。

IFDNET_ERROR_RESOURCE_UNAVAILABLE C0000104h リソース不足です。

IFDNET_ERROR_NOT_CONNECTED_YET C0000105h まだ接続が確立されていません。

IFDNET_ERROR_TIME_OUT C0000106h タイムアウトが発生しました。

IFDNET_ERROR_INVALID_CAN_ID C0000107h CAN ID が不正です。

IFDNET_ERROR_NO_CONNECTION C0000108h コネクションがありません。

IFDNET_ERROR_NO_MORE_ID C0000109h メッセージ ID が足りません。

IFDNET_ERROR_INVALID_GROUPNUMBER C000010Ah グループ番号が不正です。

IFDNET_ERROR_NOT_ALLOCATE_MEMORY C000010Bh メモリが確保できませんでした。

IFDNET_ERROR_BUFFER_OVERFLOW C000010Ch バッファがオーバーフローしました。

IFDNET_ERROR_NO_DATA C000010Dh バッファ内にメッセージがありません。

IFDNET_ERROR_ON_LINE C000010Eh ネットワークに参加している状態では実行できません。

IFDNET_ERROR_DUPULICATE_MACID C000010Fh MAC ID が重複しています。

IFDNET_ERROR_OFF_LINE C0000110h ネットワークに参加していない状態では実行できません。

IFDNET_ERROR_INVALID_MACID C0000111h 指定した MAC ID が不正です。

IFDNET_ERROR_ALREADY_SET C0000112h 既に設定されています。

IFDNET_ERROR_WRITE_MEMORY_FAILED C0000113h メモリへの書き込みが失敗しました。

IFDNET_ERROR_WAIT_FOR_RESPONSE C0000114h レスポンス待ち中です。

IFDNET_ERROR_NO_RESPONSE C0000115h レスポンスがありませんでした。

IFDNET_ERROR_NOT_SET_EPR C0000116h EPR が設定されていません。

IFDNET_ERROR_PORT_ON C0000117h ネットワークに参加できませんでした。

Page 150: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

149

4.5 製品の版数、チェンジナンバーについて

製品の版数とチェンジナンバーは製品の表面に表示されています。

下図の位置に製品の版数とチェンジナンバーは表示されています。

型式によっては表示されている位置が異なることがあります。

本 Help では、製品の版数、チェンジナンバーを下記のように記述しています。

例)製品型式 PCI-487101PQ、製品の版数 12 版、チェンジナンバー C08 の場合

PCI-487101PQ[12]C08

Page 151: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

150

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

以下、各サンプルプログラムの概要を説明します。

5.1 DnetMon 【概要】

DeviceNet のバスの状態をモニタするプログラムです。

【実行手順】

サンプルプログラムには実行形式のファイルが付属していません。

ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。

●Visual C++の場合

Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」

を選び、メイクファイル「DnetMon.mak」を開き、ビルドしてください。

●Visual Basic の場合

Visual Basic を起動し、プロジェクトファイル「DnetMon.vbp」を開き、ビルドしてくださ

い。

●Delphi の場合

Delphi を起動し、プロジェクトファイル「DnetMon.dpr」を開き、ビルドしてください。

作成後、「DnetMon.exe」を起動してください。

【内容】

DeviceNet のバスの状態をモニタします。

Page 152: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

151

5.2 SaveConfig 【概要】

自ポート、他ポートの設定情報をデバイス上の不揮発メモリに保存するプログラムです。

【実行手順】

サンプルプログラムには実行形式のファイルが付属していません。

ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。

●Visual C++の場合

Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」

を選び、メイクファイル「SaveConfig.mak」を開き、ビルドしてください。

●Visual Basic の場合

Visual Basic を起動し、プロジェクトファイル「SaveConfig.vbp」を開き、ビルドしてくださ

い。

●Delphi の場合

Delphi を起動し、プロジェクトファイル「SaveConfig.dpr」を開き、ビルドしてください。

作成後、「SaveConfig.exe」を起動してください。

【内容】

自ポート、他ポートの情報を設定し、設定値をデバイス上の不揮発メモリに保存します。

Page 153: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

152

5.3 SendExplicit 【概要】

Explicit メッセージを送信するプログラムです。

【実行手順】

サンプルプログラムには実行形式のファイルが付属していません。

ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。

●Visual C++の場合

Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」

を選び、メイクファイル「SendExplicit.mak」を開き、ビルドしてください。

●Visual Basic の場合

Visual Basic を起動し、プロジェクトファイル「SendExplicit.vbp」を開き、ビルドしてくだ

さい。

●Delphi の場合

Delphi を起動し、プロジェクトファイル「SendExplicit.dpr」を開き、ビルドしてください。

作成後、「SendExplicit.exe」を起動してください。

【内容】

スレーブデバイスに対してリクエストメッセージを送信し、スレーブデバイスからのレスポン

スメッセージを受信します。

Page 154: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

153

5.4 SendIo 【概要】

I/O メッセージを送信するプログラムです。

【実行手順】

サンプルプログラムには実行形式のファイルが付属していません。

ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。

●Visual C++の場合

Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」

を選び、メイクファイル「SendIo.mak」を開き、ビルドしてください。

●Visual Basic の場合

Visual Basic を起動し、プロジェクトファイル「SendIo.vbp」を開き、ビルドしてください。

●Delphi の場合

Delphi を起動し、プロジェクトファイル「SendIo.dpr」を開き、ビルドしてください。

作成後、「SendIo.exe」を起動してください。

【内容】

スレーブデバイスに対して I/O メッセージを送信し、スレーブデバイスからの I/O メッセージ

を受信します。

Page 155: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

154

5.5 CyclicSend 【概要】

周期送信を行うプログラムです。

【実行手順】

サンプルプログラムには実行形式のファイルが付属していません。

ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。

●Visual C++の場合

Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」

を選び、メイクファイル「CyclicSend.mak」を開き、ビルドしてください。

●Visual Basic の場合

Visual Basic を起動し、プロジェクトファイル「CyclicSend.vbp」を開き、ビルドしてくださ

い。

●Delphi の場合

Delphi を起動し、プロジェクトファイル「CyclicSend.dpr」を開き、ビルドしてください。

作成後、「CyclicSend.exe」を起動してください。

【内容】

スレーブデバイスに対して I/O メッセージを周期送信し、スレーブデバイスからの 10 回 I/O

メッセージを受信するとプログラムを終了します。

Page 156: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

155

5.6 ResponseIo 【概要】

スレーブモードで I/O メッセージの送受信を行うプログラムです。

【実行手順】

サンプルプログラムには実行形式のファイルが付属していません。

ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。

●Visual C++の場合

Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」

を選び、メイクファイル「ResponseIo.mak」を開き、ビルドしてください。

●Visual Basic の場合

Visual Basic を起動し、プロジェクトファイル「ResponseIo.vbp」を開き、ビルドしてくださ

い。

●Delphi の場合

Delphi を起動し、プロジェクトファイル「ResponseIo.dpr」を開き、ビルドしてください。

作成後、「ResponseIo.exe」を起動してください。

【内容】

マスタモードから送信されたメッセージを受信したら、マスタに対してメッセージを送信しプ

ログラムを終了します。

Page 157: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

156

5.7 ResponseIoAuto 【概要】

スレーブモードの自動応答で I/O メッセージの送信を行うプログラムです。

【実行手順】

サンプルプログラムには実行形式のファイルが付属していません。

ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。

●Visual C++の場合

Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」

を選び、メイクファイル「ResponseIoAuto.mak」を開き、ビルドしてください。

●Visual Basic の場合

Visual Basic を起動し、プロジェクトファイル「ResponseIoAuto.vbp」を開き、ビルドしてく

ださい。

●Delphi の場合

Delphi を起動し、プロジェクトファイル「ResponseIoAuto.dpr」を開き、ビルドしてください。

作成後、「ResponseIoAuto.exe」を起動してください。

【内容】

マスタモードから送信されたメッセージを受信したら、マスタに対して予めセットしておいた

メッセージを送信しプログラムを終了します。

Page 158: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

157

第6章 ユーティリティ

以下、各ユーティリティの概要を説明します。

6.1 ネットワーク情報設定ユーティリティ このユーティリティを使用することで、自ポートの I/O 通信設定、および他ポートの I/O 通信設

定(デバイスリスト設定)をビジュアル的に設定することが可能になります。

一旦設定したネットワーク情報は、デバイス上の不揮発メモリ内に保存することができ、

DnetOpenPort関数を呼び出すことで、プログラム中に設定情報を読み出すことが出来ます。

また、設定値をファイルとして保存/読み込みすることも可能です。

アプリケーションを変更せず、ネットワークの環境のみを変更したい場合や、プログラム上での

ネットワーク設定が面倒な場合、本ユーティリティを実行してください。

【実行手順】

1. 「DnetUtil」を実行します。

2. メニューから「File (F)」→「Open (O)」を選択します。

3. システムに実装されている DeviceNet インタフェース製品が表示されますので、通信設定

を行いたいデバイスを選択し、「OK」ボタンをクリックします。

4. 現在そのデバイスに設定されている通信設定情報が表示されます。

5. ボーレートを設定します。「Baud Rate」のコンボボックスから使用するボーレートを選択

してください。

6. デバイス上の受信バッファの上書き設定を行います。「Overwrite」のラジオボタンで選択

してください。「Enable」でメッセージを受信するごとに上書きします。「Disable」でメッ

Page 159: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

158

セージを受信後、DnetGetInputIO関数でメッセージを取り出さない限り上書きされないよ

うになります。

7. デバイスリストにデバイスを追加します。メニューから「Device (D)」→「Add (A)」を選

択してください(またはリストの空の行で右クリック→「Add (A)」)。下記の他ポート設定

ダイアログが表示されます。

MAC ID を選択し、使用する I/O の種類にチェックをつけて、I/O の周期、送信バッファサ

イズ、受信バッファサイズを指定してください。I/O の周期は 10[ms]~10,000[ms]、バッ

ファサイズは 0[byte]~256[byte]までが設定可能です。

※「Change Of State」と「Cyclic」は同時には指定できません。いずれか片方のみ有効

となります。

OK ボタンを押すとメインダイアログのデバイスリストに追加されます。

一覧には、選択した I/O の種類の列に「Int:xxxx, Tx:xxx, Rx:xxxx」と表示されます。Int

は I/O の周期(単位は[ms])、Tx は送信バッファサイズ(単位はバイト)、Rx は受信バッフ

ァサイズ(単位はバイト)となっています。(上図では Poll を選択したために Poll の列に

追加されています。)

8. 自ポート情報、あるいは追加した他ポート情報を更新する場合は、リスト内の更新したい

ポートを選択し、メニューの「Device (D)」→「Edit (E)」を選択します(または、更新

したいポートをダブルクリックか、右クリック→「Edit (E)」を選択してください)。

Page 160: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

159

9. 自ポート情報を更新する場合は、下記のようなダイアログボックスが表示されます。

「Mode」内のラジオボタンで、「マスタモード」、「スレーブモード」、「モニタモード」、「マ

スタモード+Explicit メッセージバッファ拡張」が選択できます。

HeartBeat メッセージを使用する場合は、「Heart Beat Message」チェックボックスにチェ

ックをつけて、送信周期を設定してください。1[s]~1,000[s]が設定可能です(単位が[s]

ですのでご注意ください)。

後は、7の他ポート設定と同じです。

他ポートがデバイスリストに追加されている状態でスレーブモード、またはモニタモード

を選択すると、登録されている他ポート情報が全て削除されます(「OK」ボタンを押した際

に、注意を促すメッセージが表示されます)。

10.設定した他ポート情報を削除する場合は、削除したいデバイスを選択して、メニューから

「Device (D)」→「Delete (D)」を選択してください(または、削除したいデバイスを選

択して右クリック→「Delete (D)」)。

11.設定した情報をデバイス上の不揮発メモリに保存します。メニューから「File (F)」→「Save

(S)」を選択してください。

※保存には約 1、2秒程度の時間がかかります。

12.設定した情報をファイルとして保存したい場合は、メニューから「File (F)」→「Export (E)」

を選択してください。ファイル保存ダイアログが表示され、設定情報が*.cfg ファイルに

保存されます。

Page 161: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

160

逆に、保存しておいたファイルから設定情報を読み込みたい場合は、メニューから「File

(F)」→「Import (I)」を選択してください。*.cfg ファイルを指定することにより、保存

しておいた情報が読み出されます。

複数のデバイスに同じ通信設定を行いたい場合等にこの機能をご使用ください。

Page 162: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

161

6.2 自己診断プログラム 本製品には、動作不具合時の原因がハードウェア的なものか、ソフトウェア的なものかを容易に

判断するための自己診断機能を搭載しています。診断プログラムを用いて動作確認を行ってくだ

さい。

【使用機材】

弊社 DeviceNet インタフェース製品

【実行手順】

1. DeviceNet インタフェース製品の診断を行う前に、デバイスからケーブルを外しておきま

す。

2. 「DiagDnet」を実行します。

3. メニューから「File (F)」→「Select New Device (O)」を選択します。

4. システムに実装されている DeviceNet インタフェース製品が表示されますので、診断を行

いたいデバイスを選択し、「OK」ボタンをクリックします。

5. メインダイアログに、選択したデバイスのリソースが表示されますので、メニューから

「Diagnosis (D)」→「Start Diagnosis (S)」を実行し、診断を開始してください。

※開始直後にケーブルを外すように促すメッセージボックスが表示されます。

Page 163: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

162

6. 診断結果がメインダイアログに表示されます。

診断結果が「NG」の場合には、メニューから「File (F)」→「Save the Result (S)」を選

択して、診断結果をファイルに保存してください。その診断結果とともに弊社弊社オンラ

イン QA、またはお客様相談センタまでお問い合わせください。

Page 164: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

163

6.3 EDS ファイル作成プログラム このユーティリティを使用することで、コンフィグレーションツール等で使用する EDS ファイル

を作成することが出来ます。本ユーティリティで自ポートの EDS ファイルを作成することが可能

になります。

【実行手順】

1. 「EDScreate」を実行します。

2. 使用する I/O メッセージの種類と、送受信のサイズを設定します。

3. 「Create EDS File」ボタンをクリックすると EDS ファイルが保存されます。

保存場所とファイル名を指定して保存します。

Page 165: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

164

第7章 重要な情報

保証の内容と制限

弊社は本ドキュメントに含まれるソースプログラムの実行が中断しないこと、またはその実行に

誤りが無いことを保証していません。

本製品の品質や使用に起因する、性能に起因するいかなるリスクも使用者が負うものとします。

弊社はドキュメント内の情報の正確さに万全を期しています。万一、誤記または誤植等があった

場合、弊社は予告無く改訂する場合があります。ドキュメントまたはドキュメント内の情報に起

因するいかなる損害に対しても弊社は責任を負いません。

ドキュメント内の図や表は説明のためであり、ユーザ個別の応用事例により変化する場合があり

ます。

著作権、知的所有権

弊社は本製品に含まれるおよび本製品に対する権利や知的所有権を保持しています。

本製品はコンピュータ ソフトウェア、映像/音声(例えば図、文章、写真等)を含んでいます。

医療機器/器具への適用における注意

弊社の製品は人命に関わるような状況下で使用される機器に用いられることを目的として設計、

製造された物では有りません。

弊社の製品は人体の検査等に使用するに適する信頼性を確保することを意図された部品や検査機

器と共に設計された物では有りません。

医療機器、治療器具等の本製品の適用により、製品の故障、ユーザ、設計者の過失等により、損

傷/損害を引き起こす場合が有ります。

複製の禁止

弊社の許可なく、本ドキュメントの全て、または一部に関わらず、複製、改変等を行うことはで

きません。

責任の制限

弊社は、弊社または再販売者の予見の有無にかかわらず発生したいかなる特別損害、偶発的損害、

間接的な損害、重大な損害について、責任を負いません。

本製品(ハードウェア,ソフトウェア)のシステム組み込み、使用、ならびに本製品から得られる

結果に関する一切のリスクについては、本製品の使用者に帰属するものとします。

本製品に含まれるバグ、あるいは本製品の供給(納期遅延)、性能もしくは使用に起因する付帯的

損害もしくは間接的損害に対して、弊社に全面的に責がある場合でも、弊社はその製品に対する

改良(正常に動作する)、代品交換までとし、金銭面での賠償の責任は負わないものとしますので、

予めご了承ください。

本製品(ソフトウェアを含む)は、日本国内仕様です。本製品を日本国外で使用された場合、弊

社は一切責任を負いかねます。また、弊社は本製品に関し、海外での保守サービスおよび技術サ

ポート等は行っておりません。

商標/登録商標

Page 166: GPC-4871 - Interface...DnetSetDeviceList関数等により既に登録されている他ポートのMAC IDを設定しようとするとエ ラーとなります。 ・Modeメンバには、動作モードを指定します。ここでモニタモード(DNET_MODE_MONITOR)を指定

GPC-4871 Help for Windows

© 2004, 2013 Interface Corporation. All rights reserved.

165

本書に掲載されている会社名、製品名は、それぞれ各社の商標または登録商標です。