gpc-4872 - interface...visual c# .net masterio visual c# .net用サンプルプログラム explicit...

63
DNET(PCI/C-PCI) www.interface.co.jp GPC-4872 DeviceNet インタフェースモジュール用 Windows ドライバ Help for Windows

Upload: others

Post on 01-Apr-2021

4 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

DNET(PCI/C-PCI)

www.interface.co.jp

GPC-4872 DeviceNet インタフェースモジュール用 Windows ドライバ

Help for Windows

Page 2: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

2

目 次

第 1 章 はじめに 3

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

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

第 2 章 製品仕様 4

2.1 基本仕様 .......................................................................4

2.2 製品構成 .......................................................................5

第 3 章 導入方法 6

3.1 実行手順 .......................................................................6

3.2 I/Oメッセージ用のバッファについて .............................................11

3.3 LEDの動作 .....................................................................12

3.4 クラスライブラリの参照方法 ....................................................13

第 4 章 リファレンス 14

4.1 関数一覧 ......................................................................14

4.2 関数一覧(拡張関数) ..........................................................14

4.3 関数個別説明 ..................................................................15

4.4 関数個別説明(拡張関数) ......................................................29

4.5 構造体説明 ....................................................................38

4.6 構造体説明(拡張関数用) ......................................................40

4.7 戻り値一覧 ....................................................................48

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

5.1 実行手順 ......................................................................50

5.2 サンプルプログラム一覧 ........................................................51

第 6 章 ユーティリティ 52

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

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

第 7 章 重要な情報 62

Page 3: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

3

第1章 はじめに

1.1 概要 GPC-4872 は、Windows 上のアプリケーションから、弊社 DeviceNet 製品を制御する為のソフトウ

ェアです。

弊社 DeviceNet 製品を Windows 上のアプリケーションから DLL をダイナミックリンクし、API を

コールすることにより制御します。

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

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

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

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

りません。

●DeviceNet Release2.0(改訂 5)

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

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

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

とができます。

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

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

Page 4: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

4

第2章 製品仕様

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

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

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

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

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

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

同時使用枚数 1 枚

Page 5: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

5

2.2 製品構成

製品構成 ファイル名 説明

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

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

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

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

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

サンプルプログラム

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

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

MasterIo C 用サンプルプログラム Visual C++

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

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

Visual Basic .NET

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

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

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

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

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

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

Help HELP.PDF Help(PDF 形式)

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

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

Page 6: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

6

第3章 導入方法

3.1 実行手順

基本的な制御の手順は以下の通りです(記述例は C言語です)。

ネットワーク情報の設定

ポートのオープン

I/O メッセージの書き込み

I/O 通信の開始

I/O メッセージの読み込み

I/O 通信の停止

Explicitメッセージの送信

Explicit メッセージの受信

ポートのクローズ

1. ネットワーク情報の設定

ネットワーク情報設定ユーティリティを使用してネットワーク情報を設定します。

ユーティリティではボーレート、I/O メッセージの書き込み間隔、MAC ID と接続するスレーブ

デバイスの情報を設定します。各スレーブデバイスの情報には MAC ID と使用する I/O メッセー

ジの種類とサイズを指定します。

ユーティリティの詳細については『6.1ネットワーク情報設定ユーティリティ』をご参照くださ

い。

2. ポートのオープン

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

HANDLE deviceHandle;

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

deviceHandle = DnOpen(“IFDN1”); if(deviceHandle != INVALID_HANDLE_VALUE){

// オープン成功

}else{

// オープン失敗

}

DnOpen関数には、オープンしたいポートの名前を指定します。ポート名は、”IFDN1”となります。

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

Page 7: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

7

オープンに成功すると有効なハンドルが返されます。失敗した場合は、” INVALID_HANDLE_VALUE”が返って来ます。

ポートをオープンすると、デバイス上に保存しているネットワーク情報が自動的に読み出され

ます。ユーティリティを実行していない場合は、オープンでエラーになります。

その後にネットワークへの参加と、スレーブデバイスとの接続までが自動的に行われます。

・スレーブデバイスとの接続について

デバイスリストに設定されているスレーブデバイスに対して接続を行います。

接続が出来なかったデバイスに対しては定期的に接続を試みます。

接続後にスレーブデバイスから応答がなくなると、一度切断します。

その後、定期的に再接続を試みます。

また、接続できたスレーブデバイスに対しては EPR(expected_packet_rate)の設定も自動で

行います。

3. I/O メッセージの書き込み

DnWrite関数で、デバイス上の出力バッファへI/Oメッセージを書き込みます。

ULONG macid;

DN_MESSAGE message;

int ret;

// 出力の対象は MAC ID = 1 のデバイス

// メッセージの種類は Poll

message.MessageType = DN_IO_POLL;

message.Length = 3;

message.MacID = 1;

message.Data[0] = 0x01;

message.Data[1] = 0x02;

message.Data[2] = 0x03;

// I/O メッセージの書き込み

ret = DnWrite(deviceHandle, &message);

if(ret == IFDN_ERROR_SUCCESS){

// 書き込み成功

}else{

// 書き込み失敗

}

関数の実行に成功すると、戻り値として”IFDN_ERROR_SUCCESS”が返されます。失敗した場合は

それ以外の値が返されます。IFDN_ERROR_SUCCESS以外の値が返された場合については、『4.7 戻

り値一覧』をご参照ください。

I/O 通信の開始後に出力バッファに書き込まれた I/O メッセージが周期的にスレーブデバイス

に対して書き込まれます。

I/O 通信の開始前に出力バッファに I/O メッセージを書き込んでいない場合は、スレーブデバ

イスに対して何も書き込まれません。その場合は、出力バッファに I/O メッセージを書き込ん

だ段階からスレーブデバイスに対しての書き込みが行われます。

Page 8: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

8

また、I/Oメッセージの内容を変更したい場合は、再度 DnWrite関数を実行することでI/Oメッ

セージの内容を更新することが出来ます。オープン後はいつでも更新可能です。

更新を行うまでは同じ内容の I/O メッセージがスレーブデバイスに対して書き込まれます。

4. I/O 通信の開始

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

int ret;

// I/O 通信を開始します

ret = DnStart(deviceHandle);

if(ret == IFDN_ERROR_SUCCESS){

// 通信開始成功

}else{

// 通信開始失敗

}

関数の実行に成功すると、戻り値として”IFDN_ERROR_SUCCESS”が返されます。失敗した場合は

それ以外の値が返されます。IFDN_ERROR_SUCCESS以外の値が返された場合については、『4.7 戻

り値一覧』をご参照ください。

DnWrite関数で書き込んだI/Oメッセージが周期的にスレーブデバイスに対して書き込まれます。

5. I/O メッセージの読み込み

スレーブデバイスからの I/O メッセージは、デバイス上の入力バッファに格納されます。

DnRead関数を使用して、入力バッファからI/Oメッセージを読み出します。

ULONG macid;

DNT_MESSAGE message;

int ret;

// 入力の対象は MAC ID = 1 のデバイス

// メッセージの種類は Poll

message.MessageType = DN_IO_POLL;

message.MacID = 1;

// I/O メッセージの読み出し

ret = DnRead(deviceHandle, &message);

if(ret == IFDN_ERROR_SUCCESS){

// 読み込み成功

}else{

// 読み込み失敗

}

関数の実行に成功すると、戻り値として”IFDN_ERROR_SUCCESS”が返されます。失敗した場合は

それ以外の値が返されます。IFDN_ERROR_SUCCESS以外の値が返された場合については、『4.7 戻

り値一覧』をご参照ください。

Page 9: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

9

スレーブデバイスから I/O メッセージが書き込まれる度にバッファの内容が更新されます。メ

ッセージが更新されたかは、読み出したメッセージの時刻情報を比較することで確認できます。

スレーブデバイスから I/O メッセージが書き込まれると、次の I/O メッセージが書き込まれる

まで同じ内容の I/O メッセージを読み出せます。

6. I/O 通信の停止

DnStop関数により、I/O通信を停止します。

int ret;

// I/O 通信を停止します

ret = DnStop(deviceHandle);

if(ret == IFDN_ERROR_SUCCESS){

// 通信停止成功

}else{

// 通信停止失敗

}

関数の実行に成功すると、戻り値として”IFDN_ERROR_SUCCESS”が返されます。失敗した場合は

それ以外の値が返されます。IFDN_ERROR_SUCCESS以外の値が返された場合については、『4.7 戻

り値一覧』をご参照ください。

DnWrite関数で書き込んだI/Oメッセージがスレーブデバイスに対して書き込まれなくなります。

7. Explicit メッセージの送信

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

マスタから送信するメッセージはリクエストメッセージになります。

DN_EXPLICIT dnExplicit;

int ret;

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

dnExplicit.MessageType = DN_EXPLICIT_REQUEST;

dnExplicit.MacID = 3;

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

dnExplicit.ClassID = 3;

dnExplicit.InstanceID = 1;

dnExplicit.Length = 1;

dnExplicit.Data[0] = 1;

ret = DnSendExplicit(deviceHandle, &dnExplicit);

if(ret == IFDN_ERROR_SUCCESS){

// 送信成功

}else{

// 送信失敗

}

関数の実行に成功すると、戻り値として”IFDN_ERROR_SUCCESS”が返されます。失敗した場合は

Page 10: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

10

それ以外の値が返されます。IFDN_ERROR_SUCCESS以外の値が返された場合については、『4.7 戻

り値一覧』をご参照ください。

I/O 通信の開始が行われていなくても Explicit メッセージの送受信は可能です。

I/O 通信の停止後も送受信可能です。

8. Explicit メッセージの受信

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

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

DN_EXPLICIT dnExplicit;

int ret;

ret = DnReceiveExplicit(deviceHandle, &dnExplicit);

if(ret == IFDN_ERROR_SUCCESS){

// 受信成功

}else{

// 受信失敗

}

関数の実行に成功すると、戻り値として”IFDN_ERROR_SUCCESS”が返されます。失敗した場合は

それ以外の値が返されます。IFDN_ERROR_SUCCESS以外の値が返された場合については、『4.7 戻

り値一覧』をご参照ください。

メッセージが更新されたかは、読み出したメッセージの時刻情報を比較することで確認できま

す。スレーブデバイスからの Explicit メッセージを受信すると、次の Explicit メッセージを

受信するまでは同じ内容の Explicit メッセージを読み出せます。

9. ポートのクローズ

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

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

int ret;

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

ret = DnClose(deviceHandle);

if(ret == IFDN_ERROR_SUCCESS){

// クローズ成功

}else{

// クローズ失敗

}

関数の実行に成功すると、戻り値として”IFDN_ERROR_SUCCESS”が返されます。失敗した場合は

それ以外の値が返されます。IFDN_ERROR_SUCCESS以外の値が返された場合については、『4.7 戻

り値一覧』をご参照ください。

スレーブデバイスとの接続の解除、ネットワークからの離脱が自動的に行われます。

Page 11: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

11

3.2 I/O メッセージ用のバッファについて

接続するスレーブデバイス毎に、出力と入力の I/O メッセージ用のバッファが確保されます。

I/O メッセージは構造体に格納して、DnWrite 関数・DnRead 関数を使用してバッファに対して

読み書きを行います。

対象とするスレーブデバイスの MACID やメッセージの種類は構造体のメンバで指定します。

DnWrite 関数で出力バッファに I/O メッセージを書き込みます。

出力バッファ内のメッセージは一定周期毎にスレーブデバイスへ書き込まれます。

再度 DnWrite 関数を実行することで I/O メッセージの内容を更新できます。

スレーブデバイスから入力バッファに書き込まれた I/O メッセージは、DnRead 関数で読み込む

ことが出来ます。入力バッファに対してスレーブデバイスから新しい I/O メッセージが書き込

まれるまでは、スレーブデバイスが最後に書き込んだ I/O メッセージが常に読み込めます。

typedef struct{

DWORD MessageType; ← メッセージの種類

DWORD MacID; ← スレーブデバイスの MACID

DWORD Length;

DWORD Time;

BYTE Data[512];

} DN MESSAGE, *PDN MESSAGE;

出力バッファ

COS/Cyclic

BitStrobe

Poll

MessageType

MacID

Length

Time

Data[512]

一定周期で

スレーブデバイス

へ書き込む

DnWrite関数で

I/Oメッセージ

の書き込み

スレーブデバイス 再度DnWrite関数

を実行することで

I/Oメッセージを

更新できます

入力バッファ

COS/Cyclic

BitStrobe

Poll

MessageType

MacID

Length

Time

Data[512]

スレーブデバイス

から書き込まれる

DnRead関数で

I/Oメッセージ

の読み込み

スレーブデバイス

新しいI/Oメッセージ

が書き込まれるまで

は最後に書き込まれ

たものが読み込める

Page 12: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

12

3.3 LED の動作

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

LED 状態 動作

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

緑点滅 起動時、または DnClose関数でクローズが正常終了した場合

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

赤点滅 回復可能な状態

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

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

LED 状態 動作

緑消灯 起動時、または DnClose関数に成功しネットワークから離脱した場合

緑点滅 DnOpen関数に成功しネットワークに参加できた場合、または DnClose関数で全ての

接続が切断された場合

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

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

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

Page 13: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

13

3.4 クラスライブラリの参照方法

本製品では、クラスライブラリのソースファイルを用意しています。

ソースコードをビルドしてクラスライブライリを生成し、参照することで、DLL 関数の定義を容易に

することができます。

(DLL 関数の呼び出しをカスタマイズしたい場合は、クラスライブラリのソースを参照してくださ

い)

1. クラスライブラリの作成方法 .NET において DLL 関数を呼び出すには、まずクラスライブラリを用意する必要があります。

Visual C# .NET の場合

Visual Studio を起動し、以下のプロジェクトファイルを開きます。

<インストール先>\interface\GPC4872\samples\CS_NET\IFCDN\IFCDN.csproj

このプロジェクトをビルドすると、bin フォルダにクラスライブラリ IFCDN.dll が作成されます。

Visual Basic .NET の場合

Visual Studio を起動し、以下のプロジェクトファイルを開きます。

<インストール先>\interface\GPC4872\samples\VB_NET\IFCDN\IFCDN.vbproj

このプロジェクトをビルドすると、bin フォルダにクラスライブラリ IFCDN.dll が作成されます。

2. クラスライブラリの参照 Visual C# .NET, Visual Basic .NET の場合

Visual Studio のメニューの「プロジェクト」の「参照の追加」を選択してください。

「参照」ボタンをクリックして参照したいクラスライブラリ DLL を指定します。

例)

<インストール先>\interface\GPC4872\samples\CS_NET\IFCDN\bin\Release\ifcdn.dll

<インストール先>\interface\GPC4872\samples\VB_NET\IFCDN\bin\Relaase\ifcdn.dll

「選択されたコンポーネント」に指定した DLL が表示されます。

「OK」ボタンをクリックすると設定は完了です。

次にソースのヘッダで各言語毎に下記のように InterfaceCorpDllWrap の名前空間を追加すれば

DLL 関数を次章の「使用例」の方法で呼び出すことができるようになります。

Visual C# .NET の場合

using InterfaceCorpDllWrap;

Visual Basic .NET の場合

Imports InterfaceCorpDllWrap

3. 注意事項 ■構造体について

StructLayoutクラスのオプションに「LayoutKind.Sequential」を指定しています。

Page 14: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

14

第4章 リファレンス

4.1 関数一覧

No 関数名 機能

●初期化関数

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

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

●通信関数

3 DnStart I/O メッセージの通信を開始します。

4 DnStop I/O メッセージの通信を停止します。

5 DnWrite バッファに I/O メッセージを書き込みます。

6 DnRead バッファから I/O メッセージを読み込みます。

4.2 関数一覧(拡張関数)

No 関数名 機能

●通信関数

7 DnSendExplicit Explicit メッセージの送信を行ないます。

8 DnReceiveExplicit 受信した Explicit メッセージを取り出します。

●ステータス取得関数

9 DnGetPortStatus 現在の状態を取得します。

10 DnGetErrorStatus エラー情報を取得します。

Page 15: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

15

4.3 関数個別説明

1. DnOpen 【機能】

DeviceNet インタフェース製品のオープンを行い、ネットワークに参加し通信開始の準備を行

います。スレーブデバイスとの接続処理までが行われます。

【書式】

●C言語

HANDLE DnOpen(

LPCSTR DeviceName

);

●Visual C# .NET

[DllImport("IFDN.dll")]

public static extern IntPtr DnOpen(

string DeviceName );

●Visual Basic .NET

Declare Function DnOpen Lib "IFDN.dll" ( _

ByVal DeviceName As String _

)As IntPtr

【パラメータ】

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

【戻り値】

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

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

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

【備考】

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

DeviceNet インタフェース製品のデバイス名は「IFDN1」となります。

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

スレーブデバイスとの接続が完了すると NS LED が緑点灯します。

本関数を実行する前にネットワーク情報設定ユーティリティにより、ネットワーク情報を設定

しておく必要があります。

Page 16: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

16

【使用例】

●C言語

HANDLE DeviceHandle;

DeviceHandle = DnOpen(“IFDN1”);

HANDLE DeviceHandle;

char* deviceName = “IFDN1”;

DeviceHandle = DnOpen(deviceName);

●Visual C# .NET

IntPtr DeviceHandle;

string deviceName;

deviceName = "IFDN1";

DeviceHandle = IFCDN.DnOpen(deviceName);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim deviceName As String

deviceName = "IFDN1" & Chr(0)

DeviceHandle = IFCDN.DnOpen(deviceName)

デバイス名「IFDN1」のデバイスをオープンし、通信開始の準備をします。

Page 17: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

17

2. DnClose 【機能】

DeviceNet インタフェース製品をネットワークから離脱し、クローズを行い通信を終了します。

スレーブデバイスとの切断処理も行われます。

【書式】

●C言語

int DnClose(

HDNDLE DeviceHandle

);

●Visual C# .NET

[DllImport("IFDN.dll")]

public static extern int DnClose(

IntPtr DeviceHandle );

●Visual Basic .NET

Declare Function DnClose Lib "IFDN.dll" (

ByVal DeviceHandle As IntPtr _

)As Integer

【パラメータ】

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

【戻り値】

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

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

【備考】

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

クローズが正常終了すると MS LED が緑点滅し、NS LED が消灯します。

Page 18: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

18

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DeviceHandle = DnOpen(“IFDN1”); :

Ret = DnClose(DeviceHandle);

●Visual C# .NET

IntPtr DeviceHandle;

string deviceName;

int Ret;

deviceName = "IFDN1";

DeviceHandle = IFCDN.DnOpen(deviceName);

Ret = IFCDN.DnClose(DeviceHandle);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim deviceName As String

Dim Ret As Integer

deviceName = "IFDN1" & Chr(0)

DeviceHandle = IFCDN.DnOpen(deviceName)

Ret = IFCDN.DnClose(DeviceHandle)

デバイス名「IFDN1」のデバイスをクローズし通信を終了します。

Page 19: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

19

3. DnStart 【機能】

I/O メッセージの通信を開始します。

DnWrite 関数で書き込んだメッセージの、接続先デバイスに対しての書き込みが開始されます。

【書式】

●C言語

int DnStart(

HDNDLE DeviceHandle

);

●Visual C# .NET

[DllImport("IFDN.dll")]

public static extern int DnStart(

IntPtr DeviceHandle );

●Visual Basic .NET

Declare Function DnStart Lib "IFDN.dll" (

ByVal DeviceHandle As IntPtr _

)As Integer

【パラメータ】

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

【戻り値】

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

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

【備考】

DnWrite 関数でバッファにメッセージを書き込んでいない場合は、接続先デバイスに対して何

も書き込まれません。

出力バッファに書き込まれたI/Oメッセージが周期的にスレーブデバイスに対して書き込まれ

ます。周期は ネットワーク情報設定ユーティリティにて設定します。

Page 20: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

20

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DeviceHandle = DnOpen(“IFDN1”); :

Ret = DnWrite(DeviceHandle, macid, offset, size, &dnMessage);

Ret = DnStart(DeviceHandle);

●Visual C# .NET

IntPtr DeviceHandle;

string deviceName;

int Ret;

deviceName = "IFDN1";

DeviceHandle = IFCDN.DnOpen(deviceName);

Ret = DnWrite(DeviceHandle, macid, offset, size, ref dnMessage);

Ret = IFCDN.DnStart(DeviceHandle);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim deviceName As String

Dim Ret As Integer

deviceName = "IFDN1" & Chr(0)

DeviceHandle = IFCDN.DnOpen(deviceName)

Ret = DnWrite(DeviceHandle, macid, offset, size, dnMessage);

Ret = IFCDN.DnStart(DeviceHandle)

デバイス名「IFDN1」のデバイスの I/O メッセージの通信を開始します。

Page 21: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

21

4. DnStop 【機能】

I/O メッセージの通信を停止します。

【書式】

●C言語

int DnStop(

HDNDLE DeviceHandle

);

●Visual C# .NET

[DllImport("IFDN.dll")]

public static extern int DnStop(

IntPtr DeviceHandle );

●Visual Basic .NET

Declare Function DnStop Lib "IFDN.dll" (

ByVal DeviceHandle As IntPtr _

)As Integer

【パラメータ】

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

【戻り値】

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

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

【備考】

本関数実行後は、接続先デバイスに対しての I/O メッセージ書き込みは停止します。

再度 I/O メッセージの書き込みを開始する場合には、DnStart 関数を実行します。

Page 22: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

22

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DeviceHandle = DnOpen(“IFDN1”); :

Ret = DnStart(DeviceHandle);

Ret = DnStop(DeviceHandle);

●Visual C# .NET

IntPtr DeviceHandle;

string deviceName;

int Ret;

deviceName = "IFDN1";

DeviceHandle = IFCDN.DnOpen(deviceName);

Ret = IFCDN.DnStart(DeviceHandle);

Ret = IFCDN.DnStop(DeviceHandle);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim deviceName As String

Dim Ret As Integer

deviceName = "IFDN1" & Chr(0)

DeviceHandle = IFCDN.DnOpen(deviceName)

Ret = IFCDN.DnStart(DeviceHandle)

Ret = IFCDN.DnStop(DeviceHandle)

デバイス名「IFDN1」のデバイスの I/O メッセージの通信を停止します。

Page 23: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

23

5. DnWrite 【機能】

接続先デバイスに対して書き込む I/O メッセージをバッファに書き込みます。

DnStart関数実行後に書き込みが開始されます。

【書式】

●C言語

int DnWrite(

HDNDLE DeviceHandle,

PDN_MESSAGE dnMessage

);

●Visual C# .NET

[DllImport("IFDN.dll")]

public static extern int DnWrite(

IntPtr DeviceHandle, ref DN_MESSAGE dnMessage );

●Visual Basic .NET

Declare Function DnWrite Lib "IFDN.dll" (

ByVal DeviceHandle As IntPtr, _

ByRef dnMessage As DN_MESSAGE _

)As Integer

【パラメータ】

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

dnMessage

書き込むI/Oメッセージを設定した DN_MESSAGE構造体を指定します。

構造体の説明に付いては『4.5 構造体説明』をご参照ください。

【戻り値】

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

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

Page 24: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

24

【備考】

接続先デバイスに対して書き込まれる I/O メッセージは、再度本関数を実行して I/O メッセー

ジの内容を更新するまでは、同じ内容の I/O メッセージが使用されます。

また、DnStart関数実行前に本関数でI/Oメッセージを書き込んでいない場合は、接続先デバイ

スに対して何も書き込まれません。その場合は、本関数でI/Oメッセージを書き込んだ段階から、

接続先デバイスに対して書き込みが行われます。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

ULONG macid;

DN_MESSAGE dnMessage;

DeviceHandle = DnOpen(“IFDN1”); :

dnMessage.MessageType = DN_IO_POLL;

dnMessage.MacID = 3;

dnMessage.Length = 4;

dnMessage.Data[0] = 0;

dnMessage.Data[1] = 1;

dnMessage.Data[2] = 2;

dnMessage.Data[3] = 3;

Ret = DnWrite(DeviceHandle, &dnMessage);

●Visual C# .NET

IntPtr DeviceHandle;

string deviceName;

int Ret;

int macid;

IFCDN.DN_MESSAGE dnMessage = new IFCDN.DN_MESSAGE();

deviceName = "IFDN1";

DeviceHandle = IFCDN.DnOpen(deviceName);

dnMessage.InitializeArray();

dnMessage.MessageType = DN_IO_POLL;

dnMessage.MacID = 3;

dnMessage.Length = 4;

dnMessage.Data[0] = 0;

dnMessage.Data[1] = 1;

dnMessage.Data[2] = 2;

dnMessage.Data[3] = 3;

Ret = IFCDN.DnWrite(DeviceHandle, ref dnMessage);

Page 25: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

25

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim deviceName As String

Dim Ret As Integer

Dim macid As Integer

Dim dnMessage As IFCDN.DN_MESSAGE = New IFCDN.DN_MESSAGE

deviceName = "IFDN1" & Chr(0)

DeviceHandle = IFCDN.DnOpen(deviceName)

dnMessage.InitializeArray()

dnMessage.MessageType = DN_IO_POLL

dnMessage.MacID = 3

dnMessage.Length = 4

dnMessage.Data(0) = 0

dnMessage.Data(1) = 1

dnMessage.Data(2) = 2

dnMessage.Data(3) = 3

Ret = IFCDN.DnWrite(DeviceHandle, dnMessage)

デバイス名「IFDN1」のデバイスのバッファにに I/O メッセージを書き込みます。

Page 26: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

26

6. DnRead 【機能】

接続先から書き込まれた I/O メッセージを読み出します。

【書式】

●C言語

int DnRead(

HDNDLE DeviceHandle,

PDN_MESSAGE dnMessage

);

●Visual C# .NET

[DllImport("IFDN.dll")]

public static extern int DnRead(

IntPtr DeviceHandle, out DN_MESSAGE dnMessage );

●Visual Basic .NET

Declare Function DnRead Lib "IFDN.dll" (

ByVal DeviceHandle As IntPtr, _

ByRef dnMessage As DN_MESSAGE _

)As Integer

【パラメータ】

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

dnMessage

読み出すI/Oメッセージを格納する DN_MESSAGE構造体を指定します。

構造体の説明に付いては『4.5 構造体説明』をご参照ください。

読み出すI/Oメッセージの種類をMessageTypeメンバに指定します。

また、読み出すスレーブデバイスのMAC IDをMacIDメンバに指定します。

その他のメンバには読み出した値が格納されます。

【戻り値】

正常終了した場合は、IFDN_ERROR_SUCCESSが返されます。IFDN_ERROR_SUCCESS以外の値が返さ

れた場合については、『4.7 戻り値一覧』をご参照ください。

Page 27: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

27

【備考】

接続相手から I/O メッセージが書き込まれる度にバッファの内容が更新されます。メッセージ

が更新されたかは、読み出したメッセージの時刻情報を比較することで確認できます。

一度も接続相手から I/O メッセージが書き込まれていない状態で本関数を呼び出すと、

IFDN_ERROR_NO_DATA を返しエラー終了します。

一度でも接続相手から I/O メッセージが書き込まれると、次の I/O メッセージが書き込まれる

まで同じ内容の I/O メッセージを読み出せます。

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

ULONG macid;

DN_MESSAGE dnMessage;

DeviceHandle = DnOpen(“IFDN1”); :

dnMessage.MessageType = DN_IO_POLL

dnMessage.MacID = 3

Ret = DnRead(DeviceHandle, &dnMessage);

●Visual C# .NET

IntPtr DeviceHandle;

string deviceName;

int Ret;

int macid;

IFCDN.DN_MESSAGE dnMessage = new IFCDN.DN_MESSAGE();

deviceName = "IFDN1";

DeviceHandle = IFCDN.DnOpen(deviceName);

dnMessage.InitializeArray();

dnMessage.MessageType = DN_IO_POLL;

dnMessage.MacID = 3;

Ret = IFCDN.DnRead(DeviceHandle, out dnMessage);

Page 28: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

28

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim deviceName As String

Dim Ret As Integer

Dim macid As Integer

Dim dnMessage As IFCDN.DN_MESSAGE = New IFCDN.DN_MESSAGE

deviceName = "IFDN1" & Chr(0)

DeviceHandle = IFCDN.DnOpen(deviceName)

dnMessage.InitializeArray()

dnMessage.MessageType = DN_IO_POLL

dnMessage.MacID = 3

Ret = IFCDN.DnRead(DeviceHandle, dnMessage)

デバイス名「IFDN1」のデバイスから I/O メッセージを読み出します。

Page 29: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

29

4.4 関数個別説明(拡張関数)

7. DnSendExplicit 【機能】

Explicit メッセージの送信を行います。

【書式】

●C言語

int DnSendExplicit(

HDNDLE DeviceHandle,

PDN_EXPLICIT dnExplicit

);

●Visual C# .NET

[DllImport("IFDN.dll")]

public static extern int DnSendExplicit(

IntPtr DeviceHandle, ref DN_EXPLICIT dnExplicit );

●Visual Basic .NET

Declare Function DnSendExplicit Lib "IFDN.dll" (

ByVal DeviceHandle As IntPtr, _

ByRef dnExplicit As DN_EXPLICIT _

)As Integer

【パラメータ】

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

dnExplicit

送信するExplicit メッセージを設定した DN_EXPLICIT構造体を指定します。

構造体の説明に付いては『4.5 構造体説明』をご参照ください。

【戻り値】

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

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

Page 30: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

30

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DN_EXPLICIT dnExplicit;

DeviceHandle = DnOpen(“IFDN1”); :

// MAC ID が 3 のデバイスに対して

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

dnExplicit.MessageType = DN_EXPLICIT_REQUEST;

dnExplicit.MacID = 3;

dnExplicit.ServiceCode = 0x0E;

dnExplicit.ClassID = 5;

dnExplicit.InstanceID = 2;

dnExplicit.Length = 1;

dnExplicit.Data[0] = 9;

Ret = DnSendExplicit(DeviceHandle, &dnExplicit);

●Visual C# .NET

IntPtr DeviceHandle;

string deviceName;

int Ret;

IFCDN.DN_EXPLICIT dnExplicit = new IFCDN.DN_EXPLICIT();

deviceName = "IFDN1";

DeviceHandle = IFCDN.DnOpen(deviceName);

// MAC ID が 3 のデバイスに対して

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

dnExplicit.InitializeArray();

dnExplicit.MessageType = IFCDN.DN_EXPLICIT_REQUEST;

dnExplicit.MacID = 3;

dnExplicit.ServiceCode = 0x0E;

dnExplicit.ClassID = 5;

dnExplicit.InstanceID = 2;

dnExplicit.Length = 1;

dnExplicit.Data[0] = 9;

Ret = IFCDN.DnSendExplicit(DeviceHandle, ref dnExplicit);

Page 31: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

31

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim deviceName As String

Dim Ret As Integer

Dim dnExplicit As IFCDN.DN_EXPLICIT = New IFCDN.DN_EXPLICIT

deviceName = "IFDN1" & Chr(0)

DeviceHandle = IFCDN.DnOpen(deviceName)

‘ MAC ID が 3 のデバイスに対して

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

dnExplicit.InitializeArray()

dnExplicit.MessageType = IFCDN.DN_EXPLICIT_REQUEST

dnExplicit.MacID = 3

dnExplicit.ServiceCode = &HE

dnExplicit.ClassID = 5

dnExplicit.InstanceID = 2

dnExplicit.Length = 1

dnExplicit.Data(0) = 9

Ret = IFCDN.DnSendExplicit(DeviceHandle, dnExplicit)

デバイス名「IFDN1」のデバイスから Explicit メッセージの送信を行います。

Page 32: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

32

8. DnReceiveExplicit 【機能】

受信した Explicit メッセージを取り出します。

【書式】

●C言語

int DnReceiveExplicit(

HDNDLE DeviceHandle,

PDN_EXPLICIT dnExplicit

);

●Visual C# .NET

[DllImport("IFDN.dll")]

public static extern int DnReceiveExplicit(

IntPtr DeviceHandle, out DN_EXPLICIT dnExplicit );

●Visual Basic .NET

Declare Function DnReceiveExplicit Lib "IFDN.dll" (

ByVal DeviceHandle As IntPtr, _

ByRef dnExplicit As DN_EXPLICIT _

)As Integer

【パラメータ】

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

dnExplicit

Explicit メッセージを受信するための DN_EXPLICIT構造体を指定します。

構造体の説明に付いては『4.5 構造体説明』をご参照ください。

【戻り値】

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

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

【備考】

デバイス内の受信バッファから、受信メッセージを取り出します。

一度もメッセージを受信していない状態で本関数を呼び出すと、IFDN_ERROR_NO_DATA を返しエ

ラー終了します。

一度でもメッセージを受信すると、メッセージが更新されるまで同じメッセージを取得できま

す。

Explicit メッセージは次のように送信と受信を交互に行う必要があります。

スレーブ①への送信→スレーブ①からの受信→スレーブ②への送信→スレーブ②からの受信

→スレーブ③への送信→スレーブ③からの受信

Page 33: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

33

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DN_EXPLICIT dnExplicit;

DeviceHandle = DnOpen(“IFDN1”); :

Ret = DnReceiveExplicit(DeviceHandle, &dnExplicit);

●Visual C# .NET

IntPtr DeviceHandle;

string deviceName;

int Ret;

IFCDN.DN_EXPLICIT dnExplicit = new IFCDN.DN_EXPLICIT();

deviceName = "IFDN1";

DeviceHandle = IFCDN.DnOpen(deviceName);

dnExplicit.InitializeArray();

Ret = IFCDN.DnReceiveExplicit(DeviceHandle, out dnExplicit);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim deviceName As String

Dim Ret As Integer

Dim dnExplicit As IFCDN.DN_EXPLICIT = New IFCDN.DN_EXPLICIT

deviceName = "IFDN1" & Chr(0)

DeviceHandle = IFCDN.DnOpen(deviceName)

dnExplicit.InitializeArray()

Ret = IFCDN.DnReceiveExplicit(DeviceHandle, dnExplicit)

デバイス名「IFDN1」のデバイスから受信した Explicit メッセージを取り出します。

Page 34: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

34

9. DnGetPortStatus 【機能】

DeviceNet インタフェースの現在の状態を取得します。

【書式】

●C言語

int DnGetPortStatus(

HDNDLE DeviceHandle,

PDN_PORT_STATUS portStatus

);

●Visual C# .NET

[DllImport("IFDN.dll")]

public static extern int DnGetPortStatus(

IntPtr DeviceHandle, out DN_PORT_STATUS portStatus );

●Visual Basic .NET

Declare Function DnGetPortStatus Lib "IFDN.dll" (

ByVal DeviceHandle As IntPtr, _

ByRef portStatus As DN_PORT_STATUS _

)As Integer

【パラメータ】

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

portStatus

現在の状態を取得するための DN_PORT_STATUS構造体を指定します。

構造体の説明に付いては『4.5 構造体説明』をご参照ください。

【戻り値】

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

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

Page 35: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

35

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DN_PORT_STATUS portStatus;

DeviceHandle = DnOpen(“IFDN1”); :

Ret = DnGetPortStatus(DeviceHandle, &portStatus);

●Visual C# .NET

IntPtr DeviceHandle;

string deviceName;

int Ret;

IFCDN.DN_PORT_STATUS portStatus = new IFCDN.DN_PORT_STATUS();

deviceName = "IFDN1";

DeviceHandle = IFCDN.DnOpen(deviceName);

Ret = IFCDN.DnGetPortStatus(DeviceHandle, out portStatus);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim deviceName As String

Dim Ret As Integer

Dim portStatus As IFCDN.DN_PORT_STATUS = New IFCDN.DN_PORT_STATUS

deviceName = "IFDN1" & Chr(0)

DeviceHandle = IFCDN.DnOpen(deviceName)

Ret = IFCDN.DnGetPortStatus(DeviceHandle, portStatus)

デバイス名「IFDN1」のデバイスの現在の状態を取得します。

Page 36: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

36

10. DnGetErrorStatus

【機能】

エラー情報バッファに蓄えられたエラー情報を取得します。

【書式】

●C言語

int DnGetErrorStatus(

HDNDLE DeviceHandle,

PDN_ERROR dnError,

PDWORD count

);

●Visual C# .NET

[DllImport("IFDN.dll")]

public static extern int DnGetErrorStatus(

IntPtr DeviceHandle, out DN_ERROR dnError, out uint count );

●Visual Basic .NET

Declare Function DnGetErrorStatus Lib "IFDN.dll" (

ByVal DeviceHandle As IntPtr, _

ByRef dnError As DN_ERROR, _

ByRef count As Integer _

)As Integer

【パラメータ】

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

dnError

エラー情報を格納する DN_ERROR構造体を指定します。

構造体の説明に付いては『4.5 構造体説明』をご参照ください。

count エラー情報バッファから取り出すエラー情報の件数を指定してください。

設定可能範囲は 1~64 です。

関数正常終了時、実際に取得できたエラー情報件数が格納されます。

【戻り値】

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

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

【備考】

エラー情報バッファに蓄えられている情報の件数は、DnGetPortStatus関数で確認できます。

Page 37: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

37

【使用例】

●C言語

INT Ret;

HANDLE DeviceHandle;

DN_ERROR dnError;

DWORD count;

DeviceHandle = DnOpen(“IFDN1”); :

count = 3;

Ret = DnGetErrorStatus(DeviceHandle, &dnError, &count);

●Visual C# .NET

IntPtr DeviceHandle;

string deviceName;

int Ret;

IFCDN.DN_ERROR dnError = new IFCDN.DN_ERROR();

uint count;

deviceName = "IFDN1";

DeviceHandle = IFCDN.DnOpen(deviceName);

count = 3;

Ret = IFCDN.DnGetErrorStatus(DeviceHandle, out dnError, out count);

●Visual Basic .NET

Dim DeviceHandle As IntPtr

Dim deviceName As String

Dim Ret As Integer

Dim dnError As IFCDN.DN_ERROR = New IFCDN.DN_ERROR

Dim count As Integer

deviceName = "IFDN1" & Chr(0)

DeviceHandle = IFCDN.DnOpen(deviceName)

count = 3

Ret = IFCDN.DnGetErrorStatus(DeviceHandle, dnError, count)

デバイス名「IFDN1」のデバイスに蓄えられたエラー情報を取得します。

Page 38: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

38

4.5 構造体説明

4.5.1 DN_MESSAGE 構造体 I/O メッセージで使用する構造体です。

●C 言語

typedef struct{

DWORD MessageType;

DWORD MacID;

DWORD Length;

DWORD Time;

BYTE Data[512];

} DN_MESSAGE, *PDN_MESSAGE;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct DN_MESSAGE{

public uint MessageType;

public uint MacID;

public uint Length;

public uint Time;

[MarshalAs(UnmanagedType.ByValArray, SizeConst=512)]

public byte[] Data;

public void InitializeArray()

{

Data = new byte[512];

}

}

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure DN_MESSAGE

Dim MessageType As Integer

Dim MacID As Integer

Dim Length As Integer

Dim Time As Integer

<MarshalAs(UnmanagedType.ByValArray, SizeConst:=512)> _

Dim Data() As Byte

Public Sub InitializeArray()

ReDim Data(511)

End Sub

End Structure

Page 39: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

39

メンバ 説明

送信するメッセージ、または受信するメッセージのタイプを指定します。

識別子 値 内容

DN_IO_POLL 00000001h Poll

DN_IO_BITSTROBE 00000002h BisStrobe

DN_IO_COS 00000004h COS

DN_IO_CYCLIC 00000008h Cyclic

MessageType

MacID 接続先デバイスの MAC ID を指定します。

Length I/O メッセージの長さをバイト単位で指定または表します。

データ本体の長さになります。範囲は 0~512 になります。

Time メッセージが書き込まれた時刻が格納されます。単位はμsです。

実際の時刻ではなく、DnOpen関数の実行後からの経過時間になります。エ

ラー情報にも同じ時刻が記録されますので、I/Oメッセージとエラー発生

の時間関係を結びつけることが出来ます。

Data I/O メッセージ本体を格納または表します。

先頭から Data[0],Data[1],Data[2],…,Data[511]となっています。

Length の値よりも長いデータは無効です。

例えば Length が 3 の場合、Data[0],Data[1],Data[2]は有効ですが、

Data[3]以降のデータは無効です。

Page 40: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

40

4.6 構造体説明(拡張関数用)

4.6.1 DN_EXPLICIT 構造体 Explicit メッセージの送受信の際に使用する構造体です。

●C 言語

typedef struct{

DWORD MessageType;

DWORD MacID;

DWORD ServiceCode;

DWORD ClassID;

DWORD InstanceID;

DWORD Length;

DWORD Time;

BYTE Data[512];

} DN_EXPLICIT, *PDN_EXPLICIT;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct DN_EXPLICIT{

public uint MessageType;

public uint MacID;

public uint ServiceCode;

public uint ClassID;

public uint InstanceID;

public uint Length;

public uint Time;

[MarshalAs(UnmanagedType.ByValArray, SizeConst=512)]

public byte[] Data;

public void InitializeArray()

{

Data = new byte[512];

}

}

Page 41: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

41

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure DN_EXPLICIT

Dim MessageType As Integer

Dim MacID As Integer

Dim ServiceCode As Integer

Dim ClassID As Integer

Dim InstanceID As Integer

Dim Length As Integer

Dim Time As Integer

<MarshalAs(UnmanagedType.ByValArray, SizeConst:=512)> _

Dim Data() As Byte

Public Sub InitializeArray()

ReDim Data(511)

End Sub

End Structure

メンバ 説明

送信するメッセージ、または受信したメッセージのタイプを表します。

識別子 値 内容

DN_EXPLICIT_REQUEST 00000001h リクエストメッセージ

DN_EXPLICIT_RESPONSE 00000002h レスポンスメッセージ

MessageType

MacID 送信メッセージには送信先の MAC ID を指定します。

受信メッセージでは送信元の MAC ID を表します。

ServiceCode 送信メッセージには送信するデータのサービスコードを指定します。

受信メッセージでは受信したデータのサービスコードを表します。

ClassID 送信メッセージには送信するデータのクラス ID を指定します。

受信メッセージでは受信したデータのクラス ID を表します。

InstanceID 送信メッセージには送信するデータのインスタンス ID を指定します。

受信メッセージでは受信したデータのインスタンス ID を表します。

Length 送信メッセージの長さをバイト単位で指定します。

または、受信したメッセージの長さをバイト単位で取得します。

データ本体の長さになります。範囲は 0~512 になります。

Page 42: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

42

Time メッセージを受信した時刻が格納されます。単位はμsです。

実際の時刻ではなく、DnOpen関数の実行後からの経過時間になります。エ

ラー情報にも同じ時刻が記録されますので、受信メッセージとエラー発生

の時間関係を結びつけることが出来ます。

送信メッセージでは使用しません。

Data 送信メッセージを格納します。

または、受信したメッセージの本体を表します。

先頭から Data[0],Data[1],Data[2],…,Data[511]となっています。

送信時、Length に設定した値よりも長いデータは無効です。

例えば Length に 3 を設定した場合、Data[0],Data[1],Data[2]は送信され

ますが、Data[3]以降のデータは無効で送信されません。

同様に受信時も Length 以上のデータは無効です。

例えば Length に 2 が返ってきた場合、Data[0],Data[1]は受信したメッセ

ージの内容ですが、Data[2]以降は無効なデータです。

Page 43: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

43

4.6.2 DN_PORT_STATUS 構造体 DeviceNet インタフェースのステータスが格納される構造体です。

●C 言語

typedef struct{

DWORD BoardStatus;

DWORD ErrorBufferCount;

float NetworkPower;

BYTE SlaveCondition[64];

} DN_PORT_STATUS, *PDN_PORT_STATUS;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct DN_PORT_STATUS{

public uint BoardStatus;

public uint ErrorBufferCount;

public float NetworkPower;

[MarshalAs(UnmanagedType.ByValArray, SizeConst=64)]

public byte[] SlaveCondition;

public void InitializeArray()

{

SlaveCondition = new byte[64];

}

}

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure DN_PORT_STATUS

Dim BoardStatus As Integer

Dim ErrorBufferCount As Integer

Dim NetworkPower As Single

<MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> _

Dim SlaveCondition() As Byte

Public Sub InitializeArray()

ReDim SlaveCondition(63)

End Sub

End Structure

Page 44: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

44

メンバ 説明

DeviceNet インタフェースの状態を表します。

識別子 値 内容

DN_PORT_OFF 00000000h ネットワークに参加していま

せん。

DN_PORT_ON 00000001h ネットワークに参加していま

す。

DN_CONNECTED 00000002h 他のデバイスと接続していま

す。

DN_WAIT_EXPLICIT_RESPONSE 00000004h Explicit メッセージのレスポ

ンス待ちです。

DN_RECEIVED_EXPLICIT 00000008h Explicit メッセージを受信し

ました。

BoardStatus

ErrorBufferCount エラー情報バッファに蓄えられたエラー情報の件数を表します。

networkPower 現在のネットワーク電源電圧値を表します。

取得できる範囲は 0.8[V]~51.2[V]で、0.2[V]単位になります。

実際の電圧が 0.8[V]よりも小さい場合も 0.8[V]として、実際の電圧が

51.2[V]よりも大きい場合も 51.2[V]として取得されます。

SlaveCondition スレーブデバイスの状態を表します。

値 内容

0 デバイスリストに存在しない。

1 デバイスリストに存在するが、接続していない。

(接続後に何らかの要因で切断した場合もこの値になります)

2 デバイスリストに存在し、接続している。

配列の添え字がスレーブデバイスの MAC ID に対応します。

例えば MAC ID=3 のスレーブデバイスの状態は SlaveCondition[3]に格納

されます。

Page 45: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

45

4.6.3 DN_ERROR 構造体 エラー情報の詳細が格納されている構造体です。

●C 言語

typedef struct{

DWORD InterruptRegister;

DWORD ErrorCodeRegister;

DWORD ArbitrationLostRegister;

DWORD Time;

} DN_ERROR, *PDN_ERROR;

●Visual C# .NET

[StructLayout(LayoutKind.Sequential)]

public struct DN_ERROR{

public uint InterruptRegister;

public uint ErrorCodeRegister;

public uint ArbitrationLostRegister;

public uint Time;

}

●Visual Basic .NET

<StructLayout(LayoutKind.Sequential)> _

Structure DN_ERROR

Dim InterruptRegister As Integer

Dim ErrorCodeRegister As Integer

Dim ArbitrationLostRegister As Integer

Dim Time As Integer

End Structure

メンバ 説明

エラー割り込み発生時の発生要因が格納されています。

複数の要因が同時に成立している場合もあります。

DN_DETECT_BUS_ERROR が有効な場合、ErrorCodeRegister に詳細なエ

ラー要因が格納されています。

識別子 値 内容

DN_DETECT_BUS_ERROR 80h DeviceNet バス上のエラーを検

出しました。

詳細は ErrorCodeRegister で

確認してください。

InterruptRegister

DN_DETECT_ARBITRATION_LOST 40h DeviceNet バス上でアービトレ

ーションロストを検出しまし

た。詳細は

ArbitrationLostRegister で

確認してください。

Page 46: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

46

DN_IS_ERROR_PASSIVE 20h エラーパッシブ状態となりまし

た。(送信か受信のエラーカウ

ンタが 127 を越えました)

DN_DETECT_OVERRUN 08h オーバーランエラーが発生し、

受信メッセージが失われまし

た。

DN_IS_ERROR_WARNING 04h 送信か受信のエラーカウンタが

リミット値(255)を越えました。

DeviceNetバス上のエラーが発生した場合の詳細な内容が格納されて

います。InterruptRegister の DN_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 スロット

ErrorCodeRegister

1 1 0 1 1 ACK デリミタ

Page 47: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

47

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 オーバーロードフラグ

DeviceNet バス上で、送信メッセージの衝突が発生し、その際の調停

で負けた場合、どのビットで調停に負けたか(アービトレーション・

ロスト)を記録するレジスタです。

InterruptRegisterの DN_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ビット

ArbitrationLostRegister

Time エラーが発生した時刻が格納されます。単位はμsです。

実際の時刻ではなく、DnOpen関数の実行後からの経過時間になります。

受信メッセージにも同じ時刻が記録されますので、受信メッセージと

エラー発生の時間関係を結びつけることが出来ます。

Page 48: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

48

4.7 戻り値一覧

エラー識別子 値 意味

IFDN_ERROR_SUCCESS 0 正常終了。

IFDN_ERROR_NOT_READY C0000001h

(-1073741823)

現在ドライバを使用することができません。

IFDN_ERROR_ACCESS_DENIED C0000002h

(-1073741822)

現在ドライバの削除中です。

IFDN_ERROR_INVALID_PARAMETER C0000003h

(-1073741821)

パラメータが不正です。

IFDN_ERROR_INSUFFICIENT_BUFFER C0000004h

(-1073741820)

システムコールに渡されたデータ領域が小さす

ぎます。

IFDN_ERROR_NOT_OPEN C0000005h

(-1073741819)

ポートがオープンされる前にクローズしようと

しました。

IFDN_ERROR_MEMORY_NOTALLOCATED C0000006h

(-1073741818)

メモリを確保できません。

IFDN_ERROR_BUFFER_IS_FULL C0000007h

(-1073741817)

バッファに空きがありません。

IFDN_ERROR_BUFFER_IS_EMPTY C0000008h

(-1073741816)

バッファが空です。

IFDN_ERROR_CANNOT_ACCESS C0000009h

(-1073741815)

アクセス不能状態です。

IFDN_ERROR_INVALID_HANDLE C000000Ah

(-1073741814)

ハンドルが不正です。

IFDN_ERROR_NOT_SUPPORTED C000000Bh

(-1073741813)

サポートしていない機能です。

IFDN_ERROR_NOW_SENDING C000000Ch

(-1073741812)

現在メッセージ送信中です。

IFDN_ERROR_NOT_DEVICE C0000100h

(-1073741568)

デバイスが見つかりません。

IFDN_ERROR_READ_MEMORY_FAILED C0000101h

(-1073741567)

メモリの読み込み失敗です。

IFDN_ERROR_ALREADY_CONNECTED C0000102h

(-1073741566)

既に接続が確立済みです。

IFDN_ERROR_CONNECTION C0000103h

(-1073741565)

接続に失敗しました。

IFDN_ERROR_RESOURCE_UNAVAILABLE C0000104h

(-1073741564)

リソース不足です。

IFDN_ERROR_NOT_CONNECTED_YET C0000105h

(-1073741563)

まだ接続が確立されていません。

IFDN_ERROR_TIME_OUT C0000106h

(-1073741562)

タイムアウトが発生しました。

IFDN_ERROR_INVALID_CAN_ID C0000107h

(-1073741561)

CAN ID が不正です。

Page 49: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

49

IFDN_ERROR_NO_CONNECTION C0000108h

(-1073741560)

コネクションがありません。

IFDN_ERROR_NO_MORE_ID C0000109h

(-1073741559)

メッセージ ID が足りません。

IFDN_ERROR_INVALID_GROUPNUMBER C000010Ah

(-1073741558)

グループ番号が不正です。

IFDN_ERROR_NOT_ALLOCATE_MEMORY C000010Bh

(-1073741557)

メモリが確保できませんでした。

IFDN_ERROR_BUFFER_OVERFLOW C000010Ch

(-1073741556)

バッファがオーバーフローしました。

IFDN_ERROR_NO_DATA C000010Dh

(-1073741555)

バッファ内にメッセージがありません。

IFDN_ERROR_ON_LINE C000010Eh

(-1073741554)

ネットワークに参加している状態では実行でき

ません。

IFDN_ERROR_DUPULICATE_MACID C000010Fh

(-1073741553)

MAC ID が重複しています。

IFDN_ERROR_OFF_LINE C0000110h

(-1073741552)

ネットワークに参加していない状態では実行で

きません。

IFDN_ERROR_INVALID_MACID C0000111h

(-1073741551)

指定した MAC ID が不正です。

IFDN_ERROR_ALREADY_SET C0000112h

(-1073741550)

既に設定されています。

IFDN_ERROR_WRITE_MEMORY_FAILED C0000113h

(-1073741549)

メモリへの書き込みが失敗しました。

IFDN_ERROR_WAIT_FOR_RESPONSE C0000114h

(-1073741548)

レスポンス待ち中です。

IFDN_ERROR_NO_RESPONSE C0000115h

(-1073741547)

レスポンスがありませんでした。

IFDN_ERROR_NOT_SET_EPR C0000116h

(-1073741546)

EPR が設定されていません。

IFDN_ERROR_PORT_ON C0000117h

(-1073741545)

ネットワークに参加できませんでした。

Page 50: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

50

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

以下、各サンプルプログラムの概要を説明します。

5.1 実行手順 サンプルプログラムには実行形式のファイルが付属していません。

ソースコードをコンパイルして実行ファイルを生成してから、動作させてください。

「Visual C# .NET」、「Visual Basic .NET」用のサンプルプログラムは、それぞれ、以下を使用し

て作成されています。

Microsoft Visual C# .NET 2005

Microsoft Visual Basic .NET 2005

「Visual C# .NET」、「Visual Basic .NET」用のサンプルプログラムは、クラスライブラリのプロ

ジェクトを参照して作成しています。

【実行手順】

●Visual C++ 6.0 の場合

Visual C++(Visual Studio)を起動し、「ファイル」メニューから「ワークスペースを開く」

を選び、メイクファイル「*.mak」を開き、ビルドしてください。

●Visual C++.NET の場合

Visual Studio 2003~2008 までの場合

Visual Studio を起動し、「ファイル」メニューから「開く」→「プロジェクト」を選び、

プロジェクトファイル「*.vcproj」を開き、ビルドしてください。

Visual Studio 2010 以降の場合

Visual Studio を起動し、「ファイル」メニューから「開く」→「プロジェクト」を選び、

プロジェクトファイル「*.vcxproj」を開き、ビルドしてください。

●Visual C# .NET の場合

Visual Studio を起動し、「ファイル」メニューから「開く」→「プロジェクト」を選び、プロ

ジェクトファイル「*.csproj」※1を開き、ビルドしてください。

●Visual Basic .NET の場合

Visual Studio を起動し、「ファイル」メニューから「開く」→「プロジェクト」を選び、プロ

ジェクトファイル「*.vbproj」※1を開き、ビルドしてください。

※1 クラスライブラリもビルドされます。

Page 51: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

51

※ Visual C# 2005 以降の場合は「*.csproj」ファイルを、Visual Basic 2005 以降の場合は

「*.vbproj」ファイルをそれぞれ Visual Studio 変換ウィザードで、プロジェクトの変換

を行ってからビルドしてください。

※ Visual C++ .NET を 64bit コンパイラで使用する場合には、インストール指定先フォルダ

\lib\x64 にあるインポートライブラリ(IFDN.LIB)を指定してください。

※ Visual C# .NET, Visual Basic .NET のサンプルプログラムは「.NET Framework 2.0」を

使用したサンプルプログラムとなっております。

「.NET Framework 2.0」がインストールされていない環境では、インストール、または別

Version の.NET Framework への変換が必要になります。

ご注意下さい。

※ 「*.vcxproj」ファイルは Visual Studio 2010 で作成しております。

Visual Studio 2010より新しいVersionで実行する場合には、下記設定を行ってください。

Visual Studio のメニューから、「プロジェクト」- 「プロパティ」-「構成プロパティ」-

「全般」を開き、「プラットフォームツールセット」を使用している環境に合わせて変更。

例) Visual Studio 2012 を使用している場合

Visual Studio 2012(v110)を選択(プルダウンメニューより選択できます)

5.2 サンプルプログラム一覧

各サンプルプログラムの概要は、下記の様になります。

サンプルプログラム名 概要

MasterIo マスタモードで 2 台のスレーブデバイスに対して I/O メッセージの書

き込みと読み込みを行うプログラムです。

下記の設定で動作致します。サンプルプログラム実行前にネットワー

ク情報設定ユーティリティで設定を行ってください。

マスタの設定

BaudRate=500kbps、Interval=1000ms、MAC ID=63

スレーブデバイス1の設定

MAC ID=4、Poll Input=1 Output=1

スレーブデバイス2の設定

MAC ID=6、Poll Input=0 Output=2

Explicit マスタモードで Explicit メッセージを送受信するプログラムです。

スレーブデバイスの Product Name を取得します。

下記の設定で動作致します。サンプルプログラム実行前にネットワー

ク情報設定ユーティリティで設定を行ってください。

マスタの設定

BaudRate=500kbps、Interval=1000ms、MAC ID=63

スレーブデバイスの設定

MAC ID=4、Poll Input=1 Output=1

IFCDN クラスライブラリ

Page 52: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

52

第6章 ユーティリティ

以下、各ユーティリティの概要を説明します。

6.1 ネットワーク情報設定ユーティリティ このユーティリティを使用することで、マスタモードで使用する時のネットワーク構成情報を

簡単に設定することができます。設定した情報は、デバイス上に保存することが出来ます。ま

た、その内容をファイルに保存し、読み込むことも出来ます。

【実行手順】

1.「DnNetUtil」を実行します。

2.メニューから「File(F)」→「Open(O)」を選択します。

コンボボックスから設定を行いたいデバイスを選択し、「OK」ボタンをクリックします。

3.デバイスに保存されている内容が表示されます。

設定が保存されていない場合は、デフォルト値が表示され、デバイスリストにはデバイスが

無い状態になります。

(デフォルト値:BaudRate=500kbps、Interval=100ms、MAC ID=63)

Page 53: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

53

4.ボーレートを設定します。

「BaudRate」のコンボボックスから使用するボーレートを選択してください。

5.周期的にスレーブデバイスに対して I/O メッセージを書き込む間隔を指定してください。

ms 単位で指定できます。

6.MAC ID を設定します。

「MAC ID」のコンボボックスから使用する MAC ID を選択してください。

ネットワーク上の他デバイスの MAC ID と重複しない MAC ID を選択してください。

7.情報の保存

「Save Device」ボタンをクリックすることで、設定したネットワーク情報がデバイス上に保

存されます。

※後述の「Scan Device」実行前に設定を保存しておく必要があります。

8.デバイスリストにデバイスを追加します。

デバイスの追加には次の 3通りの方法があります。

①ネットワーク上のデバイスをスキャンして自動的にリストを作成します。

②EDS ファイルを使用してリストにデバイスを追加します。

③ダイアログに情報を入力してリストにデバイスを追加します。

Page 54: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

54

8.1.スキャンしてリストの作成

「Scan Device」ボタンをクリックすることで、ネットワーク上のデバイスをスキャンしてリ

ストを作成します。

I/O コネクションの設定は自動で行われませんので、デバイス設定ダイアログにて設定する

必要があります。

スキャン前に表示されていたリストは、スキャン後のデータで更新されます。

この時点ではデバイス上に保存された情報は更新されません。

スキャンを行うときは、ネットワーク上の各デバイスがオンライン状態(マスタと接続でき

る)になっておく必要があります。

8.2.EDS ファイルによるデバイス追加

「Add Device」ボタンをクリックします。

デバイス設定ダイアログを表示させます。

「Load EDS」ボタンをクリックします。

Page 55: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

55

ネットワークに追加したいデバイスの EDS ファイルを選択し開きます。

EDS ファイルを読み込むと、ダイアログ上に読み込んだ内容で情報が表示されます。

MAC ID は別途設定する必要があるので、追加するデバイスで使用する MAC ID を「MAC ID」

のコンボボックスから選択してください。

Page 56: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

56

設定が終われば「OK」ボタンをクリックしてダイアログを閉じます。

設定した内容がユーティリティのデバイスリストに表示されます。

8.3.情報入力によるデバイス追加

「Add Device」ボタンをクリックします。

デバイス設定ダイアログを表示させます。

追加したいデバイスの情報を入力します。

追加するデバイスで使用する MAC ID を「MAC ID」のコンボボックスから選択してください。

追加するデバイスの名前を「ProductName」のテキストボックスに入力してください。

半角で 32 文字まで入力できます。

Page 57: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

57

各 I/O コネクションのサイズを設定します。

使用する IO コネクションのチェックボックスにチェックを入れ、「Input」「Output」のテキ

ストボックスにサイズを入力してください。

設定が終われば「OK」ボタンをクリックしてダイアログを閉じます。

設定した内容がユーティリティのデバイスリストに表示されます。

9.デバイスリストの修正

修正を行いたいデバイスのセルを選択し、マウスの右ボタンをクリックします。

ポップアップメニューが表示されますので「Edit(E)」を選択します。

Page 58: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

58

選択したデバイスの設定ダイアログが表示されます。

設定内容を修正し「OK」ボタンをクリックします。

修正内容が反映されます。

10.情報の保存

「Save Device」ボタンをクリックすることで、設定したネットワーク情報がデバイス上に保

存されます。

Page 59: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

59

11.設定ファイルの保存と読み出し

設定した情報をファイルとして保存したい場合は、メニューから「File(F)」→「Export(E)」

を選択してください。

ファイル保存ダイアログが表示され、設定情報を保存できます。

保存しておいたファイルから設定情報を読み込みたい場合は、メニューから「File(F)」→

「Import(I)」を選択してください。

ファイルを指定することにより、保存しておいた情報が読み出されます。

読み込み前に表示されていたリストは、読み込み後のデータで更新されます。

Page 60: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

60

6.2 自己診断プログラム 本製品には、動作不具合時の原因がハードウェア的なものか、ソフトウェア的なものかを容易

に判断するための自己診断機能を搭載しています。診断プログラムを用いて動作確認を行って

ください。

【使用機材】

弊社 DeviceNet インタフェース製品

【起動方法】

1. DeviceNet インタフェース製品の診断を行う前に、デバイスからケーブルを外しておきます。

2.「DiagDn」を実行します。

3. メニューから「File(F)」→「Open(O)」を選択します。

診断を行いたいデバイスを選択し、「OK」ボタンをクリックします。

4. メインダイアログに、デバイスの情報が表示されますので、メニューから「Diagnosis (D)」

→「Start Diagnosis (S)」を実行し、診断を開始してください。

※開始直後にケーブルを外すように促すメッセージボックスが表示されます。

Page 61: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

61

5. 診断結果がメインダイアログに表示されます。

診断結果が「NG」の場合には、メニューから「File (F)」→「Save the Result (S)」を選択

して、診断結果をファイルに保存してください。

その診断結果とともに弊社までお問い合わせください。

Page 62: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

62

第7章 重要な情報

保証の内容と制限

弊社は本ドキュメントに含まれるソースプログラムの実行が中断しないこと、またはその実行に

誤りが無いことを保証していません。

本製品の品質や使用に起因する、性能に起因するいかなるリスクも使用者が負うものとします。

弊社はドキュメント内の情報の正確さに万全を期しています。万一、誤記または誤植などがあっ

た場合、弊社は予告無く改訂する場合があります。ドキュメントまたはドキュメント内の情報に

起因するいかなる損害に対しても弊社は責任を負いません。

ドキュメント内の図や表は説明のためであり、ユーザ個別の応用事例により変化する場合があり

ます。

著作権、知的所有権

弊社は本製品に含まれるおよび本製品に対する権利や知的所有権を保持しています。

本製品はコンピュータ ソフトウェア、映像/音声(例えば図、文章、写真など)を含んでいます。

医療機器/器具への適用における注意

弊社の製品は人命に関わるような状況下で使用される機器に用いられる事を目的として設計、製

造された物では有りません。

弊社の製品は人体の検査などに使用するに適する信頼性を確保する事を意図された部品や検査機

器と共に設計された物では有りません。

医療機器、治療器具などの本製品の適用により、製品の故障、ユーザ、設計者の過失などにより、

損傷/損害を引き起こす場合が有ります。

複製の禁止

弊社の許可なく、本ドキュメントの全て、または一部に関わらず、複製、改変などを行うことは

できません。

責任の制限

弊社は、弊社または再販売者の予見の有無にかかわらず発生したいかなる特別損害、偶発的損害、

間接的な損害、重大な損害について、責任を負いません。

本製品(ハードウェア,ソフトウェア)のシステム組み込み、使用、ならびに本製品から得られる

結果に関する一切のリスクについては、本製品の使用者に帰属するものとします。

本製品に含まれるバグ、あるいは本製品の供給(納期遅延)、性能もしくは使用に起因する付帯的

損害もしくは間接的損害に対して、弊社に全面的に責がある場合でも、弊社はその製品に対する

改良(正常に動作する)、代品交換までとし、金銭面での賠償の責任は負わないものとしますので、

予めご了承ください。

本製品(ソフトウェアを含む)は、日本国内仕様です。本製品を日本国外で使用された場合、弊

社は一切責任を負いかねます。また、弊社は本製品に関し、海外での保守サービスおよび技術サ

ポート等は行っておりません。

Page 63: GPC-4872 - Interface...Visual C# .NET MasterIo Visual C# .NET用サンプルプログラム Explicit Visual C# .NET用サンプルプログラム Visual C++ MasterIo C用サンプルプログラム

GPC-4872 Help for Windows

© 2015, 2016 Interface Corporation. All rights reserved.

63

商標/登録商標

本書に掲載されている会社名、製品名は、それぞれ各社の商標または登録商標です。