2013年5月12日日曜日

Contec製デジタル入出力ユニットについて

さて、マシンビジョンではカメラとPCも大事だが、結果を出力するインターフェースも同じくらい重要と言える。最近ではTCP/IPを利用してイーサネット経由でPLCへの結果出力を行うことも可能ではあるが、排出制御部分のPLCがイーサネットに対応していないというケースもある。
その場合、入出力接点を利用することになるのだが、当然PCにはそんな機能は無い。
となると、市販の産業用入出力ユニットを利用するという結論に至る。

今回は市販の産業用入出力ユニットのセットアップを記しておこうと思う。

使用機材
PC: Windows7 64bit
USB 2.0ポートx1
Contec製 DIO-8/8(USB)GY
DIO-8/8(USB)GY DIO-8/8 (USB) GY 絶縁型デジタル入出力モジュール Contec

Windows7 64bitではデバイスドライバ周辺の署名関係にうるさいのは周知の通り。
この度、Contec製デジタル入出力ユニットの署名が検証できません云々で正常にドライバがインストールされなかったのでここに対処法を示す。

事前準備として、DIO-USBは接続しないこと。(デバイスドライバを入れた後なら削除しておく)
(1)ソフトウェアは通常通り付属CD-ROMでも公式サイトの最新版でもいいのでインストールする。
(2)PCを再起動し、起動時にF8を押したままにする。
(3)OS起動前に詳細ブートオプションが開く為「ドライバ署名の強制を無効にする」を選択し起動
(4)付属CD-ROMをセットし、DIO-USBを接続することで自動的にドライバインストール終了
(5)デバイスマネージャーから正常にインストールされていることを確認




今回はDIO-8/8(USB)GYでドライバが正常にインストールされなかった為、おそらくDIOシリーズ共通の症状ではないかと推測する。
まぁ、無事使用できるようになったのでよしとしよう。

OpenCV 2.4.5 インストール(windows 7 64bit)

OpenCV 2.4.5をWindows 7 64bitへインストールしてみる

CPU:i7 920
GPU: GTX295
MEM:6GB
SSD:M5P 256GB
Visual Studio 2010


■ダウンロード

(1) 2.4.5をクリック
(2) OpenCV-2.4.5.exeをクリックするとダウンロードが始まる(266MB)
(3)ダウンロード中にC:に「OpenCV2.4.5」フォルダを作成

■インストール
(1)OpenCV-2.4.5.exeをクリックし起動
(2)「...」を選択し、C:\OpenCV2.4.5フォルダを選択
(3)Extractをクリック
(4)C:\OpenCV2.4.5\opencvへインストールされる

■環境変数設定
(1)スタート→コンピュータ(右クリック)→プロパティ→設定の変更→詳細設定→環境変数
  C:\OpenCV2.4.5\opencv\build\x86\vc10
  C:\OpenCV2.4.5\opencv\build\x86\vc10\bin
  の二つを追加


■コンパイルテスト
(1)Visual C++2010を起動し、Windowsフォームアプリケーションで新規作成
(2)stdafx.hに以下のコードを追加
#include <opencv2/opencv.hpp>
#include "OpenCVheader.h"
(3)プロジェクトのプロパティ→構成プロパティ→VC++ディレクトリ→インクルードディレクトリ
(4)C:\OpenCV2.4.5\opencv\build\includeを追加
(5)プロジェクトのプロパティ→構成プロパティ→VC++ディレクトリ→ライブラリディレクトリ
(6)C:\development\OpenCV2.4.2\opencv\build\x86\vc10\lib
(7)構成プロパティ→全般→共通言語ランタイムサポートを(/clr)へ変更
  (ここを忘れるとアンマネージ関数をコンパイル出来ませんと怒られる)
(8)ビルドでOK

OpenCVheader.hの中身


// バージョン取得
#define CV_VERSION_STR CVAUX_STR(CV_MAJOR_VERSION) CVAUX_STR(CV_MINOR_VERSION) CVAUX_STR(CV_SUBMINOR_VERSION)

// ビルドモード
#ifdef _DEBUG
#define CV_EXT_STR "d.lib"
#else
#define CV_EXT_STR ".lib"
#endif

// ライブラリのリンク(不要な物はコメントアウト)
#pragma comment(lib, "opencv_core"            CV_VERSION_STR CV_EXT_STR)
#pragma comment(lib, "opencv_highgui"        CV_VERSION_STR CV_EXT_STR)
#pragma comment(lib, "opencv_imgproc"  CV_VERSION_STR CV_EXT_STR)
#pragma comment(lib, "opencv_calib3d"  CV_VERSION_STR CV_EXT_STR)
//#pragma comment(lib, "opencv_gpu"   CV_VERSION_STR CV_EXT_STR)
//#pragma comment(lib, "opencv_video"   CV_VERSION_STR CV_EXT_STR)
#pragma comment(lib, "opencv_objdetect"  CV_VERSION_STR CV_EXT_STR)
//#pragma comment(lib, "opencv_features2d" CV_VERSION_STR CV_EXT_STR)
//#pragma comment(lib, "opencv_flann"   CV_VERSION_STR CV_EXT_STR)
//#pragma comment(lib, "opencv_ffmpeg"  CV_VERSION_STR CV_EXT_STR)
//#pragma comment(lib, "opencv_ts"   CV_VERSION_STR CV_EXT_STR)
//#pragma comment(lib, "opencv_contrib"  CV_VERSION_STR CV_EXT_STR)
//#pragma comment(lib, "opencv_ml"   CV_VERSION_STR CV_EXT_STR)
//#pragma comment(lib, "opencv_legacy"  CV_VERSION_STR CV_EXT_STR)