ロボット通信 - 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 70xx ~ 74xx ビジョンシステムのシリアル通信を有効にするには」を参照してください。
    • 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 シリアルポートの設定

ビジョンシステムに接続している間 (ビジョンシステムはオフライン) に、次の手順に従ってください。

  1. [センサ] メニューで、[シリアルポートの設定] をクリックします。

  2. [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 モジュールの横に「(接続済み)」というメッセージが表示されていることを確認します。
  3. [OK] をクリックします。

In-Sight ジョブの設定

  1. [ファイル] メニューから、新規ジョブを作成します。
  2. AcquireImage プロパティシート (セル A0 をダブルクリック) で、次のパラメータを設定します。
  • トリガ = 外部
  • 手動 = ON
  1. セル A2 を選択し、「ExtractBlobs」と入力して Enter キーを押します (この時点で、ExtractBlobs プロパティシートが表示されます)。
  2. [OK] をクリックします (パラメータはすべて、デフォルト設定値のままになります)。
  1. セル A4 を選択し、パレット の [スニペット] タブから、[Communication] → [Robots] → [FANUC.cxd] スニペットをスプレッドシートに挿入します。
  1. 次のように座標セル参照を定義します。
  • X: C6 をダブルクリック、C2 をダブルクリック
  • Y: D6 をダブルクリック、D2 をダブルクリック
  • 角度: E6 をダブルクリック、E2 をダブルクリック
  1. [手動トリガ] アイコンを数回クリックし、ExtractBlobs 関数からのデータが変化していることを確認します。
  2. ジョブを保存します。
  3. ビジョンシステムをオンラインにします。

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 ロボットコントローラの設定

ソケットメッセージングオプションを設定する

設定対象のタグを、ネットワーク上の別のデバイスで使用できるように設定することはできません。

クライアントタグの設定

  1. コントローラをコールドスタートします。
    • ティーチペンダントで、Shift + RESET キーを押し続けます。または、オペレータパネルで RESET キーを押し続けます。
    • ティーチペンダントで Shift + RESET キーを押したまま (または、オペレータパネルで RESET キーを押したまま)、オペレータの ON ボタンを押します。
    • すべてのキーを離します。
  2. ティーチペンダントで、[MENUS] を押します。
  3. [SETUP] を選択します。
  4. F1 キー ([TYPE]) を押します。
  5. [Host Comm] を選択します。
  6. F4 キー ([SHOW]) を押します。
  7. [Clients] を選択します。
  8. カーソルを、ソケットメッセージング用に設定するタグに移動し、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:

     

  9. カーソルを [Protocol name] に移動し、F4 キー ([CHOICE]) を押します。
  10. [SM] を選択します。
  11. カーソルを [Startup State] に移動し、F4 キー ([CHOICE]) を押します。
  12. [Start] を選択して、Enter キーを押します。
  13. [Remote] を選択して、Enter キーを押します。
  14. ソケットメッセージングに使用するリモートホストサーバを入力し、F2 キー ([ACTION]) を押します。
  15. [DEFINE] を選択します。

    :  DNS を使用していない場合は、ホストエントリテーブルにリモートホストとその IP アドレスを追加する必要があります。

システム変数の設定 (クライアントタグ)

  1. [MENUS] を押します。
  2. [NEXT] を選択します。
  3. [SYSTEM] を選択し、F1 キー ([TYPE]) を押します。
  4. [Variables] を選択します。
  5. カーソルを [$HOSTC_CFG] に移動し、Enter キーを押します。
  6. 前のセクション「タグの設定」で選択したタグに対応する構造体にカーソルを移動します。例えば、タグ 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
  7. 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
  8. カーソルを [$SERVER_PORT] に移動します。ソケットメッセージングに使用する TCP/IP サーバポートの名前を入力します。
  9. これで、クライアントタグを 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 ジョブの設定

  1. [ファイル] メニューから、新規ジョブを作成します。
  2. AcquireImage プロパティシート (セル A0 をダブルクリック) で、次のパラメータを設定します。
    1. トリガ = 外部
    2. 手動 = ON
  3. セル A2 を選択し、「ExtractBlobs」と入力して Enter キーを押します (この時点で、ExtractBlobs プロパティシートが表示されます)。
  4. [OK] をクリックします (パラメータはすべて、デフォルト設定値のままになります)。
  5. セル A4 を選択し、パレット の [スニペット] タブから、[Communication] → [Robots] → [FANUC.Communications] スニペットをスプレッドシートに挿入します。
  6. 次のように座標セル参照を定義します。
    1. X: C6 をダブルクリック、C2 をダブルクリック
    2. Y: D6 をダブルクリック、D2 をダブルクリック
    3. 角度: E6 をダブルクリック、E2 をダブルクリック
  7. [手動トリガ] アイコンを数回クリックし、ExtractBlobs 関数からのデータが変化していることを確認します。
  8. ジョブを保存します。
  9. ビジョンシステムをオンラインにします。

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 の設定

  1. ロボットコントローラと通信する In-Sight ビジョンシステムに接続します。
  2. [センサ] メニューから、[ネットワークの設定] を選択して [ネットワークの設定] ダイアログを開きます。
  3. [産業用イーサネットプロトコル] を [EtherNet/IP] に設定します。

TPP ロボットコントローラの設定

  1. FANUC R540 EtherNet/IP I/O スキャナソフトウェアを起動します。
  2. [MENU] を押します。
  3. I/O を選択します。
  4. 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
  5. 適切な接続を選択して、名前を変更します。システムが正常に接続されたら、表に次のように設定が反映されます。

    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 シリーズビジョンシステム
  • IP アドレス: ビジョンシステムの IP アドレスをここに挿入します
  • ベンダ ID: 678
  • デバイスのタイプ: 100
  • 製品コード: 260
  • 入力サイズ (ワード): 64
  • 出力サイズ (ワード): 64
  • RPI (ミリ秒): 32
  • アセンブリインスタンス (入力): 12
  • アセンブリインスタンス (出力): 21
  • 設定インスタンス: 0
  • IP アドレス: ビジョンシステムの IP アドレスをここに挿入します
  • ベンダ ID: 678
  • デバイスのタイプ: 100
  • 製品コード: 257
  • 入力サイズ (ワード): 64
  • 出力サイズ (ワード): 64
  • RPI (ミリ秒): 32
  • アセンブリインスタンス (入力): 12
  • アセンブリインスタンス (出力): 21
  • 設定インスタンス: 0
  • IP アドレス: ビジョンシステムの IP アドレスをここに挿入します
  • ベンダ ID: 678
  • デバイスのタイプ: 100
  • 製品コード: 273
  • 入力サイズ (ワード): 64
  • 出力サイズ (ワード): 64
  • RPI (ミリ秒): 32
  • アセンブリインスタンス (入力): 13
  • アセンブリインスタンス (出力): 22
  • 設定インスタンス: 0
  • IP アドレス: ビジョンシステムの IP アドレスをここに挿入します
  • ベンダ ID: 678
  • デバイスのタイプ: 100
  • 製品コード: 265
  • 入力サイズ (ワード): 64
  • 出力サイズ (ワード): 64
  • RPI (ミリ秒): 32
  • アセンブリインスタンス (入力): 12
  • アセンブリインスタンス (出力): 21
  • 設定インスタンス: 0
  • IP アドレス: ビジョンシステムの IP アドレスをここに挿入します
  • ベンダ ID: 678
  • デバイスのタイプ: 100
  • 製品コード: 276
  • 入力サイズ (ワード): 64
  • 出力サイズ (ワード): 64
  • RPI (ミリ秒): 32
  • アセンブリインスタンス (入力): 13
  • アセンブリインスタンス (出力): 22
  • 設定インスタンス: 0
  • IP アドレス: ビジョンシステムの IP アドレスをここに挿入します
  • ベンダ ID: 678
  • デバイスのタイプ: 100
  • 製品コード: 274
  • 入力サイズ (ワード): 64
  • 出力サイズ (ワード): 64
  • RPI (ミリ秒): 32
  • アセンブリインスタンス (入力): 13
  • アセンブリインスタンス (出力): 22
  • 設定インスタンス: 0
入力の定義
名前 信号のタイプ 信号のラベル 装置のマップ
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 から開始します。

:  これは、設定のサンプルです。ロボットの設定では、ラック 89、スロット 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
サンプル

下に、ロボットコントローラのデジタル出力設定のサンプルを示します。

:  これは、設定のサンプルです。ロボットの設定では、ラック 89、スロット 1 が必要になります。
番号 範囲 ラック スロット 開始 ステータス
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

:  PR[1] の値は、最初に選択された位置と同じにする必要があります。こうすることにより、Z の高さおよび RX、RY の値を正しく設定することができます。

In-Sight ビジョンシステムとロボットコントローラのキャリブレーション

高精度チェッカボードキャリブレーションプレートを使用して、In-Sight ビジョンシステムから得られた結果を、ピクセルから実世界の測定単位にキャリブレーションすることは非常に重要です。このセクションでは、ビジョンシステムとロボットの間のキャリブレーションプロセスに関して重要になる点について説明します。

:  キャリブレーションプロセスの設定方法に関する詳細な手順については、CalibrateGrid 関数のトピックを参照してください。キャリブレーションプレートの詳細については、弊社営業窓口にお問い合わせください。

キャリブレーションを設定する際には、ビジョンシステムの視野 (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 つの [演算 & ロジックツール] は、出力値が負であるか正であるかを判別するのにも使用できます。

:  位置決めツールと検査ツールの設定および使用方法の詳細については、EasyBuilder ビューの [パレット] の [ヘルプ] タブを参照してください。

In-Sight ジョブの I/O 設定

ツールを設定して結果が返されたら、次の手順はその結果をロボットコントローラに出力することです。EasyBuilder ビューで、[通信] アプリケーションステップに移動します。[デバイスの追加] ボタンをクリックして、[デバイス] として [ロボット] を、[メーカー] として [FANUC] を、[プロトコル] として [EtherNet IP Robot (EtherNet IP ロボット)] を選択し、[OK] ボタンをクリックします。デバイスが追加されている場合、EasyBuilder は、フィクスチャを定義し、フィクスチャを表すデータ文字列を生成する、位置決めツールまたは検査ツールがあるかどうかジョブを自動的にサーチします。

[フォーマット出力データ] タブの [ポジション名] ドロップダウンリストに、フィクスチャを作成するすべてのツールが表示されます。ジョブにポジションを返すツールが 1 つしか含まれていない場合、そのツールがデフォルトとして選択されます。ポジションを返すツールが 2 つ以上ある場合は、[ポジション名] ドロップダウンリストから、送信する出力文字列のツールを選択してください。出力バッファ文字列が表示され、それとともにメッセージサイズも参照用にバイト単位で表示されます。

:  [通信] アプリケーションステップの設定および使用方法の詳細については、EasyBuilder ビューの [パレット] の [ヘルプ] タブを参照してください。

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 70xx ~ 74xx ビジョンシステムのシリアル通信を有効にするには」を参照してください。
    • 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 シリアルポートの設定

ビジョンシステムに接続している間 (ビジョンシステムはオフライン) に、次の手順に従ってください。

  1. [センサ] メニューで、[シリアルポートの設定] をクリックします。
  2. [シリアルポートの設定] ダイアログで、次のプロパティを設定します。

    • [ビット/秒]: 4800
    • [データビット]: 8
    • [ストップビット]: 1
    • [パリティ]: なし
    • [フロー制御]: なし
    • [モード]: Native
    • [固定長の入力]: 無効
    • [入力終端記号]: 13
    • [出力終端記号]: 13
  3. [OK] をクリックします。

In-Sight ジョブの設定

VE0010 プロトコルコンバータに付属のサンプルを使用します。

トラブルシューティング

ハイパーターミナルとのシリアル接続

In-Sight シリアルポートの設定

ビジョンシステムに接続している間 (ビジョンシステムはオフライン) に、次の手順に従ってください。

  1. [センサ] メニューで、[シリアルポートの設定] をクリックします。

  2. [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) を使用して、シリアルデバイスに接続してください。
  3. [シリアルポートの設定] ダイアログで、次のプロパティを設定します。

    • [ビット/秒]: 115200
    • [データビット]: 8 (CIO-1400 を使用する場合のデフォルト設定)
    • [ストップビット]: 1 (CIO-1400 を使用する場合のデフォルト設定)
    • [パリティ]: なし
    • [フロー制御]: なし
    • [モード]: Native
    • [固定長の入力]: 無効
    • [入力終端記号]: 13
    • [出力終端記号]: 13
  4. ダイアログで、ビジョンシステムに物理的に接続されている I/O モジュールの横に「(接続済み)」というメッセージが表示されていることを確認します。
  5. [OK] をクリックします。

テストジョブの設定 

  1. [ファイル] メニューから、新規ジョブを作成します。
  2. AcquireImage プロパティシート (セル A0 をダブルクリック) で、次のパラメータを設定します。
    • トリガ = 外部
    • 手動 = ON
  3. セル A2 を選択し、「ExtractBlobs」と入力して Enter キーを押します (この時点で、ExtractBlobs プロパティシートが表示されます)。
  4. [OK] をクリックします (パラメータはすべて、デフォルト設定値のままになります)。
  5. セル A4 を選択し、「FindBlobs」と入力して Enter キーを押します (この時点で、FindBlobs プロパティシートが表示されます)。
  6. ブロブパラメータについてはセル B2 を参照します。
  7. [OK] をクリックします。
  8. [手動トリガ] アイコンを数回クリックし、データが変化していることを確認します。
  9. ビジョンシステムをオンラインにします。

In-Sight ビジョンシステムへの接続

  1. Windows で、[スタート] → [すべてのプログラム] → [アクセサリ] → [通信] → [ハイパーターミナル] をクリックします。
  2. 新しい接続を生成します ([ファイル] → [新しい接続])。
    • [ポート名]: COM1
    • [ビット/秒]: 115200
    • [データビット]: 8
    • [パリティ]: なし
    • [ストップビット]: 1
    • [フロー制御]: なし
  3. [ファイル] → [プロパティ] → [設定] をクリックします。
    • [エミュレーション]: ANSI
    • [ASCII 設定] の表示を見やすくするため次のように設定します。
      • 行末に改行文字を付ける
      • ローカル エコーする
      • 着信データに改行文字を付ける
      • 右端で折り返す
  4. [接続] をクリックします。
  5. ビジョンシステムのユーザ名とパスワードを入力します (デフォルトのユーザ名は「admin」、パスワードは空白)。
  6. 「User Logged In」と表示されます。
  7. SW8」と入力し、Enter キーを押します (手動トリガが実行され、画像が変化します)。
  8. GVC004」と入力し、Enter キーを押します (セル C4 に保存されている値が取得されます)。

Telnet による Ethernet 接続の確認

テストジョブの設定

  1. [ファイル] メニューから、新規ジョブを作成します。
  2. AcquireImage プロパティシート (セル A0 をダブルクリック) で、次のパラメータを設定します。
    • トリガ = 外部
    • 手動 = ON
  3. セル A2 を選択し、「ExtractBlobs」と入力して Enter キーを押します (この時点で、ExtractBlobs プロパティシートが表示されます)。
  4. [OK] をクリックします (パラメータはすべて、デフォルト設定値のままになります)。
  5. セル A4 を選択し、「FindBlobs」と入力して Enter キーを押します (この時点で、FindBlobs プロパティシートが表示されます)。
  6. ブロブパラメータについてはセル B2 を参照します。
  7. [OK] をクリックします。
  8. [手動トリガ] アイコンを数回クリックし、データが変化していることを確認します。
  9. ビジョンシステムをオンラインにします。

In-Sight ビジョンシステムへの接続

  1. Windows で、[スタート] → [ファイル名を指定して実行] をクリックします。
  2. [ファイル名を指定して実行] ウィンドウで、次のように入力します。telnet < センサの IP アドレス > (例: telnet 10.27.80.66)
  3. [OK] をクリックします。
  4. ビジョンシステムのユーザ名とパスワードを入力します (デフォルトのユーザ名は「admin」、パスワードは空白)。
  5. 「User Logged In」と表示されます。
  6. SW8」と入力し、Enter キーを押します (手動トリガが実行され、画像が変化します)。
  7. GVC004」と入力し、Enter キーを押します (セル C4 に保存されている値が取得されます)。
  8. telnet セッションを切断するには、Ctrl + ] キーを押します。
  9. 「quit」と入力し、ウィンドウを閉じます。