🏭

PythonでPLCを動かす。PCからビットデバイスをON/OFFする簡単レシピ

に公開

目的

工場の自動化(FA)に欠かせないPLC(プログラマブルロジックコントローラ)。PLCの稼働データをPCで収集したり、PCからパラメータを変更したりしたいと考えたことはありませんか?

この記事では、Pythonのサードパーティライブラリであるkvhostlinkを使って、PCからキーエンスのPLC(KVシリーズなど)のデバイスに簡単にアクセスする方法を、具体的なサンプルコードを交えてご紹介します。

kvhostlinkとは

kvhostlinkは、キーエンス社のPLCとEthernet経由で通信するためのPythonライブラリです。キーエンス社のPLCが標準でサポートしている「上位リンク通信」というプロトコルを利用しており、特別なユニットを追加することなく、PCとPLCを直接LANケーブルで接続するだけで通信が可能です。
詳細はkvhostlink作成者のOkitaSystemDesign様記事をご覧ください。

このライブラリを使えば、以下のような操作をPythonプログラムから簡単に行うことができます。

デバイスメモリの読み出し: DM(データメモリ)やB(リンクリレー)などの値をPCに読み込む。

デバイスメモリへの書き込み: PCからPLCのDMに数値を書き込んだり、BをON/OFFしたりする。

これにより、生産データの収集・分析、遠隔からの装置のパラメータ変更など、活用の幅が大きく広がります。

手順1 準備するもの

  • キーエンス製PLC: KV-8000, KV-7000, KV-5000シリーズなど、Ethernetポートを搭載しているもの。

    • KV StudioでPLCの下記設定を確認してください。
      • IPアドレス(ここでは192.168.0.10とします)
      • 上位リンク通信のポート番号(デフォルトは8501)
  • パソコン: Pythonがインストールされていること。

  • LANケーブル: PLCとPCを接続します。

  • Python環境: Python 3.9 を推奨します。

  • kvhostlink: githubからお使いのPCにkvhostlink.pyを保存します。

    • kvhostlink.py中のportにPLCに設定しているポート番号を入力してください。
    class kvHostLink:
      addr = ()
      destfins = []
      srcfins = []
      port = 8501
    
    • kvhostlink.pyと同じフォルダに空のファイルを作成します。(ここでは名前をmain.pyとします)

手順2 プログラムの作成

main.pyにプログラムを記述していきます。
kvhostlinkの使い方は非常に直感的です。

# 1. PLCへの接続
import kvhostlink
kv = kvhostlink.kvHostLink('192.168.0.10')
# 2. PLCに値を書き込む 例:B100をONする
data = kv.set("B100")

手順3 動作確認

main.pyを実行してください。set()メソッドを実行するとPLCのデバイスB100がONするはずです。
ただしmain.pyと同じフォルダにkvhostlink.pyがある必要があります。

応用編(複数のビットデバイスをまとめて書き込む)

紹介したset()メソッドは1つのビットデバイスしか対象にできません。複数のビットデバイスをまとめて書き込むにはwrite()メソッドを使用します。write()メソッドは最大32bitを同時に書き込めます。それ以上の量を同時に書き込みたい場合はwrits()メソッドを使用してください。

たとえば以下のプログラムは第一引数に'B100.U'と書くことで16点分のビットデバイスB100~B10Fを一度に変更できます。また第二引数に指定した数値を2進数で表現したときのON/OFFパターンが、そのまま16個のビットの状態として書き込まれます。B100が1桁目(一番右)、B101が2桁目、B102が3桁目…という対応関係になっています。

# B100をON  その他をOFF
data = kv.write('B100.U', '1')

# B101をON  その他をOFF
data = kv.write('B100.U', '2')

# B100, B101をON その他をOFF
data = kv.write('B100.U', '3')

書き込み操作の危険性

デバイスへの書き込みは、PLCの動作に直接影響を与えます。稼働中の設備の重要なパラメータを不用意に書き換えると、予期せぬ機械の動作を引き起こし、大変危険です。テスト環境で十分に検証してから、自己責任で行ってください。

エラーハンドリング

実際のアプリケーションでは、通信エラーやPLCの電源OFFなどを考慮し、適切にエラーハンドリングを行うことが重要です。

まとめ

kvhostlinkライブラリを使えば、PLCとの連携が、Pythonで驚くほど簡単かつ手軽に実現できます。

PLCのデータを活用した生産状況の「見える化」や、PCアプリケーションと連携した高度な制御など、アイデア次第で様々な応用が可能です。ぜひ、このライブラリを活用して、あなたの現場のDX(デジタルトランスフォーメーション)を加速させてみてください。

Discussion