PR

CODESYSとは?ラズパイと連携して電子工作してみた

こんにちは!メカ旦那です!

皆さん「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インストール

PLC(シーケンサ)・ラダーがフリーで使える!おすすめ入門ソフト
ラズベリーパイをPLC(シーケンサ)として使う準備編の記事です。 「PLC(シーケンサ)・ラダーがフリーで使える!おすすめ入門ソフト」を紹介します。 フリー(無料)でラダーのプログラムを実際に動かす手順を解説しています。 「無料でPLC(シ

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

ラズベリーパイでPLC(シーケンサ)・ラダーの使い方を学んでみた
ラズベリーパイをPLC(シーケンサ)として使う実践編です。 無料かつラズベリーパイでラダーのプログラムを実際に動かす手順を紹介しています。 「自分でPLC(シーケンサ)・ラダーを触ってみたい!」という方におすすめな記事です。 ラズベリーパイ

回路

回路図はコチラです。

回路図はfritzingを用いて作成しています

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

続いてLEDは、赤、青、黄をそれぞれGPIO18,23,24ピンに繋ぎました。

メカ坊や
メカ坊や

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

メカ旦那
メカ旦那

こちらがラズパイのピン配置です!GPIOは左上から順番に並んでおらず、バラバラでわかりにくいので、慎重に繋ぎましょう!

ラダー作成

ラダー図

作り方は外部サイトをご参照ください。

ラダー図はこちらになります!X002003004スイッチM002003004内部リレーY002003004LEDになります。スイッチを押すと、内部リレーが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とラズパイ連携等も解説したかったのですが、ブログが長くなるので今回は割愛しました。今後また記事を作ろうと思います。

メカ旦那

旧帝大工学部を卒業後、FA業界で制御設計職に従事しています。
電験三種も保持しています。
本ブログを通じて、機械・電気電子の面白さが伝えれば幸いです!

メカ旦那をフォローする
Raspberry Pi

コメント