ロボット通信 - FANUC ロボットコントローラ
概要
このトピックでは、In-Sight ビジョンシステムから FANUC ロボットコントローラに接続し、データを転送する手順の概要を説明します。このトピックでは、ロボットコントローラは、画像取り込みとデータ転送を制御するデバイスを指しています。一般に、In-Sight ネイティブモードコマンドを使用するロボットコントローラは、画像を取り込み、処理するようにビジョンシステムをトリガし、その後、ビジョンシステムに特定のデータを要求します。データは、シリアル通信または Ethernet 通信を使用して転送できます。
シリアル通信
このセクションでは、シリアル接続を介して FANUC ロボットコントローラと In-Sight ビジョンシステム間の通信を確立するための手順について説明します。
要件
必要なハードウェア
- In-Sight ビジョンシステム (In-Sight Micro 1000 シリーズ、In-Sight 5000 シリーズ、In-Sight 7000 シリーズ、または In-Sight 8000 シリーズのビジョンシステム)
- シリアル通信の場合、I/O モジュール、ブレークアウトケーブル (In-Sight 5000 シリーズまたは In-Sight 7000 シリーズのみ)。注 :
- シリアルベースのロボット通信がブレークアウトケーブルでサポートされていますが (In-Sight 5000 シリーズまたは In-Sight 7000 シリーズのみ)、セットアップが容易なので I/O モジュールを推奨します。
- In-Sight Micro 1000 シリーズビジョンシステムは、CIO-MICRO または CIO-MICRO-CC I/O モジュールに接続している場合のみ、シリアル通信をサポートします。
- In-Sight 70xx - 74xx シリーズ上でシリアル通信を有効にするには、ブレークアウトケーブルを使用するか、CIO-MICRO または CIO-MICRO-CC I/O モジュールを使用します。 ブレークアウトケーブルに接続している場合 (I/O モジュールに接続されていない場合)、ディスクリート入出力ライン (各 1) をシリアル受信およびシリアル送信に設定することができます。
- In-Sight Micro 8000 シリーズビジョンシステムは、CIO-MICRO I/O モジュールに接続している場合のみ、シリアル通信をサポートします。
- CIO-WENET イーサネット I/O モジュールはシリアル通信をサポートしていません。
- DB9 シリアルケーブル
- PC
- FANUC ロボットコントローラ (RJ2 または RJ3)
- K-Floppy ケーブル (DB25 - DB9)
- ヌルモデムアダプタ (DB9 - DB9)
必要なソフトウェア
- Cognex In-Sight Explorer バージョン 3.3 以降
- Cognex In-Sight Explorer ファームウェアバージョン 3.3 以降
- FANUC KAREL® プログラミング言語
KAREL ロボットコントローラコード
VAR
file_var :FILE
Status :STRING[4]
xs :STRING[9]
ys :STRING[9]
angles :STRING[9]
x :REAL
y :REAL
angle :REAL
BEGIN
-- Connect to In-Sight
OPEN FILE file_var ('RW', 'P2:')
-- Instruction In-Sight to Acquire an Image
-- (wait for a response)
WRITE file_var ('sw8',CHR(13))
-- Read status
READ file_var (status::1::0)
IF status <> '1' THEN
WRITE TPDISPLAY('sw8 Failed',CR)
RETURN
ENDIF
CLR_IO_STAT(file_var)
-- Get the value in cell C7
WRITE file_var ('gvc007',CHR(13))
-- Read status
READ file_var (status::1::0)
IF status <> '1' THEN
WRITE TPDISPLAY('gvc007 Failed',CR)
RETURN
ENDIF
CLR_IO_STAT(file_var)
-- Read the data
-- This will split the information at the quotations "'".
-- Example String '10.5''9.8''15.9'
READ file_var (xs::0::2, ys::0::2, angles::0::2, CR)
-- Convert the data
CNV_STR_REAL(xs, x)
CNV_STR_REAL(ys, y)
CNV_STR_REAL(angles, angle)
-- Remove comment for testing
-- WRITE TPDISPLAY('X:',x,CR,'Y:',y,CR,'R',Angle,CR)
--
-- Use Vision Data
--
-- Close the connection
CLOSE FILE file_var
In-Sight シリアルポートの設定
ビジョンシステムに接続している間 (ビジョンシステムはオフライン) に、次の手順に従ってください。
-
[センサ] メニューで、[シリアルポートの設定] をクリックします。
-
[I/O モジュール] ボタンをクリックして [I/O モジュールの設定] ダイアログを開き、I/O モジュールを設定します。[OK] ボタンをクリックして [I/O モジュールの設定] ダイアログを閉じ、[シリアルポートの設定] ダイアログに戻ります。
注 : In-Sight 70xx ~ 74xx シリーズのビジョンシステムが CIO-MICRO または CIO-MICRO-CC I/O モジュールを使用するように設定されている場合、ブレークアウトケーブルの RS-232 TRANSMIT ピンと RS-232 RECEIVE ピンは無効です。I/O モジュールの RS-232 OUT ポート (DB9) を使用して、シリアルデバイスに接続してください。[シリアルポートの設定] ダイアログで、次のプロパティを設定します。
- [ビット/秒]: 19200
- [データビット]: 8 (CIO-1400 を使用する場合のデフォルト設定)
- [ストップビット]: 1 (CIO-1400 を使用する場合のデフォルト設定)
- [パリティ]: なし
- [フロー制御]: なし
- [モード]: Native
- [固定長の入力]: 無効
- [入力終端記号]: 13
- [出力終端記号]: 0
- ダイアログで、ビジョンシステムに物理的に接続されている I/O モジュールの横に「(接続済み)」というメッセージが表示されていることを確認します。
- [OK] をクリックします。
In-Sight ジョブの設定
- [ファイル] メニューから、新規ジョブを作成します。
- AcquireImage プロパティシート (セル A0 をダブルクリック) で、次のパラメータを設定します。
- トリガ = 外部
- 手動 = ON
- セル A2 を選択し、「ExtractBlobs」と入力して Enter キーを押します (この時点で、ExtractBlobs プロパティシートが表示されます)。
- [OK] をクリックします (パラメータはすべて、デフォルト設定値のままになります)。
- セル A4 を選択し、パレット の [スニペット] タブから、[Communication] → [Robots] → [FANUC.cxd] スニペットをスプレッドシートに挿入します。
- 次のように座標セル参照を定義します。
- X: C6 をダブルクリック、C2 をダブルクリック
- Y: D6 をダブルクリック、D2 をダブルクリック
- 角度: E6 をダブルクリック、E2 をダブルクリック
Ethernet 通信
このセクションでは、Ethernet 通信を介して FANUC ロボットコントローラと In-Sight ビジョンシステム間の通信を設定するための 2 つのオプションについて説明します。
TCP/IP
このセクションでは、TCP/IP を介して FANUC ロボットコントローラと In-Sight ビジョンシステム間の通信を設定する方法について説明します。
要件
必要なハードウェア
- In-Sight ビジョンシステム (In-Sight Micro 1000 シリーズ、In-Sight 5000 シリーズ、In-Sight 7000 シリーズ、または In-Sight 8000 シリーズのビジョンシステム)
- Ethernet ケーブル
- PC
- FANUC ロボットコントローラ (RJ2 または RJ3)
必要なソフトウェア
- Cognex In-Sight Explorer バージョン 3.3 以降
- Cognex In-Sight Explorer ファームウェアバージョン 3.3 以降
- FANUC KAREL プログラミング言語
KAREL ロボットコントローラの設定
ソケットメッセージングオプションを設定する
設定対象のタグを、ネットワーク上の別のデバイスで使用できるように設定することはできません。
- コントローラをコールドスタートします。
- ティーチペンダントで、Shift + RESET キーを押し続けます。または、オペレータパネルで RESET キーを押し続けます。
- ティーチペンダントで Shift + RESET キーを押したまま (または、オペレータパネルで RESET キーを押したまま)、オペレータの ON ボタンを押します。
- すべてのキーを離します。
- ティーチペンダントで、[MENUS] を押します。
- [SETUP] を選択します。
- F1 キー ([TYPE]) を押します。
- [Host Comm] を選択します。
- F4 キー ([SHOW]) を押します。
- [Clients] を選択します。
-
カーソルを、ソケットメッセージング用に設定するタグに移動し、F3 キーを押します。次のような画面が表示されます。
SETUP Tags
Tag C3: ****************
1 Comment: SM
2 Protocol name: *****
3 Port name: *************************
4 Mode: UNDEFINED
Current ********
State: ****************************
5 Remote: 192.168.0.1
6 Path: ****************************
Startup OFF
7 State: 15 min
8 Remote: 9 Path: Options 10 Error Reporting: 11 Inactivity Timeout: - カーソルを [Protocol name] に移動し、F4 キー ([CHOICE]) を押します。
- [SM] を選択します。
- カーソルを [Startup State] に移動し、F4 キー ([CHOICE]) を押します。
- [Start] を選択して、Enter キーを押します。
- [Remote] を選択して、Enter キーを押します。
- ソケットメッセージングに使用するリモートホストサーバを入力し、F2 キー ([ACTION]) を押します。
-
[DEFINE] を選択します。
注 : DNS を使用していない場合は、ホストエントリテーブルにリモートホストとその IP アドレスを追加する必要があります。
システム変数の設定 (クライアントタグ)
- [MENUS] を押します。
- [NEXT] を選択します。
- [SYSTEM] を選択し、F1 キー ([TYPE]) を押します。
- [Variables] を選択します。
- カーソルを [$HOSTC_CFG] に移動し、Enter キーを押します。
-
前のセクション「タグの設定」で選択したタグに対応する構造体にカーソルを移動します。例えば、タグ S3 を設定する場合は、以下の画面に示すように、カーソルを構造体要素 [3] に移動します。
SYSTEM Variables $HOSTS_CFG 1 [1] HOST_CFG_T 2 [2] HOST_CFG_T 3 [3] HOST_CFG_T 4 [4] HOST_CFG_T 5 [5] HOST_CFG_T 6 [6] HOST_CFG_T 7 [7] HOST_CFG_T 8 [8] HOST_CFG_T -
Enter キーを押します。次のような画面が表示されます。
SYSTEM Variables $HOSTS_CFG[3] 1 $COMMENT *uninit* 2 $PROTOCOL 'SM' 3 $PORT *uninit* 4 $OPER 3 5 $STATE 3 6 $MODE *uninit* 7 $REMOTE *uninit* 8 $REPERRS FALSE 9 $TIMEOUT 15 10 $PATH *uninit* 11 $STRT_PATH *uninit* 12 $STRT_REMOTE *uninit* 13 $USERNAME *uninit* 14 $PWRD_TIMOUT 0 15 $SERVER_PORT 23 - カーソルを [$SERVER_PORT] に移動します。ソケットメッセージングに使用する TCP/IP サーバポートの名前を入力します。
- これで、クライアントタグを KAREL プログラムで使用できます。
KAREL ロボットコントローラコード
次のコードの例は、IP アドレス 192.168.0.1 の In-Sight ビジョンシステムに接続しているコントローラを示しています。ビジョンシステムの IP アドレスを確認するには、In-Sight Explorer の [In-Sight ネットワーク] ペインでビジョンシステム名を右クリックして、[プロパティ] を選択します。
PROGRAM eComm
VAR
file_var : FILE
tmp_int : INTEGER
mp_str : STRING[128]
status : INTEGER
entry : INTEGER
try : INTEGER
statuss :STRING[1]
xs :STRING[9]
ys :STRING[9]
angles :STRING[9]
x :REAL
y :REAL
angle :REAL
BEGIN
WRITE TPDISPLAY(CR,CR,CR,CR,CR,CR,CR,CR,CR,CR,CR,CR,CR,CR,CR)
SET_FILE_ATR(file_var, ATR_IA)
-- Connect the tag
WRITE TPDISPLAY('Connecting...',CR)
MSG_DISCO('C3:', status)
MSG_CONNECT('C3:',status)
OPEN FILE file_var('rw','C3:')
-- Read the In-Sight Welcome message
WRITE TPDISPLAY('Logging In',CR)
mp_str =''
READ file_var(mp_str)
WRITE TPDISPLAY(mp_str,CR)
-- Read User: prompt
READ file_var(mp_str::6::0)
IF UNINIT(mp_str) THEN
mp_str = ''
ENDIF
WRITE TPDISPLAY(mp_str,CR)
IF (mp_str <>'User: ') THEN
WRITE TPDISPLAY('User Failed',CR)
--Error
RETURN
ENDIF
--Send User Name
WRITE file_var('admin',CHR(13),CHR(10))
-- Read Password prompt
mp_str =''
READ file_var(mp_str::10::0)
IF UNINIT(mp_str) THEN
mp_str = ''
ENDIF
WRITE TPDISPLAY(mp_str,CR)
IF (mp_str <>'Password: ') THEN
WRITE TPDISPLAY('Password Failed',CR)
--Error
RETURN
ENDIF
--Send Password
WRITE file_var('',CHR(13),CHR(10))
-- Read Login Response
mp_str =''
READ file_var(mp_str)
IF UNINIT(mp_str) THEN
mp_str = ''
ENDIF
WRITE TPDISPLAY(mp_str,CR)
IF (mp_str <> 'User Logged In') THEN
WRITE TPDISPLAY('Log In Failed',CR)
--Error
RETURN
ENDIF
-- Instruction In-Sight to Acquire an Image
-- (wait for a response)
WRITE TPDISPLAY('Trigger',CR)
WRITE file_var ('sw8',CHR(13),CHR(10))
-- Read Status
READ file_var (statuss)
IF statuss <> '1' THEN
WRITE TPDISPLAY('sw8 Failed',CR)
RETURN
ENDIF
-- Get the value in cell C7
WRITE TPDISPLAY('Get Value C7',CR)
WRITE file_var ('gvc007',CHR(13),CHR(10))
-- Read Status
READ file_var (statuss)
IF statuss <> '1' THEN
WRITE TPDISPLAY('gvc007 Failed',CR)
RETURN
ENDIF
-- Read the data
-- This will split the information at the quotations "'".
-- Example String '10.5''9.8''15.9'
READ file_var (xs::0::2, ys::0::2, angles::0::2, CR)
--Disconnect Socket
MSG_DISCO('C3:', status)
-- Convert the data
CNV_STR_REAL(xs, x)
CNV_STR_REAL(ys, y)
CNV_STR_REAL(angles, angle)
WRITE TPDISPLAY('X:',x,CR,'Y:',y,CR,'R',Angle,CR)
END eComm
In-Sight ジョブの設定
- [ファイル] メニューから、新規ジョブを作成します。
- AcquireImage プロパティシート (セル A0 をダブルクリック) で、次のパラメータを設定します。
- トリガ = 外部
- 手動 = ON
- セル A2 を選択し、「ExtractBlobs」と入力して Enter キーを押します (この時点で、ExtractBlobs プロパティシートが表示されます)。
- [OK] をクリックします (パラメータはすべて、デフォルト設定値のままになります)。
- セル A4 を選択し、パレット の [スニペット] タブから、[Communication] → [Robots] → [FANUC.Communications] スニペットをスプレッドシートに挿入します。
- 次のように座標セル参照を定義します。
- X: C6 をダブルクリック、C2 をダブルクリック
- Y: D6 をダブルクリック、D2 をダブルクリック
- 角度: E6 をダブルクリック、E2 をダブルクリック
- [手動トリガ] アイコンを数回クリックし、ExtractBlobs 関数からのデータが変化していることを確認します。
- ジョブを保存します。
- ビジョンシステムをオンラインにします。
EtherNet/IP
このセクションでは、EtherNet/IP (EIP) を介して FANUC ロボットコントローラと In-Sight ビジョンシステム間の通信を設定する方法について説明します。この設定シナリオの例では、ロボットコントローラは、画像取り込みとその後のビジョンシステムからのデータ転送を制御するデバイスを指しています。一般に、ロボットコントローラは、X、Y、および角度データの画像を取り込み、処理するようにビジョンシステムをトリガします。EtherNet/IP 通信は、ビジョンシステムをトリガし、データをロボットコントローラに送信するのに使用されます。また、16 ビットデジタル入力ラインは、2D 部品の位置を転送するのに使用されます。
- 負の浮動小数点数値は入力ラインを介して送信することはできません。すべての数値はビジョンシステムで 10 を乗算され、その後ロボットコントローラで 10 で除算されます。
- このセクションで使用される I/O 設定は 1 つの例であり、実際の I/O 設定とは異なる場合があります。EtherNet/IP はラック 89 を使用しますが、スロットの場所は取り付けによって変わる場合があります。この例では、ラック 89 とスロット 1 を使用します。
要件
必要なハードウェア
- In-Sight ビジョンシステム (In-Sight Micro 1000 シリーズ、In-Sight 5000 シリーズ、In-Sight 7000 シリーズ、または In-Sight 8000 シリーズのビジョンシステム)
- Ethernet ケーブル
- PC
- FANUC ロボットコントローラ (R-30iA™)
必要なソフトウェア
- In-Sight Explorer バージョン 4.8 以降
- In-Sight Explorer ファームウェアバージョン 4.8 以降
- FANUC ソフトウェア R540 EtherNet/IP I/O スキャナ
- FANUC ティーチペンダントプログラミング (TPP)
EtherNet/IP の設定
- ロボットコントローラと通信する In-Sight ビジョンシステムに接続します。
- [センサ] メニューから、[ネットワークの設定] を選択して [ネットワークの設定] ダイアログを開きます。
-
[産業用イーサネットプロトコル] を [EtherNet/IP] に設定します。
TPP ロボットコントローラの設定
- FANUC R540 EtherNet/IP I/O スキャナソフトウェアを起動します。
- [MENU] を押します。
- I/O を選択します。
-
F1 キー ([TYPE]) を押して、[EtherNet/IP] を選択します。下のような画面が表示されます。
EtherNet/IP List(Rack 89) 1/32 説明 TYP 有効 ステータス スロット Connection1 ADP FALSE OFFLINE 1 Connection2 ADP FALSE OFFLINE 2 Connection3 ADP FALSE OFFLINE 3 Connection4 ADP FALSE OFFLINE 4 Connection5 ADP FALSE OFFLINE 5 Connection6 ADP FALSE OFFLINE 6 Connection7 ADP FALSE OFFLINE 7 Connection8 ADP FALSE OFFLINE 8 Connection9 ADP FALSE OFFLINE 9 ConnectionA ADP FALSE OFFLINE 10 ConnectionB ADP FALSE OFFLINE 11 ConnectionC ADP FALSE OFFLINE 12 ConnectionD ADP FALSE OFFLINE 13 ConnectionE ADP FALSE OFFLINE 14 ConnectionF ADP FALSE OFFLINE 15 ConnectionG ADP FALSE OFFLINE 16 ConnectionH ADP FALSE OFFLINE 17 ConnectionI ADP FALSE OFFLINE 18 ConnectionJ ADP FALSE OFFLINE 19 ConnectionK ADP FALSE OFFLINE 20 -
適切な接続を選択して、名前を変更します。システムが正常に接続されたら、表に次のように設定が反映されます。
EtherNet/IP List(Rack 89) 1/32 説明 TYP 有効 ステータス スロット COGNEX SCN TRUE RUNNING 1 Connection2 ADP FALSE OFFLINE 2
In-Sight ビジョンシステム EtherNet/IP I/O の設定
In-Sight Micro 1000 シリーズビジョンシステム | In-Sight 5100/5400/5600 シリーズビジョンシステム | In-Sight 5705/5705C シリーズビジョンシステム | In-Sight 70xx/74xx シリーズビジョンシステム | In-Sight 76xx/79xx シリーズビジョンシステム | In-Sight 8000 シリーズビジョンシステム |
---|---|---|---|---|---|
|
|
|
|
|
|
入力の定義
名前 | 信号のタイプ | 信号のラベル | 装置のマップ |
---|---|---|---|
DI_Trig_Ready | DI | Trigger Ready | 0 |
DI_Trig_Ack | DI | Trigger Ack | 1 |
DI_Acquiring | DI | Acquiring | 2 |
DI_Miss_Ack | DI | Missed Acquisition | 3 |
GI_Offline_Reason | GI | Offline Reason | 4 ~ 6 |
DI_Online | DI | Online | 7 |
DI_Inspecting | DI | Inspecting | 8 |
DI_Inspect_Comp | DI | Inspection Completed | 9 |
DI_Buffer_Overrun | DI | Results Buffer Overrun | 10 |
DI_Results_Valid | DI | Results Valid | 11 |
DI_Job_Loading | DI | Job Loading | 12 |
DI_Load_Comp | DI | Job Load Completed | 13 |
DI_Load_Fail | DI | Job Load Failed | 14 |
GI_Reserved | GI | Reserved | 15 ~ 23 |
GI_Reserved2 | GI | Reserved | 24 ~ 26 |
DI_ExposureComp | DI | Exposure Completed | 27 |
DI_JobPass | DI | Job Pass | 28 |
GI_Reserved3 | GI | Reserved | 29 ~ 31 |
GI_CurrentJobID | GI | Current Job ID | 32 ~ 47 |
GI_AcquisitionID | GI | Ack ID | 48 ~ 64 |
GI_InspectionID | GI | Inspection ID | 65 ~ 80 |
GI_InspectionResult | GI | Inspection Result | 81 ~ 96 |
GI_X_Position | GI | User Data Input 0 | 97 ~ 112 |
GI_Y_Position | GI | User Data Input 1 | 113 ~ 128 |
GI_Angle | GI | User Data Input 2 | 129 ~ 144 |
DI_X_Negative | DI | 145 | |
DI_Y_Negative | DI | 146 | |
DI_A_Negative | DI | 147 |
サンプル
下に、ロボットコントローラのデジタル入力設定のサンプルを示します。EtherNet/IP はラック 89 で、スロットは EtherNet/IP 設定セクションの接続番号です。ビットは 1 から開始します。
番号 | 範囲 | ラック | スロット | 開始 | ステータス |
---|---|---|---|---|---|
1 | DI[ 1- 80] | 0 | 0 | 0 | UNASG |
2 | DI[ 81- 88] | 48 | 1 | 21 | ACTIV |
3 | DI[ 89- 100] | 0 | 0 | 0 | UNASG |
4 | DI[ 101-120] | 48 | 1 | 1 | ACTIV |
5 | DI[ 121-124] | 89 | 1 | 1 | ACTIV |
6 | DI[ 125-133] | 89 | 1 | 8 | ACTIV |
7 | DI[ 134-585] | 89 | 1 | 145 | ACTIV |
出力の定義
名前 | 信号のタイプ | 信号のラベル | 装置のマップ |
---|---|---|---|
DO_Trig_Enable | DO | Trigger Enable | 0 |
DO_Trigger | DO | Trigger | 1 |
DO_Results_Enable | DO | Buffer Results Enable | 2 |
DO_Results_Ack | DO | Inspection Results Ack | 3 |
DO | Reserved | 4 | |
DO | Reserved | 5 | |
DO | Reserved | 6 | |
DO_Set_Offline | DO | Set Offline | 7 |
DO_SE0 | DO | Soft Event 0 | 8 |
DO_SE1 | DO | Soft Event 1 | 9 |
DO_SE2 | DO | Soft Event 2 | 10 |
DO_SE3 | DO | Soft Event 3 | 11 |
DO_SE4 | DO | Soft Event 4 | 12 |
DO_SE5 | DO | Soft Event 5 | 13 |
DO_SE6 | DO | Soft Event 6 | 14 |
DO_SE7 | DO | Soft Event 7 | 15 |
DO_Reserved | GO | Reserved | 16 ~ 31 |
DO_UserData_000 | GO | User Data 0 | 32 ~ 39 |
DO_UserData_001 | GO | User Data 1 | 40 ~ 47 |
サンプル
下に、ロボットコントローラのデジタル出力設定のサンプルを示します。
番号 | 範囲 | ラック | スロット | 開始 | ステータス |
---|---|---|---|---|---|
1 | DO[ 1- 80] | 0 | 0 | 0 | UNASG |
2 | DO[ 81- 84] | 48 | 1 | 21 | ACTIV |
3 | DO[ 85- 100] | 0 | 0 | 0 | UNASG |
4 | DO[ 101-120] | 48 | 1 | 1 | ACTIV |
5 | DO[ 121-184] | 89 | 1 | 1 | ACTIV |
6 | DO[ 185-256] | 89 | 1 | 65 | ACTIV |
7 | DO[ 257-616] | 89 | 1 | 153 | ACTIV |
グループ I/O の設定
GI# | ラック | スロット | 開始ポイント | 番号ポイント |
---|---|---|---|---|
1 | 89 | 1 | 5 | 3 |
2 | 89 | 1 | 33 | 16 |
3 | 89 | 1 | 49 | 16 |
4 | 89 | 1 | 65 | 16 |
5 | 89 | 1 | 81 | 16 |
6 | 89 | 1 | 97 | 16 |
7 | 89 | 1 | 113 | 16 |
8 | 89 | 1 | 129 | 16 |
# SIM VALUE | 7/64 |
---|---|
GI[ 1]U | 0 [GI_Offline_Reas] |
GI[ 2]U | 56 [GI_CurrentJob_ID ] |
GI[ 3]U | 56 [GI_Ack_ID ] |
GI[ 4]U | 56 [GI_Inspect_ID ] |
GI[ 5]U | 0 [GI_Inspect ] |
GI[ 6]U | 2426 [GI_X_Position ] |
GI[ 7]U | 3208 [GI_Y_Position ] |
GI[ 8]U | 242 [GI_Angle ] |
TPP ロボットコントローラコード
次のサンプルコードは、In-Sight ビジョンシステムをトリガして、グループ入力データ、および X、Y、角度データを取得する方法を示しています (値が負であるかどうかがチェックされます)。I/O の値は、ロボット I/O の設定に応じて異なる場合があります。
1: DO[121:DO_Trigger_Enable]=ON
2: WAIT DI[121:DI_Trigger_Ready]=ON
3: DO[122:DO_Trigger]=ON
4:
5: WAIT DI[122:DI_Trigger_Ack]=ON
6: DO[122:DO_Trigger]=OFF
8:
9: IF DI[127:DI_Inspect_Complete]= OFF,JMP LBL[2]
10:
11: LBL[1]
12: WAIT DI[127:DI_Inspect_Complete] =OFF
13: JMP LBL[3]
14:
15: LBL[2]
16: WAIT DI[127:DI_Inspect_Complete]=ON
17:
18: LBL[3]
19:
20: R[2:X Position]=GI[6:GI_X_Position]
21: R[2:X Position]=R[2:X Position]/10
22:
23: IF DI[145:X_Negative]=OFF,JMP LBL[4]
24: R[2:X Position]=R[2:X Position]*(-1)
25:
26: LBL[4]
27:
28: R[3:Y Position]=GI[7:GI_Y_Position]
29: R[3:Y Position]=R[3:Y Position]/10
30: IF DI[146:Y_Negative]=OFF,JMP LBL[5]
31:
32: R[3:Y Position]=R[3:Y Position]*(-1)
33:
34: LBL[5]
35:
36: R[4:Angle]=GI[8:GI_Angle]
37: R[4:Angle]=R[4:Angle]/10
38:
39: IF DI[147:A_Negative]=OFF,JMP LBL[6]
40:
41: R[4:Angle]=R[4:Angle]*(-1)
42:
43: LBL[6]
44:L @P[1] 50mm/sec FINE
45:
46:
47:
48: PR[1,1]=R[2:X Position]
49: PR[1,2]=R[3:Y Position]
50:
51: PR[1,6]=PR[1,6]+R[4:Angle]
52:
53:L PR[1] 50mm/sec FINE
54: WAIT .50(sec)
55: PR[1,6]=47.002
56:
57:L @P[1] 100mm/sec FINE
In-Sight ビジョンシステムとロボットコントローラのキャリブレーション
高精度チェッカボードキャリブレーションプレートを使用して、In-Sight ビジョンシステムから得られた結果を、ピクセルから実世界の測定単位にキャリブレーションすることは非常に重要です。このセクションでは、ビジョンシステムとロボットの間のキャリブレーションプロセスに関して重要になる点について説明します。
キャリブレーションを設定する際には、ビジョンシステムの視野 (FOV) にキャリブレーションプレートを配置します。キャリブレーションプレートがビジョンシステムの FOV 全体を覆っていることを確認してください。FOV 全体を覆うことができない場合は、複数のポーズ (例えば、複数の画像を取り込むなど) を使用する必要があります。
ロボットのユーザフレームの使用
ロボットのユーザフレームを作成するには、次の 2 つの方法を使用することができます。CalibrateGrid 関数を使用して原点を割り当てるか、または手動で原点を割り当てる方法です。
CalibrateGrid の原点
下の画像は、CalibrateGrid 関数により原点を自動的に割り当てる方法を示しています。原点は、+X および +Y 軸上の 2 つの赤い十字が交わる点に配置されます。この方法でロボットのユーザフレームを設定すると、ロボットのユーザフレームの原点 (0,0) が CalibrateGrid 関数の原点 (0,0) と同じになります。
手動による原点の割り当て
下の画像は、原点を左下隅、つまり +X が下の右方向および +Y が左の上方向になるように手動で割り当てる方法を示しています。この場合、緑の十字の X、Y 位置を、CalibrateGrid 関数の [ポーズ] ペインに手動で入力する必要があります。
In-Sight ジョブの設定と部品の登録
In-Sight ビジョンシステムをキャリブレーションしたら、次はジョブを実行するための残りの設定を行います。
ビジョンシステムが外部トリガを受け入れるように設定する必要があります。EasyBuilder ビューの [画像の設定] アプリケーションステップで、[トリガ] パラメータを [外部] に設定します。
次に、PatMax パターンモデルを使用して、部品を検出します。EasyBuilder ビューの [位置決め] アプリケーションステップに移動し、[PatMax パターン位置決めツール] を追加して部品を検出します。次に、[検査] アプリケーションステップに移動し、3 つの [演算 & ロジックツール] を追加して X、Y、および角度の絶対値を乗算し、値の端数を切り上げます。追加したこの 3 つの [演算 & ロジックツール] は、出力値が負であるか正であるかを判別するのにも使用できます。
In-Sight ジョブの I/O 設定
ツールを設定して結果が返されたら、次の手順はその結果をロボットコントローラに出力することです。EasyBuilder ビューで、[通信] アプリケーションステップに移動します。[デバイスの追加] ボタンをクリックして、[デバイス] として [ロボット] を、[メーカー] として [FANUC] を、[プロトコル] として [EtherNet IP Robot (EtherNet IP ロボット)] を選択し、[OK] ボタンをクリックします。デバイスが追加されている場合、EasyBuilder は、フィクスチャを定義し、フィクスチャを表すデータ文字列を生成する、位置決めツールまたは検査ツールがあるかどうかジョブを自動的にサーチします。
[フォーマット出力データ] タブの [ポジション名] ドロップダウンリストに、フィクスチャを作成するすべてのツールが表示されます。ジョブにポジションを返すツールが 1 つしか含まれていない場合、そのツールがデフォルトとして選択されます。ポジションを返すツールが 2 つ以上ある場合は、[ポジション名] ドロップダウンリストから、送信する出力文字列のツールを選択してください。出力バッファ文字列が表示され、それとともにメッセージサイズも参照用にバイト単位で表示されます。
In-Sight ビジョンシステムインタフェースによる通信
センサインタフェースオプションを使用するには、PREMOSYS の Web サイト (http://www.premosys.com) からサードパーティのプロトコルコンバータを入手する必要があります。このコンバータは、FANUC のセンサインタフェースのシリアルフロー制御プロトコルを処理します。
要件
必要なハードウェア
- In-Sight ビジョンシステム (In-Sight Micro 1000 シリーズ、In-Sight 5000 シリーズ、In-Sight 7000 シリーズ、または In-Sight 8000 シリーズのビジョンシステム)
- シリアル通信の場合、I/O モジュール、ブレークアウトケーブル (In-Sight 5000 シリーズまたは In-Sight 7000 シリーズのみ)。注 :
- In-Sight 70xx - 74xx シリーズ上でシリアル通信を有効にするには、ブレークアウトケーブルを使用するか、CIO-MICRO または CIO-MICRO-CC I/O モジュールを使用します。 ブレークアウトケーブルに接続している場合 (I/O モジュールに接続されていない場合)、ディスクリート入出力ライン (各 1) をシリアル受信およびシリアル送信に設定することができます。
- In-Sight Micro 1000 シリーズビジョンシステムは、CIO-MICRO または CIO-MICRO-CC I/O モジュールに接続している場合のみ、シリアル通信をサポートします。
- PREMOSYS プロトコルコンバータ VE0010
- PC
- FANUC ロボットコントローラ (RJ2 または RJ3)
- シリアルケーブル (DB25 - DB25)
- In-Sight と VE0010 の接続用ケーブル (VE0010 のマニュアルを参照)
必要なソフトウェア
- Cognex In-Sight Explorer バージョン 3.3 以降
- Cognex In-Sight Explorer ファームウェアバージョン 3.3 以降
- FANUC センサインタフェースオプション
ロボットコントローラのティーチペンダントコード
1: R[20:MEASURE_CNTR_CAM]=0 ;
2: R[2:ALARM CODE]=0 ;
3: LBL[9] ;
4: !REGISTER CHOICE ;
5: R[51:REGISTER_CHOICE]=5 ;
6: R[6:INTERMEDIATE_CALC]=R[51:REGISTER_CHOICE]*65536 ;
7: R[1:SEND_CAM]=R[50:PRODUCT_CHOICE]+256 ;
8: R[1:SEND_CAM]=R[1:SEND_CAM]+1 ;
9: R[1:SEND_CAM]=R[1:SEND_CAM]+R[6:INTERMEDIATE_CALC] ;
10: R[5:REC_ACK]=0 ;
11: SEND R[1:SEND_CAM] ;
12: RCV R[5:REC_ACK] LBL[1] TIMEOUT,LBL[1] ;
13: R[20:MEASURE_CNTR_CAM]=R[20:MEASURE_CNTR_CAM]+1 ;
14: JMP LBL[2] ;
15: !Measurement I/O ;
16: LBL[2] ;
17: IF R[5:REC_ACK]=1,JMP LBL[3] ;
18: !Measurement Not OK ;
19: IF R[20:MEASURE_CNTR_CAM]=1,JMP LBL[9] ;
20: IF R[20:MEASURE_CNTR_CAM]=2,JMP LBL[10] ;
21: LBL[10] ;
22: !In-Sight TO ROBOT ;
23: IF R[5:REC_ACK]=2 OR R[5:REC_ACK]=3 OR R[5:REC_ACK]=6,JMP LBL[4] ;
24: !ROBOT TO In-Sight ;
25: IF R[5:REC_ACK]=4 OR R[5:REC_ACK]=5 OR R[5:REC_ACK]=8 OR
: R[5:REC_ACK]=9,JMP LBL[5] ;
26: !POSITION IS Not OK ;
27: IF R[5:REC_ACK]=12,JMP LBL[6] ;
28: LBL[4:Alarm Code 1] ;
29: R[2:ALARM CODE]=4 ;
30: JMP LBL[3] ;
31: LBL[5:Alarm Code 2] ;
32: R[2:ALARM CODE]=5 ;
33: JMP LBL[3] ;
34: LBL[6:Alarm Code 3] ;
35: R[2:ALARM CODE]=6 ;
36: JMP LBL[3] ;
37: LBL[3:End] ;
In-Sight シリアルポートの設定
ビジョンシステムに接続している間 (ビジョンシステムはオフライン) に、次の手順に従ってください。
- [センサ] メニューで、[シリアルポートの設定] をクリックします。
-
[シリアルポートの設定] ダイアログで、次のプロパティを設定します。
- [ビット/秒]: 4800
- [データビット]: 8
- [ストップビット]: 1
- [パリティ]: なし
- [フロー制御]: なし
- [モード]: Native
- [固定長の入力]: 無効
- [入力終端記号]: 13
- [出力終端記号]: 13
- [OK] をクリックします。
In-Sight ジョブの設定
VE0010 プロトコルコンバータに付属のサンプルを使用します。
トラブルシューティング
ハイパーターミナルとのシリアル接続
In-Sight シリアルポートの設定
ビジョンシステムに接続している間 (ビジョンシステムはオフライン) に、次の手順に従ってください。
-
[センサ] メニューで、[シリアルポートの設定] をクリックします。
-
[I/O モジュール] ボタンをクリックして [I/O モジュールの設定] ダイアログを開き、I/O モジュールを設定します。[OK] ボタンをクリックして [I/O モジュールの設定] ダイアログを閉じ、[シリアルポートの設定] ダイアログに戻ります。
注 : In-Sight 70xx ~ 74xx シリーズのビジョンシステムが CIO-MICRO または CIO-MICRO-CC I/O モジュールを使用するように設定されている場合、ブレークアウトケーブルの RS-232 TRANSMIT ピンと RS-232 RECEIVE ピンは無効です。I/O モジュールの RS-232 OUT ポート (DB9) を使用して、シリアルデバイスに接続してください。 -
[シリアルポートの設定] ダイアログで、次のプロパティを設定します。
- [ビット/秒]: 115200
- [データビット]: 8 (CIO-1400 を使用する場合のデフォルト設定)
- [ストップビット]: 1 (CIO-1400 を使用する場合のデフォルト設定)
- [パリティ]: なし
- [フロー制御]: なし
- [モード]: Native
- [固定長の入力]: 無効
- [入力終端記号]: 13
- [出力終端記号]: 13
- ダイアログで、ビジョンシステムに物理的に接続されている I/O モジュールの横に「(接続済み)」というメッセージが表示されていることを確認します。
- [OK] をクリックします。
テストジョブの設定
- [ファイル] メニューから、新規ジョブを作成します。
- AcquireImage プロパティシート (セル A0 をダブルクリック) で、次のパラメータを設定します。
- トリガ = 外部
- 手動 = ON
- セル A2 を選択し、「ExtractBlobs」と入力して Enter キーを押します (この時点で、ExtractBlobs プロパティシートが表示されます)。
- [OK] をクリックします (パラメータはすべて、デフォルト設定値のままになります)。
- セル A4 を選択し、「FindBlobs」と入力して Enter キーを押します (この時点で、FindBlobs プロパティシートが表示されます)。
- ブロブパラメータについてはセル B2 を参照します。
- [OK] をクリックします。
- [手動トリガ] アイコンを数回クリックし、データが変化していることを確認します。
- ビジョンシステムをオンラインにします。
In-Sight ビジョンシステムへの接続
- Windows で、[スタート] → [すべてのプログラム] → [アクセサリ] → [通信] → [ハイパーターミナル] をクリックします。
- 新しい接続を生成します ([ファイル] → [新しい接続])。
- [ポート名]: COM1
- [ビット/秒]: 115200
- [データビット]: 8
- [パリティ]: なし
- [ストップビット]: 1
- [フロー制御]: なし
- [ファイル] → [プロパティ] → [設定] をクリックします。
- [エミュレーション]: ANSI
- [ASCII 設定] の表示を見やすくするため次のように設定します。
- 行末に改行文字を付ける
- ローカル エコーする
- 着信データに改行文字を付ける
- 右端で折り返す
- [接続] をクリックします。
- ビジョンシステムのユーザ名とパスワードを入力します (デフォルトのユーザ名は「admin」、パスワードは空白)。
- 「User Logged In」と表示されます。
- 「SW8」と入力し、Enter キーを押します (手動トリガが実行され、画像が変化します)。
- 「GVC004」と入力し、Enter キーを押します (セル C4 に保存されている値が取得されます)。
Telnet による Ethernet 接続の確認
テストジョブの設定
- [ファイル] メニューから、新規ジョブを作成します。
- AcquireImage プロパティシート (セル A0 をダブルクリック) で、次のパラメータを設定します。
- トリガ = 外部
- 手動 = ON
- セル A2 を選択し、「ExtractBlobs」と入力して Enter キーを押します (この時点で、ExtractBlobs プロパティシートが表示されます)。
- [OK] をクリックします (パラメータはすべて、デフォルト設定値のままになります)。
- セル A4 を選択し、「FindBlobs」と入力して Enter キーを押します (この時点で、FindBlobs プロパティシートが表示されます)。
- ブロブパラメータについてはセル B2 を参照します。
- [OK] をクリックします。
- [手動トリガ] アイコンを数回クリックし、データが変化していることを確認します。
- ビジョンシステムをオンラインにします。
In-Sight ビジョンシステムへの接続
- Windows で、[スタート] → [ファイル名を指定して実行] をクリックします。
- [ファイル名を指定して実行] ウィンドウで、次のように入力します。telnet < センサの IP アドレス > (例: telnet 10.27.80.66)
- [OK] をクリックします。
- ビジョンシステムのユーザ名とパスワードを入力します (デフォルトのユーザ名は「admin」、パスワードは空白)。
- 「User Logged In」と表示されます。
- 「SW8」と入力し、Enter キーを押します (手動トリガが実行され、画像が変化します)。
- 「GVC004」と入力し、Enter キーを押します (セル C4 に保存されている値が取得されます)。
- telnet セッションを切断するには、Ctrl + ] キーを押します。
- 「quit」と入力し、ウィンドウを閉じます。