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)
- KV StudioでPLCの下記設定を確認してください。
-
パソコン: 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