LIFE LOG(ここにはあなたのブログ名)

作業日誌 う靴

気ままにコンピュータ関連の備忘録などを書きます...。

Raspberry Pi でシーケンス制御

1. はじめに

 Raspberry PiでPLC(Programmable Logic Controller:シーケンサ)・シーケンス制御を実行し、理想としては制御工学の理論方面へのシフトもめざしながら学んでいくといったような内容の記事です(と徐々にしていくつもり)。開発環境にはCODESYSというソフトPLCを使う。基本的に趣味範囲の利用の仕方では無料。欧州では最も広く利用されているPLCソフトだそう。CODESYSには、Raspberry Piの成熟したプラットフォームを積極的に産業にも利用していこうといった意識がうかがえ、公式でCODESYSへのRaspberry Pi導入のための環境を提供している様子。

 今回は、入門ということで、Raspberry Pi & CODESYS のセットアップを備忘録として残しながら、ラダープログラムによるLチカを実行してみる。また、ラダーの基礎となる「自己保持回路」を例にとって動作デモを行ってみる。

2. CODESYSのホストPC(Windows)への導入

  ①CODESYS公式ダウンロードサイトで、メインのソフトウェアをダウンロードする。

store.codesys.com

Raspberry Pi 導入のためのCODESYS専用パッケージをダウンロードする。

store.codesys.com

③インストールしたソフトCODESYSの上部メニューバー の "ツール" -> "パッケージマネージャ" を開くとこんな感じ。

f:id:uuktuv:20200521041130j:plain

CODESYSインストール後の初期画面

 ここでさらに、出てきたウィンドウ右の"インストール" ボタンを押すと、前述の手順でダウンロードした Raspberry Pi 導入のための専用パッケージをCODESYS内にインストールし取り込むことができる。

3. Raspberry PiへのCODESYS環境の導入

①1回ソフトを xボタンで閉じる。で、再び起動させる。すると、メニューバーの "ツール" -> "Update Raspberry Pi" が選べるようになるので、そこからRaspberry Piのセットアップ画面を開く。

②ラズパイのユーザ名とパスワードを入力する。"Scan"を押す。CODESYSを開いているホストPC(今回はWindows)と今回制御するラズパイが同一ネットワーク内にあれば、"Scan"を押すだけで自動でラズパイのIPアドレスを探しに行く。正しいラズパイIPアドレスが表示されればOK。

f:id:uuktuv:20200521042256j:plain
Raspberry Pi セットアップ画面

③ラズパイが認識されたら、次は "Install" を押してCODESYSのシステムをラズパイに書き込む。若干時間がかかるが、待つ。その後、"Standard" (スタンダード)か "MC"(マルチコア)かどちらをシステムとして利用するかウィンドウで聞かれるので、適切な方をえらぶ。試しに、"System Info"を押して、ラズパイを正しく認識し、接続できているか確認する。下図のような表示が為されればOK。

f:id:uuktuv:20200521045805j:plain
セットアップ完了時のラズパイ3Bのインフォメーション

4. Raspberry Pi & CODESYS によるラダープログラムでのLチカ制御

①新規プロジェクトを作成する。上部メニューバーの "ファイル" -> "新規プロジェクト" でウィンドウが開くので、"標準プロジェクト"を選択し"名前"と"場所"を任意に入力する。

②"標準のプロジェクト"ウィンドウが開くので、ラズパイ3などマルチコア対応のデバイスを用いる場合は"デバイス"に"CODESYS Control for Raspberry Pi MC SL(3S~~~~~)""を選択する。次の項目"PLC_PRGの言語"に今回は"ラダーロジックダイアグラム(LD)"を選択して"OK"押す。

f:id:uuktuv:20200521044233j:plain
プロジェクトの作成

③ここから、ラダー図を書いてゆく。触ればわかるので(わかりにくいのならば調べながら)、接点やコイルを下図のように配置して、基本的な「自己保持回路」を作成する。

 機能としての動き方は、接点X001(1つ目のスイッチ)を1回押すと、コイルY001(LED)まで導通しONになる。X001を押すのをやめ離しても、Y001のON状態が保持される。なお、接点X002(2つ目のスイッチ)を押すと、ONで導通していたY001が切れて、OFFになる。

f:id:uuktuv:20200521061054j:plain
ラダー図(自己保持回路)

④次に、ラズパイのピンアサインを行う。左の"GPIOs_A_B_(GPIOs A/B)"を選ぶと、タブが開く。"GPIOs パラメータ"の箇所で、各GPIピンが"INPUT"か"OUTPUT"かを事前に指定しておく。今回は、"INPUT"がGPIO27とGPIO18で、"OUTPUT"がGPIO17とした。(2入力1出力)

f:id:uuktuv:20200520091645p:plain

⑤次に、同じタブ内の"GPIOs I/O マッピング"の箇所で、ラダー図で定義したX001X002(入力スイッチ)、Y001(出力LED)とさっきのGPIOピンとを紐付ける。今回は、下図の設定のようにした。

f:id:uuktuv:20200521051210j:plain
"GPIOs I/Oマッピング"の設定

⑥ここまでで主要な設定は完了。ラズパイとの接続を開始する。"Device"の"通信設定" -> "ネットワークスキャン"を押し、raspberrypiをデバイスとして選ぶ。正しく選ばれると、下図のように「緑色〇」のOKサインいたいなのが出る。   f:id:uuktuv:20200521093035j:plain

f:id:uuktuv:20200521072349j:plain

⑦"ツール" -> "Update Raspberry Pi" を押して、ラズパイ通信設定画面を開き、"Start"を押してラズパイとの接続を開始する。で、ここで一旦ラダープログラムをビルド。エラーなどでなければOK。メニューバーの"オンライン" -> "ログイン"でプログラムにログインする。

⑧"運転"(再生ボタン)を押すと、ラダープログラムが実行されている。

f:id:uuktuv:20200521061250j:plain
ラダー実行時(LED:OFF)

f:id:uuktuv:20200521061330j:plain
ラダー実行時(LED:ON)

f:id:uuktuv:20200521055821j:plain
Raspberry PiのPLC化

5. まとめ

 ラダープログラム開発環境CODESYSにRaspberry Piを導入して、Raspberry PiをPLC化した。基本的な自己保持回路を例に、ラダーによってLチカすることができた。