ExcelでPLCの値を読みたいのでやってみた
この記事でやること
PLC の値を、使い慣れた Excel でもっと気軽に確認したいことがあります。
ただ、Excel から直接 PLC と通信する仕組みを作るのは、少し大変そうです。
そこで今回は、Excel と PLC の間に gomc-rest を置き、PLC の値を Excel に表示する方法を紹介します。
gomc-rest の概要や導入方法については、こちらの記事にまとめています。
Excel は普段使っている「データの取得」から gomc-rest にアクセスし、PLC の値を読み込みます。
全体の流れはこんな感じです。
なぜ 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 エディターの起動」を選びます。
Power Query エディターが開いたら、「新しいソース」から「その他のソース」、「Web」の順に選びます。
今回は、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」を押します。
gomc-rest から返ってきた JSON が表示されるので、「テーブルへの変換」を押します。
テーブルに変換すると Name 列と Value 列ができます。Name 列は今回は使わないので削除します。
続いて、Value 列の展開ボタンから「新しい行に展開する」を選びます。
値が行ごとに展開されたら、「閉じて読み込む」を押します。
これで、Excel のシートに PLC の値を含むテーブルが読み込まれます。
テーブルの値をセルに表示する
Power Query で読み込んだテーブルは、そのまま確認用の表として使えます。
1つの値だけを使いたい場合は、テーブル内のセルを別のセルから参照してもよいでしょう。
これで、PLC の値をいつもの Excel のセルとして扱えるようになりました。
値を更新したいときは、Excel の「すべて更新」を押せば再取得できます。
定期的に更新したい場合は、クエリのプロパティから「定期的に更新する」を有効にして、更新間隔を分単位で指定できます。ファイルを開いたときに自動更新する設定もあります。
更新するタイミングを条件によって変えるなど、もう少し細かく制御したい場合は、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 の値を確認するちょっとした表を手軽に作れました。









