ラズパイでPLC OPENPLCの始め方

OPENPLCとは

PLCの勉強をしたいんだけど実機が手に入らない。社員教育でPLCの授業したいんだけど実機が用意できない。そんな悩みを持っている方も多いと思います。基本的にPLCは装置メーカにとっては身近でも、お客様に納品するものしか用意できません。PLCは慣れてしまえば後はノリでできるのですが、いかんせん教科書や参考書が皆無で勉強しにくい分野です。

制御設計が何をやっているのか少しでもいいから知りたい。変数とデータ形の勉強したい・・。そんな方にOPENPLCはどうでしょうか。ラズベリーパイでPLCができます。OPENPLCはThiago Alvesさんが作ったフリーのオープンソースです。(この他にもCODESYSというフリー使えるものもあったのですが、つい最近有料になったようです。残念。)Youtubeで本人が温度センサ用いた簡単なデモをUPしています。日本語翻訳にすれば概ね内容はつかめます。温度センサを使って点灯回路作ってます。

このOPENPLCですが国際標準規格IEC61131-3に準拠しています。ラダー言語ばかりやっていて、なかなかファンクションブロックを使う機会が無い方も多いと思います。三菱電機のGX Developerしか使っていない人はIEC61131-3の良い勉強になります。

丸

私はずっとラダー言語オンリーで仕事してました。

まとめと補足
  • ラズベリーパイでPLCができる
  • Thiago Alvesさんが作ったフリーのオープンソース
  • 国際標準規格IEC61131-3に準拠
  • IEC61131-3の良い勉強になる

IEC 61131-3とは?

PLCは1969年にModiconが最初に商品化しました。1972年には日本初のPLC「SYSMAC」がオムロンから誕生しています。当時の写真見るととんでもなくデカイPLCです。メルセックのAシリーズの3倍くらい。

PLCの歴史とPLCの父と言われているディックモーリー氏についてよい動画があったので参考にどうぞ。wikipediaでも触れていますがこの当時から運転中に一部のコイルの強制ONOFFができたそうです。(メルセックで言うところのSHIFT+エンターのビットの強制ONOFF)

こういった歴史を積み重ねる中で沢山のメーカがPLCを作り始めました。しかしごく最初のPLCは各メーカごとに、プログラミングツールやプログラミング言語は製造者ごとに異なっていました。ユーザにとっては都度都度に各社のツールの操作方法からプログラミング言語を覚えなければいけませんでした。ユーザーは各社独自のプログラミング言語覚えなければいけないのは、参ってしまいます。

こういった風潮はベンダーとユーザーにとって好ましくないため、プログラミング言語を統一するという動きができました。そのような動きの中で1993年にPLCのプログラミング言語の国際規格「IEC 61131-3」が発行されました。

丸

IEC 61131-3準拠のPLCを使う場合は、この概念を知っておかないといけません。一度は見ることをおすすめします。

PLCOPEN JAPANという団体が作成したIEC 61131-3の説明動画がよくまとまっていますので参考にどうぞ。ラダー言語ばかり使っていると変数やデータ形を積極的に採用しているPLCを使うと、とてもわかりにくくて驚きます。(OPENPLCはIEC 61131-3で作っていますので、その点よい勉強になります)

 

IEC 61131-3のまとめと補足

IEC 61131-3とは

  • PLCのプログラミング言語の国際規格
  • ラダー言語、IL言語、SFC言語、ST言語、FBD言語の5種類がある
  • 国内ではラダー言語が圧倒的に多い
  • OPENPLCはIEC 61131-3に準拠している

別記事でPLCの変数について簡単に記事にしたものです。ラダー言語しか扱ったことしかない方などは参考にどうぞ。自分の主観混じりですが極力簡潔に書いています。

OPENPLCのインストール方法

難しい歴史の話はここまでにして、以下のものを用意してOPENPLC始めます。

用意するもの
  • Rasberry Pi4B(ラズパイ3でも可)
  • SDカード(32GB以上推奨)
  • SDカードアダプタ
  • USBケーブル
  • USB電源アダプタ
  • Rasberry Pi用ケース
  • ブレッドボード
  • LED
  • 抵抗200Ω
  • タクトスイッチ

(電子部品を一個一個買うと割高なので、オソヨーの電子工作セットを買うのがおすすめです)

上記のもの用意できたらOPENPLCのインストールしていきます。その前にまずはアップデート。

sudo apt update
sudo apt full-upgrade

次に以下のコードでOPENPLCエディタをインストールしていきます。OPENPLCのホームページに手順が描いてあります。こちらも参考にしつつどうぞ。

私はラズパイにエディタを入れるので、ラズパイに以下の方法でインストールします。

sudo apt-get install git
git clone https://github.com/thiagoralves/OpenPLC_Editor
cd OpenPLC_Editor
./install.sh

上記のコードでOpenPLCエディタをインストールできます。

(少し時間がかかります。)

次に以下のコードでOPENPLCRuntimeをインストールします。

sudo apt-get install git
git clone https://github.com/thiagoralves/OpenPLC_v3.git
cd OpenPLC_v3
./install.sh rpi

IDとパスワードはデフォルトでopenplcです。私の端末では再起動して始めて認識しました。

インストールしたらOPENPLCでHellow Wold

久しぶりに見に行ったらすっかりおしゃれになっていました。(かえって見にくい)分かりづらいのでこの項でHellow Woldできるようにしていこうと思います。(後日追記します)

301 Moved Permanently

こんな感じのが下にあります。赤丸部分のマークをクリックするとHellow Wold用のプログラムをダウンロードできます。

OPENPLC EDITORを起動してfile⇒Open⇒Hellow Woldのフォルダをクリックして開くと以下の画面が開きます。

上記の画面が開きます。この回路でLEDの点灯ができます。後述しますが%IX0.0はプルアップされていて入力がON/OFF反転しているため、%IX0.0を%IX0.3に変えました。

実際にgpio readall(GPIOのON/OFFを確認できるコマンド)で各GPIOの出力確認したときの値です。

gpio readall

%IX0.0から%IX0.2が1(ON状態)なのがわかるかと思います。今回はこの回避策が見つからなかったので%IX0.3に変更しました。(%IX0.0のままでもONとOFFが反転しているだけなので、点灯自体は問題なくすることはできます)

丸

私は難しく考えず%IX0.3に変更しました。

ブレッドボードに配線してOPENPLCサーバに接続

それではブレッドボードに配線していきます。参考までにラズパイのGPIOと%IXと%QXの配置を貼り付けます。

OpenPLCの公式サイトのサンプルだとプルアップされている%IX0.0に入力しているので%IX0.3に変更しました。ファンクションのTOFはオフディレイタイマと言います。INの信号がOFFした後もPTの設定値分だけ信号ONが継続するタイマ回路です。設計者の気遣いが伺えます。

配線しやすいようにブレッドボードとの配線表も記載します。コモンの配線を間違えやすいので気をつけてください。

コンパイルしてデータをラズパイのOPENPLC Runtimeに転送

ブレッドボードへの配線が終了したらHellow Woldのデータをのコンパイルを行います。下矢印ボタンでコンパイルできます。三菱電機のメルセックを使っている方は馴染みが無いかもしれませんが、変数とデータ形を使用するPLCはコンパイルが必須になってきます。(シーメンスや富士電機のSX、アーレンブラッドリーなど)

下の画像の人が走っているマークの横にある下↓ボタンを押してコンパイルしてください。保存名称はとりあえずなんでもOKです。今回私はLチカにしました。

コンパイルに成功すると以下ような文字がエディタのコンソールに記載されます。

このデータを使って<->PROGRAMのUpload Programでアップロードを行います。ラズパイ本体のローカルホスト127.0.0.1:8080をwebブラウザのアドレス欄に打ち込みます。(IDとパスワードはデフォルトでopenplcです。)

OPENPLC Runtimeの画面にいけますので、インストール時に設定したIDとパスワードでログインします。まずは最初にハードウェアの設定をします。下の画面のようにRaspberry Piに設定して画面下にあるsave changesボタンを押してください。

次にコンパイルした際に作ったデータをアップロードします。(このシステムの概念はOPENPLC Runtime側がアップロードである上位側のようです)

先程コンパイルしたデータを選択してください。

選択して開くボタンを押すとUPLOADの画面に戻ります。このときもデータ名Nameを聞かれるので任意のNameを記載します。名前を記載しないと名前の欄が空欄ですと注意書きでます。Nameを入力した後にUpload Programを行ってください。うまく行くと次の画面がでてきます。

うまくいったらダッシュボードに戻るを選択して、アップロード終了後に画面下のSTART PLCのボタンをクリックします。

これでPLCのプログラムが起動しはじめます。下に動画貼り付けますので参照ください。

ボタンを押すとLEDが点灯してボタンを話した後に2秒間点灯が継続します。OPENPLC Runtimeの諸設定さえ乗り越えれば簡単にできます。ボタンを押したペンが離れた後も2秒間ほど点灯が継続しているのがわかるかと思います。これがオフディレイタイマによる点灯継続の効果です。

実際の装置はこのオフディレイの他に、誤操作防止のためにオンディレイタイマを入れたりします。

モニタリング画面と並べた動画も貼り付けます。概ね同期が取れているのがわかるかと思います。フリーのソフトウェアでここまでできれば万々歳です。この機能があれば実際にくまなくてもある程度のデータ遷移がわかることになります。

またこのOPENPLCはIEC61131-3に準拠していますので、IEC61131-3の勉強にもなります。操作感やコンパイルの操作などの概念が、富士電機のSXシリーズやアーレンブラッドリーのPLCにそっくりです。変数やデータ形の勉強にもなりますので、ぜひどうぞ。

少しオフディレイについて補足

このHello Woldのプログラムでオフディレを使っていました。少しPLCのソフト設計にも関わるので補足します。オフディレイは入力信号がOFFしても設定値分ONが継続するファンクションブロックです。

チャタよけでオンディレイを使うことのほうが多かったですが、オフディレイを使うと完璧に検出対象が無くなってからOFFとすることができます。搬送物の払い出し後のチャタよけとかに使っていました。

丸

オフディレイを自分で作ったプログラムで直に体感できます。

試しに同じ回路で連打してみたので参照ください。

ボタンを連打していますがLEDは点灯のままなのがわかります。ボタンを連打し終えて2秒ほど経って初めてLEDが消灯します。このようにオフディレイは検出対象が完璧にOFFを確認するためなどに使います。

この現象をタイムチャートで表現してみます。下にタイムチャートを添付します。

ファンクションの入力INがオンになると出力Qがオンになり、LEDが点灯します。ここで一秒間だけ入力INがオフしたとします。入力自体はオフしていますが、パラメータPTで設定した値が2000msec(2秒間)です。2000msec以内に入力INがオンすれば出力Qはオンを継続し続けます。

よって動画にあげているようなLEDがオンし続ける事象が発生します。タイムチャートでの表現はとても面倒ですが、感覚で掴んでしまえば簡単です。PLCで機械を動かす場合は理論も大事ですが、感覚的な引き出しがとても大事になります。OPENPLCで試すぶんには何をやっても自由です。簡単な点灯点滅回路やインターロック回路でもいいのでぜひお試しください。

こんな感じで言葉で実感できないものでも触ってみると意外と簡単にわかります。簡単な回路でも触ってみると意外な気付きがあるのでぜひ色々お試しください。

PLCのプログラム実行形式についても記事にしましたので、よろしければ参考にどうぞ。PLCはスカYンの概念でつまづきがちになりますが、スキャンと入出力の関係がわかるとプログラムの解読力が上がります。

こんな方にOPENPLCおすすめです

以上OPENPLCの始め方でした。このOPENPLCですが、三菱電機のGX Developerしか使ったことがない人におすすめです。私も一時期GX Developerのみ使っていました。開発ツールとしては軽く処理落ちもしないので大好きです。ですが国際標準規格IEC61131-3に完全に準拠していません。(GX WORKS3は準拠)

案件によってはシーメンスなども触ることになると思うので、一度触ってみてBoolやIntの表現に慣れておいたほうが安心です。私はずっとGX Developerをつかっていたので最初にグローバル関数などの意味がよくわかりませんでした。いまでもGX Developerに戻りたいくらいです。

次におすすめなのが機械設計屋さんです。制御設計と打ち合わせする際などは、どうしてもプログラムの話になってしまいます。簡単なラダー言語とファンクションブロックだけでも把握しているだけで、すり合わせがはかどると思います。この記事で紹介した簡単なLチカだけでもいいので、触ってみるのもいいかもしれません。

また新卒の制御設計者さんもおすすめです。とりあえず最初にPLCにふれるだけでもいいので、ラズパイでPLC体験してみてはどうでしょうか。PLCは中々とっつきにくいため、入社してすぐにPLC使う案件はできないパターンが多いです。そんな時にこのOPENPLCを使って簡単なファンクション教育用のツールとしてはラズパイは申し分ないので、他のプログラミングの教育にも使えます。

こんな方におすすめ
  • ラダー言語だけ使っている方
  • PLCを触ってみたい方
  • なかなかPLC使う案件がない方
  • 三菱ばかりで飽きている方

ラズパイはこれだけにとどまらず沢山のことができます。OPENPLC始める際の参考になれば 幸いです。それではご安全に。

コメント