【実機解説】Keyence PLCでFANUCロボットの電流値・位置座標を常時取得する方法(プロトコルスタジオ)
導入:結論から先に
FANUCロボットの「現在位置(座標)」や「電流値」は、KeyenceのPLCと「PROTOCOL STUDIO(プロトコルスタジオ)」を使えば、PLC側から常時・自動で取得できます。
「ロボットの状態をリアルタイムで見たい」「異常の予兆をデータでつかみたい」——そう思ったとき、多くの方はFANUC専用の高価な監視システムを思い浮かべます。でも実は、現場にすでにあるKeyenceのPLCと、無料の通信設定ソフト「プロトコルスタジオ」だけで、ロボットの中の値を吸い出せます。しかも、後で見るように相手機器のプリセット(R-30iBシリーズ用の設定)を選ぶだけで、面倒な通信の中身はほぼ自動です。
取得できると、こんなことにつながります。
- 稼働監視:ロボットが今どこにいて、どう動いているかを数値で把握できる
- 予兆保全:電流値の変化から「そろそろ異常かも」を早めに察知できる
- 見える化:取得したデータを溜めて、グラフや異常検知に活用できる
この記事では、私が実機で行ったKeyence側の設定手順を、画面キャプチャに沿ってステップごとに解説します。そして最後に、取得したデータをどう活かすか(IoT・データ活用)まで触れます。
専門用語が出てきますが、できるだけ補足しながら進めます。
この記事で使う機器・ソフト(実機構成)
実際に使った構成は以下のとおりです。
| 役割 | 機器・ソフト |
|---|---|
| PLC本体(CPU) | Keyence KV-8000シリーズ |
| Ethernetユニット | Keyence KV-XLE02 |
| PLC設定ソフト | KV STUDIO |
| 通信設定ソフト | PROTOCOL STUDIO(プロトコルスタジオ) ※KV STUDIOに付属・無料 |
| 相手機器 | FANUCロボット(コントローラ R-30iBシリーズ) |
KV-XLE02は、PLCにEthernet(LANケーブル)の通信機能を追加するユニットで、「産業用イーサネット選択可能」とあるとおり、FANUCロボットのような産業機器との通信に対応しています。
【本体】Keyence側の設定手順
ここが、実際に手を動かした部分です。まず大きな流れをつかんでから、ステップごとに見ていきましょう。
大きな流れ(全体像)
- KV STUDIOで「ユニットエディタ」を開く
- Ethernetユニット「KV-XLE02」を追加する
- KV-XLE02にIPアドレスを設定し、「PROTOCOL STUDIO」を使用する設定にする
- 設定を「適用」して、プロジェクトにPROTOCOL STUDIOを追加する
- PROTOCOL STUDIOで通信設定を「新規作成」する
- 相手機器(FANUC R-30iB)を選び、IP・ポート・プロトコルを設定する
- 自動登録された通信コマンドで、現在位置・電流値などが常時取得される
この7ステップです。順番に、画面を見ながら進めます。
ステップ1:KV STUDIOで「ユニットエディタ」を開く
まず、KeyenceのPLC設定ソフト「KV STUDIO」を開きます。画面左のプロジェクトツリーの「ユニット構成」→「[0] KV-8000」(PLC本体)を右クリックし、いちばん上の「ユニットエディタ(U)」を選びます。

ユニットエディタとは:PLCにどんなユニット(部品)が付いていて、それぞれをどう使うかを登録する画面です。まずはここで、これから使うEthernetユニットを登録します。
ステップ2:Ethernetユニット「KV-XLE02」を追加する
ユニットエディタが開いたら、画面右側の「ユニット選択(1)」タブを開きます。「情報/ネットワークユニット」の一覧の中から、今回使う「KV-XLE02」(イーサネットユニット)を選び、左側のブロック図へドラッグ&ドロップします。

ブロック図にKV-XLE02の枠が追加されれば成功です。これで「このPLCにEthernetユニットが付いている」とソフトに認識させたことになります。
ステップ3:IPアドレスを設定し、「PROTOCOL STUDIO」を使用するに変更
ブロック図に追加された「KV-XLE02」を選択した状態で、今度は画面右側の「ユニット設定(2)」タブを開きます。ここで2つの設定を行います。
- 「ポート1」のIPアドレスを設定します(今回は
192.168.0.100)。これがKeyence PLC側の「住所」になります。 - 少し下にある「PROTOCOL STUDIO」の欄のプルダウンを、「使用する」に変更します。
「使用する」に変えると、「設定を変更すると、以下の設定内容になります。よろしいですか?(使用DM数:4800/使用リレー点数:1248)」という確認画面が出ます。これは「値を保存するための棚(デバイス)を、これだけ自動で確保しますよ」という意味なので、「はい(Y)」を押します。

ここで確保される「DM」や「リレー」は、あとでロボットの値が入ってくる保存場所です。数は自動で決まるので、そのままでOKです。
ステップ4:「適用」して、プロジェクトにPROTOCOL STUDIOを追加する
設定できたら、ユニットエディタ右下の「適用」ボタンをクリックします。すると、左のプロジェクトツリーに「KV-XLE02」と「PROTOCOL STUDIO」の項目が追加されます。
「OK」で閉じても構いませんが、「適用」を押すとその場で反映され、ツリーに項目が増えたことをすぐ確認できます。
ステップ5:PROTOCOL STUDIOで通信設定を「新規作成」する
プロジェクトツリーに増えた「PROTOCOL STUDIO」を右クリックし、「新規作成(N)」を選びます。ここから、相手(FANUCロボット)とどう通信するかを設定していきます。

ステップ6:相手機器(FANUC R-30iB)を選んで通信を設定する
「新規作成」を押すと、「外部機器の選択」という画面が開きます。ここが今回の山場です。次のように選ぶだけで、FANUCロボットとの通信の中身がほぼ自動で用意されます。
- メーカー:ファナック
- カテゴリ:産業用ロボット
- 機種:R-30iBシリーズ(説明に「ロボットコントローラ(タッチパネル通信機能)」と表示されます)
- IPアドレス:FANUCロボット側の住所を入力(今回は
192.168.0.110) - ポート番号:
502(デフォルトのまま) - プロトコル:TCP(アクティブ)(デフォルトのまま)
そして「基本的な通信コマンドを追加する」にチェックを入れて、「OK」を押します。このチェックが今回のいちばんのポイントで、ロボットの現在位置や状態などを読み出すための通信コマンドが、自動でひとそろい登録されます。

「TCP(アクティブ)」とは:Keyence PLC側から、相手(FANUC)へ自分から接続しにいく方式です。PLCが主役になってロボットに話しかけにいくイメージです。ポート502は、この通信(タッチパネル通信機能)で使う決まった番号なので、そのままでOKです。
ステップ7:現在位置・電流値などが「常時・自動」で取得される
OKを押すと、登録された通信コマンドの一覧が表示されます。これで設定は完了です。あとは何もしなくても、ロボットの値がPLCに入り続けます。
ポイントは、コマンドの「形態」が「サイクリック(自動)」になっていることです。これはこちらが命令しなくても、自動で定期的に通信を繰り返してくれるという意味です。これが記事タイトルの「常時取得」の正体です。

読み出された値は、PLCの「デバイス」(値を置く棚)に自動で割り付けられています。自分で1つずつ番号を決める必要はありません。たとえば冒頭には、ロボットの現在位置(直交座標)が次のように並んでいます。
| ロボットの値 | 格納されるデバイス |
|---|---|
| 現在位置 X(直交座標) | DM11100–DM11101 |
| 現在位置 Y | DM11102–DM11103 |
| 現在位置 Z | DM11104–DM11105 |
| 姿勢 W・P・R | DM11106–DM11111 |
| 拡張軸 E1・E2・E3 | DM11112–DM11117 |
| 姿勢フラグ FLIP・LEFT・UP ほか | DM11118–DM11125 |
この一覧を下にスクロールしていくと、さらに多くの値が自動で登録されています。続いて現れるのは、各軸の角度(J1〜J9)(DM11126番台〜)と、各軸の電流値「Q_CURRENT[1〜9]」(DM11168番台〜)です。この電流値(Q_CURRENT)こそ、モーターの負荷を映す、予兆保全でいちばん見たい値です。次の画像は、その部分を続けてスクロールしたものです。

さらにスクロールすると、別のコマンド「現在アラーム読み出し」が現れます。アラームは、アラームID・番号・重度・発生日時・メッセージまで細かく取得できます。加えて「システム時間読み出し」コマンドで、通電時間・サーボオン時間・稼働時間といった、稼働監視に直結する値も取れます。次の画像が、その部分です。

システム時間には、待機時間やブレーキ解除時間まで含まれます。ここまで、すべてプリセットのチェック1つで自動登録されたものです。
まとめると、R-30iBのプリセットを選んで「基本的な通信コマンドを追加する」にチェックしただけで、これだけの情報が常時・自動で取得できる状態になります。
| 取得できるデータ | 内容 | 代表デバイス |
|---|---|---|
| 現在位置(直交座標) | X・Y・Z・W・P・R | DM11100〜 |
| 各軸の角度 | J1〜J9 | DM11126〜 |
| 電流値 | Q_CURRENT[1〜9](各軸の電流) | DM11168〜 |
| アラーム情報 | ID・番号・重度・発生日時・メッセージ | DM11187〜 |
| システム時間 | 通電時間・サーボオン時間・稼働時間 | DM11288〜 |
格納先のデバイス番号はあとから手動で変更することもできますが、まずは自動割付のままで問題ありません。この「どの棚にどの値が入るか」の対応表が分かっていれば、あとでPythonやデータベースから読みにいけます(後述)。
FANUCロボット側に必要な準備
ここまではKeyence側の設定です。ロボットから値を受け取るには、FANUCロボット側でも「通信機能を有効にし、IPアドレスを設定しておく」必要があります(今回はロボット側を 192.168.0.110 に設定)。
さらに、上記の設定に加えて、ロボットのシステム変数を特定の設定値にする必要があります。この機能を使えるかどうか、有効化の手順、そしてどのシステム変数をどの値にするかは、ロボットの機種や搭載しているオプションによって異なります。ここは推測で書くと現場で困る部分なので、正直にお伝えします。具体的な設定内容は、キーエンスの担当者に確認するのが確実ですので、そちらから確認してください。
- ✅ Keyence側(プロトコルスタジオの設定)→ この記事のとおり、プリセットでほぼ自動
- ⚠️ FANUC側(通信機能の有効化・IP設定・システム変数の設定)→ 機種ごとに異なるため、キーエンスの担当に確認するのが確実です
分かる部分はしっかり書く、確認が必要な部分は正直に「確認を」と書く——これがいちばん誠実だと考えています。「自社のFANUCロボットでこれを実現したいが、どこから手をつければ…」という段階のご相談も承っています(記事末尾のお問い合わせへ)。
【締め】取得したデータをどう活かすか(ここからがIoT)
ここまでで、ロボットから現在位置・各軸の角度・電流値(Q_CURRENT)・アラーム・稼働時間などが、PLCのデバイス(DM11100番台〜)に常時入ってくるようになりました。
ここで大事なのは、取得したこれらの値は「PLCのデバイス値」として扱える、という点です。これが何を意味するか。「PLCのデータを溜めて活用する」という、すでに確立された土台にそのまま乗せられるということです。
私自身は、PLCのデータを定期的にデータベース(DB)へ自動保存するシステムを構築した実績があります。(※このFANUCロボットのデータそのものを蓄積・分析した事例ではなく、「PLCデータをDBへ保存する仕組み」としての実績です。ここは正直に分けてお伝えします)
つまり、流れとしてはこうつながります。
FANUCロボット(現在位置・電流値・稼働時間)
│ プロトコルスタジオでサイクリック取得
▼
Keyence PLC(DM11100番台などに保持)
│ 定期的に読み出し
▼
データベース(SQL Serverなど)に蓄積
│
▼
グラフで見える化/電流値の変化から異常検知
イメージとして、PLCから読み出した値を定期的にDBへ保存する処理は、たとえば次のような形になります(※考え方を示すための概念コードです)。なお、PythonでPLCのデバイス値を実際に読み出す具体的な方法は、別記事で詳しく解説しています。
👉 PythonでKeyence PLCのデバイスを読み出す方法(上位リンク通信)
import time # 一定間隔で繰り返すための時間モジュール
while True: # ずっと繰り返す
x = read_plc_device("DM11100") # 現在位置Xを読み出す(DM11100)
cur = read_plc_device("DM11168") # 電流値 Q_CURRENT[1] を読み出す(DM11168)
save_to_database(x, cur) # 読み出した値をDBに保存する
time.sleep(60) # 60秒待って、また繰り返す(DBへの保存間隔)
「常時取得」と「保存する間隔」は別物です、という点だけ補足します。プロトコルスタジオのサイクリック通信によって、PLCのデバイスには常にロボットの最新値が入り続けています(=常時取得)。一方で、その値をDBに何秒ごとに保存するかは、上のコードの
time.sleep(60)のように自分で自由に決められます。細かい変化を追いたいなら短く、長期トレンドを見たいなら長く調整できます。
こうして溜めたデータは、
- 稼働状況のグラフ化(稼働時間・通電時間から、いつ・どれだけ動いていたか)
- 電流値の異常検知(Q_CURRENTの変化から、いつもと違う負荷を早期に察知)
- 予兆保全(アラーム履歴と合わせて、故障する前に気づく)
といった、いわゆるIoT・データ活用の世界につながっていきます。
ロボットの値を「取る」のは、今回のとおり実は簡単です。本当に価値が出るのは、取ったデータを「活かす」ところ。この取得から活用までを一気通貫で考えられるのが、私(FA-Tech Lab)の強みです。
関連記事
- FANUCロボット × Keyence PLC のEthernet/IP設定方法【実機解説】
- PythonでKeyence PLCのデバイスを読み出す方法(上位リンク通信)
- PLCでFANUCロボットを自動起動する方法
お問い合わせ
「自社のFANUCロボットの状態をデータで見える化したい」「PLCのデータをDBに溜めて、稼働監視や異常検知につなげたい」
そんなご相談を承っています。Keyence側の設定から、データの蓄積・活用の仕組みづくりまで対応できます。お気軽にお問い合わせください。

