+ All Categories
Home > Documents > GPC-7301 - Interface

GPC-7301 - Interface

Date post: 04-Apr-2022
Category:
Upload: others
View: 13 times
Download: 0 times
Share this document with a friend
58
DSM(PCI/C-PCI) www.interface.co.jp GPC-7301 DC モータドライバインタフェースモジュール用 Windows ドライバ Help for Windows
Transcript

DSM(PCI/C-PCI)

www.interface.co.jp

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

Help for Windows

GPC-7301 Help for Windows

© 1999, 2011 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 実行手順 .......................................................................6

第 4 章 リファレンス 9

4.1 関数一覧 .......................................................................9

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

4.3 戻り値一覧 ....................................................................49

4.4 基板版数、管理番号について ....................................................50

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

5.1 DcmSmpl .......................................................................51

第 6 章 ユーティリティ 52

6.1 動作確認プログラム ............................................................52

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

第 7 章 重要な情報 57

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

3

第1章 はじめに

1.1 概要 GPC-7301 は、Windows 上のアプリケーションから、弊社 DC モータドライバ製品を制御する為の

ソフトウェアです。

弊社 DC モータドライバ製品を Windows 上のアプリケーションから DLL をダイナミックリンクし、

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

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

1.2 特長 ●コントローラの直接制御に近いシンプルな関数体系、自由度が高く、処理速度が速いアプリケ

ーションを構築できます。

●インタロック、過電流異常検出・復帰時にイベントを発生させることができます。

●各軸の設定、起動/停止を本ソフトウェアで制御することができます。

●インタフェースモジュールの自己診断を行うプログラム、動作確認プログラムが付属していま

す。

●画面上で機能や使い方を説明するオ Help(Help.pdf)をサポートしていますので、開発中に関

数の詳細説明など、簡単に参照することができます。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

4

第2章 製品仕様

2.1 基本仕様 大デバイス数 16 デバイス(枚)

割り込み機能 DC モータドライバモジュールから、アプリケーションに割り

込みを通知することができます。ただし、Visual Basic Ver.

4.0 では、コールバック関数の登録ができない為、割り込み

機能を使用することはできません。Visual Basic Ver. 5.0

以降のものでは可能です。

本 DLL は、以下のイベントを通知することができます。

・各チャンネル(軸)の異常検出、復帰時。

・インタロック信号入力時。

割り込みマスク機能 各チャンネル(軸)毎に割り込みのマスク設定/マスク解除す

ることができます。ただし、インタロック信号割り込みのマ

スクはできません。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

5

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

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

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

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

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

動作確認プログラム DCMPIK.EXE 動作確認プログラム

サンプルプログラム

Visual C# .NET DCMSMPL

IFDCM

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

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

Visual Basic .NET DCMSMPL

IFDCM

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

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

Delphi 8 DCMSMPL

IFDCM

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

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

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

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

MSVCRT.DLL C ランタイム共有 DLL

CP7301.SYS Windows 2000 以降の OS 用ドライバ デバイスドライバ

GPC7301.INF

GPC7301.CAT

Windows 2000 以降の OS 用ドライバ インストー

ルファイル

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

CP7301.SYS Windows NT 4.0 用ドライバ

GPC7301.INF Windows NT 4.0 用ドライバ ドライバ インストー

ルファイル

CP7301.VXD Windows Me/98/95 用ドライバ

GPC7301.INF Windows Me/98/95用ドライバ インストールファイ

ヘッダファイル FBIDCM.H Visual C++用ヘッダファイル

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

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

Help HELP.PDF Help(PDF 形式)

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

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

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

6

第3章 導入方法

3.1 インストール手順

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

3.2 実行手順

同一型式のインタフェースモジュールを複数枚使用する場合は、インタフェースモジュール上ロ

ータリスイッチ RSW1 の設定値が同一型式同士で重複しないように設定してからシステムに挿入

してください。同一型式で複数のインタフェースモジュールが存在する場合、インタフェースモ

ジュールを一意に識別するための番号となります。重複していた場合、本 DLL は正常に動作いた

しません。

DC モータドライバモジュールは、以下の流れでモータを動作させます。

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

3.2.1 初期化

インタフェースモジュールを DcmOpen 関数で初期化します。

hDeviceHandle = DcmOpen( "FBIDCM1", DCM_FLAG_NORMAL );

デバイス名(FBIDCM1)を指定して初期化を行います。このデバイス名はドライバによって一意に

設定されます。

FBIDCM1、FBIDCM2・・・FBIDCM16

初期化が正常終了すると上記の記述例では hDeviceHandle にデバイスハンドルが返されます。

デバイスハンドルとは、DC モータドライバモジュールを一意に識別するもので、下記以降の関数

コールの際に指定します。

複数の DC モータドライバモジュールを使用する場合は、DcmOpen 関数を各インタフェースモジュ

ールに対してコールし、対応するデバイスハンドルを取得する必要があります。

また、DcmOpen 関数の第 2パラメータにフラグ”DCM_FLAG_SHARE”を設定して実行することで、別々

のプロセス(アプリケーション)から同一の DC モータドライバモジュールを初期化(使用)するこ

とが可能です。これにより別々のプロセス(アプリケーション)間で一枚の DC モータドライバモジ

ュールを共有することが可能です。

一枚のインタフェースモジュールを複数アプリケーションで共有する場合、汎用出力の値、マス

ク設定等は 後に設定を行った値となります。(アプリケーション毎に設定は保持されません)

複数アプリケーションで同時に一枚のインタフェースモジュールを制御する場合、インタフェー

スモジュールの設定等は整合性を保てるようにアプリケーション間で調整を行ってください。

初期化した DC モータドライバモジュールはアプリケーション終了の際には必ず終了処理

( DcmClose 関数 )を行ってください。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

7

3.2.2 モータ起動

DcmStartMotion 関数にて、各軸のモータを起動させます。

DcmStartMotion( hDeviceHandle, 1, DCM_FORWARD );

1 軸目のモータを正転方向へ回転させる例です。

例えば 1軸のモータでは OUT1+、OUT1-のピンから信号を出力してモータの起動、停止を制御して

います。

・回転方向、DCM_FORWARD(正転)では、OUT1+から信号出力することによってモータを起動させま

す。

・回転方向、DCM_REVERSE(逆転)では、OUT1-から信号出力することによってモータを起動させま

す。

3.2.3 各軸の動作状態の取得

DcmGetStatus 関数にて、各軸の動作状態を取得できます。

DcmGetStatus( hDeviceHandle, 1, DCM_BUSY, &dwStatus );

1 軸目のモータの動作状態を dwStatus 変数へ格納する例です。

3.2.4 モータ動作の停止

DcmStopMotion 関数にて、モータ動作の停止を行います。

DcmStopMotion( hDeviceHandle, 1, DCM_STOP );

1 軸目のモータ動作を停止する例です。

DcmStopMotion 関数の 3番目のパラメータを”DCM_BRAKE”モードに設定して実行することによりブ

レーキ停止となります。

3.2.5 汎用入出力

DcmInputDI 関数にて、汎用入力を制御します。(IN1、IN2 の信号の入力状態を取得します。)

DcmInputDI( hDeviceHandle, &dwDI );

IN1、IN2 信号の状態を dwDI 変数へ格納する例です。

DcmOutputDO 関数で汎用出力を制御します。(OUT1、OUT2 の信号の出力を行います。)

DcmOutputDO( hDeviceHandle, 0x03 );

1. PCI-7301[11], [11]C01, [11]C02, [11]C03 の場合

OUT1、OUT2 それぞれ High を出力します

2. PCI-7301[11]C04 以降の場合

OUT1、OUT2 それぞれ Low を出力します

※ 参照 :<基板版数、管理番号について>

<注意>

PCI-7301[11], [11]C01, [11]C02, [11]C03 は、正論理であり、PCI-7301[11]C04 以降は、負論理

となっています。

DcmInputDI 関数、DcmOutputDO 関数は、上記論理にて処理されますが、DcmInputDIEx 関数、

DcmOutputDOEx 関数の場合、上記区別がなく、全て負論理として処理します。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

8

例) OUT1、OUT2 それぞれ Low を出力します。

DcmOutputDOEx( hDeviceHandle, 0x03 );

3.2.6 イベント割り込みの設定

割り込みイベントが発生した時に、登録した関数を実行させることができます。

これをコールバックイベント機能と呼びます。

DcmSetEvent 関数にて割り込みイベントが発生した時に呼び出されるコールバック関数を登録し

ます。

DcmSetEventMask 関数にて指定した軸より、異常検出、異常復帰時に割り込みを発生させるため

の割り込みマスク設定を行います。

設定したマスク状態は DcmGetEventMask 関数で取得できます。

割り込みイベントが発生すると、設定したコールバック関数が呼び出されます。

割り込みイベントの処理が必要なくなった場合は、DcmSetEventMask 関数にて割り込み要因をマ

スクし、DcmSetEvent 関数で 2番目のパラメータ(コールバック関数へのアドレスを設定するパラ

メータ)に NULL または 0を設定することにより、コールバック関数の登録を解除します。

DcmSetEvent( hDeviceHandle, lpCallBack, 1 );

lpCallBack が指し示すアドレスのコールバック関数の登録を行い、割り込みが発生した時にデー

タ:1をそのコールバック関数へ渡します。

DcmSetEventMask( hDeviceHandle, 0x01 );

1 軸目の異常検出もしくは、復帰時に割り込みが発生するようにマスク設定します。

DcmGetEventMask( hDeviceHandle, &dwEventMask );

割り込みのマスク設定を dwEventMask の変数へ格納します。

3.2.7 終了処理

DcmClose 関数でインタフェースモジュールの終了処理を行います。

DcmClose( hDeviceHandle );

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

9

第4章 リファレンス

4.1 関数一覧

No 関数名 機能

1 DcmOpen DC モータドライバモジュールのオープンを行い、以後のインタフェ

ースモジュールへのアクセスを行えるようにします。

2 DcmClose DC モータドライバモジュールのクローズを行い、インタフェースモ

ジュールアクセスのために使用されていた各種リソースの解放を行

い、以後のインタフェースモジュールへのアクセスを禁止します。

3 DcmGetDeviceInfo インタフェースモジュールの型式、RSW1(インタフェースモジュール

識別)の設定値を取得します。

4 DcmStartMotion 各軸のモータを起動させます。

5 DcmStopMotion 各軸のモータを停止させます。

6 DcmGetStatus 各軸のモータのステータス/インタロック信号の状態を取得しま

す。

7 DcmInputDI 汎用入力を制御します。

8 DcmOutputDO 汎用出力を制御します。

9 DcmSetEvent 割り込みの設定を行います。

10 DcmSetEventMask 割り込みのマスク設定を行います。

11 DcmGetEventMask 割り込みのマスク設定を取得します。

12 DcmInputDIEx 汎用入力を制御します。(負論理)

13 DcmOutputDOEx 汎用出力を制御します。(負論理)

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

10

4.2 関数個別説明

1. DcmOpen 【機能】

DC モータコンロールモジュールのオープンを行い、以後のインタフェースモジュールへのアク

セスを行えるようにします。オープンするにはデバイス名を指定します。デバイス名は、シス

テム起動時にインタフェースモジュール毎に自動で割り当てられます。

●DC モータドライバモジュールのデバイス名は「FBIDCMx」(x は 1~16)となります。複数枚

ご使用になる場合は、制御するインタフェースモジュールのデバイス名を事前にご確認くだ

さい。

●各デバイス名の確認は、Windows NT 以外の OS の場合、デバイスマネージャにて確認できま

す。

●動作確認プログラム(DcmMotion.exe)、または診断プログラム(DcmDiag.exe)でも確認で

きます。

●WindowsNT では、動作確認プログラム(DcmMotion.exe)または診断プログラム(DcmDiag.exe)

にて割り当てられたデバイス名をご確認ください。

【書式】

●C言語

HANDLE DcmOpen(

LPCTSTR Name, // デバイス名

DWORD Flag // オープンフラグ

);

●Visual Basic

Declare Function DcmOpen Lib "fbidcm.dll"(

ByVal Name As String,

ByVal Flag As Long

)As Integer

●Delphi

function DcmOpen(

Name: String;

Flag: DWORD

): Thandle; stdcall; external ‘fbidcm.dll’;

【パラメータ】

Name オープンするインタフェースモジュールのデバイス名を指定してください。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

11

Flag オープンフラグを指定してください。

指定可能な識別子は下記のものから選択します。

識別子 値 意味

DCM_FLAG_NORMAL 0000h 1 つのデバイス(インタフェースモジュール)を制御す

るプロセス(アプリケーション)は 1つだけとします。

DCM_FLAG_SHARE 0002h 1 つのデバイス(インタフェースモジュール)を複数の

プロセス(アプリケーション)から重複(共有)して制御

することを許可するフラグです。

【戻り値】

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

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

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

【備考】

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

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

■DCM_FLAG_SHARE の動作について

本フラグを指定することにより、同じデバイスを 2 つ以上のアプリケーションで共有すること

が可能となります。その際に下記の注意事項に気を付けてください。

注 1.

DCM_FLAG_SHARE を指定してオープンしたインタフェースモジュールに対しては、他のアプリケ

ーションからも DCM_FLAG_SHARE を指定してオープンしないと、オープンは失敗します。

【使用例】

●C言語

HANDLE DeviceHandle;

INT ret;

DeviceHandle = DcmOpen(“FBIDCM1”, DCM_FLAG_NORMAL ); :

ret = DcmClose( DeviceHandle );

●Visual Basic

Dim lpszName As String

Dim DeviceHandle As Long

Dim ret As Long

lpszName = “FBIDCM1” & Chr( 0 ) DeviceHandle = DcmOpen( lpszName, DCM_FLAG_NORMAL )

ret = DcmClose( DeviceHandle )

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

12

●Delphi

var

lpszName: String;

DeviceHandle: THandle;

ret: Integer;

begin

lpszName :=‘FBIDCM1’; DeviceHandle := DcmOpen( lpszName, DCM_FLAG_NORMAL );

ret := DcmClose( DeviceHandle );

end;

デバイス名”FBIDCM1”の DC モータドライバモジュールを DCM_FLAG_NORMAL のフラグでオープン

し、変数 DeviceHandle にデバイスハンドルを返します。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

13

2. DcmClose 【機能】

DC モータドライバモジュールのクローズを行い、インタフェースモジュールアクセスのために

使用されていた各種リソースの解放を行い、以後のインタフェースモジュールへのアクセスを

禁止します。

【書式】

●C言語

INT DcmClose(

HANDLE DeviceHandle // デバイスハンドル

);

●Visual Basic

Declare Function DcmClose Lib "fbidcm.dll"(

ByVal DeviceHandle As Long

)As Integer

●Delphi

function DcmClose (

DeviceHandle: THandle

): Integer; stdcall; external ‘fbidcm.Ddll’;

【パラメータ】

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

【戻り値】

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

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

【備考】

●再度、インタフェースモジュールへのアクセスを行う場合にはオープン処理(DcmOpen 関数)

を呼び出してください。

●インタフェースモジュールのクローズを行う時は、必ずこの DcmClose 関数を実行してくだ

さい。

【使用例】

●C言語

HANDLE DeviceHandle;

INT ret;

DeviceHandle = DcmOpen(“FBIDCM1”, DCM_FLAG_NORMAL ); :

ret = DcmClose( DeviceHandle );

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

14

●Visual Basic

Dim lpszName As String

Dim DeviceHandle As Long

Dim ret As Long

lpszName = “FBIDCM1” & Chr( 0 ) DeviceHandle = DcmOpen( lpszName, DCM_FLAG_NORMAL )

ret = DcmClose( DeviceHandle )

●Delphi

var

lpszName: String;

DeviceHandle: THandle;

ret: Integer;

begin

lpszName :=‘FBIDCM1’; DeviceHandle := DcmOpen( lpszName, DCM_FLAG_NORMAL );

ret := DcmClose( DeviceHandle );

end;

デバイスハンドル DeviceHandle の DC モータドライバモジュールのクローズ処理を行います。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

15

3. DcmGetDeviceInfo 【機能】

指定されたデバイスのデバイス情報を取得します。

【書式】

●C言語

INT DcmGetDeviceInfo(

HANDLE DeviceHandle, // デバイスハンドル

PDWORD Type, // 取得値を格納する変数の参照渡し

PDWORD RSW // 取得値を格納する変数の参照渡し

);

●Visual Basic

Declare Function DcmGetDeviceInfo Lib "fbidcm.dll"(

ByVal DeviceHandle As Long,

ByRef Type As Long,

ByRef RSW As Long

)As Integer

●Delphi

function DcmGetDeviceInfo(

DeviceHandle: THandle;

var Type: DWORD;

var RSW: DWORD

): Integer; stdcall; external ‘fbidcm.Ddll’;

【パラメータ】

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

Type 取得値を格納する変数のポインタ(参照渡し)を指定してください。

インタフェースモジュール型式を取得します。

RSW 取得値を格納する変数のポインタ(参照渡し)を指定してください。

RSW 番号を取得します。

【戻り値】

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

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

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

16

【使用例】

●C言語

HANDLE DeviceHandle;

INT ret;

DWORD Type, RSW;

DeviceHandle = DcmOpen(“FBIDCM1”, DCM_FLAG_NORMAL );

ret = DcmGetDeviceInfo( DeviceHandle, &Type, &RSW );

if(ret == DCM_ERROR_SUCCESS)

printf("インタフェースモジュール:%d , RSW1:%X\n",Type,RSW);

●Visual Basic

Dim lpszName As String

Dim DeviceHandle As Long

Dim ret As Long

Dim Type As Long

Dim RSW As Long

Dim szInfo As String

lpszName = “FBIDCM1” & Chr( 0 ) DeviceHandle = DcmOpen( lpszName, DCM_FLAG_NORMAL )

ret = DcmGetDeviceInfo( DeviceHandle, Type, RSW )

If ret = DCM_ERROR_SUCCESS Then

szInfo = "インタフェースモジュール:" & Str(Type) & " RSW1:" & Hex(RSW)

ret = MsgBox(szInfo, (vbOKOnly + vbInformation), "デバイス情報")

End If

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

17

●Delphi

var

lpszName,Info: String;

DeviceHandle: THandle;

ret: Integer;

Type, RSW: DWORD;

begin

lpszName :=‘FBIDCM1’; DeviceHandle := DcmOpen( lpszName, DCM_FLAG_NORMAL );

ret := DcmGetDeviceInfo( DeviceHandle, Type, RSW );

if ret = DCM_ERROR_SUCCESS then

begin

Info := 'インタフェースモジュール:'+ IntToStr(Type)+' RSW1:' + IntToHex(RSW,2);

MessageDlg(Info, mtInformation, [mbOk], 0);

end;

end;

デバイスハンドル DeviceHandle のインタフェースモジュール型式と RSW 番号を Type 、RSW に

格納します。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

18

4. DcmStartMotion 【機能】

指定されたデバイス上のモータ軸を起動させます。

【書式】

●C言語

INT DcmStartMotion(

HANDLE DeviceHandle, // デバイス番号

DWORD Axis, // 起動軸

INT Dir // 方向

);

●Visual Basic

Declare Function DcmStartMotion Lib "fbidcm.dll"(

ByVal DeviceHandle As Long,

ByVal Axis As Long,

ByVal Dir As Long

)As Integer

●Delphi

function DcmStartMotion(

DeviceHandle: THandle;

Axis: DWORD;

Dir: Integer

): Integer; stdcall; external ‘fbidcm.Ddll’;

【パラメータ】

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

Axis 起動させる軸を指定してください。(1~4)

Dir 回転方向を指定してください。

識別子 値 動作モード

DCM_REVERSE 0 逆転

DCM_FORWARD 1 正転

【戻り値】

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

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

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

19

【使用例】

●C言語

HANDLE DeviceHandle;

INT ret;

DeviceHandle = DcmOpen(“FBIDCM1”, DCM_FLAG_NORMAL );

ret = DcmStartMotion( DeviceHandle, 1, DCM_FORWARD );

●Visual Basic

Dim lpszName As String

Dim DeviceHandle As Long

Dim ret As Long

lpszName = “FBIDCM1” & Chr( 0 ) DeviceHandle = DcmOpen( lpszName, DCM_FLAG_NORMAL )

ret = DcmStartMotion( DeviceHandle, 1, DCM_FORWARD )

●Delphi

var

lpszName: String;

DeviceHandle: THandle;

ret: Integer;

begin

lpszName :=‘FBIDCM1’; DeviceHandle := DcmOpen( lpszName, DCM_FLAG_NORMAL );

ret := DcmStartMotion( DeviceHandle, 1, DCM_FORWARD );

end;

デバイスハンドル DeviceHandle のインタフェースモジュールの 1 軸目を正転方向へ起動させ

ます。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

20

5. DcmStopMotion 【機能】

指定されたデバイス上のモータ軸を停止させます。

【書式】

●C言語

INT DcmStopMotion(

HANDLE DeviceHandle, // デバイスハンドル

DWORD Axis, // 停止軸

DWORD Mode // 停止動作

);

●Visual Basic

Declare Function DcmStopMotion Lib "fbidcm.dll"(

ByVal DeviceHandle As Long,

ByVal Axis As Long,

ByVal Mode As Long

)As Integer

●Delphi

function DcmStopMotion(

DeviceHandle: THandle;

Axis: DWORD;

Mode: DWORD

): Integer; stdcall; external ‘fbidcm.Ddll’;

【パラメータ】

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

Axis 停止させる軸を指定してください。(1~4)

Mode 停止動作を指定してください。

識別子 値 意味

DCM_STOP 0 停止

DCM_BRAKE 1 ブレーキ

【戻り値】

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

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

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

21

【使用例】

●C言語

HANDLE DeviceHandle;

INT ret;

DeviceHandle = DcmOpen(“FBIDCM1”, DCM_FLAG_NORMAL );

ret = DcmStartMotion( DeviceHandle, 1, DCM_FORWARD );

if(ret == DCM_ERROR_SUCCESS){

// 1 秒間動作させます。

Sleep(1000);

// ブレーキ停止させます。

ret = DcmStopMotion( DeviceHandle, 1, DCM_BRAKE );

}

●Visual Basic

Dim lpszName As String

Dim DeviceHandle As Long

Dim ret As Long

lpszName = “FBIDCM1” & Chr( 0 ) DeviceHandle = DcmOpen( lpszName, DCM_FLAG_NORMAL )

ret = DcmStartMotion( DeviceHandle, 1, DCM_FORWARD )

if ret = DCM_ERROR_SUCCESS Then

'1 秒間動作させます。

'Visual Basic 上での Sleep 関数の呼び出しは

'Visual Basic のヘルプを参照してください。

Call Sleep(1000)

' ブレーキ停止させます。

ret = DcmStopMotion( DeviceHandle, 1, DCM_BRAKE )

End If

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

22

●Delphi

var

lpszName: String;

DeviceHandle: THandle;

ret: Integer;

begin

lpszName :=‘FBIDCM1’; DeviceHandle := DcmOpen( lpszName, DCM_FLAG_NORMAL );

ret := DcmStartMotion( DeviceHandle, 1, DCM_FORWARD );

if ret = DCM_ERROR_SUCCESS then

begin

// 1 秒間動作させます。

Sleep(1000);

// ブレーキ停止させます。

ret := DcmStopMotion( DeviceHandle, 1, DCM_BRAKE );

End;

end;

デバイスハンドル DeviceHandle のインタフェースモジュールの 1 軸目をブレーキ停止させま

す。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

23

6. DcmGetStatus 【機能】

指定されたデバイス上におけるモータ軸の状態ステータス、インタロック信号の入力状態を取

得します。

【書式】

●C言語

INT DcmGetStatus(

HANDLE DeviceHandle, // デバイスハンドル

DWORD Axis, // 取得チャンネル

DWORD Mode, // 取得項目

PDWORD Status // 取得値を格納する変数の参照渡し

);

●Visual Basic

Declare Function DcmGetStatus Lib "fbidcm.dll"(

ByVal DeviceHandle As Long,

ByVal Axis As Long,

ByVal Mode As Long,

ByRef Status As Long

)As Integer

●Delphi

function DcmGetStatus(

DeviceHandle: THandle;

Axis: DWORD;

Mode: DWORD;

var Status: DWORD

): Integer; stdcall; external ‘fbidcm.Ddll’;

【パラメータ】

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

Axis 取得する軸を指定してください。(1~4)

Mode 取得項目を指定してください。

識別子 値 意味

DCM_BUSY 0 モータ動作状態

DCM_ILOCK 1 インタロック信号

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

24

Status 取得値を格納する変数のポインタ(参照渡し)を指定してください。

格納されるステータスは、Mode で指定した取得項目により異なります。

■モータ動作状態

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

- - - Error - - Busy- Busy+

bit31~bit5 : 予約

bit4 : 異常検出 0:なし 1:検出中

bit3,2 : 予約

bit1,0 : 動作

bit1 bit0 動作

0 0 停止中

0 1 正転動作中

1 0 逆転動作中

1 1 ブレーキ停止中

■インタロック信号

0:Low レベル(インタロックは解除されています。)

1:High レベル(インタロックは作動しています。)

【戻り値】

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

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

【備考】

●インタロック信号 (Mode に「DCM_ILOCK」(0001h)を設定 )のステータスを取得する場合、

軸番号(Axis)は無視されます。

●動作状態で、bit0,1(Busy+、Busy-)とも 1のときは「ブレーキ停止中」です。

●動作状態で、bit4 が 1 の時は異常検出中であることを示します。ここでいう"異常"とはイン

タフェースモジュールに過電流が流れた時です。電流の仕様の詳細は USER'S MANUAL を参照

してください。

※異常検出中はモータは停止しません。過電流がインタフェースモジュールやモータに流れつ

づけることにより、インタフェースモジュールまたはモータの故障の原因になりかねません。

異常検出が起きた場合、早急に電流を許容電流範囲に戻すかモータを停止して、過電流が流れ

つづけないようにしてくだい。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

25

【使用例】

●C言語

HANDLE DeviceHandle;

DWORD Status;

INT ret;

DeviceHandle = DcmOpen(“FBIDCM1”, DCM_FLAG_NORMAL ); :

ret = DcmGetStatus( DeviceHandle, 1, DCM_BUSY, &Status );

if(ret == DCM_ERROR_SUCCESS)

printf("動作状態:%x",Status);

●Visual Basic

Dim lpszName As String

Dim szInfo As String

Dim DeviceHandle As Long

Dim Status As Long

Dim ret As Long

lpszName = “FBIDCM1” & Chr( 0 ) DeviceHandle = DcmOpen( lpszName, DCM_FLAG_NORMAL )

ret = DcmGetStatus( DeviceHandle, 1, DCM_BUSY, Status )

If ret = DCM_ERROR_SUCCESS Then

szInfo = Hex(Staus)

szInfo = "動作状態:" & szInfo & " H"

ret = MsgBox(szInfo, (vbOKOnly + vbInformation), "動作状態")

End If

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

26

●Delphi

var

lpszName: String;

Info: String;

DeviceHandle: THandle;

Status: DWORD;

ret: Integer;

begin

lpszName :=‘FBIDCM1’; DeviceHandle := DcmOpen( lpszName, DCM_FLAG_NORMAL );

ret := DcmGetStatus( DeviceHandle, 1, DCM_BUSY, Status );

if ret = DCM_ERROR_SUCCESS then

begin

Info := '動作状態:'+ IntToHex(Status,2);

MessageDlg(Info, mtInformation, [mbOk], 0);

end;

end;

デバイスハンドル DeviceHandle のインタフェースモジュール上における 1 軸目のモータの動

作状態を Status に取得します。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

27

7. DcmInputDI 【機能】

指定されたデバイスの汎用入力を制御します。

【書式】

●C言語

INT DcmInputDI(

HANDLE DeviceHandle, // デバイスハンドル

PDWORD DI // 取得値を格納する変数の参照渡し

);

●Visual Basic

Declare Function DcmInputDI Lib "fbidcm.dll"(

ByVal DeviceHandle As Long,

ByRef DI As Long

)As Integer

●Delphi

function DcmInputDI(

DeviceHandle: THandle;

var DI: DWORD

): Integer; stdcall; external ‘fbidcm.Ddll’;

【パラメータ】

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

DI 取得値を格納する変数のポインタ(参照渡し)を指定してください。

入力値のフォーマットは以下の通りです。

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

- - - - - - IN2 IN1

bit31~bit2 : 予約

bit1 : A.PCI-7301[11], [11]C01, [11]C02, [11]C03 の場合(正論理)

0:Low

1:High

B.PCI-7301[11]C04 以降の場合(負論理)

0:High

1:Low

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

28

bit0 : A.PCI-7301[11], [11]C01, [11]C02, [11]C03 の場合(正論理)

0:Low

1:High

B.PCI-7301[11]C04 以降の場合(負論理)

0:High

1:Low

※A,B については、『基板版数、管理番号について』をご参照ください。

【戻り値】

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

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

【備考】

IN1、IN2 の信号については、USER'S MANUAL を参照してください。

【使用例】

●C言語

HANDLE DeviceHandle;

DWORD DI;

INT ret;

DeviceHandle = DcmOpen(“FBIDCM1”, DCM_FLAG_NORMAL );

ret = DcmInputDI( DeviceHandle, &DI );

if(ret == DCM_ERROR_SUCCESS)

printf("汎用入力:%xh",DI);

●Visual Basic

Dim lpszName As String

Dim szInfo As String

Dim DeviceHandle As Long

Dim DI As Long

Dim ret As Long

lpszName = “FBIDCM1” & Chr( 0 ) DeviceHandle = DcmOpen( lpszName, DCM_FLAG_NORMAL )

ret = DcmInputDI( DeviceHandle, DI )

If ret = DCM_ERROR_SUCCESS Then

szInfo = Hex(DI)

szInfo = "汎用入力:" & szInfo & " H"

ret = MsgBox(szInfo, (vbOKOnly + vbInformation), "汎用入力")

End If

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

29

●Delphi

var

lpszName: String;

Info: String;

DeviceHandle: THandle;

DI: DWORD;

ret: Integer;

begin

lpszName :=‘FBIDCM1’; DeviceHandle := DcmOpen( lpszName, DCM_FLAG_NORMAL );

ret := DcmInputDI( DeviceHandle, DI );

if ret = DCM_ERROR_SUCCESS then

begin

Info := '汎用入力:'+ IntToHex(DI,2);

MessageDlg(Info, mtInformation, [mbOk], 0);

end;

end;

デバイスハンドル DeviceHandle のインタフェースモジュール上における IN1、IN2 の信号の汎

用入力状態を DI に取得します。

DI の取得値が 0x03(bit1,0 が共に"1")の場合、以下の様になります。

A. PCI-7301[11], [11]C01, [11]C02, [11]C03 の場合(正論理)

IN1, IN2 共に状態が High

B. PCI-7301[11]C04 以降の場合(負論理)

IN1, IN2 共に状態が Low

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

30

8. DcmOutputDO 【機能】

指定されたデバイスの汎用出力を制御します。

【書式】

●C言語

INT DcmOutputDO(

HANDLE DeviceHandle, // デバイスハンドル

DWORD DO // 出力値

);

●Visual Basic

Declare Function DcmOutputDO Lib "fbidcm.dll"(

ByVal DeviceHandle As Long,

ByVal DO As Long

)As Integer

●Delphi

function DcmOutputDO(

DeviceHandle: THandle;

DO: DWORD

): Integer; stdcall; external ‘fbidcm.Ddll’;

【パラメータ】

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

DO 出力値が格納された変数のポインタ(参照渡し)を指定してください。

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

- - - - - - OUT2 OUT1

bit31~bit2 : 予約

bit1 : A.PCI-7301[11], [11]C01, [11]C02, [11]C03 の場合(正論理)

0:Low を出力

1:High を出力

B.PCI-7301[11]C04 以降の場合(負論理)

0:High を出力

1:Low を出力

bit0 : A.PCI-7301[11], [11]C01, [11]C02, [11]C03 の場合(正論理)

0:Low を出力

1:High を出力

B.PCI-7301[11]C04 以降の場合(負論理)

0:High を出力

1:Low を出力

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

31

※A,B については、『基板版数、管理番号について』をご参照ください。

【戻り値】

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

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

【備考】

OUT1、OUT2 の信号については、USER'S MANUSL を参照してください。

【使用例】

●C言語

HANDLE DeviceHandle;

INT ret;

DeviceHandle = DcmOpen(“FBIDCM1”, DCM_FLAG_NORMAL );

ret = DcmOutputDO( DeviceHandle, 0x03 );

●Visual Basic

Dim lpszName As String

Dim DeviceHandle As Long

Dim ret As Long

lpszName = “FBIDCM1” & Chr( 0 ) DeviceHandle = DcmOpen( lpszName, DCM_FLAG_NORMAL )

ret = DcmOutputDO( DeviceHandle, &H03 )

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

32

●Delphi

var

lpszName: String;

DeviceHandle: THandle;

ret: Integer;

begin

lpszName :=‘FBIDCM1’; DeviceHandle := DcmOpen( lpszName, DCM_FLAG_NORMAL );

ret := DcmOutputDO( DeviceHandle, $03 );

end;

デバイスハンドル DeviceHandle のインタフェースモジュールに対して

A. PCI-7301[11], [11]C01, [11]C02, [11]C03 の場合(正論理)

OUT1、OUT2 : High を出力

B. PCI-7301[11]C04 以降の場合(負論理)

OUT1、OUT2 : Low を出力

します。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

33

9. DcmSetEvent 【機能】

指定されたデバイス上における割り込みの設定を行います。

【書式】

●C言語

INT DcmSetEvent(

HANDLE DeviceHandle, // デバイスハンドル

LPDCMCALLBACK CallBack, // コールバック関数

DWORD User // ユーザ・データ

);

●Visual Basic

Declare Function DcmSetEvent Lib "fbidcm.dll"(

ByVal DeviceHandle As Long,

ByVal CallBack As DCMCALLBACK,

ByVal User As Long

)As Integer

●Delphi

function DcmSetEvent(

DeviceHandle: THandle;

CallBack: Pointer;

User: DWORD

): Integer; stdcall; external ‘fbidcm.Ddll’;

【パラメータ】

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

CallBack コールバック関数を指定してください。

User ユーザ・コールバック関数へ引き渡すユーザ・データを指定してください。

【戻り値】

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

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

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

34

【備考】

●PCI-7301 ではインタロック信号入力時、異常検出時、異常復帰時に割り込みが発生します。

ここでいう"異常検出時"とは過電流がインタフェースモジュールに流れた時で、"異常復帰

時"とは過電流から許容電流に戻った時です。インタロック信号は INTLCK 信号のことです。

電流の仕様などは USER'S MANUAL を参照してください。

●異常検出、復帰割り込みを発生させるには割り込みのマスク設定が必要です。割り込みのマ

スク設定は DcmSetEventMask 関数で行います。

●Visual Basic では Ver 5.0 以降でないとこの関数は使用できません。

●コールバック関数へのアドレス:CallBackProc に NULL または 0 を設定することにより、割

り込み発生時の処理を解除することができます。

【コールバック関数】

・コールバック関数は割り込みが発生した時にドライバから呼び出されます。

・プログラム上の別の場所で下記のように宣言します。(関数名は任意)

void DCMCALLBACK CallBackProc(DWORD Event, DWORD Data)

Event 割り込みが発生した要因

bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit9

- - - - - - - IL

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

Ret4 Ret3 Ret2 Ret1 DG4 DG3 DG2 DG1

bit31~bit9 : 予約

bit8 : インタロック割り込み 0:- 1:検出

bit7 : 4 軸目異常復帰割り込み 0:- 1:検出

bit6 : 3 軸目異常復帰割り込み 0:- 1:検出

bit5 : 2 軸目異常復帰割り込み 0:- 1:検出

bit4 : 1 軸目異常復帰割り込み 0:- 1:検出

bit3 : 4 軸目異常検出割り込み 0:- 1:検出

bit2 : 3 軸目異常検出割り込み 0:- 1:検出

bit1 : 2 軸目異常検出割り込み 0:- 1:検出

bit0 : 1 軸目異常検出割り込み 0:- 1:検出

User DcmSetEvent 関数の User にて指定された値

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

35

【使用例】

●C言語

// コールバック関数

void CALLBACK fnEvent( DWORD Event, DWORD Data )

{

// ここに割り込み発生時に処理するコードを記述します。

printf("割り込み要因:%xH",Event);

// モータの停止

if(Event & 0x01) DcmStopMotion( (HANDLE)Data, 1, DCM_STOP );

}

main( )

{

HANDLE DeviceHandle;

DWORD User;

INT ret;

DeviceHandle = DcmOpen(“FBIDCM1”, DCM_FLAG_NORMAL );

// 1 軸目に異常検出、復帰割り込みが発生するように設定します。

ret = DcmSetEventMask( DeviceHandle, 1 );

if(ret == DCM_ERROR_SUCCESS){

// 割り込みが発生した時にコールバック関数 fnEvent が呼び出され、

// その際、モータを停止させます。

User = (DWORD)DeviceHandle;

ret = DcmSetEvent( DeviceHandle,( LPDCMCALLBACK )fnEvent, User );

}

}

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

36

●Visual Basic Ver. 5.0 以降

' コールバック関数

' このコールバック関数はモジュールファイルに定義してください。

Public Sub fnEvent( ByVal Event As Long, ByVal Data As Long )

Dim szInfo As String

Dim ret As Long

' ここに割り込み発生時に処理するコードを記述します。

szInfo = "割り込み要因:" & Hex(Event) & "H"

' MainForm の Label1 の Caption に表示します。

MainForm.Label1.Caption = szInfo

' モータを停止

If Event = &H01 Then

ret = DcmStopMotion( Data, 1, DCM_STOP )

End If

End Sub

'MainForm の処理です。MainForm 上の Button1 をクリックした時に

'インタフェースモジュールのオープンと割り込みの設定を行います。

Private Sub Button1_Click( )

Dim lpszName As String

Dim DeviceHandle As Long

Dim User As Long

Dim ret As Long

lpszName = “FBIDCM1” & Chr( 0 ) DeviceHandle = DcmOpen( lpszName, DCM_FLAG_NORMAL )

' 1 軸目に異常検出、復帰割り込みが発生するように設定します。

ret = DcmSetEventMask( DeviceHandle, 1 )

If ret = DCM_ERROR_SUCCESS Then

' 割り込みが発生した時にコールバック関数 fnEvent 呼び出され、

' その際、モータを停止させます。

User = DeviceHandle

ret = DcmSetEvent( DeviceHandle, AddressOf fnEvent, User )

End If

End Sub

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

37

●Delphi

// ユーザ定義のプロトタイプ宣言をしておく

procedure fnEvent( Event, Data: DWORD );stdcall;

//

// コールバック関数

procedure fnEvent( Event, Data: DWORD );

var

szInfo: String;

hDevice: THandle;

begin

// ここに割り込み発生時に処理するコードを記述します。

// MainForm のフォームの Label1 の Caption に表示します。

szInfo := '割り込み要因:'+ IntToHex(Event,3);

MainForm.Label1.Caption := szInfo;

// モータの停止

if (Event and $01) = $01 then

begin

hDevice := THandle( Data );

DcmStopMotion( hDevice, 1, DCM_STOP );

end;

end;

procedure TMainForm.Button1Click(Sender: TObject);

var

lpszName: String;

DeviceHandle: THandle;

User: DWORD;

ret: Integer;

begin

lpszName :=‘FBIDCM1’; DeviceHandle := DcmOpen( lpszName, DCM_FLAG_NORMAL );

// 1 軸目に異常検出、復帰割り込みが発生するように設定します。

ret := DcmSetEventMask( DeviceHandle, 1 );

if ret = DCM_ERROR_SUCCESS then

begin

// 割り込みが発生した時にコールバック関数 fnEvent 呼び出され、

// その際、モータを停止させます。

User := DWORD( DeviceHandle );

ret := DcmSetEvent( DeviceHandle, Addr(fnEvent), User );

end;

end;

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

38

デバイスハンドル DeviceHandle のインタフェースモジュールにおいて異常検出割り込みが発

生したときにモータを停止します。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

39

10. DcmSetEventMask

【機能】

指定されたデバイスの割り込みマスク設定を行います。

【書式】

●C言語

INT DcmSetEventMask(

HANDLE DeviceHandle, // デバイスハンドル

DWORD EventMask // マスク設定値

);

●Visual Basic

Declare Function DcmSetEventMask Lib "fbidcm.dll"(

ByVal DeviceHandle As Long,

ByVal EventMask As Long

)As Integer

●Delphi

function DcmSetEventMask(

DeviceHandle: THandle;

EventMask: DWORD

): Integer; stdcall; external ‘fbidcm.Ddll’;

【パラメータ】

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

EventMask 割り込みマスク設定値を指定してください。

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

- - - - DG4 DG3 DG2 DG1

bit31~bit4 : 予約

bit3 : 4 軸目異常検出、復帰割り込み 0:MASK 1:UNMASK

bit2 : 3 軸目異常検出、復帰割り込み 0:MASK 1:UNMASK

bit1 : 2 軸目異常検出、復帰割り込み 0:MASK 1:UNMASK

bit0 : 1 軸目異常検出、復帰割り込み 0:MASK 1:UNMASK

【戻り値】

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

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

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

40

【備考】

割り込みが発生した時の処理の設定は DcmSetEvent 関数で行います。

【使用例】

●C言語

HANDLE DeviceHandle;

INT ret;

DeviceHandle = DcmOpen(“FBIDCM1”, DCM_FLAG_NORMAL );

ret = DcmSetEventMask( DeviceHandle, 0x01 );

●Visual Basic

Dim lpszName As String

Dim DeviceHandle As Long

Dim ret As Long

lpszName = “FBIDCM1” & Chr( 0 ) DeviceHandle = DcmOpen( lpszName, DCM_FLAG_NORMAL )

ret = DcmSetEventMask( DeviceHandle, &H01 )

●Delphi

var

lpszName: String;

DeviceHandle: THandle;

ret: Integer;

begin

lpszName :=‘FBIDCM1’; DeviceHandle := DcmOpen( lpszName, DCM_FLAG_NORMAL );

ret := DcmSetEventMask( DeviceHandle, $01 );

end;

デバイスハンドル DeviceHandle のインタフェースモジュールにおける割り込みマスクを、1

軸目での異常検出、復帰割り込みが有効になるように設定します。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

41

11. DcmGetEventMask

【機能】

指定されたデバイスの割り込みマスク設定を取得します。

【書式】

●C言語

INT DcmGetEventMask(

HANDLE DeviceHandle, // デバイスハンドル

PDWORD EventMask // 取得値を格納する変数の参照渡し

);

●Visual Basic

Declare Function DcmGetEventMask Lib "fbidcm.dll"(

ByVal DeviceHandle As Long,

ByRef EventMask As Long

)As Integer

●Delphi

function DcmGetEventMask(

DeviceHandle: THandle;

var EventMask: DWORD

): Integer; stdcall; external ‘fbidcm.Ddll’;

【パラメータ】

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

EventMask 取得値を格納する変数のポインタ(参照渡し)を指定してください。

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

- - - - DG4 DG3 DG2 DG1

bit31~bit4 : 予約

bit3 : 4 軸目異常検出、復帰割り込み 0:MASK 1:UNMASK

bit2 : 3 軸目異常検出、復帰割り込み 0:MASK 1:UNMASK

bit1 : 2 軸目異常検出、復帰割り込み 0:MASK 1:UNMASK

bit0 : 1 軸目異常検出、復帰割り込み 0:MASK 1:UNMASK

【戻り値】

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

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

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

42

【備考】

割り込みマスクの設定は DcmSetEventMask 関数で行います。

【使用例】

●C言語

HANDLE DeviceHandle;

DWORD EventMask;

INT ret;

DeviceHandle = DcmOpen(“FBIDCM1”, DCM_FLAG_NORMAL );

ret = DcmGetEventMask( DeviceHandle, &EventMask );

if(ret == DCM_ERROR_SUCCESS)

printf("割り込みマスク:%x",EventMask);

●Visual Basic

Dim lpszName As String

Dim szInfo As String

Dim DeviceHandle As Long

Dim EventMask As Long

Dim ret As Long

lpszName = “FBIDCM1” & Chr( 0 ) DeviceHandle = DcmOpen( lpszName, DCM_FLAG_NORMAL )

ret = DcmGetEventMask( DeviceHandle, EventMask )

If ret = DCM_ERROR_SUCCESS Then

szInfo = Hex(EventMask)

szInfo = "割り込みマスク:" & szInfo & " H"

ret = MsgBox(szInfo, (vbOKOnly + vbInformation), "割り込みマスク")

End If

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

43

●Delphi

var

lpszName: String;

Info: String;

DeviceHandle: THandle;

EventMask: DWORD;

ret: Integer;

begin

lpszName :=‘FBIDCM1’; DeviceHandle := DcmOpen( lpszName, DCM_FLAG_NORMAL );

ret := DcmGetEventMask( DeviceHandle, EventMask );

if ret = DCM_ERROR_SUCCESS then

begin

Info := '割り込みマスク:'+ IntToHex(EventMask,2);

MessageDlg(Info, mtInformation, [mbOk], 0);

end;

end;

デバイスハンドル DeviceHandle のインタフェースモジュールにおける割り込みマスクを

EventMask に格納します。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

44

12. DcmInputDIEx

【機能】

指定されたデバイスの汎用入力を制御します。(負論理)

【書式】

●C言語

INT DcmInputDIEx(

HANDLE DeviceHandle, // デバイスハンドル

PDWORD DI // 取得値を格納する変数の参照渡し

);

●Visual Basic

Declare Function DcmInputDIEx Lib "fbidcm.dll"(

ByVal DeviceHandle As Long,

ByRef DI As Long

)As Integer

●Delphi

function DcmInputDIEx(

DeviceHandle: THandle;

var DI: DWORD

): Integer; stdcall; external ‘fbidcm.Ddll’;

【パラメータ】

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

DI 取得値を格納する変数のポインタ(参照渡し)を指定してください。

入力値のフォーマットは以下の通りです。

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

- - - - - - IN2 IN1

bit31~bit2 : 予約

bit1 : 0:High 1:Low

bit0 : 0:High 1:Low

【戻り値】

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

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

【備考】

IN1、IN2 の信号については、USER'S MANUSL を参照してください。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

45

【使用例】

●C言語

HANDLE DeviceHandle;

DWORD DI;

INT ret;

DeviceHandle = DcmOpen(“FBIDCM1”, DCM_FLAG_NORMAL );

ret = DcmInputDIEx( DeviceHandle, &DI );

if(ret == DCM_ERROR_SUCCESS)

printf("汎用入力:%xh",DI);

●Visual Basic

Dim lpszName As String

Dim szInfo As String

Dim DeviceHandle As Long

Dim DI As Long

Dim ret As Long

lpszName = “FBIDCM1” & Chr( 0 ) DeviceHandle = DcmOpen( lpszName, DCM_FLAG_NORMAL )

ret = DcmInputDIEx( DeviceHandle, DI )

If ret = DCM_ERROR_SUCCESS Then

szInfo = Hex(DI)

szInfo = "汎用入力:" & szInfo & " H"

ret = MsgBox(szInfo, (vbOKOnly + vbInformation), "汎用入力")

End If

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

46

●Delphi

var

lpszName: String;

Info: String;

DeviceHandle: THandle;

DI: DWORD;

ret: Integer;

begin

lpszName :=‘FBIDCM1’; DeviceHandle := DcmOpen( lpszName, DCM_FLAG_NORMAL );

ret := DcmInputDIEx( DeviceHandle, DI );

if ret = DCM_ERROR_SUCCESS then

begin

Info := '汎用入力:'+ IntToHex(DI,2);

MessageDlg(Info, mtInformation, [mbOk], 0);

end;

end;

デバイスハンドル DeviceHandle のインタフェースモジュール上における IN1、IN2 の信号の汎

用入力状態を DI に取得します。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

47

13. DcmOutputDOEx

【機能】

指定されたデバイスの汎用出力を制御します。(負論理)

【書式】

●C言語

INT DcmOutputDOEx(

HANDLE DeviceHandle, // デバイスハンドル

DWORD DO // 出力値

);

●Visual Basic

Declare Function DcmOutputDOEx Lib "fbidcm.dll"(

ByVal DeviceHandle As Long,

ByVal DO As Long

)As Integer

●Delphi

function DcmOutputDOEx(

DeviceHandle: THandle;

DO: DWORD

): Integer; stdcall; external ‘fbidcm.Ddll’;

【パラメータ】

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

DO 出力値が格納された変数のポインタ(参照渡し)を指定してください。

bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0

- - - - - - OUT2 OUT1

bit31~bit2 : 予約

bit1 : 0:High を出力 1:Low を出力

bit0 : 0:High を出力 1:Low を出力

【戻り値】

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

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

【備考】

OUT1、OUT2 の信号については、USER'S MANUSL を参照してください。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

48

【使用例】

●C言語

HANDLE DeviceHandle;

INT ret;

DeviceHandle = DcmOpen(“FBIDCM1”, DCM_FLAG_NORMAL );

ret = DcmOutputDOEx( DeviceHandle, 0x03 );

●Visual Basic

Dim lpszName As String

Dim DeviceHandle As Long

Dim ret As Long

lpszName = “FBIDCM1” & Chr( 0 ) DeviceHandle = DcmOpen( lpszName, DCM_FLAG_NORMAL )

ret = DcmOutputDOEx( DeviceHandle, &H03 )

●Delphi

var

lpszName: String;

DeviceHandle: THandle;

ret: Integer;

begin

lpszName :=‘FBIDCM1’; DeviceHandle := DcmOpen( lpszName, DCM_FLAG_NORMAL );

ret := DcmOutputDOEx( DeviceHandle, $03 );

end;

デバイスハンドル DeviceHandle のインタフェースモジュールの OUT1、OUT2 の信号を Low にし

ます。

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

49

4.3 戻り値一覧

エラー識別子 値 意味 対処方法

DCM_ERROR_SUCCESS 00000000h 正常終了。 -

DCM_ERROR_NOT_DEVICE C0000001h

(-1073741823)

ドライバが呼び出せませ

ん。

指定されたデバイスが見つかりませ

んでした。指定しているデバイス名が

存在するかどうかを確認してくださ

い。

DCM_ERROR_NOT_OPEN C0000002h

(-1073741822)

ドライバが OPEN できませ

ん。

デバイスのオープン時に何らかのエ

ラーが発生しました。ドライバの内部

作業領域の確保の失敗等が原因です。

DCM_ERROR_INVALID_HANDLE C0000003h

(-1073741821)

デバイスハンドルが正し

くありません。

不正なデバイスハンドルで呼び出し

を行おうとしました。OPEN 関数で返

されたデバイスハンドルを使用して

ください。

DCM_ERROR_ALREADY_OPEN C0000004h

(-1073741820)

すでに OPEN しているデバ

イスを OPEN しようとしま

した。

既に OPEN されているデバイスです。

共 有 さ せ る 場 合 に は 、 フ ラ グ

DCM_FLAG_SHAREの指定をしてOPENし

てください。

DCM_ERROR_NOW_MOVING C0001000h

(-1073737728)

モータ動作中です。 モータ動作中に同一方向への起動命

令を発行しました。動作中では動作し

ている方向とは、逆方向への起動が可

能です。

DCM_ERROR_NOW_STOPPED C0001001h

(-1073737727)

モータ停止中です。 モータ停止中に停止しているモ

ードと同一の停止モードの停止

命令を発行しました。 DCM_ERROR_INVALID_AXIS C0001013h

(-1073737709)

軸番号指定に誤りがあり

ます。

1~4の軸番号を設定してください。

DCM_ERROR_INVALID_PARAMETER C0001017h

(-1073737705)

引数パラメータの値が不

正です。

API 関数に指定する値が不正もしく

は範囲外です。

DCM_ERROR_NOW_INTERLOCKED C0001020h

(-1073737696)

インタロック中です。 インタロック信号:INTLCK を GND に

おとしてください。

DCM_ERROR_IMPOSSIBLE C0001021h

(-1073737695)

実行不可。 異常検出中にモータの起動、停止命令

を発行しようとしました。異常復帰さ

せてください。(過電流を許容電流範

囲にしてください)

DCM_ERROR_NOT_ALLOCATE_MEMO

RY

C0001024h

(-1073737692)

作業用メモリの確保に失

敗しました。

利用可能なメモリが足りなくなって

います。不要なアプリケーション等を

終了させ、利用可能なメモリを増やす

ようにしてください。

GPC-7301 Help for Windows

4.4 基板版数、管理番号について 基板版数 インタフェースモジュール上に下記のフォーマットで書かれているカッコ[]内の数値

のこと。

P/988/1-001[XX]

XX が 11 の場合、11 版となります。

管理番号 インタフェースモジュール上の CH.NO 欄にある Cで始まる番号のこと。

本書では、基板版数、管理番号を下記の様に記述しています。

インタフェースモジュー

基板版数 管理番号

PCI-7301[11] 11 なし

PCI-7301[11]C01 11 C01

PCI-7301[11]C02 11 C02

PCI-7301[11]C03 11 C03

PCI-7301[11]C04 以降 11 C04 以降

© 1999, 2011 Interface Corporation. All rights reserved.

50

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

51

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

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

5.1 DcmSmpl 【【概要】

サンプルプログラム「DcmSmpl」は基本的なインタロックの解除、PTP 動作を行なうサンプルプ

ログラムです。

【実行手順】

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

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

●Visual C++の場合

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

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

●Visual Basic の場合

Visual Basic を起動し、プロジェクトファイル「DcmSmpl.vbp」を開き、ビルドしてください。

●Delphi の場合

Delphi を起動し、プロジェクトファイル「DcmSmpl.dpr」を開き、ビルドしてください。

作成後、「DcmSmpl」を起動してください。

【内容】

1. メニューバーの「Open」でデバイスオープンダイアログが表示されます。オープンするデ

バイス名を入力してください。

2. 「Start」で正転動作を開始します。

「Stop」で停止を行います。

3. 「Status」でモータ動作状態を表示します。

GPC-7301 Help for Windows

第6章 ユーティリティ

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

6.1 動作確認プログラム 【概要】

動作確認プログラムにより、DC モータドライバモジュールの各機能が正常に動作しているか、

機器を接続した状態で確認することができます。1~4軸のモータの起動、停止、動作ステータ

スの確認、汎用入出力制御、インタロック信号の入力状態の確認ができます。

【起動方法】

インストール完了後、「スタート」メニューの「プログラム」より、「Interface GPC-7301」→

「動作確認プログラム」を起動します。

図 1.デバイス選択

図 2.メイン画面

© 1999, 2011 Interface Corporation. All rights reserved.

52

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

53

【操作手順】

1. ユーティリティを実行すると図 1の「デバイス選択」ダイアログが表示され、使用可能な

デバイス名が表示されます。このダイアログより制御したいインタフェースモジュールの

デバイス名を選択します。

RSW1(インタフェースモジュール識別)の設定値より、制御したいインタフェースモジュー

ルのデバイス名がどれであるかを判断してください。

2. デバイス名を選択して、「OPEN」ボタンを押すと図 2のメイン画面が表示されます。

3. 図 2-A はモータ軸の動作状態を表示しています。

モータの動作に応じてこの表示が変わります。意味は次のとおりです。

・「START FORWARD」- 正転動作

・「START REVERSE」- 逆転動作

・「STOP」- 停止

・「BRAKE STOP」- ブレーキ

※Iのように「ERROR」表示のときは異常検出中(過電流状態)であることを意味します。

異常検出中はモータは停止しません。

過電流がインタフェースモジュールやモータに流れつづけることにより、インタフェース

モジュールまたはモータの故障の原因になりかねません。

異常検出が起きた場合、早急に電流を許容電流範囲に戻すかモータを停止して、過電流が

流れつづけないようにしてくだい。

4. 図 2-B を押すとモータ軸が正転動作します。図 2-C を押すとモータ軸が逆転動作します。

5. 図 2-D を押すとモータ軸が停止します。図 2-E を押すとモータ軸がブレーキ停止します。

6. 図 2-F は汎用出力制御を行います。

「OUT1」、「OUT2」のボタンをそれぞれクリックするごとに High←→Low と切り替わりま

す。

ボタンの上の四角い窓が信号のステータスを表示しています。

7. 図 2-G は汎用入力信号 IN1、IN2 のステータスを表示しています。

8. 図 2-H はインタロック信号のステータスを表示しています。

DC モータと端子台との配線のしかた等は、USER'S MANUAL をご参照ください。

GPC-7301 Help for Windows

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

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

ください。

【必要な機材】

・診断を行うインタフェースモジュール

・接続ケーブル

・端子台(TRM-2301)

・ビニール被覆線等(端子台での接続に使用)

・DC +5V 電源

【起動方法】

インストール完了後、「スタート」メニューの「プログラム」より、「Interface GPC-7301」→

「診断プログラム」を起動します。

図 1.デバイス選択

図 2.メイン画面

図 3.診断結果

© 1999, 2011 Interface Corporation. All rights reserved.

54

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

55

【操作手順】

1. インストール完了後、「スタート」メニューの「プログラム」より、「Interface GPC-7301」

-「診断プログラム」を起動します。

2. 「デバイス選択」画面が表示されます。その中から、診断を行うインタフェースモジュー

ルのデバイス名を選択してください。

3. メイン画面が表示起動します。

4. 「汎用入出力」、「軸出力」、「インタロック」のタブページを選択し、それぞれの検査を行

ってください。

各画面上で接続方法が表示されますので、その指示に従ってください。(図 4~9 参照)

接続後、「開始」ボタンをクリックすると診断が始まります。

診断結果は左の大きなラベル「診断結果」に表示されます。

5. 「診断結果」ラベル下の「総合結果」ボタンをクリックすると、各診断の結果状況が表示

されます。

「Save」ボタンをクリックすると、その診断結果内容が保存されます。

診断結果が「NG」の場合には、ケーブルが正しく接続されているかをご確認ください。

正しく接続されているにも関わらず、診断結果が「NG」の場合には、診断結果とともに弊

社お客様相談センタまでお問い合わせください。

GPC-7301 Help for Windows

図 4.「汎用入出力」検査時の画面 図 5.「汎用入出力」検査時の接続

図 6.「軸出力」(1軸)検査時の画面 図 7.「軸出力」(1軸)検査時の接続

図 8.「インタロック」検査時の画面 図 9.「インタロック」検査時の接続

© 1999, 2011 Interface Corporation. All rights reserved.

56

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

57

第7章 重要な情報

保証の内容と制限

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

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

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

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

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

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

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

ます。

著作権、知的所有権

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

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

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

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

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

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

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

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

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

複製の禁止

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

できません。

責任の制限

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

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

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

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

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

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

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

予めご了承ください。

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

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

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

GPC-7301 Help for Windows

© 1999, 2011 Interface Corporation. All rights reserved.

58

商標/登録商標

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


Recommended