howto:open_plc:index.html
OpenPLCの使い方
展示スペースでの自動運転のためのプログラム作成と運転のためにOpenPLCを使い始めました。無人での照明やモーター駆動、センサ検知等の自動運転を可能にしてくれているので、貢献度はかなりのものです。
使う用途が限られていることと、ラダープログラムがそれほど難しくないので、最初ちょっと覚えればすぐ使い始められ、使いながら必要に応じてレベルアップすればよいだけなので気が楽です。
日本語の情報があまり多くないのと、私自身初めての分野なので、基本的なところから使い方を整理していきます。
ソフトウェアの紹介
- OpenPLCとは、個人(Thiago Ralvesさんというやさしそうなおじさんです。ブラジルの方のようですね)が作成した、オープンソースで無償で使えるPLCソフトウェア(パソコンでプログラムを作成するエディタと、制御機器に組み込んでプログラムを実行するランタイムのセット)になります。
運転中のPLCの状態監視・制御をするSCADAの機能は含まれていませんので、使いたい場合は他のSCADAソフト(Modbus/TCPサポートのもの)を利用します。
- PLCの国際基準 IEC61131-3に準拠しており、5種類のPLCプログラミング言語に対応しています。IEC61131-3の普及を目的としたPLCOpenという国際団体の標準エディターがOpenPLCエディターのベースとなっているようです。
- ランタイムをインストールしてPLCとして動かせるハードウェアは幅広く、以下が公式サポートされています(OpenPLCサイト(2024/04)より)。Raspberry Pi、一部の市販PLC(Raspberry Pi拡張)製品、Arduino、マイコン、パソコンなどでも使えます。Arduino IDEで開発できるArduino純正以外の製品も対応できるようです。
- Arduino Uno / Nano / Leonardo / Micro
- Arduino Mega / Due
- Arduino Nano Every / IoT / BLE
- Arduino RB2040 Connect
- Arduino Mkr / Zero / WiFi
- Arduino Pro (Machine Control and EDGE)
- Controllino Maxi / Automation / Mega / Mini
- Productivity Open P1AM
- ESP8266 (nodemcu)
- ESP32
- Raspberry Pi 2 / 3 / 4
- PiXtend
- UniPi Industrial Platform (UniPi 1.1)
- Neuron PLC
- FreeWave Zumlink
- FreeWave ZumIQ
- Windows (generic target as a soft-PLC)
- Linux (generic target as a soft-PLC)
- 基本、英語のソフトになります。サイトも英語です。
- 2022/05にOpenPLCサイトが大幅リニューアルされ、ソフトもバージョンアップされました。Youtubeチャンネルも出来ました。サイトのLearning/Basicsのページはこの動画ページにリンクされています。
- このソフトの使い方を学ぶには、まず第一に公式サイトのドキュメントの説明をよく読むことです。不具合が出たと思って慌てても、よくよく見たら公式の説明に書いてあったということが往々にしてあります。
- 次に、YouTubeの動画も、そこでしかわからないだろう内容があったりしますので見ておいたほうが良いです。動画の説明内容を見ていて、頭のいい人だなと思います。
- また、OpenPLCエディターのFileメニューにTutorials and Examplesとサンプルプログラムがいくつか載っています。
これまで、このようなおまけのサンプルはわざわざ開いたりしなかったのですが、先日Arduino Extensionでうまく動かないところがあって調べていたら、このサンプルプログラム群がただのおまけではなく、よく考えられたテーマ別のマニュアルでもあるということがわかりました。
ここの説明をよく読んで試して、基本的なところを身に着けたほうが、複雑なことをしたいときに、結局急がば回れなんだなと思わせてくれます。
- 後は、サイト内のフォーラムで、個別トピックの投稿を追っていくことで理解が深まります。
ユーザーからの困り事相談や色々なやりとりに直接サポート窓口はなく、フォーラムへの投稿を通して行われるスタイルになっています。作者や他の会員が各投稿への回答サポートを行っています。
公式ドキュメントで解決できない困ったことが出てきたら、フォーラムの過去の投稿に関連するものが無いかまず検索してみるのが基本です。その上でフォーラム内で直接質問(会員登録要)もできます。
- IEC61131-3に準拠しているため、PLCプログラミングの仕様の詳細はそちらを参照するということで、プログラミングの仕方についてもマニュアルはありません(Learningのページに今後作るようですが)。
- ソフトはバグ対応や機能アップの改修が随時続けられており、同じレビジョンでも日単位で頻繁に更新されています。すでに使っているエディターを最新状態にするのは、最新版のチェックメニューがあり、そこから更新が出来るようになっています。
以前にその機能で更新をしてアップデートしたらエラーが出たので、OpenPLCのフォーラム内で同様の内容のエラー報告を探して見つけたところ、OpenPLCプロジェクトのホームページからダウンロードしたインストーラで再インストールするよう指示されていました。半月ほど戻った日付のリリース版になりましたがそれでエラーが解消しました。
簡単に更新できるのは便利ですが。もしそれで不具合が出たら、メニューから前のバーションには戻れないので、公式ページに掲載されているメジャーリリース版に入れ直してください。
- エディターを最新版に更新するのは、メニューからチェックと更新が出来るようになっていますが、 一方ランタイムの方は、自分で更新作業をすることになります。新しいプログラムのインストールプロセスで、既に入っている古いプログラムは削除して入れ替えてくれます(参考)。
(2024/07/26)
- Windows10標準のアンチウイルス機能のDefenderによって、OpenPLCエディターのシミュレーション・デバック機能がウイルスに誤検知されるというトラブルを体験しました(Microsoft Defenderの脅威(Open PLC Editor))
(2024/08/17)
ハードウェアについて
前項のように色々なハードウェアでOpenPLCは動かせるわけですが、PLC製品として売っている以外の汎用のコンピュータの場合、出力の電流・電圧が小さく、いろいろな機器を接続するにはそのためのハードウェアが必要になります。
私が展示物の自動運転で使っているのは、Unipi Technology社のUniPi 1.1(UniPi Industrial Platform)というRaspberryPiのPLC用拡張基板の製品です。その上に手持ちのRaspberryPiを載せて、電源と一緒にケースに入れて使っています。
(参考:PLCによる展示物の自動運転)
もともとPLCに興味を持つきっかけになったのは、インターフェース誌の「ラズパイでPLC」という連載なのですが、その記事をまとめた書籍が発行されていて、そちらを参考にさせていただいています。
この本には、記事中に出てくる実験基板の引換券がついていて、後は部品とRaspberryPiと電源を用意してはんだ付けすればPLCとして使えます(秋月電子通商で部品のセット(gK-15645,gK-15925)も基板(gP-15646,gP-15926)も販売しています)。私もこの基板を一式作ってみました(ケースに電源とコネクタ類を入れてPLC2号機としました)。書籍に回路図や解説があって、手軽に試して学べるのでおすすめです。
- 接続部分の回路自体はそれほど難しいものではないので、慣れてきたら自作するのもよさそうです。
- 出来合いのPLC製品ということでは、Arduino公式にArduino-proというシリーズがあり、その中のPortenta Machine Control、OptaといったPLC製品は、公式のArduino PLC IDEというPLCプログラミングソフトも提供されており、選択肢としてもいいのではないでしょうか。
これらの機種について、Open PLCは、Machine Controlをサポート機種に載せていましたが、ここでOptaも使えることになった(2023/06/14)そうです。
- Arduino公式が、産業用というか従来の製品に比べ大きめのPLC製品を出してきて、この分野に手を広げている印象がある一方で、OpenPLCは、PLCを小さなマイコンボードで使えるようにしようと、対象的に進んできている印象があります。マイコンチップもどんどん高性能で小さく安くなっており、それをPLCとして使える手段が加わることによって、できることの可能性が大きく広がってきています。(2024/7/26)
マイコンボード(Arduino純正/互換機)への対応について
前項に書いたように、OpenPLCはArduinoを始めたとした小さなマイコンボードでの利用をしやすくする大きな変更をいくつか行ってきました。短期間で状況もかなり変わってきていますので、少し整理してみます。
- 私がOpenPLCを雑誌記事で知った2020年あたりでは、Ardunoボードは、OpenPLCのシステム上ではslaveデバイスとして、ラズベリーパイやパソコンなどのhostデバイスに接続して、Hostの手足として、接続する機器の数を増やしたり、利用するエリアを広げたりする役割に限られていました。
- 一口にArduinoボードといっても、Arduino IDEでプログラムを作ってマイコンに書き込むArduinoの仕組みが、その互換機や他の様々なマイコンボードでも利用されるようになっています。
OpenPLCでは、Arduino純正製品+αを公式対象機器としていますが、自分で設定すれば対象外のボードでも使うことが出来ます(Arduino IDEが使える製品なら比較的容易とのこと)。
- 2021/10/16に、従来slaveとしてしか使えなかったマイコンボードを、単体の独立したPLCとしても使えるようにする大幅な変更が加えられました。更にslaveとして利用する場合でも、単体で行う動作は保持して、HOSTからの指示と両方を組み合わせて使うこともできるようになりました。
更にエディターでマイコンボードにプログラムを書き込む際に、ピンごとの機能割当て(デジタルIN/OUT、アナログIN/OUT)を初期値から変更して設定したり、HOSTとの通信手段(Modbus)を有線/無線で設定するパネルが新設されました。
- さらに、先日(2024/4/13)に行われた新たな機能追加は、Arduino IDEでプログラミングする際のスケッチ(コードやライブラリ)をそのままOpenPLCエディター内に取り込んで、一つのマイコンにArduinoプログラムとPLCプログラムの両方を書き込むことができるというものです。
ポイントは、両方のプログラムで一つの変数を共通に設定できるというところです。Arduinoプログラムで取得したセンサーの値を、PLCプログラムでそのまま使って制御に利用するというようなことが、簡単にできるようになります。
これまで、掲示板を見ていても、OpenPLCでサーボモーターを動かすにはどうすればよいか等、PLCでやらなくともよいだろうという内容の相談が寄せられていたり、PLCに接続するこのセンサーを動かすOpenPLCのライブラリはないのか等、個別機器への対応を求められたりもしていました。
この辺のニーズには、自分でライブラリを書いてシステムに組み込む方法の説明や、Python Sub Moduleという自作Pythonプログラムを取込む仕組みの対応がされてきましたが、いずれにせよ誰にでもできるものではなくハードルが高いものでした。
それに対し、今回のArduinoスケッチの取込み機能は、作者によれば、Arduino言語(C++)にあまりなじみの無い人が、世間に多く出回っているArduinoのプログラム資産をコピーして、PLCと組み合わせることで、これまで出来なかったことが容易に出来るようになることが一番いいところだとのことです。ArduinoのプログラムをPLCの言語に書き直さずに利用できるようになり、ハードルが大きく下がります。
出たばかりなのでこれから課題等はいろいろ出てくるかと思いますが、画期的な機能追加なので、注目していきたいと思います。
(2024/07/26)
PLCの国際基準 IEC61131-3
- 生産設備のオートメーション等に多く使われてきたPLC(プログラマブル・ロジック・コントローラー)のプログラムを共通化することで、異なるメーカーのPLCでも同じプログラムが再利用できるような効率的な環境を目指す国際基準です。PLCプログラムの仕様を詳しく規定しています。
- メーカー独自仕様のPLCが広く普及していた日本も今後基準への対応が進むと思いますので、新たに始める際はこの基準を勉強すべきでしょう。
※このページの分量が増えたので、ラダープログラムの作り方の項目は別ページに分けました。
※私が理解している内容で書いているので、もしかしたら誤解や理解不足等あるかもしれません。元情報へのリンクをつけていますので、活用の際はご自分で確認・検証をお願いします。
howto/open_plc/index.html.txt · 最終更新: by Staff_Ujiie
