1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ExcelでPLCの値を読みたいのでやってみた

この記事でやること

PLC の値を、使い慣れた Excel でもっと気軽に確認したいことがあります。

ただ、Excel から直接 PLC と通信する仕組みを作るのは、少し大変そうです。

そこで今回は、Excel と PLC の間に gomc-rest を置き、PLC の値を Excel に表示する方法を紹介します。

gomc-rest の概要や導入方法については、こちらの記事にまとめています。

Excel は普段使っている「データの取得」から gomc-rest にアクセスし、PLC の値を読み込みます。

全体の流れはこんな感じです。

e765db6e-6dae-43bb-a7f5-5489f082c72e.png

なぜ Excel から直接 PLC を見にいかないのか

Excel は現場でも使い慣れている人が多く、ちょっとした確認表を作るには便利です。

一方で、Excel ファイルごとに PLC の接続情報や通信処理を持たせると、あとから管理が大変になりそうです。

  • Excel ファイルごとに接続先を管理することになる
  • Excel 側にも PLC 通信の処理が必要になる
  • PC ごとの環境差分を追いかけるのが大変になる
  • 値を確認したいだけにしては、仕組みが複雑になる

そこで、PLC と通信する部分は gomc-rest に任せ、Excel は gomc-rest から値を受け取るだけにしました。

全体構成

それぞれの役割はシンプルです。

gomc-rest が PLC と通信し、読み取った値を REST API で返します。

Excel 側では Power Query を使って、その URL から値を取得します。取得した結果をテーブルに変換すれば、いつものセルとして扱えます。

Excel 側が知っていればよいのは、PLC の細かい通信仕様ではなく、値を取りにいく URL だけです。

gomc-rest 側で値を返す

まず gomc-rest を起動し、PLC の値を REST API 経由で取得できる状態にしておきます。

今回は、D100 から3点分のデバイス値を読み取ります。

REST API と聞くと少し難しそうですが、gomc-rest は「PLC の値を HTTP で読める窓口」くらいに考えれば大丈夫です。

Excel のクエリで値を取得する

Excel の「データ」タブから「データの取得」メニューを開き、「Power Query エディターの起動」を選びます。

データ-PowerQueryエディタの起動.png

Power Query エディターが開いたら、「新しいソース」から「その他のソース」、「Web」の順に選びます。

PowerQuery-新しいソース-その他webから.png

今回は、D100 から3点分の値を読むため、次の URL を入力します。

http://127.0.0.1:8080/read?addr=D100&count=3

addrには読み取りを開始するデバイス、countには読み取る点数を指定します。

この例では Excel と gomc-rest を同じ PC で動かしているため 127.0.0.1 にしています。別の PC で gomc-rest を動かす場合は、その PC の IP アドレスに置き換えて「OK」を押します。

webから-アドレス貼り付け.png

gomc-rest から返ってきた JSON が表示されるので、「テーブルへの変換」を押します。

テーブルへの変換押下前.png

テーブルに変換すると Name 列と Value 列ができます。Name 列は今回は使わないので削除します。

name列削除.png

続いて、Value 列の展開ボタンから「新しい行に展開する」を選びます。

value新しい行に展開押下前.png

値が行ごとに展開されたら、「閉じて読み込む」を押します。

value新しい行に展開押下後-保存して読み込む押下前.png

これで、Excel のシートに PLC の値を含むテーブルが読み込まれます。

テーブルの値をセルに表示する

Power Query で読み込んだテーブルは、そのまま確認用の表として使えます。

1つの値だけを使いたい場合は、テーブル内のセルを別のセルから参照してもよいでしょう。

これで、PLC の値をいつもの Excel のセルとして扱えるようになりました。

保存して読み込む押下後.png

値を更新したいときは、Excel の「すべて更新」を押せば再取得できます。

すべて更新ボタンを押すと最新の値が取得できる.png

定期的に更新したい場合は、クエリのプロパティから「定期的に更新する」を有効にして、更新間隔を分単位で指定できます。ファイルを開いたときに自動更新する設定もあります。

更新するタイミングを条件によって変えるなど、もう少し細かく制御したい場合は、VBA からクエリを更新する方法もあります。

この構成でうれしいこと

  • Excel 側に PLC 通信の処理を書かなくてよい
  • VBA を使わずに値を表示できる
  • PLC への接続を gomc-rest にまとめられる
  • Excel ファイルと接続先 URL があれば、ほかの PC でも使いやすい
  • 値を見るだけなら、仕組みをシンプルにできる

注意点

この方法は、Excel で PLC の値を確認する用途には向いています。

ただし、リアルタイム監視や高速なロギングが必要な場面には向きません。

  • 更新タイミングは Excel の更新操作や設定に依存する
  • 値の変化をミリ秒単位で追う用途には向かない
  • 書き込み操作まで Excel から行う場合は、誤操作対策を別に考える必要がある

まとめ

Excel で PLC の値を確認したいだけなら、Excel から直接 PLC と通信しなくても実現できます。

PLC との通信は gomc-rest に任せ、Excel は Power Query で値を取りにいく。この形にすると、Excel 側をかなりシンプルにできます。

現場で使い慣れた Excel と gomc-rest を組み合わせることで、PLC の値を確認するちょっとした表を手軽に作れました。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?