【実機解説まとめ】Keyence PLC+FANUCロボットのデータをGrafanaで監視するまでの全4ステップ

産業用ロボットから制御盤を経てパソコンの監視画面へデータが流れる、設備IoTの全体像
fa-engineer

導入:結論から先に

FANUCロボットの電流値や位置座標を自動で取り続けて、パソコンの画面で数秒ごとに更新される監視グラフにする。

ここまでを、追加で買うのはEthernetユニット1つだけで作れます。データを溜める・見せるためのソフトは、すべて無料のものです。

私はこれを、実際に自分の手元で動かしながら4本の記事に分けて書いてきました。ただ、1本ずつ読むと「で、これは全体のどのへんの話なんだろう?」と分かりにくかったと思います。

この記事は、その4本を作る順番に並べ直した案内図です。

「設備のデータを取りたいけれど、何から手をつければいいのか分からない」という方は、まずここを読んでください。自分がどこから始めればいいかが分かります。

全体像:何をどうつなぐのか

作るものは、こういう流れです。

FANUCロボット
①取る  プロトコルスタジオ
Keyence PLC
②取る  上位リンク通信
Python
③溜める  pyodbc
SQL Server
④活かす  Grafana
リアルタイム監視ダッシュボード

やっていることを一言でいうと、「散らばっているデータを、1か所に集めて、見える形にする」だけです。

大事なのは、この4つがそれぞれ別の仕事だということです。

段階やることここでつまずくと
①取るロボットのデータをPLCに集めるそもそもデータが存在しない
②取るPLCのデータをパソコンに持ってくるデータはあるが手が届かない
③溜める持ってきたデータを保存する今の値は見えるが、過去が残らない
④活かす保存したデータを画面にするデータはあるが誰も見ない

よくある失敗は、いきなり④から考えてしまうことです。

「かっこいいダッシュボードを作りたい」から入ると、そこに流し込むデータがないことに後で気づきます。①から順に、一段ずつ進めるのが結局いちばん早いです。

かかる費用のこと

先にお金の話をしておきます。

使うもの費用使うステップ
Keyence PLC(KV-8000など)/FANUCロボットすでにある設備を使用全体
KV-XLE02(Ethernetユニット)別途購入が必要ステップ1
KV STUDIO・PROTOCOL STUDIOキーエンス製のソフトステップ1・2
Python無料ステップ2・3
SQL Server 2022 Express無料ステップ3
SSMS(データベースの管理ツール)無料ステップ3
Grafana無料ステップ4

唯一の追加購入:KV-XLE02

ステップ1で使うPROTOCOL STUDIOは、KV-XLE02というEthernetユニットがないと使えません。PLC本体だけでは動かないので、ここは買い足しが必要です。

先にお伝えしておきたいのは、このユニットが必要なのはステップ1だけだということです。

ロボットのデータではなく、PLCが持っているデータ(生産数・稼働状態など)だけで良い場合は、ステップ2から始められます。その場合はKV-XLE02も不要で、追加の購入はゼロです。

「溜める・見せる」は追加費用ゼロ

一方、ステップ3・4で使うソフトはすべて無料です。

ここが個人的にいちばん驚いたところでした。この手の仕組みは専用パッケージを買うものだと思っていたのですが、無料のソフトの組み合わせで、現場で使えるレベルのものができます。

ステップ1:取る① ロボットのデータをPLCに集める

まず、FANUCロボットが持っている情報をPLC側に引っ張ってきます。

Keyenceの PROTOCOL STUDIO という機能を使います。

先に注意点:ここだけハードの買い足しが必要です

PROTOCOL STUDIOは、KV-XLE02(Ethernetユニット)がないと使えません。PLC本体だけでは動かないので、持っていない場合は購入が必要です。

ロボットのデータが必要かどうかで判断してください。不要であれば、このステップは飛ばしてステップ2から始められます。

ここでできるようになること

  • ロボットの現在位置(X・Y・Z・W・P・R)
  • 各軸の角度(J1〜J9)
  • 電流値(Q_CURRENT)
  • アラーム情報
  • 稼働時間

これらが、放っておいても自動でPLCのデバイス(DM11100番台)に入り続ける状態になります。プログラムを書く必要はありません。

つまずきやすい所

設定画面で「基本的な通信コマンドを追加する」にチェックを入れるだけで、上記のデータが一式そろいます。ここを知らないと、コマンドを1つずつ手作りすることになります。

一方で、FANUCロボット側は通信機能の有効化とIP設定に加えて、システム変数の設定が必要です。ここは機種によって変わるため、キーエンスの担当者さんに確認するのが確実です。

▶ 詳しい手順はこちら
【実機解説】Keyence PLCでFANUCロボットの電流値・位置座標を常時取得する方法(プロトコルスタジオ)

ステップ2:取る② PLCのデータをパソコンに読み出す

次に、PLCに集まったデータをパソコン(Python)から読み出します。

上位リンク通信という、キーエンスPLCに標準で入っている通信方法を使います。特別な機器は要りません。LANケーブルでつなぐだけです。

ここでできるようになること

Pythonから1行コマンドを送ると、PLCの好きなデバイスの値が返ってきます。

RDS DM100.U 5
→ DM100から5個ぶんの数値をください、という意味

これができると、PLCの中身がパソコン側で自由に扱えるようになります。ここが設備IoTの入口です。

つまずきやすい所

意外と多いのが、通信の設定より手前の話です。PLCとパソコンのIPアドレスの組み合わせが合っていないと、そもそも届きません。先にpingで疎通を確認してからPythonを書き始めると、原因の切り分けが楽になります。

▶ 詳しい手順はこちら
PythonでKeyence PLCのデバイスを読み出す方法|上位リンク通信による設備IoT化

ステップ3:溜める データベースに自動保存する

読み出したデータを、SQL Serverに保存していきます。

ここまでの状態だと「今の値」は見えますが、画面を閉じたら消えてしまいます。過去と比べられないと、異常かどうかの判断ができません。

ここでできるようになること

数秒ごとの値が、時刻とセットでどんどん溜まっていきます。「先週の同じ時間はどうだったか」が後から確認できるようになります。

設計の勘所(ここがいちばん伝えたい所)

テーブルを2つに分けます。

テーブル役割
equipment設備の一覧(設備名・設置場所など)
robot_log実際のデータ(時刻・電流値・設備ID)

データ側には設備IDだけを持たせます。

こうしておくと、設備が増えたときにequipmentに1行足すだけで済みます。設備ごとにテーブルを作ってしまうと、3台目・4台目で必ず行き詰まります。

これは現場で似たような仕組みを見てきた経験からの判断です。最初にここを決めておくかどうかで、後の手間がまったく変わります。

▶ 詳しい手順はこちら
【実機解説】PythonでKeyence PLCのデータをSQL Serverに自動保存する方法|設備IoTの土台づくり

ステップ4:活かす Grafanaで監視画面にする

最後に、溜めたデータを Grafana でグラフにします。

ここでできるようになること

  • 数秒ごとに自動更新されるグラフ
  • 「これを超えたら異常」というしきい値を赤い線で表示
  • 設備ごとに色分けして並べる

数字を読まなくても、色と線の位置だけで状態が分かる画面になります。現場のモニターに映しておく使い方ができます。

つまずきやすい所(実際に全部ハマりました)

ここは罠が多いので、先に挙げておきます。

  1. 時刻が9時間ズレる
    Grafanaは世界標準時(UTC)で問い合わせます。日本時間で保存していると、かみ合わずに「No data」と出ます。原因が分かりにくい割に、これが一番よく起きます。
  2. $__timeFilter()の中に関数を入れてはいけない
    カッコの中の最初のカンマまでしか読んでくれないため、SQLが壊れます。しかもエラーが出ずに0件になるので、間違いに気づけません。先に別の場所で変換して、列名だけ渡します。
  3. 暗号化の設定はdisable(無効)
    日本語表示だとfalseが「間違い」と訳されていて、選ぶ手が止まります。
  4. しきい値の赤線は、設定しただけでは出ない
    「Show thresholds」を「As lines」に変える必要があります。

▶ 詳しい手順はこちら
【実機解説】SQL Serverに溜めたPLCデータを、Grafanaでリアルタイム監視ダッシュボードにする方法

あなたはどこから読めばいいか

全部を順番にやる必要はありません。今の状況に合わせて、途中から入ってください。

今の状況読むところ買い足し
設備のデータが何も取れていないステップ2(まずPLCの値を読めるように)なし
ロボットの電流値・座標がほしいステップ1KV-XLE02
データは取れているが、CSVが散らかって管理できていないステップ3なし
データは溜まっているが、誰も見ていないステップ4なし

いちばん多いのは、たぶん3つ目だと思います。

「とりあえずCSVに落としている」状態は、データを取れてはいるものの、活かせていない状態です。ファイルが増えるほど扱いづらくなるので、早めにデータベースに移すことをおすすめします。

4本を通して分かったこと

その1:一番の落とし穴は、通信ではなく「時刻」だった

始める前は、PLCやロボットとの通信でつまずくと思っていました。実際に苦労したのは、UTCと日本時間のズレです。通信は手順どおりにやれば繋がりますが、時刻のズレはエラーが出ないぶん厄介です。

その2:無料のソフトでも十分に実用になる

SQL Server ExpressにもGrafanaにも制限はありますが、設備数台ぶんのデータを扱うには十分でした。まず無料の組み合わせで作ってみて、足りなくなってから考えれば良いと思います。

その3:データを「溜める形」を最初に決めておく

後から変更するのが一番しんどい部分です。ステップ3のテーブル設計だけは、手を動かす前に少し考える時間を取る価値があります。

この先やろうと思っていること

「取る→溜める→活かす」はこれで一通りつながりました。次に取り組みたいのはこのあたりです。

  • しきい値を超えたら通知する(画面を見ていなくても気づけるように)
  • 電流値の変化から、故障の予兆をつかむ

進んだらまた記事にします。

関連記事

お問い合わせ

設備のIoT化について「自社でもやってみたいが、どこから手をつければいいか分からない」という段階でのご相談も承っています。

ABOUT ME
Yu
Yu
設備エンジニア(フリーランス)
生産技術の現場で10年以上の経験を持ち、制御設計を中心に生産設備の開発全般に携わってきました。 特に、産業用ロボットを活用した自動化設備の開発を得意としており、機械・電気・制御の知識を横断的に活かして業務に取り組んでいます。 近年では、PLCと連携したIoTシステムの構築にも注力しており、PythonやSQL Serverなどを活用したデータ収集・可視化・分析の仕組みづくりにも対応しています。 現場のリアルな課題を解決するための実践的なノウハウを発信していきます。
記事URLをコピーしました