
こんにちは!メカ旦那です!
皆さん「CODESYS」はご存じですか? 無料でインストールしてシーケンス制御を構築でき、各社のPLCやモーションコントローラ等のデバイスに実装できる優れたソフトウェアになります。従来はPLCを変える度に、そのメーカーのソフトも併せて購入する必要があり、決して安価ではないため各企業は頭を悩ませていました。しかし、CODESYSは無料かつ汎用性があるため、最近人気が高まっています。
ラズパイとも連携できるので、これからシーケンス制御を学びたい!という方にもおすすめです。安価に、かつ手を動かしながら学ぶことができます。実際に簡単な回路を作ってみたので、参考になれば幸いです。よく本でも紹介されている「早押しボタン」を自作してみました。
シーケンス制御とは?

そもそもシーケンス制御ってなんですか?

シーケンス制御とは家電から生産設備まで様々な機械に使われている制御方法なんだ!機械に行わせる動作を、予め順序立てて覚えさせておく事により、始動ボタンを押すだけで、後は自動的に仕事を行うと言った事が可能となるんだよ。

まだイメージがつきませんね・・・具体的にはどんなものを使って、機械に動作を覚えさせるんですか?

よく使われるのはPLC(プログラマブルロジックコントローラ)と呼ばれる機械にラダーと呼ばれる専用のプログラミング言語で書き込む事が多いんだ。PLCは何十万円と高くて買えないから、今回は代わりにラズパイに書き込むことにしました。また、ラダーはC言語のような英数字を記述するのではなく、ブロックを組み合わせて論理を作るので、少し変わったプログラミング言語になります。CODESYSというフリーソフトを使って作成します!

フローチャート

早押しボタンの仕組みってどんな感じですか?

最初にボタンを押した人のLEDが付いて、他の人は何回押してもLEDが付かない。リセットボタンを押したらLEDが消灯して元通りになる、と言う仕組みにします。いきなりラダーを作る前にまずは全体の流れがわかりやすいよう、フローチャートを作ってみたよ。

使用するもの
ハード
私は数年前に購入した「Raspberry pi 3 A+」を使いましたが、もしお持ちでない場合は、最新モデル「Raspberry pi 5」のご購入をおススメします!従来と比べてCPUやメモリなど大幅に向上しています。
ケースやクーラーがあると、よりラズパイが長持ちするのでおススメです。
ブレッドボード、タクトスイッチ×4、LED×3 (赤、青、黄)、抵抗(10kΩ)×7、ジャンパ線(多量)はこちらでまとめて購入可能です!
短いジャンプワイヤがあると、配線がスッキリして便利です!
ソフト
ラズパイは様々な言語(python、C等) に対応していますが、今回はラダーを使用します。ラダーを使うにはCODESYS(フリーソフト)が必要なので、予めPCにインストールしておきましょう。ラズパイのLAN設定も必要です。設定方法は外部サイトに載っていますのでご参照ください。
リンク① CODESYS PCインストール

リンク② ラズパイのLAN設定

回路
回路図はコチラです。


まず、早押しスイッチ3つをラズパイのGPIO17,27,22ピンに繋ぎました。リセットスイッチはGPIO4に繋いでいます。また抵抗(10kΩ)も各スイッチ・GND間に繋いで、プルダウンにしてみました。
続いてLEDは、赤、青、黄をそれぞれGPIO18,23,24ピンに繋ぎました。

ラズパイ現物見てますけど、どれがどのGPIOピンなんですかね?・・・
ラダー作成
ラダー図

ラダー図はこちらになります!X002、003、004が赤、青、黄スイッチ、M002、003、004が内部リレー、Y002、003、004が赤、青、黄LEDになります。スイッチを押すと、内部リレーがONし、自己保持とインターロックをかけます。そして、各LEDが点灯します。X001はリセットスイッチで、押すと回路がリセットされます。
これだけだとイメージが付きにくいので、実際に押した様子を後ほどご説明します!
GPIO設定
実際に動作させるにはGPIOの設定が必要です。
まず、どのGPIOをどう使うのか(入力?出力?)設定します。
スイッチを「Input」に、LEDを「Output」にしました。

次に、GPIOとラダー図の各デバイスを紐づけます。
「変数」がラダー図の番号、「チャネル」がGPIOの番号になります。

動かしてみよう!
さあ、準備は完了しました!早速動かしてみましょう!
ログイン
オンラインからログインを選択します。

運転をクリックします。

この時のLEDと、ラダー図の状態はこちらです。
もちろん、LEDは点灯していません。
赤スイッチ押下
試しに、赤スイッチを押してみましょう!
スイッチを押すことで、X002がONし、内部リレーM002もONします。
その後、Y002もONし、赤LEDが点灯しました!
指を離してみます。
M002で自己保持がかかっているため、Y002はONしたままです。
次に、青スイッチを押してみましょう。
M002は他回路ではインターロックとして機能しているため、青スイッチを押してもLEDは点灯しません。黄スイッチを押しても同様です。つまり、一番最初にスイッチを押した人がLEDが点灯する仕組みになっています!これぞ早押しボタンですね。
リセットスイッチ押下
次の問題に進むために、回路をリセットします。リセットスイッチを押してみましょう。
ラダー図でもインターロックが解除されて、また早押しができるようになりました。
まとめ
いかがでしたでしょうか。
シーケンス制御を使うことで早押しボタンを作ることができました!
本当は、b接点やインターロック等、シーケンスの専門用語や、CODESYSとラズパイ連携等も解説したかったのですが、ブログが長くなるので今回は割愛しました。今後また記事を作ろうと思います。
コメント