マカロニペンギンの健忘録

特にテーマを決めているわけじゃないが、私が気になったことを書いていく予定です。

手軽にPLC(Programable Logic Controller)を使ってみる

2022年01月16日 | 電子工作
以前よりPLC(Programable Logic Controller)を触れたいと思っていた。世界では様々なPLCメーカーが存在するらしい。日本でも制御機器で有名なメーカーが製造販売を行っている。しかし、メーカー製PLCを使用するためには開発ソフトが必要。しかし、開発ソフトの値段がものすごく高価です。さらにA社の開発ソフトはA社のPLCにしか使えず、B社のPLCには使えない。本職ならまだしも「試しに使ってみたい」というレベルのユーザーをことごとく排除したいのではないかと思うほどのものである。さらに本体も必要以上に高性能で「もっと機能を減らした安価なPLCを作っても良いのでは」と思えるほどである。

そこで不本意ながら他国で製造販売している簡易PLCとも言えるようなPLCとオープンソースの開発ソフトを使ってPLCの開発をしてみたいと思う。

本体
 メーカー名 eletechsup  (基板に記載なし。ホームページなど漁って、このメーカーだと思われるが確信なし。ホームページなし。)
製品名 IO22C04 (私はAliexpress の eletechup Outlet Storeで購入、本家本元かどうかは不明。ただ、ある質問をした時にネットで公開されていない図面を所有していた)
 コントローラー Arduino Pro Mini互換 5V 16MHz(IO22C04に付属していたものを購入)

 
USB−シリアル変換
 メーカー名 sparkfun
 基板名 FT232RL搭載小型USB-シリアルアダプタ 5V  (私はSwitchScienceで購入、リンク先のものは私が所有しているものよりバージョンが進んでいるみたい)
 Arduino Pro Mini互換機との端子の位置が異なるので変換ソケットを作成した。5V−5V、GND−GND、RXI−TXO、TXO−RXIにつなぐ

 
開発ソフト
 開発ソフト名 OpenPLC Editor
 ランタイム環境・書き込みソフト OpenPLC Runtime 
 開発者 Thiago Alves

お使いのパソコン環境に合わせてOpenPLC EditorとOpenPLC Runtimeをインストールしてください。Windowsの場合はOpenPLC Runtimeをインストールすると自動的にEditorの方も一緒にインスールするらしい。これは本家のホームページで確認してください。(ここでは詳しく説明はしません。ごめんなさい)

OpenPLC EditorはSlave Deviceに関係なく、プログラムできます。
シミュレーターには2種類あって、パソコン上でシミュレーションをする場合とSlave Deviceをつなげてシミュレーションする場合があります。
Slave Device(例えばArduinoなど)をつなげてシミュレーションする方法をOpenPLCではRuntimeと言います。コントローラーはArduino Pro Mini互換機ですがGPIOの割り当てが元のOpenPLCとIO22C04は異なります。

もともとのOpenPLCはBeforeの欄になります。IO22C04はAfterの欄になり、そのためArduinoのスケッチを変更する必要があります。
それが、OpenPLC_IO22C04.inoになりますので、OpenPLC Runtimeインストール後、OpenPLC_ArduinoNano.inoと入れ替えてください。
 あと、RuntimeのWEB画面上でSlave DevicesタブのDevice Typeの設定ではArduino Unoを設定せずに、「Generic Modbus RTU Device」にしてください。それから「Discrete Inputs」は0から8「Coils」も0から7にしてください。
COM Portはそれぞれの使用者の方のパソコンに合わせて設定してください。
最後にラダープログラムを作成する場合、先に掲載した対応表を参考にしてください。
サンプルとしてLadder_for_IO22C04.zipを掲載しておきます。

OpenPLCの使い方は南先生のYoutubeが参考になりました。

私はgithubはこちらです。このブログに載せてあるスケッチなどはここにリンクを貼っています。

また、IO22C04の回路図Aliexpress の eletechup Outlet Storeの方からいただきました。ありがとうございます。

最後に手をつけていない箇所があります。Seven-segment Displayです。
OpenPLCのラダープログラムからSeven-segment Displayに表示できたらどんなに便利でしょうと思ったのですが、私のスキルではシフトレジスターを解決することができませんでした。 どなたか挑戦していただける方がいらっしゃいましたら、よろしくお願いします。